本文详细介绍了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.rpmdnf clean alldnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agentyum install -y mysql-serversystemctl start mysqld.service进入myql创建zabbix库、用户、授权创建名叫zabbix的数据库指定zabbix要求的字符集与排序规则防止中文乱码。此时仅仅是一个空数据库里面没有任何数据表。创建数据库账号zabbix只允许本机访问密码passwordzabbix服务程序就用这个账号连接数据库。给zabbix账号授予zabbix数据库全部权限允许建表、增删改查。zabbix 、导入脚本会创建函数、存储过程开启这个参数mysql才允许创建否则导入会报错。mysql create database zabbix character set utf8mb4 collate utf8mb4_bin;mysql create user zabbixlocalhost identified by password;mysql grant all privileges on zabbix.* to zabbixlocalhost;mysql set global log_bin_trust_function_creators 1;zcat直接读取压缩包不手动解压管道交给mysql执行自动创建上百张业务表同时导入默认账号、监控模板。zcat直接读取压缩包不手动解压管道交给mysql执行自动创建上百张业务表同时导入默认账号、监控模板。[rootserver1 ~]# zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-setutf8mb4 -uzabbix -p zabbixEnter password:切换到zabbix库查看数据表如果输出一堆表代表脚本导入成功如果为空代表导入失败。mysql use zabbix;mysql show tables;导入完成后改回0恢复数据库默认安全设置避免后续存在安全风险。mysql set global log_bin_trust_function_creators 0;打开zabbix服务端主配置文件修改zabbix配置文件[rootserver1 ~]# vim /etc/zabbix/zabbix_server.conf把前面#注释符号删掉加上password。 这里填写的就是前面MySQL创建zabbix数据库用户设置的密码。zabbix‑server程序靠这个参数获取密码去连接MySQL数据库读写监控表。需要重启相关服务让新配置生效。配置完文件后重新启动一下[rootserver1 ~]# systemctl restart zabbix-server zabbix-agent httpd php-fpm设置开机自启[rootserver1 ~]# 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。[rootserver1 zabbix]# cd /usr/share/zabbix/[rootserver1 zabbix]# cd assets/[rootserver1 assets]# cd fonts/[rootserver1 fonts]# lsgraphfont.ttf[rootserver1 fonts]# lsgraphfont.ttf simkai.ttf[rootserver1 fonts]# rm -f graphfont.ttf[rootserver1 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 Streamrpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-latest-6.0.el9.noarch.rpmyum 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地址端口号为100503.2 Centos-7部署Agentrpm源包要选rhel7版本不能用rhel9的包。下载官网下载Zabbix 6.0 LTS for CentOS 7rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-latest-6.0.el7.noarch.rpmyum install -y zabbix-agent进入agent配置目录zabbix_agented.conf是主配置文件[rootserver3 ~]# cd /etc/zabbix/[rootserver3 zabbix]# lszabbix_agentd.conf zabbix_agentd.d[rootserver3 zabbix]# vim zabbix_agentd.conf修改成下方图片的样子更新重启开启服务并设置开机自启stemctl restart zabbix-agentsystemctl 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的文件查看磁盘使用量[rootserver2 ~]# dd if/dev/zero of/bigfile bs1G count1由于上方磁盘空间剩余量触发设定的阈值是91%即剩余量低于91%会进行告警就可以在“监测”——“问题”中看到有告警将1G文件删掉后恢复正常此时会出现问题已解决字样[rootserver2 ~]# rm -f /bigfile创建文件时CPU负载会升高告警但过一会恢复正常4.3 图形也可以创建图形在监测里面查看4.4 媒介—邮箱点击“Email”首先创建一个邮箱QQ邮箱已经试过拒绝发送因此使用网易邮箱在网易邮箱的设置中邮“smtp”等字样的选项开启后会获得一个授权码在下方图片中的密码中填写具体配置可以看下图。注意SMTP电邮和用户名称都填自己的邮箱。然后点击测试。当出现这个界面后去邮箱确认一下收到了邮件。测试成功后点击用户——Admin——报警媒介添加点击“动作”——“触发器动作”——“启用”去server2测试会收到告警信息问题解决后还会收到一份邮件4.5 创建用户组和用户先创建用户组授权再添加用户需要填报警信息权限等可以自行选择此时用户Duang1可以登录但没有“管理”选项可以添加触发器动作4.6 创建模版点击“配置”——“模板”——右上角创建模板可以将刚才给server2配置的监控项等复制给新建的模版勾选所有点击复制选择主机群组为下方图片勾选的再点击模版选择刚才创建的模版点击复制此时server2的监控项等都复制给模板node status4.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登录凭证配置文件[rootserver2 ~]# systemctl enable --now mysqld[rootserver2 ~]# cp /usr/share/doc/zabbix-agent/userparameter_mysql.conf /etc/zabbix/zabbix_agentd.d/[rootserver2 ~]# systemctl restart zabbix-agent[rootserver2 ~]# mkdir /var/lib/zabbix[rootserver2 ~]# 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执行无报错才可以[rootserver3 ~]# rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm[rootserver3 ~]# cd /var/lib/zabbix/percona/templates[rootserver3 templates]# cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/[rootserver3 templates]# systemctl restart zabbix-agent[rootserver3 templates]# cd /var/lib/zabbix/percona/scripts[rootserver3 scripts]# vim ss_get_mysql_stats.php[rootserver3 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服务[rootserver1 ~]# yum install -y zabbix-java-gateway.x86_64[rootserver1 ~]# systemctl enable --now zabbix-java-gateway默认监听接口为10052修改zabbix‑server主配置文件JavaGateway告诉zabbix‑server找谁去处理JMX的数据请求。StartJavaPollers5不能为00代表不启用JMX采集。[rootserver1 ~]# vim /etc/zabbix/zabbix_server.conf[rootserver1 ~]# systemctl restart zabbix-server在server3上安装Java和tomcat创建软连接yum install -y java-1.8.0-openjdkwget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.120/bin/apache-tomcat-9.0.120.tar.gztar -zxvf apache-tomcat-9.0.120.tar.gz -C /usr/local/[rootserver3 ~]# cd /usr/local/[rootserver3 local]# cd tomcat/[rootserver3 local]# ln -s apache-tomcat-9.0.120/ tomcat[rootserver3 tomcat]# vim bin/catalina.sh添加红色部分JMX对外端口为8888给server3添加模板JMX端口为绿色时成功六、集成式—睿象云把Zabbix产生的触发器告警推送到睿象云平台可以实现短信、电话、APP、邮件多渠道告警通知不用自己写邮件脚本。进入zabbix服务端告警脚本目录zabbix调用告警媒介时默认从这个目录读取脚本下载睿象云提供的zabbix集成agent压缩包登录进去后会有引导配置文档解压安装包。解压完成生成cloudalert目录。执行安装脚本后面拼接你在睿象云平台申请得到的appkey。[rootserver1 ~]# cd /usr/lib/zabbix/alertscripts/[rootserver1 alertscripts]# wget https://download.aiops.com/ca_agent/zabbix/ca_zabbix_release-4.0.5.tar.gz[rootserver1 alertscripts]# tar -xzf ca_zabbix_release-4.0.5.tar.gz填自己的appkey地址也填自己的管理员账号是Admin密码是zabbix可以自行修改通知人员和通知方式会在zabbix页面自动创建七、Zabbix API TokenZabbix网页后台做的所有操作新建主机、删除监控项、导入模板、查询主机列表、批量改配置底层全部调用API接口。用curl/脚本直接发JSON请求不用打开网页命令行操作 zabbix。获取token值user.login 登录接口7.1 获取主机获取主机列表拿到token之后调用host.get查询zabbix里面所有已经添加的主机。[rootserver1 ~]# vim zabbix-api.shauth填刚才获取的result执行后输出json列出zabbix所有主机主机ID、主机名、agent的IP地址。[rootserver1 ~]# chmod x zabbix-api.sh[rootserver1 ~]# ./zabbix-api.sh7.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 添加主机[rootserver1 ~]# vim zabbix-api.shcurl -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添加成功后会出现