Rocky9实现zabbix主动模式和被动模式、proxy主动被动模式、自定义监控项

一、实验目的

总结zabbix作为监控软件的原理,了解并使用zabbix的监控功能,zabbix的监控模式,主要特点,zabbix的架构,内部配置的数据流程,zabbix的术语,zabbix的安装和基本操作,zabbix实现主动模式和被动模式,proxy代理的主动和被动模式,zabbix自定义监控项,熟记自定义监控项的流程。

二、实验主要内容

1、自定义监控项模版监控Redis、nginx的状态

2、自定义监控项的修复

3、邮件告警

4、钉钉告警

三、实验环境与准备

3台拍完快照配置好的linux主机,昨天已经完成括号内的内容(1台10.100为zabbix监控主机server、一台120先实现主动模式(然后作为proxy代理的主动),一台140作为proxy的主动模式负责120的主动zabbix-agent

四、实验分析与设计思路

自定义监控项配置流程

首先要确定好agent端盒server端要监控的指标是什么,在agent端对应的配置文件中编写要监控的脚本,agent端的agent主配置文件要编写userparameter,定义key和传递的参数,传递多个参数可以用位置$1,$2来传递中括号里面的参数,在zabbix的server端或者proxy端使用zabbix-get对其进行探测是否异常,正常的话后期就关联到自定义监控项的模版中,并做后续的绘图。

五、详细实验过程

1、自定义监控项模版监控Redis、nginx的状态

100server主机进行重启zabbixserver和zabbixagent服务,启动mysql服务,安装Redis服务

[root@node-1 ~]# systemctl restart zabbix-server.service zabbix-agent.service

[root@node-1 ~]# systemctl restart mysqld.service

[root@node-3 zabbix]# yum -y install redis

同样主机120和140也重启服务

[root@node-3 ~]# systemctl restart zabbix-agent2.service

[root@node-5 ~]# systemctl restart zabbix-proxy.service

在120主机中修改Redis配置文件 更改bind运行所有主机连接,设置密码

[root@node-3 zabbix]# vim /etc/redis/redis.conf

启动Redis服务,查看端口

[root@node-3 zabbix]# systemctl start redis

[root@node-3 zabbix]# ss -tnl

将Redis监控脚本移动到对应的zabbix_agent2.d目录下

查看脚本内容,在此基础上添加了一行代码,用以更改属主属组,相当于执行权

[root@node-3 zabbix_agent2.d]# vim redis_monitor.sh

[root@node-3 zabbix_agent2.d]# redis-cli -a 666666 info 可以查看Redis的INFO信息内容

[root@node-3 zabbix_agent2.d]# chmod +x redis_monitor.sh 为脚本添加执行权

运行脚本,有三个变量,依次分别为redis_status 、端口6379 、INFO字段

[root@node-3 zabbix_agent2.d]# bash redis_monitor.sh redis_status 6379 used_cpu_sys

[root@node-3 zabbix_agent2.d]# vim ../zabbix_agent2.conf 编辑agent配置文件

UserParameter=redis_status[*],/bin/bash redis_monitor.sh $1 $2 $3

[root@node-3 zabbix_agent2.d]# systemctl restart zabbix-agent2.service 重启服务

进入到网页更改模版my_template名称为my_redis-template

选择120主机关联上redis的模版

在新建的redis模版中创建监控项,键值redis_status[" redis_status","6379","connected_clients"]

创建触发器,表达式选择添加刚才创建的监控项

表达式的条件

创建图形,选择创建好的监控项,添加

查看最新数据,选择redis的监控项,已经产生了数据

在140上安装redis进行访问,查看连接数是否增加

[root@node-5 ~]# yum -y install redis

[root@node-5 ~]# redis-cli -a 666666 -h 192.168.10.120

INFO 查看连接数已经成为两个了

为了效果更好一些,重复登录一次,然后再最新数据中查看图形,可以看到已经超过阈值

其他字段如内存等的实现与此相似

模版的导出和导入

取消链接主机中对应的redis模版

删除并清理redis的模版

导入刚才导出的模版,并且在120主机上关联上导入的模版

重启agent服务,查看最新数据中又产生了redis的数据

[root@node-3 zabbix_agent2.d]# systemctl restart zabbix-agent2.service

Nginx自定义监控项

[root@node-3 zabbix_agent2.d]# chmod +x nginx_monitor.sh 为脚本添加执行权

[root@node-3 zabbix_agent2.d]# yum -y install nginx 安装nginx

[root@node-3 zabbix_agent2.d]# vim /etc/nginx/nginx.conf 编辑nginx的配置文件

location /status {

stub_status on;

}

网页访问nginx,可以看到连接数等信息 192.168.10.120/status

UserParameter=nginx.status[*],/bin/bash nginx_monitor.sh $1 $2 $3

查看脚本内容,注意此处需要改一下

[root@node-5 ~]# zabbix_get -s 192.168.10.120 -k "net.tcp.listen[80]"

[root@node-5 ~]# zabbix_get -s 192.168.10.120 -k "nginx.status[nginx_status,80,active]"

导入nginx监控模版

导入的模版为主动模式不用更改

Nginx模版关联到120主机上

查看nginx监控项的最新数据,出现许多报红,提示string不支持

再次查看最新数据,可以看到已经更新出数据了

图形展示也正常

2、自定义监控项的修复

找到有问题的监控项,如Linux: Memory utilization,将类型更改为相关项目,主要项选择图中项

将类型也更新成相关项目

[root@node-3 zabbix_agent2.d]# systemctl restart zabbix-agent2.service 重启服务

在最新数据中就出现了数据

图形展示正常

3、邮件告警

添加用户报警媒介

创建动作的触发器

在操作中添加用户群组和用户

注意这个密码需要填写的是163邮箱的授权码网易163授权码 UHBMKFNBYHHPTOVM

4、钉钉告警

①:在钉钉内注册申请企业群

②:在群内添加群机器人,并设置关键词,保存webhook。

https://oapi.dingtalk.com/robot/send?access_token=c2cdad82f354a40132a29bbbb550d3e4c16603e588684d1403f7179dc3e44c40

③:在zabbix-server中编写调用钉钉的API脚本

④:进行测试调用钉钉的功能

⑤:成功之后在zabbix的web监控页面进行设置报警媒介类型

{ALERT.SENDTO}

{ALERT.SUBJECT}

{ALERT.MESSAGE}

⑥:设置推送钉钉的对应的zabbix用户报警媒介

⑦:设置zabbix的报警动作,并关联钉钉

操作:

zabbix告警: 服务器{HOST.NAME} 发生 {EVENT.NAME} ---> 标题

zabbix告警 ----> 消息内容

告警主机:{HOSTNAME1}

告警时间:{EVENT.DATE} {EVENT.TIME}

告警等级:{TRIGGER.SEVERITY}

告警信息:{TRIGGER.NAME}

告警项目:{TRIGGER.KEY1}

问题详情:{ITEM.NAME}:{ITEM.VALUE}

当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}

