本文详细介绍了Zabbix 6.0 LTS监控系统的完整部署流程,主要包含以下内容: 服务端部署:在Rocky 9. 6上安装Zabbix-server、MySQL数据库及Web组件,配置数据库并导入初始化数据,解决中文字体乱码问题。 客户端配置:分别在Rocky Linux 9和CentOS 7上部署Zabbix-agent,配置主动/被动监控模式,并通过Web界面添加主机。 监控功能实现: 创建监控项、触发器告警、数据图形展示 配置邮件告警媒介 实现自动发现和自动注册功能 创建模板实现监控配置
一、Zabbix-server端服务部署
下载官网下载Zabbix 6.0 LTS for CentOS 9 Stream
- 安装zabbix官方yum源,并且安装全部组件。
- 安装mysql数据库服务,zabbix所有监控数据都要存放在mysql
- 开启服务,并设置开机自启
- 选择下方页面进行安装
rpm -Uvh https://repo.zabbix.com/zabbix/7.4/release/alma/10/noarch/zabbix-release-latest-7.4.el10.noarch.rpm
dnf clean all
dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent
yum install -y mysql-server
systemctl start mysqld.service
- 进入myql,创建zabbix库、用户、授权
- 创建名叫zabbix的数据库;指定zabbix要求的字符集与排序规则,防止中文乱码。此时仅仅是一个空数据库,里面没有任何数据表。
- 创建数据库账号zabbix,只允许本机访问,密码password;zabbix服务程序就用这个账号连接数据库。
- 给zabbix账号授予zabbix数据库全部权限,允许建表、增删改查。
- zabbix 、导入脚本会创建函数、存储过程,开启这个参数,mysql才允许创建,否则导入会报错。
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user zabbix@localhost identified by 'password';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> set global log_bin_trust_function_creators = 1;
- zcat直接读取压缩包,不手动解压,管道交给mysql执行,自动创建上百张业务表,同时导入默认账号、监控模板。zcat直接读取压缩包,不手动解压,管道交给mysql执行,自动创建上百张业务表,同时导入默认账号、监控模板。
[root@server1 ~]# zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
Enter password:
- 切换到zabbix库,查看数据表,如果输出一堆表,代表脚本导入成功;如果为空,代表导入失败。
mysql> use zabbix;
mysql> show tables;
- 导入完成后改回
0,恢复数据库默认安全设置,避免后续存在安全风险。
mysql> set global log_bin_trust_function_creators = 0;
- 打开zabbix服务端主配置文件
修改zabbix配置文件
[root@server1 ~]# vim /etc/zabbix/zabbix_server.conf
- 把前面#注释符号删掉,加上password。 这里填写的就是前面MySQL创建zabbix数据库用户设置的密码。zabbix‑server程序靠这个参数获取密码,去连接MySQL数据库读写监控表。
- 需要重启相关服务,让新配置生效。
配置完文件后,重新启动一下
[root@server1 ~]# systemctl restart zabbix-server zabbix-agent httpd php-fpm
设置开机自启
[root@server1 ~]# systemctl enable zabbix-server zabbix-agent httpd php-fpm
- 查看进程(ps ax),进程中一定要有zabbix_server,表示部署成功
二、浏览器访问安装页面
2.1 登录界面步骤
- 浏览器访问http://192.168.159.141/zabbix/ 这里填写的是自己部署zabbix的虚拟机IP地址
- 检查配置条件全部是OK才可以进行下一步
- 这一步的用户和密码为刚才mysql中创建的
- 最后一步需要填Admin(以管理员身份登入),密码为zabbix。点击下一步即可
2.2 解决图表中文方框乱码
将页面配置成中文。
- 进入zabbix网页程序根目录,进入字体文件夹,zabbix绘图读取这个目录下的graphfont.ttf字体文件。
- 这里需要你提前把Windows的simkai.ttf(楷体)上传到此目录。
- 删除原来的英文字体文件。
- 创建软链接,把graphfont.ttf指向中文字体simkai.ttf。
[root@server1 zabbix]# cd /usr/share/zabbix/
[root@server1 zabbix]# cd assets/
[root@server1 assets]# cd fonts/
[root@server1 fonts]# ls
graphfont.ttf
[root@server1 fonts]# ls
graphfont.ttf simkai.ttf
[root@server1 fonts]# rm -f graphfont.ttf
[root@server1 fonts]# ln -s simkai.ttf graphfont.ttf
- 刷新页面,此时中文字体正常
三、添加Zabbix‑Agent
添加agent,被监控客户端server2,需要安装agent,采集本机数据上报给zabbix服务端。
下载官网下载Zabbix,选择对应的进行下载
3.1 Rocky-9.6部署Agent
- 在被监控机器server2上安装zabbix官方yum源。只有装上源,才能下载zabbix‑agent软件包。
- 安装zabbix客户端代理程序,agent负责采集本机CPU、内存、磁盘等数据,上报给 zabbix‑server。
- 选择下方页面进行下载rpm包,下载官网下载Zabbix 6.0 LTS for CentOS 9 Stream
rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-latest-6.0.el9.noarch.rpm
yum install -y zabbix-agent
- 编辑agent主配置文件,修改 3 个核心参数
vim zabbix_agentd.conf
- 填写Zabbix‑Server的IP地址,允许这个IP的server来主动拉取agent监控数据。只写server的 IP,不要写agent本机IP。
- 主动模式,agent主动向zabbix‑server上报监控数据。
- 设置agent主机名,这个名字必须和web页面添加主机填写的主机名称完全一样,大小写也要一致。
- agent 配置完成后,启动并开机自启。
- 添加主机浏览器Zabbix后台 →【配置】→【主机】→【创建主机】
- 记得添加接口,填写本机IP地址,端口号为10050
3.2 Centos-7部署Agent
- rpm源包要选rhel7版本,不能用rhel9的包。下载官网下载Zabbix 6.0 LTS for CentOS 7
rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-latest-6.0.el7.noarch.rpm
yum install -y zabbix-agent
- 进入agent配置目录,zabbix_agented.conf是主配置文件
[root@server3 ~]# cd /etc/zabbix/
[root@server3 zabbix]# ls
zabbix_agentd.conf zabbix_agentd.d
[root@server3 zabbix]# vim zabbix_agentd.conf
修改成下方图片的样子
- 更新重启,开启服务,并设置开机自启
stemctl restart zabbix-agent
systemctl enable zabbix-agent
- 去浏览器界面添加主机
- 填写agent的端口
四、配置使用zabbix页面
4.1 监控项
监控项只负责采集数据
- 手动创建监控项,添加server2的监控项,右上角点击“创建监控项”
- 此时去监测—最新数据—可以查看监控
- 添加监控项“根分区使用量”,此时信息类型一定要选择正确,主机接口一定要填server2被监控的IP地址和端口
- 在监测界面能看到具体情况
4.2 触发器
触发器用来判断数据是否达到危险阈值,达到就产生告警事件。
4.2.1 添加
- 添加触发器,“配置”——“主机”——“触发器”——右上角创建触发器
- 问题表达式是指当达到某个阈值后触发器会报警,恢复表达式是指当在某个阈值内就会恢复,触发器不再报警
4.2.2 示例测试
- 首先在server1上安装zabbix-get,可以对server2进行磁盘剩余量信息获取;在server2上可以看到磁盘使用量
- 在server2上创建一个容量为1G的文件,查看磁盘使用量
[root@server2 ~]# dd if=/dev/zero of/bigfile bs=1G count=1
- 由于上方磁盘空间剩余量触发设定的阈值是91%,即剩余量低于91%会进行告警,就可以在“监测”——“问题”中看到有告警
- 将1G文件删掉后恢复正常,此时会出现问题已解决字样
[root@server2 ~]# rm -f /bigfile
- 创建文件时CPU负载会升高告警,但过一会恢复正常
4.3 图形
- 也可以创建图形,在监测里面查看
4.4 媒介—邮箱
- 点击“Email”
- 首先创建一个邮箱,QQ邮箱已经试过,拒绝发送;因此使用网易邮箱,在网易邮箱的设置中邮“smtp”等字样的选项,开启后会获得一个授权码,在下方图片中的密码中填写,具体配置可以看下图。注意:SMTP电邮和用户名称都填自己的邮箱。
- 然后点击测试。
- 当出现这个界面后,去邮箱确认一下收到了邮件。
- 测试成功后点击用户——Admin——报警媒介添加
- 点击“动作”——“触发器动作”——“启用”
- 去server2测试,会收到告警信息
- 问题解决后还会收到一份邮件
4.5 创建用户组和用户
- 先创建用户组,授权,再添加用户,需要填报警信息,权限等,可以自行选择
- 此时用户Duang1可以登录,但没有“管理”选项
- 可以添加触发器动作
4.6 创建模版
- 点击“配置”——“模板”——右上角创建模板
- 可以将刚才给server2配置的监控项等复制给新建的模版,勾选所有点击复制,选择主机群组为下方图片勾选的
- 再点击模版,选择刚才创建的模版
- 点击复制,此时server2的监控项等都复制给模板node status
4.7 自动发现
- 首先将“发现动作”启用:“动作”——“发现动作”
- 再点击“自动发现”,点进去后可以设置发现的IP范围
- 此时如果将server2删掉后,进入“检测”——“自动发现”,选择自动发现规则,刷新界面,会自动发现在IP范围内的设备server2并添加进去
4.8 自动注册
- 点击“动作”——“自动注册动作”
- 添加条件,选择主机元数据,包含Linux。
- 操作选择添加主机,以及选择添加的主机组群和模板,此次用的是刚才创建的心得模板
- 由于用的是主机元数据,因此需要修改配置文件,记得重启服务
vim /etc/zabbix/zabbix.conf
- 然后开启自动注册动作,此时可以看到用的是自己创建的模版
五、服务监控
5.1 nginx服务监控
- 在server2上安装nginx,并设置开机自启
- zabbix网页端给server2关联nginx模板
- 修改nginx配置开启stub_status状态页,在文件/etc/nginx/nginx.conf中的server内容中添加下面几行
- stub_status on:核心开关,开启nginx内置统计输出,没有这一行就没有状态数据。
- access_log:访问状态页面不生成访问日志,避免产生大量无用日志。
- 必须在server2本机curl测试,agent是本地访问这个页面。
- 此时监控就有最新数据和图形
5.2 mysql服务监控
- 复制zabbix提供好的mysql自定义监控参数文件,放到agent的子配置目录zabbix_agentd.d。
- 重启agent,配置生效。
- 创建目录,编写mysql登录凭证配置文件
[root@server2 ~]# systemctl enable --now mysqld
[root@server2 ~]# cp /usr/share/doc/zabbix-agent/userparameter_mysql.conf /etc/zabbix/zabbix_agentd.d/
[root@server2 ~]# systemctl restart zabbix-agent
[root@server2 ~]# mkdir /var/lib/zabbix
[root@server2 ~]# vim /var/lib/zabbix/my.cnf
- 在配置文件中写入以下内容
- 修改文件权限,防止密码泄露
chown zabbix:zabbix /var/lib/zabbix/my.cnf chmod 600 /var/lib/zabbix/my.cnf- 内部创建监控账号,创建监控用户zbx_monitor,允许任意地址登录,密码westos。
mysql> CREATE USER 'zbx_monitor'@'%' IDENTIFIED BY 'westos';
mysql> GRANT REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO 'zbx_monitor'@'%';
- 去server2添加模板mysql
- 然后能看到图形
5.3 percona mysql监控
- 首先要安装php。
- 安装percona提供的zabbix mysql增强模板rpm包。
- 把percona自定义监控参数文件复制到agent子配置目录,agent读取这里面UserParameter自定义key。
- 编辑php采集脚本
- 切换到zabbix用户运行采集脚本,模拟agent执行,无报错才可以
[root@server3 ~]# rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm
[root@server3 ~]# cd /var/lib/zabbix/percona/templates
[root@server3 templates]# cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
[root@server3 templates]# systemctl restart zabbix-agent
[root@server3 templates]# cd /var/lib/zabbix/percona/scripts
[root@server3 scripts]# vim ss_get_mysql_stats.php
[root@server3 scripts]# su -s /bin/sh -c "/var/lib/zabbix/percona/scripts/get_mysql_stats_wra pper.sh gg" zabbix #无报错
- 去zabbix页面导入模版
- 选择模板
- 就可以查到图形了
5.4 tomcat服务监控
- server1上安装zabbix的Java网关组件,专门用来对接JMX协议,获取Tomcat/JVM指标。启动并开机自启java‑gateway服务
[root@server1 ~]# yum install -y zabbix-java-gateway.x86_64
[root@server1 ~]# systemctl enable --now zabbix-java-gateway
- 默认监听接口为10052
- 修改zabbix‑server主配置文件
- JavaGateway:告诉zabbix‑server,找谁去处理JMX的数据请求。
- StartJavaPollers=5:不能为0,0代表不启用JMX采集。
[root@server1 ~]# vim /etc/zabbix/zabbix_server.conf
[root@server1 ~]# systemctl restart zabbix-server
- 在server3上安装Java和tomcat,创建软连接
yum install -y java-1.8.0-openjdk
wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.120/bin/apache-tomcat-9.0.120.tar.gz
tar -zxvf apache-tomcat-9.0.120.tar.gz -C /usr/local/[root@server3 ~]# cd /usr/local/
[root@server3 local]# cd tomcat/[root@server3 local]# ln -s apache-tomcat-9.0.120/ tomcat
[root@server3 tomcat]# vim bin/catalina.sh
- 添加红色部分,JMX对外端口为8888
- 给server3添加模板
- JMX端口为绿色时成功
六、集成式—睿象云
把Zabbix产生的触发器告警,推送到睿象云平台,可以实现短信、电话、APP、邮件多渠道告警通知,不用自己写邮件脚本。
- 进入zabbix服务端告警脚本目录,zabbix调用告警媒介时,默认从这个目录读取脚本
- 下载睿象云提供的zabbix集成agent压缩包(登录进去后会有引导配置文档)
- 解压安装包。解压完成生成cloudalert目录。
- 执行安装脚本,后面拼接你在睿象云平台申请得到的appkey。
[root@server1 ~]# cd /usr/lib/zabbix/alertscripts/
[root@server1 alertscripts]# wget https://download.aiops.com/ca_agent/zabbix/ca_zabbix_release-4.0.5.tar.gz
[root@server1 alertscripts]# tar -xzf ca_zabbix_release-4.0.5.tar.gz
填自己的appkey,地址也填自己的,管理员账号是Admin,密码是zabbix
- 可以自行修改通知人员和通知方式
- 会在zabbix页面自动创建
七、Zabbix API Token
Zabbix网页后台做的所有操作(新建主机、删除监控项、导入模板、查询主机列表、批量改配置),底层全部调用API接口。用curl/脚本直接发JSON请求,不用打开网页,命令行操作 zabbix。
- 获取token值,user.login 登录接口
7.1 获取主机
- 获取主机列表,拿到token之后,调用host.get,查询zabbix里面所有已经添加的主机。
[root@server1 ~]# vim zabbix-api.sh
- auth填刚才获取的result
- 执行后输出json,列出zabbix所有主机:主机ID、主机名、agent的IP地址。
[root@server1 ~]# chmod +x zabbix-api.sh
[root@server1 ~]# ./zabbix-api.sh
7.2 删除主机
curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.delete",
"params": [
"10649"
],
"auth": "90b526c5dae0983da4cf474e7b961509",
"id": 1
}' http://192.168.159.141/zabbix/api_jsonrpc.php | python3 -m json.tool
- 有以下结果,表示删除成功
- 此时去zabbix页面看server2已经没有了
7.3 添加主机
[root@server1 ~]# vim zabbix-api.sh
curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "server2",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "192.168.159.142",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2"
}
],
"tags": [
{
"tag": "Host name",
"value": "Linux server"
}
],
"templates": [
{
"templateid": "10001"
}
]
},
"id": 1,
"auth": "90b526c5dae0983da4cf474e7b961509"
}' http://192.168.159.141/zabbix/api_jsonrpc.php | python -m json.tool
- 添加成功后会出现