zabbix监控系统--自动发现/自动注册

本文介绍如何使用Zabbix实现大规模机器的批量监控,包括自动发现和自动注册两种方式的具体实施步骤,有效降低运维成本。

首先我们了解一下:
当我们监控50/100/200台甚至更多的机器的话我们该用什么方案呢?
解决思路:
(1)克隆监控模板
(2)自动注册和自动发现
(3)使用zabbix的api接口,利用curl语言,或者开发自己的编程脚本如python等
我们日常使用的各种软件,都是提供API接口,给开发人员进行修改以及获取数据的。
监控实施方案(部分服务):
在这里插入图片描述
一.自动发现:
概念:

Zabbix自动发现就是为了解决批量监控而设计的功能之一,什么是自动发现呢,简单来说就是Zabbix Server端可以基于设定的规则,自动批量的去发现局域网若干服务器,并自动把服务器添加至Zabbix监控平台,省去人工手动频繁的添加,节省大量的人力成本。
自动发现两个弊端:
(1). 海量的机器中不一定都是一个网段,可能会是N个网段中的N个机器。

(2)大量网段的自动发现触发大量的进程,耗时较久,且压力大,会加速服务器的死亡
1.准备好一台客户端机器。
systemctl is-active zabbix-agent2 //查看agent2服务是否正常运行
在这里插入图片描述
2.打开server端。

zabbix_get -s '192.168.148.123' -p 10050 -k 'agent.ping'    //查看客户机是否存活

在这里插入图片描述
3.配置hosts解析,编辑所有主机的/etc/hosts文件:

vim /etc/hosts
192.168.148.122 node1
192.168.148.123 agent01
192.168.148.121 agent02

在这里插入图片描述
4.自动发现配置(这里有现有的模板,我们可以直接使用)。在这里插入图片描述
只用修改发现的IP范围即可,
在这里插入图片描述
5.添加动作
在这里插入图片描述
6.点击进入主机(查看自动发现是否存在):
在这里插入图片描述
在这里插入图片描述
7.点击更新,过10s后查看(发现添加成功):
在这里插入图片描述
二,自动注册
即zabbix-agent2主动上报自己的信息,你来注册且满足我条件我就给你监控。
缺点:
可能agent找不到server.(配置文件写错,和网络不通都有可能造成这样的结果)
1.准备机器:

server /agent01/agent02

2.修改agent01/02的配置文件去掉HostnameItem=system.hostname前面的#号
vim /etc/zabbix/zabbix_agent2.conf

