监控是每个公司必不可少的部门,通过监控我们能实时的观察设备的运行状态,保证业务稳定运行。当业务出现问题时,监控及时给各负责人发送告警,从而我们能够快速定位问题,及时止损。所以监控就像是眼睛一样,帮我们时刻盯着各个设备的工作情况。目前市面上有很多的监控软件,比如老牌的nagios、cacti、zabbix,新兴的prometheus、open-falcon、夜莺等,收费的监控宝、solar windows,每种监控软件都有自己的特点。至于怎么选择,就需要看你公司的具体情况,当然更多的是看你老大要你用哪个,比如我们公司就用了cacti、zabbix、prometheus。之前的文章,我讲了prometheus的相关内容,今天再来简单讲一讲zabbix,目前zabbix最新版是5.2,但是5.0是最新的长期支持版,生产中应该优先选择稳定的长期支持版。
Zabbix 是一个企业级分布式开源监控解决方案, 由 Alexei Vladishev 创建,目前由其成立的公司—— Zabbix SIA 积极的持续开发更新维护, 并为用户提供技术支持服务。zabbix 软件能够监控众多网络参数和服务器的健康度、完整性。 使用灵活的告警机制,允许用户为几乎任何事件配置基于邮件的告警。这样用户可以快速响应服务器问题。zabbix 支持主动轮询(polling)和被动捕获(trapping)。
Zabbix不仅仅提供监控功能,他还基于存储的数据提供出色的报表和数据可视化功能,所有的报表、统计数据和配置参数都可以通过基于 web 的前端页面进行访问,基于 web 的前端页面确保用户可以在任何地方访问监控的网络状态和服务器健康状况。这样看来zabbix又有点像一个简易的cmdb系统。
Zabbix server
Zabbix软件的核心组件,agent 向其报告可用性、系统完整性信息和统计信息。server也是存储所有配置信息、统计信息和操作信息的核心存储库。
数据库
所有配置信息以及 Zabbix 采集到的数据都被存储在数据库中,支持mysql、postgresql、oracle、sqlite,目前5.0还支持了timescale db。
Zabbix agent
Zabbix agents 部署在被监控目标上,用于主动监控本地资源和应用程序,并将收集的数据发送给 zabbix server。
Web UI 界面
为了从任何地方和任何平台轻松访问 zabbix ,zabbix提供了基于 web 的界面。该界面是 zabbix server 的一部分,通常和 zabbix server 运行在同一台机器上,当然可以分开到不同机器上运行。
Zabbix proxy
Zabbix proxy 可以代替 zabbix server采集性能和可用性数据。zabbix proxy在zabbix的部署是可选部分;但是proxy的部署可以很好的分担单个zabbix server的负载。
数据流
这不是zabbix的实际组件,整体的了解下zabbix 内部的数据流对zabbix的使用也很重要。首先,为了创建一个采集数据的监控项,必须先创建主机。其次,在任务的另外一端,必须要有监控项才能创建触发器(trigger),必须要有触发器来创建动作(action)。因此,如果用户想要收到类似“X个server上CPU负载过高”这样的告警,必须首先为 Server X 创建一个主机条目,其次创建一个用于监控其 CPU的监控项,最后创建一个触发器,用来触发 CPU负载过高这个动作,并将其发送到用户的邮箱里。虽然这些步骤看起来很繁琐,但是使用模板的话,实际操作非常简单。也正是由于这种设计,使得 Zabbix 的配置变得更加灵活易用。
zabbix要求有LAMP或者LNMP环境,目前5.0以上的版本要求php版本>=7.2
操作系统/软件 | 版本 |
---|---|
Centos | 7.6 |
mysql | 5.7.32 |
php | 7.4.12 |
下载安装包
[root@zabbix ~]# wget https://www.php.net/distributions/php-7.4.12.tar.gz
安装依赖
[root@zabbix ~]# yum install -y libxml2-devel sqlite-devel gcc-c++
[root@zabbix ~]# tar -xf php-7.4.12.tar.gz
[root@zabbix ~]# cd php-7.4.12
[root@zabbix php-7.4.12]# ./configure --prefix=/usr/local/php --enable-fpm
[root@zabbix php-7.4.12]# make && make install
[root@zabbix php-7.4.12]# cd
[root@zabbix ~]# ln -s /usr/local/php/bin/php /usr/bin/php
[root@zabbix ~]# php -v
PHP 7.4.12 (cli) (built: Nov 22 2020 20:46:33) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
添加mysql的yum源
[root@zabbix ~]# vim /etc/yum.repos.d/mysql.repo
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
[root@zabbix ~]# wget http://repo.mysql.com/RPM-GPG-KEY-mysql
[root@zabbix ~]# mv RPM-GPG-KEY-mysql /etc/pki/rpm-gpg/
[root@zabbix ~]# yum makecache
[root@zabbix ~]# yum install -y mysql-community-server
[root@zabbix ~]# systemctl start mysqld
[root@zabbix ~]# systemctl enable mysqld
注意首次登陆mysql后需要修改密码才能登陆
查看安装时的临时密码
[root@zabbix ~]# grep 'temporary password' /var/log/mysqld.log
修改密码,注意这里会进行密码强度校验,密码设置时必须包含大小写字母、特殊符号、数字,并且长度大于8位
[root@zabbix ~]# mysql -uroot -p
mysql> alter user 'root'@'localhost' identified by '!QAZxsw2';
此部分根据实际需要设置
mysql> show variables like 'validate_password%';
mysql> set global validate_password_policy=0;
此处可以看到密码设置必须包含大小写字母、特殊符号、数字,并且长度大于8位
mysql 密码策略相关参数解释:
validate_password_length:固定密码的总长度;
validate_password_dictionary_file:指定密码验证的文件路径;
validate_password_mixed_case_count :密码中至少要包含大/小写字母的总个数;
validate_password_number_count :密码中至少要包含阿拉伯数字的个数;
validate_password_policy:指定密码的强度验证等级,默认为 MEDIUM。
其中validate_password_policy的取值为:
0/LOW:只验证长度;
1/MEDIUM:验证长度、数字、大小写、特殊字符;
2/STRONG:验证长度、数字、大小写、特殊字符、字典文件。
[root@zabbix ~]# wget https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
[root@zabbix ~]# rpm -ivh zabbix-release-5.0-1.el7.noarch.rpm
[root@zabbix ~]# ls /etc/yum.repos.d/zabbix.repo
[root@zabbix ~]# yum install -y zabbix-server-mysql zabbix-agent
或者使用阿里的zabbix镜像源
[root@devops ~]# wget https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
[root@devops ~]# sed -i 's#repo.zabbix.com#mirrors.aliyun.com/zabbix#g' /etc/yum.repos.d/zabbix.repo
启用红帽软件集
[root@zabbix ~]# yum install -y centos-release-scl
修改zabbix源,开启zabbix前端仓库
[root@zabbix ~]# vim /etc/yum.repos.d/zabbix.repo
[zabbix-frontend]
enabled=1
使用nginx
[root@zabbix ~]# yum install -y zabbix-web-mysql-scl zabbix-nginx-conf-scl
使用apache
[root@zabbix ~]# yum install -y zabbix-web-mysql-scl zabbix-apache-conf-scl
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user zabbix@localhost identified by '!QAZxsw2';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
导入初始架构和数据
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
为zabbix配置数据库
[root@zabbix ~]# vim /etc/zabbix/zabbix_server.conf
DBPassword=!QAZxsw2
nginx
编辑配置文件 /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf
[root@zabbix ~]# vim /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf
listen 80;
server_name example.com;
注释/etc/opt/rh/rh-nginx116/nginx/nginx.conf文件中
# server {
# listen 80 default_server;
# listen [::]:80 default_server;
# server_name _;
# root /opt/rh/rh-nginx116/root/usr/share/nginx/html;
# include /etc/opt/rh/rh-nginx116/nginx/default.d/*.conf;
# location / {
# }
# error_page 404 /404.html;
# location = /40x.html {
# }
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# }
# }
编辑配置文件 /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
listen.acl_users = apache,nginx
php_value[date.timezone] = Asia/Shanghai
[root@zabbix ~]# systemctl start zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm
[root@zabbix ~]# systemctl enable zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm
apache
编辑配置文件 /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
php_value[date.timezone] = Asia/Shanghai
[root@zabbix ~]# systemctl start zabbix-server zabbix-agent httpd rh-php72-php-fpm
[root@zabbix ~]# systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
打开网页,输入ip,进入配置页
点击 Next step。进入配置检查,看是否全部OK
点击 Next step。输入数据库密码
点击 Next step。Name可以任意输入一个名字
点击 Next step。查看配置总览
点击 Next step。完成配置
点击Finsh。来到登陆界面
输入默认用户名密码,Admin,zabbix。进入监控首页
可以发现最大的不同是菜单栏放到左侧了。
User settings里面设置中文选项
但是发现监控指标为乱码。吐槽一下:时间选择这里,最近xx小时竟然翻译成了还剩xx小时。
乱码问题解决
下载字符集
[root@zabbix ~]# yum install -y wqy-microhei-fonts
复制字符集到zabbix的字符集中
[root@zabbix ~]# cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/zabbix/assets/fonts/wqy-microhei.ttf
修改前端配置
[root@zabbix ~]# vim /usr/share/zabbix/include/defines.inc.php
define('ZBX_GRAPH_FONT_NAME', 'wqy-microhei');
[root@zabbix ~]# systemctl restart zabbix-server
https://www.zabbix.com/cn/download