zabbix的官方文档:www.zabbix.com/
监控三剑客:cacti,nagios,zabbix。当然还有其他的监控系统:比如Prometheus(Prometheus是一个开源监控系统,它前身是SoundCloud的警告工具包。)
这里对zabbix和Prometheus进行对比:
Zabbix | Prometheus |
后端用 C 开发,界面用 PHP 开发,定制化难度很高。 | 后端用 golang 开发,前端是 Grafana,JSON 编辑即可解决。定制化难度较低。 |
集群规模上限为 10000 个节点。 | 支持更大的集群规模,速度也更快。 |
更适合监控物理机环境。 | 更适合云环境的监控,对 OpenStack,Kubernetes 有更好的集成。 |
监控数据存储在关系型数据库内,如 MySQL,很难从现有数据中扩展维度。 | 监控数据存储在基于时间序列的数据库内,便于对已有数据进行新的聚合。 |
安装简单,zabbix-server 一个软件包中包括了所有的服务端功能。 | 安装相对复杂,监控、告警和界面都分属于不同的组件。 |
图形化界面比较成熟,界面上基本上能完成全部的配置操作。 | 界面相对较弱,很多配置需要修改配置文件。 |
发展时间更长,对于很多监控场景,都有现成的解决方案。 | 2015 年后开始快速发展,但发展时间较短,成熟度不及 Zabbix。 |
一.zabbix的简单介绍
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。它可以监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
zabbix由2部分构成,zabbix server与可选组件zabbix agent。zabbix是开源监控系统,企业使用zabbix来对成千上万台服务器进行批量监控,批量监控有两种规则:自动发现规则和自动注册规则。
二.实验环境(rhel7.3版本)
1.selinux和firewalld状态为disabled
2.各主机信息如下:
主机 | ip |
server1(zabbix-server,zabbix-agent,httpd) | 172.25.83.1 |
server2(zabbix-agent) | 172.25.83.2 |
三.zabbix的安装和部署
配置server1:(zabbix-server,zabbix-agent。zabbix-server端的日志所在的文件: cat /var/log/zabbix/zabbix_server.log)
前期准备:
清除环境(因为server1之前安装过mysql,mysql和mariadb不兼容,所以要清除环境)
<1>关闭mysqld服务,以免mysqld服务占用3306端口
[root@server1 ~]# systemctl stop mysqld
<2>删除/var/lib/mysql下的文件(因为mariadb服务启动时生成的执行入口文件,在该目录下。如果不删除该目录下的文件,那么mariadb服务将无法启动)
[root@server1 ~]# cd /var/lib/mysql
[root@server1 ~]# rm -rf *
<3>删除之前安装mysql时的一些rpm包(mysql-community-common-5.7.24-1.el7.x86_64,mysql-community-client-5.7.24-1.el7.x86_64, mysql-community-libs-5.7.24-1.el7.x86_64 ,mysql-community-server-5.7.24-1.el7.x86_64),因为这些包会影响mariadb服务的安装。
[root@server1 mysql]# yum remove mysql-community-common-5.7.24-1.el7.x86_64 -y
[root@server1 mysql]# yum remove mysql-community-client-5.7.24-1.el7.x86_64 mysql-community-libs-5.7.24-1.el7.x86_64 mysql-community-server-5.7.24-1.el7.x86_64 -y
1.下载zabbix软件包及其对应依赖性对应的包,并进行安装
[root@server1 ~]# yum install * -y
注:php的安装版本需要注意(yum list php 查看匹配版本);如果是7.0版本的,需要安装的为5.4.16-21.el7;如果是7.2的主机,需要安装为5.4.16-36.el7;如果是7.3版本的,需要安装的为5.4.16-42.el7。
2.安装数据库,启动数据库,登陆数据库,并对数据库进行配置
[root@server1 ~]# yum install mariadb-server -y
[root@server1 mysql]# systemctl start mariadb
[root@server1 mysql]# mysql_secure_installation #第一个敲空格,其余的敲y
[root@server1 mysql]# mysql -uroot -proot
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin; #创建zabbix数据库,因为之后要在web界面进行操作,为了防止乱码,这里创建的数据库要求格式为utf-8
MariaDB [(none)]> grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by 'zabbix';
#创建zabbix用户,并对其进行授权
3.安装httpd服务,对其进行配置,并启动httpd服务
<1>安装httpd服务
[root@server1 ~]# yum install httpd -y
<2>对httpd服务进行配置(编辑/etc/httpd/conf.d/zabbix.conf)
[root@server1 ~]# cd /etc/httpd/conf.d/
[root@server1 conf.d]# vim zabbix.conf #更改时区
19 php_value date.timezone Asia/Shanghai
<3>启动httpd服务
[root@server1 ~]# systemctl start httpd
4.导入数据库
<1>先找到数据库要导入的位置:
[root@server1 ~]# rpm -ql zabbix-server-mysql-4.0.5
<2>导入数据库
[root@server1 ~]# cd /usr/share/doc/zabbix-server-mysql-4.0.5/
[root@server1 zabbix-server-mysql-4.0.5]# zcat create.sql.gz | mysql -u zabbix -p zabbix ##这里的第一个zabbix是用户,第二个zabbix是要创建数据库的名字
Enter password: #这里的密码是zabbix用户的密码,输入之后,等待,不要ctrl+c
[root@server1 zabbix-server-mysql-4.0.5]# mysql -uroot -proot #登陆数据库查看,可以看到zabbix数据库中共有140张表
MariaDB [(none)]> show databases;
MariaDB [(none)]> use zabbix;
MariaDB [zabbix]> show tables;
5.编辑zabbix配置文件,并启动zabbix-server与zabbix-agent服务
<1>先找到zabbix-server配置文件所在的位置
[root@server1 ~]# rpm -ql zabbix-server-mysql-4.0.5
<2>编辑zabbix-server的配置文件(编辑 /etc/zabbix/zabbix_server.conf)
[root@server1 ~]# vim /etc/zabbix/zabbix_server.conf
124 DBPassword=zabbix #zabbix用户的密码
<3>启动zabbix-server和zabbix-agent服务
[root@server1 ~]# systemctl start zabbix-server
[root@server1 ~]# systemctl start zabbix-agent
6.访问http://172.25.83.1/zabbix,进行监控项配置即可
点击Next step
点击Next step
输入zabbix用户的密码:zabbix。
点击Next step
输入Name:Zabbix server(这个名字可以随便起的)。点击Next step
点击Next step
点击Finish,完成安装
输入Username:Admin和Password:zabbix。进入登陆界面(注意Admin的首字母需要大写)
注意:初始帐号和密码。
帐号:Admin
密码:zabbix
点击小人这里,我们可以修改语言
将Language该为Chinese(zh_CN),然后点击update,即修改成功
配置server2(zabbix-agent。zabbix-agent端的日志所在的文件: cat /var/log/zabbix/zabbix_agent.log):
1.下载zabbix-agent对应软件包:zabbix-agent-4.0.5-1.el7.x86_64.rpm,并进行安装
[root@server2 ~]# yum install zabbix-agent-3.4.6-1.el7.x86_64.rpm -y
2.配置zabbix-agent,并启动zabbix-agent服务
<1>先找到zabbix-agent配置文件所在的位置
[root@server2 ~]# rpm -ql zabbix-agent-4.0.5
<2>编辑zabbix-agent的配置文件
[root@server2 ~]# vim /etc/zabbix/zabbix_agentd.conf
98 Server=172.25.83.1
139 ServerActive=172.25.83.1 #主动模式的server IP地址(客户端主动发送数据给服务端)
150 Hostname=server2 #客户端的hostname(在web界面上显示的名字)
#在这里,139行可写,可不写。因为现在配置的是被动模式(服务端来找客户端要数据)。要想开启主动模式,还要结合StartAgents这一行(#StartAgents=3 #客户端agent模式,设置为0表示禁止被动模式)
<3>启动zabbix-agent服务
[root@server2 ~]# systemctl start zabbix-agent
测试:在server1(zabbix-server)端添加监控:
1.自动发现agent:
配置—>自动发现。点击“停用的”,使得其显示“已启用”。
点击Local network,进入自动发现规则;
在IP范围内填入,自己主机的IP网段(这里写的是172.25.83.1-10,其实只要这个ip段包含server2主机对应的ip地址172.25.83.2即可)。然后,点击更新,以启动自动发现的动作
然后选择动作——事件源(选择自动发现),进入下一个界面
点击停用的,使其启用,即显示“已启用”
为了加快自动发现的速度,点击Auto discovery Linux servers,进入界面添加触发条件
在新的触发条件这一栏,写入"接收到的值包含server",点击添加,再点击更新,进入下一个界面
为了加快自动发现的速度,我们在server1端重启zabbix-server服务,在server2端重启zabbix-agent服务
[root@server2 ~]# systemctl restart zabbix-agent
[root@server1 ~]# systemctl restart zabbix-server
点击监测——>自动发现,会出现server2;
同样的,点击配置——>主机,等待几十秒,会出现server2;
我们看到的是ZBX的图标是灰色的,这是不对的。等待几秒,进行刷新,看图标是否变绿。ZBX的图标是绿色的,这才是正确的。
2.手动添加agent:
<1>停止自动发现
<2>创建主机
点击 配置—>主机—>创建主机
填写主机名称,选择群组,填写IP地址
值的注意的是:主机名称:必须要和agent中的HostName中一样,否则会出错
点击最下方的添加,进入下一个界面
点击下方的server2,进入下一个界面
点击模板,进行模板的编写,点击右方的选择,选择Template OS Linux,然后选择添加,再选择更新,进入下一个界面
最后的效果图
我们看到的是ZBX的图标是灰色的,这是不对的。等待几秒,进行刷新,看图标是否变绿。ZBX的图标是绿色的,这才是正确的。
3.自动注册agent(适合生产环境:大批量)
首先删除手动添加的server2这台主机;然后选择配置—>动作,选择自动注册
点击创建动作,进入下一步
在动作这一栏,写入名称:auto_reg。新的触发条件这一栏,写入:server2
点击操作,进入下一个界面,在该界面的操作中选择如下的三个操作,然后,点击添加,进入下一个界面
点击配置—>主机,停留几十秒,可以看到最后的效果图(为了加快看到server2这台主机,我们可以在server2端重启zabbix-agent服务)
[root@server2 ~]# systemctl restart zabbix-agent
最后的效果图
我们看到的是ZBX的图标是灰色的,这是不对的。等待几秒,进行刷新,看图标是否变绿。ZBX的图标是绿色的,这才是正确的。