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
相关推荐
柏木乃一2 小时前
Linux线程(6)生产消费者模型
linux·运维·服务器·c++·分布式·线程·生产消费
银河麒麟操作系统2 小时前
服务器通用(全架构)【深入解析文件操作中的常见问题:空洞、传输与大小差异】技术文章
运维·服务器·数据库
smile_5me2 小时前
RK3588 Ubuntu显示异常
linux·运维·ubuntu
艾莉丝努力练剑2 小时前
【MYSQL】MYSQL学习的一大重点:MYSQL库的操作
android·linux·运维·数据库·人工智能·学习·mysql
sssvangen2 小时前
OpenClaw免费自动部署脚本-docker版
运维·docker·容器
GEO_Huang2 小时前
定义未来办公:数谷AgentOffice如何实现规模化提效
大数据·运维·人工智能·自动化·aigc
chem41112 小时前
linux 海报墙
linux·运维·服务器
中云DDoS CC防护蔡蔡2 小时前
网站正常用户被高防误封怎么办
运维·服务器·http·网络安全·ddos
拾贰_C2 小时前
【centos7 | Linux | redis】Redis安装
linux·运维·redis