摘要:最近搭建一个zabbix用于监控服务器的资源情况,这里记录一下搭建以及优化过程

监控系统搭建

1.安装zabbix监控系统

wget https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.0-1+focal_all.deb
dpkg -i zabbix-release_5.0-1+focal_all.deb

2.更换linux源

使用国内的源速度会快一点

deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

3.安装zabbix组件

apt install zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-agent

//zabbix-server-mysql:这是Zabbix监控系统的重要组件,提供了与 MySQL 数据库的集成功能,负责接收来自 Zabbix 代理的监控数据,并将其存储到 MySQL 数据库中。
//zabbix-frontend-php:这是Zabbix前端的PHP版本。它提供了一个用户友好的界面,用于管理和监控Zabbix系统。
//zabbix-nginx-conf:这是Zabbix使用的Nginx配置文件。Nginx是一个流行的Web服务器,用于提供Zabbix前端的访问。
//zabbix-agent:这是Zabbix代理组件,用于在被监控的主机上收集系统信息并将其发送到Zabbix服务器。

4.安装mysql、nginx

apt-get install nginx mysql-server -y

5.初始化mysql数据库

1. 启动mysql

systemctl start mysql

2. 创建初始化数据库以及用户

mysql -uroot -p
ysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user zabbix@localhost identified by 'password';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> quit;

3. 执行创建表的sql语句

zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

6.zabbix服务器配置数据库

编辑文件/etc/zabbix/zabbix_server.conf

DBName=刚刚设置的数据库用户名
DBPassword=刚刚设置的mysql数据库密码
DBHost=localhost

如果直接执行上面的命令就是

DBName=zabbix
DBPassword=password
DBHost=localhost

7.zabbix前端配置php

编辑文件/etc/zabbix/nginx.conf,取消注释并设置"listen"和"server_name"指令

listen 80; # 你要设置的端口号
server_name example.com;  #域名或者ip地址

编辑文件/etc/zabbix/php-fpm.conf,取消注释设置正确的时区。一般都是设置为亚洲上海

php_value[date.timezone] = Asia/Shanghai 

8.启动zabbix服务器和zabbix监控客户端

启动Zabbix服务器和代理进程,并设置开机启动

systemctl restart zabbix-server zabbix-agent nginx php7.4-fpm
systemctl enable zabbix-server zabbix-agent nginx php7.4-fpm

然后打开游览器输入zabbix服务器的http://ip:端口/zabbix,进入zabbix的web界面,根据提示输入刚刚的MySQL数据密码完成安装,初始化管理员账号为Admin 密码为:zabbix

9.安装中文语言

apt-get -y install language-pack-zh-hant language-pack-zh-hans

然后重启服务

systemctl restart zabbix-server zabbix-agent nginx php7.4-fpm

然后进入zabbix的web界面找到用户设置,点击语言,切换中文即可。

zabbix搭建1.png

zabbix搭建2.png

zabbix搭建3.png

zabbix优化以及bug解决

network traffic图形显示异常

我用的版本是Zabbix 5.0.15,在network traffic图形中总是no data,看不到网卡的带宽大小。见下图。

zabbix搭建4.png

后面搜索了很久,发现了是 Template Module Windows network by Zabbix agent 这个模板的问题,获取到的网卡名称是形如E1017C77-A3D8-4C59-A4B1-B1978F1C4512这样的,这种格式是错的。我找了一个Zabbix 5.0.0的模板替换一下就可以了。

替换教程如下:

zabbix搭建5.png

zabbix搭建6.png

Zabbix 5.0.0模板资源这里分享一下:

Template Module Windows network by Zabbix agent 模板.rar

也可自行去这个链接Zabbix-Templates下载。

PS:这个问题查阅资料发现zabbix很久都没处理,见这个帖子Zabbix template don't detect network interface on windows

图形显示不全

zabbix默认是显示20个图形,如果超过20个图形,超过的不显示。见下图

zabbix搭建7.png

修改defines.inc.php文件中的ZBX_MAX_GRAPHS_PER_PAGE选项的值为50即可。

用到的命令如下:

//查找defines.inc.php文件
root@ubuntu:~# find / -name defines.inc.php
/usr/share/zabbix/include/defines.inc.php

//编辑defines.inc.php文件,找到ZBX_MAX_GRAPHS_PER_PAGE改为50即可
root@ubuntu:~# nano /usr/share/zabbix/include/defines.inc.php

修改主机名称支持中文

Zabbix默认不支持主机名中存在中文字符的,要让Zabbix主机名支持中文,需要修改Zabbix的defines.inc.php代码文件

找到defines.inc.php文件位置(一般在/usr/share/zabbix/include/defines.inc.php)将

define('ZBX_PREG_INTERNAL_NAMES', '([0-9a-zA-Z_\. \-]+)');

改成

define('ZBX_PREG_INTERNAL_NAMES', '([0-9a-zA-Z_\. \-\x{80}-\x{ff}]+)');/* !!! Don't forget sync code with C !!! */

即可

zabbix搭建8.png

zabbix中文乱码问题解决

在zabbix的web界面将语言切换到中文后,有的地方例如 grap 显示会乱码口口 ,这是因为zabbix的web前端没有中文字库,把中文字库加上就行了。

在zabbix服务器上面搜索到graphfont.ttf这个文件

root@ubuntu:~# find /usr/share/zabbix/ -iname graphfont*
/usr/share/zabbix/assets/fonts/graphfont.ttf

在windows系统下,从C:\Windows\Fonts文件夹中,找个顺眼的字体。这里我选择微软雅黑。

zabbix搭建9.png

微软雅黑.tff文件拷贝出来重命名为 graphfont.ttf ,替换zabbix服务器上面的 graphfont.ttf 即可。