#/bin/bash主被动模式介绍Zabbix支持多种模式zabbix支持普通的zabbix server到zabbix agent端模式也支持zabbix-sever到zabbix-proxy模式zabbix-server同时关联多个zabbix-agent将zabbix-agent的历史数据存储到zabbix-server管理的数据库中然后经过zabbix的web也就是nginx展示出来zabbix支持proxy代理模式只需要授权proxy监听在特定的端口上10052而对应的proxy会独立的管理他下面的zabbix-agent并将zabbix-agent的数据存储到proxy管理的数据库中zabbix-server没有存储zabbix-proxy数据的功能是将proxy的数据放到zabbix web展示区进行展示Zabbix是基于php开发的默认使用fastcgi而Java不支持fastcgi模式为了采集展示进行可视化java对应的指标数据要让Java支持fastcgi需要安装一个JMX的java类zabbix关联java gatewayjava中的应用体系支持gateway进行绑定起来基于JMX就可以收集到Java gateway的数据并将其在zabbix web上进行图表展示。1、web监控配置web监控需求以zabbix-UI页面的登录监控模拟登录输入账号密码实现首页的健康监控。1. 模拟登录输入zabbix账号密码登录后台如果登录失败就报警2. 基于响应状态码判断 非200即报警2.zabbix主动模式2.1 修改zabbix-agent为主动模式web-7[rootweb-7 ~]#cat /etc/zabbix/zabbix_agentd.conf PidFile/var/run/zabbix/zabbix_agentd.pid LogFile/var/log/zabbix/zabbix_agentd.log LogFileSize0 Server10.0.0.71 ServerActive10.0.0.71 Hostnameweb-7 Include/etc/zabbix/zabbix_agentd.d/*.conf [rootweb-7 ~]# 重启agent服务 systemctl restart zabbix-agent2.2 修改监控项的采集模式1. 修改了配置文件支持主动上传数据的模式 2. 修改该机器的监控项为主动模式批量修改 3. 基于应用集选择某一系列的监控项进行改为主动模式也可以全选所有监控项改为主动模式os linuxphpnginx2.2 确保基于agnet主动式采集了web7的nginxphp的数据3.zabbix自动发现对于网络发现最需要理解的就是工作流程不然觉得这个发现功能很奇怪理解之后就觉得这个设计很合理了。而且使用起来也很正常而大部分文章只是讲解了如何使用官方文件简单的提到了工作流程不小心很容易忽略。参考文档:1 Network discovery自动发现主要是希望通过发现网络中的主机并自动把主机添加到监控中并关联特定的模板实现自动监控。例如在办公网络中希望通过Zabbix Agent监控所有工作电脑只需要把新安装的电脑开放防火墙10050端口那么电脑就可以自动通过发现新机器并开始监控。如果网络中可能存在Windows和Linux系统就需要通过Zabbix Agent判断自动添加的主机是Windows还是Linux。以上这个过程需要分为两个步骤通过网络扫描制定的服务本例为Zabbix Agent是否可以访问system.uname指标发现主机之后需要执行添加的动作这个过程由动作Action完成给自动发现设置动作准备好一些机器cicd-99 jenkins-100 web-8 统一安装zabbix客户端 zabbix-agent rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.11-1.el7.x86_64.rpm ntpdate -u ntp.aliyun.com PidFile/var/run/zabbix/zabbix_agentd.pid LogFile/var/log/zabbix/zabbix_agentd.log LogFileSize0 Server10.0.0.71 ServerActive10.0.0.71 Hostnamecicd-99 Include/etc/zabbix/zabbix_agentd.d/*.conf systemctl restart zabbix-agent netstat -tunlp|grep zabbix [rootzabbix-server-71 ~]#for i in 99 100 8;do zabbix_get -s 10.0.0.$i -k system.uname ;done 自动发现的条件貌似都好了4.zabbix自动注册为什么要学自动注册一样的自动发现是zabbix-server去扫描网段然后添加机器机器多了一样要累死他就是配置好一个网络环境后zabbix-server主动去网络环境中扫描然后发现目标机器然后监控此时的agent是被动等待的。那如果需要扫描多种网段且机器数量很大的话你的zabbix-server服务器可就很难受了。。。因此自动注册就是由zabbix-agent主动发起注册请求你来监控我把极大的降低了zabbix-server的服务器压力。需求web7web8cicd99jenkins100全部自动注册到zabbix-server,且关联模板且发送钉钉给运维管理员告知是哪些机器都被注册上了。4.1 修改需要自动注册的agent配置文件web7 web8 cicd99 jenkins100 [rootzabbix-server-71 ~]#cat zabbix_agentd.conf PidFile/var/run/zabbix/zabbix_agentd.pid LogFile/var/log/zabbix/zabbix_agentd.log LogFileSize0 Server10.0.0.71 ServerActive10.0.0.71 HostMetadataLinux Include/etc/zabbix/zabbix_agentd.d/*.conf [rootzabbix-server-71 ~]#for i in 7 8 99 100;do scp zabbix_agentd.conf root10.0.0.$i:/etc/zabbix/;done zabbix_agentd.conf 100% 201 320.3KB/s 00:00 zabbix_agentd.conf 100% 201 417.4KB/s 00:00 zabbix_agentd.conf 100% 201 328.3KB/s 00:00 zabbix_agentd.conf 100% 201 431.5KB/s 00:00 [rootzabbix-server-71 ~]# [rootzabbix-server-71 ~]#for i in 7 8 99 100;do ssh root10.0.0.$i systemctl restart zabbix-agent;done [rootzabbix-server-71 ~]# [rootzabbix-server-71 ~]# [rootzabbix-server-71 ~]## 循环再 7 8,99,100四台机器远程的ssh去重启zabbix-agent [rootzabbix-server-71 ~]#5.zabbix-proxy配置zabbix分布式proxy配置1. 部署一个zabbix-proxy机器 2. 设置zabbix元修改为清华的 rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm sed -i s#repo.zabbix.com#mirrors.tuna.tsinghua.edu.cn/zabbix#g /etc/yum.repos.d/zabbix.repo yum install zabbix-proxy-mysql mariadb-server -y 3. zabbix-proxy 和 zabbix-server配置几乎一样模拟了一个server角色去存储agent的数据 systemctl start mariadb.service mysqladmin password linux0224 mysql -uroot -plinux0224 4.数据库创建zabbix库以及mysql账号 # 非交互式的执行mysql的 SQL语句 mysql -uroot -plinux0224 -e create database zabbix_proxy character set utf8 collate utf8_bin; mysql -uroot -plinux0224 -e grant all privileges on zabbix_proxy.* to zabbix_proxylocalhost identified by linux0224; mysql -uroot -plinux0224 -e flush privileges; 5. 导入zabbix——poroxy的数据库数据 zcat /usr/share/doc/zabbix-proxy-mysql-4.0.42/schema.sql.gz| mysql -uzabbix_proxy -plinux0224 zabbix_proxy 6.创建proxy配置文件 cat /etc/zabbix/zabbix_proxy.conf EOF ProxyMode0 # 代理模式0 主动 1 被动 Server10.0.0.71 # 填入zabbix-server地址 ServerPort10051 # 填入zabbix-server端口 Hostnamezabbix-proxy-72 # 填入主机名 LogFile/var/log/zabbix/zabbix_proxy.log LogFileSize0 PidFile/var/run/zabbix/zabbix_proxy.pid SocketDir/var/run/zabbix DBHostlocalhost DBNamezabbix_proxy DBUserzabbix_proxy DBPasswordlinux0224 ConfigFrequency60 # proxy多久和server同步配置信息 DataSenderFrequency5 # proxy多久发送一次自己的数据给server EOF 7.启动检查 systemctl restart zabbix-proxy.service [rootzabbix-proxy-72 ~]#netstat -tunlp|grep zabbix tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 1954/zabbix_proxy tcp6 0 0 :::10051 :::* LISTEN 1954/zabbix_proxy5.1 设置agent指向zabbix_proxy前置动作关闭自动注册自动发现等删除现有的主机查看基于zabbix-proxy模式的agent机器添加数据采集待会来看基于zabbix-proxy模式的主机添加图解# agent是什么 添加模式 # 自动注册模式 # ServerActive10.0.0.72 # HostMetadataLinux 自己for循环批量给 web7 web8 cicd99 jenkins100 [rootzabbix-server-71 ~]#cat zabbix_agentd.conf PidFile/var/run/zabbix/zabbix_agentd.pid LogFile/var/log/zabbix/zabbix_agentd.log LogFileSize0 Server10.0.0.72 ServerActive10.0.0.72 HostMetadataLinux Include/etc/zabbix/zabbix_agentd.d/*.conf [rootzabbix-server-71 ~]#for server in 7 8 99 100;do scp zabbix_agentd.conf root10.0.0.${server}:/etc/zabbix/ ; done zabbix_agentd.conf 100% 200 494.5KB/s 00:00 zabbix_agentd.conf 100% 200 444.5KB/s 00:00 zabbix_agentd.conf 100% 200 371.4KB/s 00:00 zabbix_agentd.conf 100% 200 353.2KB/s 00:00 批量重启 for server in 7 8 99 100;do ssh root10.0.0.${server} systemctl restart zabbix-agent ; done5.2 去zabbix-UI中添加proxy的配置5.3 打开自动注册功能让agent机器注册到proxy后再注册到server中自动注册匹配条件就是主机元数据里有 Linux要求结果是1. zabbix-UI中可以看到 基于proxy添加的主机2. 钉钉发个消息看最新数据#/bin/bash