事件ID:{EVENT.ID}

恢复操作

zabbix告警:故障恢复:{EVENT.NAME}

zabbix告警

恢复主机:{HOSTNAME1}

恢复时间:{EVENT.DATE} {EVENT.TIME}

主机IP:{HOST.IP}

告警项目:{TRIGGER.KEY1}

问题详情:{ITEM.NAME}:{ITEM.VALUE}

当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}

事件ID:{EVENT.ID}

⑧:模拟故障,触发触发器进行告警推送钉钉测试

六、实验结果及分析

搞清楚zabbix的架构体系和功能对于实验的操作有着很好的帮助,zabbix-server和zabbix-agent之间的关系,关联的方式,导入数据库中的内容等等,已经在监控过程中可能会出现的告警等等,还有就是字体需要更改。

七、总结

Zabbix 术语

被监控: 即 Zabbix 监控的主机或设备

监控项item:即 Zabbix 监控的相关指标,比如:CPU利用率,内存使用率,TCP连接数等

应用集Application:为方便管理众多的监控项,可将多个同类型的监控项进行归类,纳入一个集合中,即应用集

触发器Trigger:是一个表达式,或者说一个条件,如磁盘利用率超过80%等,当触发条件后,会导致一个触发事件,这个事件会执行一个或多个动作

动作Action:动作是触发器的条件被触发后的行为,可以是发送一条短信,微信或邮件,或是重启某个服务

告警:当触发器和动作二者结合起来时,就构成了的告警机制,比如cpu的使用率达到80%以上,触发了报警动作,系统将自动发送一封邮件到指定的邮箱。然后运维可以及时的去处理此错误。

Web 监测:对WEB服务进行检测,比如:访问指定网站是否可正常访问

模板 Template: 可以方便地应用于多个主机的一组实体的集合。

zabbix的主动和被动模式

基于agent端考虑是被动还是主动,本质是server获取agent端的数据,主动模式是agent向server发数据,而被动模式是agent等待server来取数据

zabbix 主动与被动监控模式:

学习主动模式与被动模式工作原理,主动模式模板制作,然后添加主机并关联主动模式模板,然后验证主动模式监控数据和图形。

被动模式:

