官方 4.0 中文文档:https://www.zabbix.com/documentation/4.0/zh/manual。以下内容基于 Zabbix 4.0 LTS(包括后续的 Zabbix 系列文章),也大部分参考于官方文档,相比本文更建议阅读官方文档,本文及后续系列文章只是个人整理。说实话感觉系列文章都没必要写,官方文档多香。
一、介绍
Zabbix 是一个企业级分布式开源监控软件。
Zabbix 基于web界面,大部分操作都可以在web界面完成。Zabbix 能够监控众多网络参数和服务器的健康状况。Zabbix 使用灵活的告警机制,允许用户为几乎任何事件配置基于邮件的告警,这样用户可以快速响应服务器问题。Zabbix 基于存储的数据提供了出色的报表和数据可视化功能,这些功能使得 Zabbix 成为容量规划的理想选择。
Zabbix 支持主动轮询(polling)和被动捕获(trapping)。Zabbix所有的报表、统计数据和配置参数都可以通过基于 Web 的前端页面进行访问。基于 Web 的前端页面确保您可以在任何地方访问您监控的网络状态和服务器健康状况。适当的配置后,Zabbix 可以在监控 IT 基础设施方面发挥重要作用,无论是对于有少量服务器的小型组织,还是拥有大量服务器的大企业而言,同样适用。
二、架构
Zabbix 由几个主要的功能组件组成,其功能介绍如下:
SERVER:Zabbix server 是 Zabbix 软件的核心组件,agent 向其报告可用性、系统完整性信息和统计信息。server也是存储所有配置信息、统计信息和操作信息的核心存储库。
数据库:所有配置信息以及 Zabbix 采集到的数据都被存储在数据库中。
WEB:Zabbix web 提供了 web 的界面。该界面是 Zabbix server 的一部分,通常(但不一定)和 Zabbix server 运行在同一台物理机器上。
AGENT:Zabbix agents 部署在被监控目标上,用于主动监控本地资源和应用程序,并将收集的数据发送给 Zabbix server。
PROXY:Zabbix proxy 可以代替 Zabbix server 采集服务器性能和可用性数据。Zabbix proxy 在 Zabbix 的部署是可选部分,但是 proxy 的部署可以很好的分担单个 Zabbix server 的负载。
Zabbix 数据流。在使用 Zabbix 之前,了解 Zabbix 内部的数据流对 Zabbix 的使用也是很重要:
首先,为了创建一个采集数据的监控项,您就必须先创建主机。其次,在任务的另外一端,必须要有监控项才能创建触发器(trigger),必须要有触发器来创建动作(action)。因此,如果您想要收到类似“某个 Server 上 CPU 负载过高”这样的告警,您必须首先为 Server 创建一个主机条目,其次创建一个用于监控其 CPU 的监控项,最后创建一个触发器,用来触发当 CPU 负载过高将告警发送到您的邮箱这个动作。虽然这些步骤看起来很繁琐,但是使用模板的话,实际操作非常简单。也正是由于这种设计,使得 Zabbix 的配置变得更加灵活易用。
二、安装部署
1、安装zabbix 的server和web
[root@zabbix ~]# rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
[root@zabbix ~]# yum install -y zabbix-server-mysql zabbix-web-mysql httpd
# 如果安装缓慢,请更换清华大学源
[root@zabbix ~]# sed -i 's#http://repo.zabbix.com#https://mirror.tuna.tsinghua.edu.cn/zabbix#g' /etc/yum.repos.d/zabbix.repo
2、数据库安装配置(mysql)
因为实验环境,所以这里数据库就和 zabbix 装一台服务器,一般独立装一台服务器上。这里安装方式就选择配置 yum 仓库安装,数据库也可以使用 mariadb 来代替 mysql。
(1)安装数据库
[root@zabbix ~]# vim /etc/yum.repos.d/mysql.repo # 配置mysql 5.7系列版本官方源
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
enabled=1
gpgcheck=0
[root@zabbix ~]# yum install -y mysql-community-server
[root@zabbix ~]# systemctl start mysqld
[root@zabbix ~]# systemctl enable mysqld
(2)配置数据库
[root@zabbix ~]# grep 'temporary password' /var/log/mysqld.log # 查看mysql自动生成的临时密码
2021-01-07T08:14:29.977594Z 1 [Note] A temporary password is generated for root@localhost: <%1ivx6slrSJ
[root@zabbix ~]# mysql -uroot -p'<%1ivx6slrSJ'
mysql> alter user root@'localhost' identified by 'Zabbix1!'; # 有密码复杂性性要求,必须包含至少一个大写字母、小写字母、数字、特殊字符,密码长度至少8位。
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user 'zabbix'@'localhost' identified by 'Zabbix1!';
mysql> grant all on zabbix.* to 'zabbix'@'localhost';
(2)导入数据
将Zabbix server的初始数据库的schema和数据导入mysql。
[root@zabbix ~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
3、配置zabbix server连接数据库
[root@zabbix ~]# vim /etc/zabbix/zabbix_server.conf # 修改以下配置
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=Zabbix1!
4、配置 zabbix 前端设置时区
[root@zabbix ~]# vim /etc/httpd/conf.d/zabbix.conf # 修改以下配置
php_value date.timezone Asia/Shanghai
5、启动服务
关闭防火墙和SELinux。
[root@zabbix ~]# systemctl start zabbix-server httpd
[root@zabbix ~]# systemctl enable zabbix-server httpd
[root@zabbix ~]# netstat -ntlp | grep -E "10051|80|3306"
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 29636/zabbix_server
tcp6 0 0 :::3306 :::* LISTEN 19104/mysqld
tcp6 0 0 :::80 :::* LISTEN 29574/httpd
tcp6 0 0 :::10051 :::* LISTEN 29636/zabbix_server
6、访问
浏览器访问:Zabbix服务器IP地址/zabbix(如:10.0.0.70/zabbix),,根据界面完成配置引导,就可以使用我们的 Zabbix 了(默认账号:Admin,密码:zabbix),可以看到如下界面:
7、将 zabbix 所在主机监控起来
[root@zabbix ~]# yum install -y zabbix-agent
[root@zabbix ~]# cat /etc/zabbix/zabbix_agentd.conf | grep '^Server=' # 默认为本地
Server=127.0.0.1
[root@zabbix ~]# systemctl start zabbix-agent
[root@zabbix ~]# systemctl enable zabbix-agent
[root@zabbix ~]# netstat -ntlp | grep "10050"
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 29763/zabbix_agentd
tcp6 0 0 :::10050 :::* LISTEN 29763/zabbix_agentd
三、中文乱码解决
zabbix 可以直接设置语言为中文简体,但是会造成报表的文字乱码,如下:
这是因为字体原因,我们可以从 Windows 本地复制一个字体去替换 zabbix 使用的字体即可。
# 先找字体存放位置
[root@zabbix ~]# find / -name "fonts"
......
/usr/share/zabbix/assets/fonts
[root@zabbix ~]# cd /usr/share/zabbix/assets/fonts/
[root@zabbix ~]# ll
lrwxrwxrwx. 1 root root 33 Jan 7 02:50 graphfont.ttf -> /etc/alternatives/zabbix-web-font
[root@zabbix fonts]# ll /etc/alternatives/zabbix-web-font
lrwxrwxrwx. 1 root root 38 Jan 7 02:50 /etc/alternatives/zabbix-web-font -> /usr/share/fonts/dejavu/DejaVuSans.ttf
[root@zabbix fonts]# cd /usr/share/fonts/dejavu/
[root@zabbix dejavu]# ls
DejaVuSans-BoldOblique.ttf DejaVuSansCondensed-Bold.ttf DejaVuSans-ExtraLight.ttf
DejaVuSans-Bold.ttf DejaVuSansCondensed-Oblique.ttf DejaVuSans-Oblique.ttf
DejaVuSansCondensed-BoldOblique.ttf DejaVuSansCondensed.ttf DejaVuSans.ttf
# 找到字体存放位置了,将我们准备的字体上传改名替换DejaVuSans.ttf即可。
[root@zabbix dejavu]# mv DejaVuSans.ttf DejaVuSans.ttf.bak
[root@zabbix dejavu]# mv simhei.ttf DejaVuSans.ttf
此时再看:
四、数据库的拆分
前面我们将数据库和 zabbix 安装在一台服务器上,现在我们将数据库独立拆分到另一台服务器上。
1、安装数据库
略
2、配置数据库
mysql> alter user root@'localhost' identified by 'Zabbix1!';
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user 'zabbix'@'%' identified by 'Zabbix1!';
mysql> grant all on zabbix.* to 'zabbix'@'%';
3、数据导入
[root@zabbix ~]# mysqldump -uroot -p -B zabbix > zabbix.sql # 数据导出
[root@zabbix ~]# scp zabbix.sql 10.0.0.7:/tmp
[root@db ~]# mysql -uroot -p zabbix < /tmp/zabbix.sql # 数据导入
4、修改 zabbix-server 的配置文件更改数据库连接地址
[root@zabbix ~]# vim /etc/zabbix/zabbix_server.conf # 修改以下配置
DBHost=10.0.0.7
DBName=zabbix
DBUser=zabbix
DBPassword=Zabbix1!
5、修改 zabbix-web 连接数据库的配置文件
[root@zabbix ~]# vim /etc/zabbix/web/zabbix.conf.php # 修改以下配置
$DB['SERVER'] = '10.0.0.7';
6、重启服务,访问验证
[root@zabbix ~]# systemctl restart zabbix-server httpd