[root@agent01 ~]# grep -Ev '^#|^$' /etc/zabbix/zabbix_agent2.conf
PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=192.168.148.122       #服务端地址
ServerActive=192.168.148.122         #服务端地址
Hostname=agent01               #agent主机名
HostnameItem=system.hostname 
Include=/etc/zabbix/zabbix_agent2.d/*.conf
ControlSocket=/tmp/agent.sock

3.重启服务:

systemctl restart zabbix-agent2

4.去服务端验证是否能ping通
在这里插入图片描述
5.进入页面进入配置:
在这里插入图片描述
6.切换成功点击创建动作
在这里插入图片描述
7.添加动作信息:
在这里插入图片描述
8.添加操作信息:
在这里插入图片描述
9.确保server端能够ping通主机名
在这里插入图片描述
10.点击主机进行验证:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210518173544860.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0pvaG55Y

version: '3' services: mysql: image: mysql:8.0 container_name: mysql volumes: - ./mysql/data:/var/lib/mysql - ./mysql/conf:/etc/mysql/conf.d - ./mysql/logs:/var/log/mysql - /etc/localtime:/etc/localtime restart: always privileged: true environment: - MYSQL_ROOT_PASSWORD=myrootpass - MYSQL_DATABASE=zabbix - MYSQL_USER=zabbix - MYSQL_PASSWORD=mypass - TZ=Asia/Shanghai - LANG=en_US.UTF-8 expose: - "3306" networks: zabbix-net: command: --character-set-server=utf8 --collation-server=utf8_bin zabbix-gateway: image: zabbix/zabbix-java-gateway:6.0.0-ubuntu container_name: zabbix-gateway volumes: - /etc/localtime:/etc/localtime restart: always privileged: true ports: - "10052:10052" networks: zabbix-net: zabbix-snmptraps: image: zabbix/zabbix-snmptraps:6.0.0-ubuntu container_name: zabbix-snmptraps volumes: - /etc/localtime:/etc/localtime - ./snmptraps:/var/lib/zabbix/snmptraps - ./mibs:/var/lib/zabbix/mibs restart: always privileged: true ports: - "1162:1162/udp" networks: zabbix-net: zabbix-server: image: zabbix/zabbix-server-mysql:6.0.0-ubuntu container_name: zabbix-server volumes: - /etc/localtime:/etc/localtime - ./snmptraps:/var/lib/zabbix/snmptraps - ./mibs:/var/lib/zabbix/mibs - ./alertscripts:/usr/lib/zabbix/alertscripts - ./externalscripts:/usr/lib/zabbix/externalscripts restart: always privileged: true environment: - ZBX_LISTENPORT=10051 - DB_SERVER_HOST=mysql - DB_SERVER_PORT=3306 - MYSQL_DATABASE=zabbix - MYSQL_USER=zabbix - MYSQL_PASSWORD=mypass - MYSQL_ROOT_PASSWORD=myrootpass - ZBX_CACHESIZE=1G - ZBX_HISTORYCACHESIZE=512M - ZBX_HISTORYINDEXCACHESIZE=16M - ZBX_TRENDCACHESIZE=256M - ZBX_VALUECACHESIZE=256M - ZBX_STARTPINGERS=64 - ZBX_IPMIPOLLERS=1 - ZBX_ENABLE_SNMP_TRAPS=true - ZBX_STARTTRAPPERS=1 - ZBX_JAVAGATEWAY_ENABLE=true - ZBX_JAVAGATEWAY=zabbix-gateway - ZBX_STARTJAVAPOLLERS=1 ports: - "10051:10051" networks: zabbix-net: links: - mysql - zabbix-gateway zabbix-web: image: zabbix/zabbix-web-nginx-mysql:6.0.0-ubuntu container_name: zabbix-web volumes: - ./font/simfang.ttf:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf - /etc/localtime:/etc/localtime restart: always privileged: true environment: - ZBX_SERVER_NAME=Zabbix 6.0.0 - ZBX_SERVER_HOST=zabbix-server - ZBX_SERVER_PORT=10051 - DB_SERVER_HOST=mysql - DB_SERVER_PORT=3306 - MYSQL_DATABASE=zabbix - MYSQL_USER=zabbix - MYSQL_PASSWORD=mypass - MYSQL_ROOT_PASSWORD=myrootpass - PHP_TZ=Asia/Shanghai ports: - "80:8080" networks: zabbix-net: links: - mysql - zabbix-server networks: zabbix-net: driver: bridge ipam: config: - subnet: 10.10.10.0/24 gateway: 10.10.10.1这段代码是什么意思
最新发布
08-12
### Zabbix 服务组件配置说明 在 Docker Compose 配置文件中,Zabbix 通常包含多个服务组件,包括 `mysql`、`zabbix-gateway`、`zabbix-snmptraps`、`zabbix-server` 和 `zabbix-web`。这些服务各自承担不同的功能,共同构建一个完整的 Zabbix 监控系统。 #### 1. `mysql` 服务 `mysql` 服务用于提供 Zabbix 所需的数据库支持。Zabbix 服务器需要一个数据库来存储配置、监控数据以及历史信息。通常,Zabbix 使用 MySQL 或 MariaDB 作为其后端数据库。 - **配置示例**: ```yaml mysql: image: mysql:8.0 container_name: zabbix-mysql environment: MYSQL_ROOT_PASSWORD: root_password MYSQL_DATABASE: zabbix MYSQL_USER: zabbix MYSQL_PASSWORD: zabbix_password volumes: - ./mysql-data:/var/lib/mysql ports: - "3306:3306" restart: unless-stopped ``` - **关键配置说明**: - `MYSQL_ROOT_PASSWORD`:设置 MySQL 的 root 用户密码。 - `MYSQL_DATABASE`:创建名为 `zabbix` 的数据库。 - `MYSQL_USER` 和 `MYSQL_PASSWORD`:为 Zabbix 创建专用数据库用户及其密码。 - `volumes`:将本地目录挂载到容器中,以持久化数据库数据。 - `ports`:将 MySQL 的默认端口 3306 映射到宿主机。 #### 2. `zabbix-gateway` 服务 `zabbix-gateway` 是 Zabbix 的 Java 网关,用于监控 JMX(Java Management Extensions)服务。它允许 Zabbix Server 通过 JMX 收集 Java 应用程序的性能数据。 - **配置示例**: ```yaml zabbix-gateway: image: zabbix/zabbix-java-gateway:latest container_name: zabbix-java-gateway ports: - "10052:10052" environment: ZABBIX_JAVA_GATEWAY: "true" restart: unless-stopped ``` - **关键配置说明**: - `ports`:将 Java 网关的默认端口 10052 映射到宿主机。 - `environment`:启用 Java 网关功能。 - `restart`:确保容器在主机重启后自动启动。 #### 3. `zabbix-snmptraps` 服务 `zabbix-snmptraps` 用于接收 SNMP Traps 消息。SNMP Traps 是网络设备(如路由器、交换机)在发生特定事件时发送的通知。Zabbix 可以通过此服务接收这些通知并进行处理。 - **配置示例**: ```yaml zabbix-snmptraps: image: zabbix/zabbix-snmptraps:latest container_name: zabbix-snmptraps volumes: - ./snmptraps:/var/lib/zabbix/snmptraps ports: - "705:705/udp" restart: unless-stopped ``` - **关键配置说明**: - `volumes`:挂载 SNMP Traps 日志存储目录。 - `ports`:将 SNMP Traps 的默认端口 705 映射到宿主机,并指定为 UDP 协议。 - `restart`:确保容器在主机重启后自动启动。 #### 4. `zabbix-server` 服务 `zabbix-server` 是 Zabbix 的核心服务,负责收集监控数据、触发告警以及执行自动化的动作。它需要连接数据库,并且可以与 Zabbix Agent、Java Gateway 和 SNMP Traps 服务协同工作。 - **配置示例**: ```yaml zabbix-server: image: zabbix/zabbix-server-mysql:latest container_name: zabbix-server depends_on: - mysql - zabbix-gateway - zabbix-snmptraps environment: DB_SERVER: mysql MYSQL_USER: zabbix MYSQL_PASSWORD: zabbix_password ZABBIX_JAVA_GATEWAY: zabbix-gateway ports: - "10051:10051" restart: unless-stopped ``` - **关键配置说明**: - `depends_on`:指定依赖的服务,确保数据库、Java Gateway 和 SNMP Traps 服务先于 Zabbix Server 启动。 - `DB_SERVER`:指向数据库服务的主机名。 - `MYSQL_USER` 和 `MYSQL_PASSWORD`:用于连接数据库的用户名和密码。 - `ZABBIX_JAVA_GATEWAY`:指定 Java 网关的地址。 - `ports`:将 Zabbix Server 的默认端口 10051 映射到宿主机。 #### 5. `zabbix-web` 服务 `zabbix-web` 提供了 Zabbix 的 Web 界面,用户可以通过浏览器访问 Zabbix 的前端页面进行配置、查看监控数据和管理告警。 - **配置示例**: ```yaml zabbix-web: image: zabbix/zabbix-web-nginx-mysql:latest container_name: zabbix-web depends_on: - mysql - zabbix-server environment: DB_SERVER: mysql MYSQL_USER: zabbix MYSQL_PASSWORD: zabbix_password ZABBIX_SERVER_HOST: zabbix-server ports: - "80:8080" restart: unless-stopped ``` - **关键配置说明**: - `depends_on`:依赖数据库和 Zabbix Server 服务。 - `DB_SERVER`:指向数据库服务的主机名。 - `MYSQL_USER` 和 `MYSQL_PASSWORD`:用于连接数据库的用户名和密码。 - `ZABBIX_SERVER_HOST`:指定 Zabbix Server 的地址。 - `ports`:将 Web 界面的默认端口 8080 映射到宿主机的 80 端口,以便通过标准 HTTP 端口访问。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值