无论是主动模式还是被动模式,都是站在zabbix agent角度来说的工作模式,比如被动模式,是说zabbix agent被动的接受zabbix server周期性发送过来的数据收集指令,在被动模式之下,zabbix server会根据主机关联的模板中的监控项和数据采集间隔时间,周期性的打开随机端口并向zabbix agent服务器的10050发起tcp连接,然后发送获取监控项数据的指令,即zabbix server发送什么指令那么zabbix agent就收集什么数据,zabbix server什么时候发送zabbix agent就什么时候采集,zabbix server不发送zabbix agent就一直不响应,所以zabbix agent也不用关心其监控项和数据采集周期间隔时间。

被动模式的优点就是配置简单,安装后即可使用,因此也成为zabbix 的默认工作模式,但是被动模式的最大问题就是会加大zabbix server的工作量,在数百甚至数千台服务器的环境下会导致zabbix server需要轮训向每个zabbix agent发送数据采集指令,如果zabbix server负载很高还会导致不能及时获取到最新数据,但由于无需其他复杂配置,被设置为了默认的工作方式。在192.168.10.130上实现zabbix主动模式

主动模式:

主动模式是由zabbix agent主动向zabbix server的10051端口发起tcp连接请求,因此主动模式下必须在zabbix agent配置文件中指定zabbix server的IP或者主机名(必须可以被解析为IP地址),在连接到zabbix server之前zabbix agent是不知道自己要采集那些数据以及间隔多久采集一次数据的,然后在连接到zabbix server以后获取到自己的监控项和数据采集间隔周期时间,然后再根据监控项采集数据并返回给zabbix server,在主动模式下不再需要zabbix serve向zabbix agent发起连接请求,因此主动模式在一定程度上可减轻zabbix server打开的本地随机端口和进程数,在一定程度就减轻zabbix server的压力。

zabbix proxy

zabbix 作为一个分布式监控系统(分布式监控解决方案),支持通过代理(proxy)收集zabbix agent的监控数据然后由zabbix proxy再把数据发送给zabbix server,也就是zabbix proxy 可以代替 zabbix server 收集监控数据,然后把数据汇报给 zabbix server,所以zabbix proxy可以在一定程度上分担了zabbix server 的数据收集压力,从而降低了数据的采集时间、也相应的增加了zabbix server的监控能力。另外zabbix proxy也区分主动模式和被动模式,通信方式与zabbix server主动模式和被动模式一样,区别是zabbix proxy由于没有zabbix agent的配置,所以zabbix proxy在主动模式下要向zabbix server周期性的向zabbix server申请获取zabbix agent的监控项信息,但是zabbix proxy在被动模式下也是等待zabbix server的连接并接受zabbix server发送的监控项指令,然后再有zabbix proxy向zabbix agent发起请求获取数据。

自定义监控项配置流程

首先要确定好agent端盒server端要监控的指标是什么,在agent端对应的配置文件中编写要监控的脚本,agent端的agent主配置文件要编写userparameter,定义key和传递的参数,传递多个参数可以用位置$1,$2来传递中括号里面的参数,在zabbix的server端或者proxy端使用zabbix-get对其进行探测是否异常,正常的话后期就关联到自定义监控项的模版中,并做后续的绘图。

