zabbix进阶与分布式-主被动模式/自动发现

bash 复制代码
#!/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 gateway,java中的应用体系支持gateway进行绑定起来,基于JMX就可以收集到Java gateway的数据并将其在zabbix web上进行图表展示。

1、web监控配置

web监控需求

以zabbix-UI页面的登录监控,模拟登录,输入账号密码,实现首页的健康监控。

  1. 模拟登录输入zabbix账号密码,登录后台,如果登录失败就报警

  2. 基于响应状态码判断 非200即报警

2.zabbix主动模式

2.1 修改zabbix-agent为主动模式(web-7)

bash 复制代码
[root@web-7 ~]#cat  /etc/zabbix/zabbix_agentd.conf 
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=10.0.0.71
ServerActive=10.0.0.71
Hostname=web-7
Include=/etc/zabbix/zabbix_agentd.d/*.conf
[root@web-7 ~]#

重启agent服务
systemctl restart zabbix-agent

2.2 修改监控项的采集模式

bash 复制代码
1. 修改了配置文件,支持主动上传数据的模式
2. 修改该机器的监控项,为主动模式(批量修改)
3. 基于应用集选择某一系列的监控项,进行改为主动模式,也可以全选所有监控项,改为主动模式

os linux

php

nginx

2.2 确保基于agnet,主动式,采集了web7的,nginx,php的数据

3.zabbix自动发现

对于网络发现最需要理解的就是工作流程,不然觉得这个发现功能很奇怪,理解之后,就觉得这个设计很合理了。而且使用起来也很正常,而大部分文章只是讲解了如何使用,官方文件简单的提到了工作流程,不小心很容易忽略。
参考文档: 1 Network discovery

自动发现主要是希望通过发现网络中的主机,并自动把主机添加到监控中,并关联特定的模板,实现自动监控。例如在办公网络中,希望通过Zabbix Agent监控所有工作电脑,只需要把新安装的电脑开放防火墙10050端口,那么电脑就可以自动通过发现新机器,并开始监控。如果网络中可能存在Windows和Linux系统,就需要通过Zabbix Agent判断自动添加的主机是Windows还是Linux。
以上这个过程需要分为两个步骤:

  • 通过网络扫描制定的服务,本例为Zabbix Agent是否可以访问system.uname指标
  • 发现主机之后需要执行添加的动作,这个过程由动作(Action)完成

给自动发现,设置动作

准备好一些机器

bash 复制代码
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
LogFileSize=0
Server=10.0.0.71
ServerActive=10.0.0.71
Hostname=cicd-99
Include=/etc/zabbix/zabbix_agentd.d/*.conf


systemctl restart zabbix-agent

netstat -tunlp|grep zabbix
[root@zabbix-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的服务器压力。

需求

web7

web8

cicd99

jenkins100

全部自动注册到zabbix-server,且关联模板,且发送钉钉给运维管理员,告知是哪些机器,都被注册上了。

4.1 修改需要自动注册的agent配置文件

bash 复制代码
web7 
web8
cicd99
jenkins100

[root@zabbix-server-71 ~]#cat zabbix_agentd.conf 
PidFile=/var/run/zabbix/zabbix_agentd.pid 
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=10.0.0.71
ServerActive=10.0.0.71
HostMetadata=Linux
Include=/etc/zabbix/zabbix_agentd.d/*.conf



[root@zabbix-server-71 ~]#for i in 7 8 99 100;do scp zabbix_agentd.conf root@10.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    
[root@zabbix-server-71 ~]#

[root@zabbix-server-71 ~]#for i in 7 8 99 100;do ssh root@10.0.0.$i "systemctl restart zabbix-agent";done
[root@zabbix-server-71 ~]#
[root@zabbix-server-71 ~]#
[root@zabbix-server-71 ~]## 循环再 7 ,8,99,100四台机器,远程的ssh去重启zabbix-agent
[root@zabbix-server-71 ~]#

5.zabbix-proxy配置

zabbix分布式proxy配置

bash 复制代码
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_proxy@localhost 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'
ProxyMode=0 # 代理模式,0 主动, 1 被动
Server=10.0.0.71    # 填入zabbix-server地址
ServerPort=10051    # 填入zabbix-server端口
Hostname=zabbix-proxy-72     # 填入主机名
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0 
PidFile=/var/run/zabbix/zabbix_proxy.pid 
SocketDir=/var/run/zabbix
DBHost=localhost
DBName=zabbix_proxy
DBUser=zabbix_proxy
DBPassword=linux0224
ConfigFrequency=60 # proxy多久和server同步配置信息
DataSenderFrequency=5 # proxy多久发送一次自己的数据给server
EOF

7.启动,检查
systemctl restart zabbix-proxy.service

[root@zabbix-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_proxy   

5.1 设置agent指向zabbix_proxy

前置动作

  1. 关闭自动注册,自动发现等

  2. 删除现有的主机,查看基于zabbix-proxy模式的agent机器添加,数据采集

待会来看,基于zabbix-proxy模式的主机添加图解

bash 复制代码
# agent是什么 添加模式?
#  自动注册模式
# ServerActive=10.0.0.72
# HostMetadata=Linux

自己for循环批量给  web7 web8 cicd99 jenkins100


[root@zabbix-server-71 ~]#cat zabbix_agentd.conf 
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=10.0.0.72
ServerActive=10.0.0.72
HostMetadata=Linux
Include=/etc/zabbix/zabbix_agentd.d/*.conf


[root@zabbix-server-71 ~]#for server in 7 8 99 100;do  scp zabbix_agentd.conf root@10.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 root@10.0.0.${server} "systemctl restart zabbix-agent" ; done

5.2 去zabbix-UI中添加proxy的配置

5.3 打开自动注册功能,让agent机器,注册到proxy后,再注册到server中

自动注册,匹配条件就是,主机元数据,里有 Linux

要求结果是

  1. zabbix-UI中可以看到 基于proxy添加的主机

  2. 钉钉发个消息

看最新数据

bash 复制代码
#!/bin/bash
相关推荐
SelectDB12 小时前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
XIAOHEZIcode2 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220703 天前
如何搭建本地yum源(上)
运维
kyriewen5 天前
前端错误监控最全指南:捕获 JS 异常、Promise 拒绝、资源加载失败,附上报代码
前端·javascript·监控
大树886 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠6 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质6 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工6 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智6 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_6 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化