Zabbix是一个企业级的高度集成的开源监控软件,提供了分布式监控解决方案,可以用来监控设备、服务等的可用性和性能。其产品不分企业版和社区版,是一个真正的源码开放产品,用户可以自由下载并使用该软件。地址:https://www.zabbix.com/cn
从功能上说,Zabbix支持多种采集方式和采集客户端,有专用的Agent(代理),也支持SNMP、IPMI、JMX、Telnet、SSH等多种协议,它将采集到的数据存放到数据库中,可以支持MySQL、Oracle、PostgreSQL、SQLite、Elasticsearch等数据库,然后对其进行分析整理,达到条件触发告警,并支持对告警数据的分析统计。Zabbix具有良好的管理界面。
Zabbix的通用架构采用客户端/服务器端模式,分布式架构采用客户端/代理端/服务器端模式,Zabbix-Server将采集到的数据持久地存储到数据库中,用前端UI友好地展示给用户。
客户端采集数据,代理服务器做代理,服务器端处理数据的架构模式:
Zabbix数据的采集不仅可以使用Agent方式,也可以使用其他方式,如采用SNMP、SSH、Telnet、IPMI等多种协议。
截图来自官网:https://www.zabbix.com/cn/life_cycle_and_release_policy
Zabbix首个发行版本为Zabbix 1.0 alpha1,其发行时间为2001年4月7日。随着版本的升级,其功能特性也在不断地增强和完善。
非LTS的版本均为实验版本,每6个月发布一个新版本。因此,对于生产环境版本的选择,我们尽量选择LTS版本,可享受长期更新支持服务,这样即使出现安全漏洞等问题,也会得到更新支持。
Zabbix具有常见的商业监控软件所具备的功能,如主机性能监控、网络设备性能监控、数据库性能监控、FTP等通用协议监控、多种告警方式、详细的报表图表绘制、分布式、可扩展能力、API等。
数据收集
灵活的触发器
可以定义非常灵活的告警阈值和与多种告警相关联的条件。
高度可定制的告警
实时的绘图功能
监控项将数据实时绘制在图形上。
Web监控能力
Zabbix可以模拟浏览器请求访问一个网站,并检查返回值和响应时间。
多种可视化展示
历史数据的存储
配置非常容易
配置比较简单,只需要以下两步即可:(1)添加设备。(2)应用模板即可完成监控。
使用模板
网络发现
快速的访问接口
API功能
应用API功能可以方便地与其他系统结合,包括手机客户端的使用。
系统权限
程序特性
服务器端Zabbix-Server和采集端Zabbix-Agent使用C语言编写,其性能非常高,内存开销非常小。
大型环境的支持
利用Zabbix-Proxy方式可轻松构建远程监控。
软件环境由CentOS 7(64位)、httpd、PHP和MariaDB组成。
由于Zabbix核心组件是用C语言写的,所以理论上其可以支持Linux、UNIX、Windows等常见的操作系统,但Zabbix-Server和Zabbix-Porxy均不支持Windows系统(底层的实现依赖Linux系统的一些特性)。在Zabbix 3.0版本以后,对其支持最好的CentOS版本为7.0以上版本,7.0以下版本的安装和配置均比较麻烦,因此不再推荐使用。
注意:如果仅仅检测网络服务FTP、SSH、HTTP、DNS、LDAP,则无须安装任何客户端,即可支持获取监控数据。
Zabbix-Server对时间的精准要求比较高,时间对数据的计算等都有影响,因此必须设置NTP自动同步时间。
[root@linux30 zabbix]# yum -y install ntp
访问Zabbix的软件仓库网站,网址为http://repo.zabbix.com
安装Zabbix的RPM包软件仓库官方源:
[root@linux30 zabbix]# pwd
/opt/itcast/zabbix
[root@linux30 zabbix]# ll
总用量 16
-rw-r--r--. 1 root root 13712 2月 23 11:44 zabbix-release-4.0-1.el7.noarch.rpm
[root@linux30 zabbix]# rpm -ivh zabbix-release-4.0-1.el7.noarch.rpm
警告:zabbix-release-4.0-1.el7.noarch.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY
准备中... ###################### [100%]
正在升级/安装...
1:zabbix-release-4.0-1.el7 ###################### [100%]
[root@linux30 zabbix]# rpm -ql zabbix-release
/etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
/etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
/etc/yum.repos.d/zabbix.repo
/usr/share/doc/zabbix-release-4.0
/usr/share/doc/zabbix-release-4.0/GPL
[root@linux30 zabbix]# cat /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=http://repo.zabbix.com/zabbix/4.0/rhel/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=http://repo.zabbix.com/non-supported/rhel/7/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=1
[root@linux30 zabbix]#
安装Zabbix-Server服务器端,由于服务器端也是需要监控的,故这里也一并安装了Zabbix-Agent。
[root@linux30 zabbix]# yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent zabbix-get
在CentOS 7系统包仓库安装源中,我们需要安装mariadb-server,而不是MySQL数据库服务(7.0以后的版本用MariaDB替换了MySQL),命令如下:
[root@linux30 zabbix]# yum -y install mariadb-server
修改MySQL配置文件:
[root@linux30 zabbix]# vi /etc/my.cnf
添加如下内容:
[mysqld]
# 设置字符集为UTF-8
character-set-server=utf8
# 让InnoDB的每个表文件单独存储
innodb_file_per_table=1
启动服务:
[root@linux30 zabbix]# systemctl start mariadb
查看服务是否启动成功:
首先设置MySQL的root用户密码,然后创建zabbix数据库,设置访问策略.
# 设置root用户密码为123456
[root@linux30 zabbix]# mysqladmin -uroot password 123456
# 登录MySQL
[root@linux30 zabbix]# mysql -uroot -p123456
# 创建数据库,名称为zabbix,并将其字符集设置为UTF-8
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
# 设置zabbix数据库的权限,允许用户zabbix的IP地址127.0.0.1和localhost访问
# 并将zabbix账号的密码设置为zabbix
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@'localhost' identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@'127.0.0.1' identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)
# 刷新权限,使其立即生效
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
这里容易出现的问题是,如果创建zabbix数据库的字符集不为UTF-8,则可能会导致Web界面切换到中文语言时出现乱码。
导入Zabbix库的数据文件,使用以下命令:
# 进入对应版本目录
[root@linux30 zabbix]# cd /usr/share/doc/zabbix-server-mysql-4.0.38/
# 将sql文件解压缩
[root@linux30 zabbix-server-mysql-4.0.38]# gunzip create.sql.gz
# 以zabbix用户登录
[root@linux30 zabbix-server-mysql-4.0.38]# mysql -uzabbix -pzabbix -h127.0.0.1
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| test |
| zabbix |
+--------------------+
3 rows in set (0.00 sec)
# 切换到zabbix数据库
MariaDB [(none)]> use zabbix;
Database changed
# 导入sql文件
# create.sql是zabbix源码包中的3个SQL文件的集合,即分别为schame.sql(表结构);images.sql(图形相关数据);data.sql(模板相关数据)
MariaDB [zabbix]> source /usr/share/doc/zabbix-server-mysql-4.0.38/create.sql
配置zabbix_server.conf文件如下:
vi /etc/zabbix/zabbix_server.conf
内容如下:
# 日志文件
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
SocketDir=/var/run/zabbix
# 数据库连接
DBHost=192.168.10.30
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBPort=3306
StartPollers=100
StartIPMIPollers=10
StartPollersUnreachable=10
StartTrappers=10
StartPingers=10
StartDiscoverers=10
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
CacheSize=256M
HistoryCacheSize=128M
TrendCacheSize=128M
ValueCacheSize=2048M
Timeout=30
Timeout=4
TrapperTimeout=300
# 告警和扩展脚本路径
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
告警和扩展脚本路径可能默认不存在,使用以下命令创建目录:
[root@linux30 zabbix]# mkdir -p /etc/zabbix/alertscripts /etc/zabbix/externalscripts
启动服务:
[root@linux30 zabbix]# systemctl start zabbix-server
[root@linux30 zabbix]# systemctl start httpd
查看进程:
查看日志:
[root@linux30 zabbix]# tail -f /var/log/zabbix/zabbix_server.log
如果CentOS操作系统存在防火墙,则需要允许相关端口能够访问,配置命令如下:
[root@linux30 ~]# firewall-cmd --permanent --add-port=80/tcp
# 10050是Agent的端口,Agent采用被动方式,Server主动连接Agent的10050端口;
[root@linux30 ~]# firewall-cmd --permanent --add-port=10050/tcp
# 10051是Server的端口,Agent采用主动或Trapper方式,会连接Server的10051端口。
[root@linux30 ~]# firewall-cmd --permanent --add-port=10051/tcp
[root@linux30 ~]# firewall-cmd -reload
如果操作系统已开启SELinux,则需要设置语句开启允许SELinux的相关策略。
[root@linux30 ~]# setsebool -P httpd_can_connect_zabbix on
[root@linux30 ~]# setsebool -P httpd_can_network_connect_db on
# 获取当前SELinux的运行状态
[root@linux30 ~]# getenforce
Enforcing
# 设置为告警模式,只给出提示,不会阻止操作,不用重启服务
[root@linux30 ~]# setenforce 0
直接关闭SELinux的方法:
[root@linux30 ~]# vi /etc/selinux/config
SELINUX=disabled
注意:此方式需要重启服务器才能生效。
修改php.ini相关配置参数,命令如下:
[root@linux30 etc]# vi /etc/php.ini
data.timezone = Asia/Shanghai
max_execution_time = 300
post_max_size = 16M
max_input_time = 300
# web页面内存不够用时,调节此参数
memory_limit = 128M
mbstring.func_overload = 0
修改zabbix.conf,只需要修改date.timezone即可
[root@linux30 etc]# vi /etc/httpd/conf.d/zabbix.conf
# 修改date.timezone
php_value date.timezone Asia/Shanghai
如果在后面配置Web时提示任何参数不满足安装与配置要求,则修改对应的参数后重启httpd即可。
打开浏览器,输入http://IP地址/zabbix,会出现欢迎页面。
http://192.168.10.30/zabbix
PHP提示的各项参数都满足后,可以继续往下进行,单击“Next step”按钮。如果提示参数不通过,则修改php.ini配置文件,并重启Web(httpd)服务。
配置数据库连接的各项参数。单击“Next step”按钮进行下一步操作。
Zabbix-Server的连接地址、端口、名称设置,将会显示在Zabbix的前端页面中。
这些配置信息将会被写入/etc/zabbix/web/zabbix.conf.php文件中
配置文件生成成功
登录页面,默认账户是Admin,密码是zabbix
登录成功后的首页
在System information面板中,如Zabbix server is running为No,则分别检查SELinux、iptables,以及zabbix_server.conf和zabbix.conf.php中的各项配置参数
通过前面的介绍,我们知道Zabbix监控可以采用服务器端/客户端架构,其客户端的采集方式分为Agent、SNMP等。在这里,我们先学习使用Agent方式对服务器进行监控。
在这里,我们对需要进行监控的服务器安装Zabbix-Agent,使用RPM包方式进行安装,命令如下:
# 将rpm包复制到linux31服务器
[root@linux30 zabbix]# scp zabbix-release-4.0-1.el7.noarch.rpm [email protected]:/opt/itcast/zabbix/
# 安装Zabbix官方yum源
[root@linux31 zabbix]# rpm -ivh zabbix-release-4.0-1.el7.noarch.rpm
# 安装
[root@linux31 zabbix]# yum -y install zabbix zabbix-agent
如果操作系统开启了防火墙,为了允许端口能够正常通信,则需要使用下列命令进行配置:
[root@linux31 zabbix]# firewall-cmd --permanent --add-port=10050/tcp
[root@linux31 zabbix]# firewall-cmd --reload
zabbix_agentd.conf是Zabbix-Agent的配置参数文件,需要对配置参数进行手动修改。修改的参数如下:
[root@linux31 ~]# egrep -v "(^#|^$)" /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.10.30
ServerActive=192.168.10.30
Hostname=Zabbix server
Include=/etc/zabbix/zabbix_agentd.d/*.conf
[root@linux31 ~]#
参数含义如下。
配置完成后,使用如下命令启动Zabbix-Agent:
[root@linux31 zabbix]# systemctl start zabbix-agent