<think>好的,我现在需要帮助用户解决如何在Rocky Linux 9上使用Ansible部署Zabbix Server、AgentProxy的问题。首先,我得回顾一下用户提供的引用内容,虽然这些引用可能不完全相关,但需要从中提取有用的信息。 用户提到之前的一些引用,比如关于Zabbix的中文手册、Nginx配置、Ansible的安装配置等。我需要结合这些信息来构建一个结构化的Ansible Playbook指南。 首先,部署Zabbix需要几个步骤:安装必要的软件包、配置数据库、设置Web前端、配置服务器、AgentProxy。Ansible可以帮助自动化这些步骤,所以需要编写相应的Playbook任务。 用户引用中提到了安装Ansible-core,所以在Rocky9上需要先安装Ansible。然后,可能需要使用Ansible的模块,如yum、template、service等来管理软件包配置。 数据库方面,用户引用提到了MySQL的配置,所以需要确保在Playbook中包括MySQL的安装数据库初始化,包括创建用户数据库,并赋予权限。这可能涉及到使用mysql_dbmysql_user模块。 Web服务器方面,引用中有Nginx的配置示例,但Zabbix通常使用Apache或Nginx。根据用户之前的配置,可能选择Nginx,并配置PHP-FPM,这需要对应的模板文件参数设置,如fastcgi_pass到正确的socket位置。 Zabbix Server、AgentProxy的安装可能需要从Zabbix仓库获取RPM包,所以需要配置Yum仓库。用户引用中提到了源码安装,但使用Ansible的话,更合适的方式是使用官方仓库安装。 另外,用户引用中提到了使用zabbix_get工具检查监控,所以在部署Agent时需要确保配置正确的HostnameServer参数,以便Server能够连接Agent。 对于Proxy的部署,可能需要单独的配置,包括指定Proxy连接的Zabbix Server地址,以及数据库配置,如果Proxy使用独立数据库的话。 安全方面,可能需要配置SELinux防火墙,允许相应的端口,如10051(Server)、10050(Agent)等,这些可以使用Ansible的firewalld模块处理。 然后,需要组织这些步骤到不同的Ansible角色中,比如分为zabbix-server、zabbix-agent、zabbix-proxy,每个角色处理各自的安装配置。 测试部分,可以使用handler来重启服务,并在最后使用uri模块检查Web界面是否正常响应,或者使用command模块执行zabbix_get验证Agent是否正常工作。 可能遇到的问题包括依赖包缺失、服务启动失败、数据库权限问题等,需要在Playbook中加入必要的检查调试步骤,比如使用ignore_errorsregister来捕获输出。 最后,生成相关问题,比如性能优化、高可用配置、监控自定义等,这些可以帮助用户进一步了解Zabbix的使用扩展。</think>以下是在Rocky Linux 9上使用Ansible部署Zabbix Server/Agent/Proxy的详细指南: --- ### 一、Ansible基础配置 1. 控制节点安装Ansible ```bash sudo dnf install -y ansible-core ``` 2. 创建主机清单文件`hosts.ini` ```ini [zabbix_server] center ansible_host=192.168.137.13 # 参考引用[5] [zabbix_proxy] sp-1 ansible_host=192.168.137.14 [zabbix_agents] sp-2 ansible_host=192.168.137.15 sp-3 ansible_host=192.168.137.16 ``` --- ### 二、创建Playbook结构 ```yaml # zabbix-deploy.yml - hosts: zabbix_server roles: - zabbix-server - mysql-server - hosts: zabbix_proxy roles: - zabbix-proxy - hosts: zabbix_agents roles: - zabbix-agent ``` --- ### 三、核心角色配置(示例) #### 1. Zabbix Server角色 ```yaml # roles/zabbix-server/tasks/main.yml - name: 添加Zabbix仓库 yum_repository: name: zabbix description: Zabbix Official Repository baseurl: https://repo.zabbix.com/zabbix/6.0/rhel/9/$basearch/ gpgkey: https://repo.zabbix.com/RPM-GPG-KEY-ZABBIX gpgcheck: yes - name: 安装Zabbix Server yum: name: - zabbix-server-mysql - zabbix-web-mysql - zabbix-nginx-conf - zabbix-sql-scripts state: present - name: 配置数据库(参考引用[2]) mysql_db: name: zabbix encoding: utf8 collation: utf8_bin delegate_to: localhost - name: 导入初始数据 command: zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -uroot zabbix - name: 配置Nginx(参考引用[2]) template: src: templates/nginx.conf.j2 dest: /etc/nginx/conf.d/zabbix.conf notify: restart nginx ``` --- #### 2. Zabbix Agent配置 ```yaml # roles/zabbix-agent/tasks/main.yml - name: 安装Agent yum: name: zabbix-agent state: present - name: 配置Agent template: src: templates/zabbix_agentd.conf.j2 dest: /etc/zabbix/zabbix_agentd.conf notify: restart zabbix-agent # 模板文件内容示例(参考引用[3]) Server={{ zabbix_server_ip }} Hostname={{ inventory_hostname }} ``` --- #### 3. Zabbix Proxy部署 ```yaml # roles/zabbix-proxy/tasks/main.yml - name: 安装Proxy组件 yum: name: - zabbix-proxy-mysql - mariadb state: present - name: 配置Proxy数据库 mysql_db: name: zabbix_proxy encoding: utf8 - name: 生成Proxy配置文件 template: src: templates/zabbix_proxy.conf.j2 dest: /etc/zabbix/zabbix_proxy.conf ``` --- ### 四、安全配置 ```yaml - name: 开放防火墙端口 firewalld: port: "{{ item }}/tcp" permanent: yes state: enabled loop: - 80 # Web界面 - 10051 # Server端口 - 10050 # Agent端口 ``` --- ### 五、执行部署 ```bash ansible-playbook -i hosts.ini zabbix-deploy.yml ``` --- ### 六、验证部署 1. 访问Web界面: ```bash curl -I http://center/zabbix ``` 2. 测试Agent连接(参考引用[3]): ```bash ansible zabbix_agents -m command -a "zabbix_get -s 127.0.0.1 -k &#39;system.cpu.load&#39;" ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我变秃了也没变强

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值