Zabbix监控系统实操上机项目 注意:需要全程录屏 项目概述 本项目包含一系列Zabbix监控系统的实操任务,涵盖从基础安装配置到高级监控场景的实现。 环境准备 操作系统:Rocky9 硬件要求:至少2核CPU,4GB内存,50GB磁盘空间 软件要求: Zabbix Server 7.0 LTS MySQL 8.0 Nginx Zabbix Agent/Zabbix Agent 2 实操任务 任务1:Zabbix环境部署 使用ansible ad-hoc实现zabbix相关组件安装与部署 1. 安装并配置Zabbix Server、前端和数据库 2. 配置Zabbix Agent在本地和至少两台远程主机上 3. 验证Zabbix Server与Agent的通信状态 任务2:基础监控配置 1. 创建主机组:Web Servers、Database Servers、Network Devices 2. 为Linux主机配置基础监控项: CPU使用率 内存使用情况 磁盘空间和IO 系统负载 网络流量 3. 创建相应的触发器并在仪表板展示 任务3:模板应用与自定义 1. 创建自定义模板"MyApp Template"包含: 自定义监控项:特定应用程序进程数 自定义触发器:当进程数低于1时告警 自定义图形展示关键指标 2. 将模板应用到测试主机 任务4:网络设备监控 1. 配置SNMP监控一台网络设备(交换机/路由器) 2. 创建监控项收集: 接口状态 接口流量 CPU和内存使用率(如支持) 3. 配置触发器检测接口宕机和高流量情况 任务5:Web应用监控 1. 配置Web场景监控一个HTTP服务: 检查主页可用性 测量响应时间 验证页面内容包含特定字符串 2. 创建触发器检测服务不可用或响应时间过长 任务6:日志监控与告警 1. 配置日志文件监控: /var/log/messages 应用程序特定日志文件 2. 创建触发器基于日志关键字(如"ERROR"、"CRITICAL")告警 任务7:告警与通知配置 1. 配置邮件通知媒介 2. 创建告警升级策略: 第一次告警发送给初级运维 1小时后未解决升级到高级运维 3小时后未解决发送给运维经理 3. 测试告警流程 任务8:高级监控场景 1. 配置主动式Agent自动注册 2. 实现低级别发现(LLD)监控: 自动发现并监控挂载点 自动发现并监控网络接口 3. 配置依赖关系监控(如先检查网络再检查应用) 项目交付资料 1. 完整的Zabbix监控系统配置文档 2. 截图展示关键监控仪表板和告警通知 3. 自定义模板和脚本的源代码 4. 项目总结报告(包括遇到的问题和解决方案)
时间: 2025-07-28 08:00:38 AIGC 浏览: 39
<think>我们正在处理一个关于Zabbix监控系统的复杂实操项目。用户要求使用Rocky Linux 9作为操作系统,Zabbix Server 7.0 LTS版本,并使用Ansible进行自动化部署。项目包括多个监控任务和告警配置。由于用户要求全程录屏,因此我们需要提供详细的步骤,以便用户能够按步骤操作。
根据引用内容,我们有一些关于Zabbix部署的参考,但用户要求的是在Rocky9上使用Ansible部署Zabbix 7.0,并配置多种监控。因此,我们需要整合Ansible部署方法以及Zabbix的各项配置。
由于问题非常综合,我们将分步骤进行:
1. 环境准备
2. 使用Ansible部署Zabbix Server和Agent(包括数据库和Web界面)
3. 配置Linux主机监控(包括主动和被动模式)
4. 配置网络设备SNMP监控
5. 配置Web应用监控
6. 配置日志监控(使用自定义脚本和Zabbix日志监控功能)
7. 创建自定义模板和触发器
8. 配置LLD(低级自动发现)和主动注册
9. 配置邮件告警通知
注意:由于Zabbix 7.0 LTS是最新版本,我们需要确保使用对应的Ansible角色或Playbook。官方提供了Ansible角色:https://github.com/ansible-collections/community.zabbix
下面开始详细步骤:
### 1. 环境准备
确保有一台Rocky Linux 9服务器作为Zabbix Server,同时准备若干台被监控的Linux主机(可以是Rocky Linux 9或其他发行版),以及支持SNMP的网络设备(如交换机、路由器等)和需要监控的Web应用。
在Zabbix Server上安装Ansible:
```bash
sudo dnf install epel-release -y
sudo dnf install ansible -y
```
### 2. 使用Ansible部署Zabbix Server
我们将使用`community.zabbix` Ansible集合来部署Zabbix Server。
首先,安装`community.zabbix`集合:
```bash
ansible-galaxy collection install community.zabbix
```
然后,创建一个Playbook,例如`zabbix_server.yml`,内容如下:
```yaml
---
- name: Deploy Zabbix Server 7.0
hosts: zabbix_server # 在Ansible inventory中定义的主机
become: yes
vars:
zabbix_server_version: 7.0
zabbix_server_database: mysql # 也可以选择pgsql
zabbix_server_database_long: mysql
zabbix_server_dbhost: localhost
zabbix_server_dbname: zabbix
zabbix_server_dbuser: zabbix
zabbix_server_dbpassword: "your_secure_password"
zabbix_server_install_frontend: true
zabbix_server_install_agent: true
zabbix_server_http_settings:
listen: 0.0.0.0
listen_port: 80
zabbix_server_timezone: Asia/Shanghai
roles:
- role: community.zabbix.zabbix_server
```
注意:需要提前在目标服务器上安装MySQL或PostgreSQL,并创建数据库和用户。也可以使用Ansible的`mysql_db`和`mysql_user`模块来自动化这一步。
运行Playbook:
```bash
ansible-playbook zabbix_server.yml
```
部署完成后,访问`http://zabbix_server_ip`,按照Web安装向导完成初始化配置(如果Playbook没有自动完成初始化)。
### 3. 配置Linux主机监控
在需要监控的Linux主机上安装Zabbix Agent。同样使用Ansible,创建`zabbix_agent.yml`:
```yaml
---
- name: Install Zabbix Agent
hosts: linux_servers # 被监控的Linux主机组
become: yes
vars:
zabbix_agent_server: "zabbix_server_ip"
zabbix_agent_serveractive: "zabbix_server_ip"
zabbix_agent_version: 7.0
zabbix_agent_listeninterface: eth0
zabbix_agent_hostname: "{{ ansible_fqdn }}"
roles:
- role: community.zabbix.zabbix_agent
```
此Playbook会在目标主机上安装Zabbix Agent 7.0,并配置主动和被动模式。
在Zabbix Web界面中,添加这些主机:
- 进入“配置”->“主机”->“创建主机”
- 填写主机名称、可见名称、所属组(如Linux servers)
- 在“接口”中添加Agent接口(如Zabbix agent,IP地址和端口10050)
然后,可以链接一个模板,例如“Linux by Zabbix agent”,该模板包含基本的监控项。
### 4. 配置网络设备SNMP监控
以Cisco交换机为例,首先在交换机上配置SNMP:
```cisco
snmp-server community public RO # 使用public作为只读团体字,生产环境建议使用更安全的SNMPv3
```
在Zabbix Server上安装SNMP工具(用于测试):
```bash
sudo dnf install net-snmp-utils -y
```
使用`snmpwalk`测试:
```bash
snmpwalk -v 2c -c public <switch_ip> .1.3.6.1.2.1.1.1.0
```
在Zabbix中添加网络设备主机:
- 创建主机,填写交换机IP
- 添加SNMP接口(端口161)
- 选择SNMP版本(如SNMPv2c),填写团体字(public)
- 链接模板,如“Template Module Generic SNMPv2”
### 5. 配置Web应用监控
在Zabbix中,可以使用Web监控来检查Web应用的可用性和响应时间。
- 进入“配置”->“主机”->选择要监控的Web应用主机(或新建主机)
- 在“Web场景”选项卡中创建场景
- 添加步骤,指定URL、所需状态码等
- 可以设置触发器,当场景失败时告警
### 6. 配置日志监控
引用[2]中提到使用自定义脚本监控日志。我们也可以使用Zabbix Agent的内置日志监控功能。
例如,监控Apache错误日志:
- 在Zabbix Agent配置文件中添加:
```conf
UserParameter=apache.log[*],grep -c "$1" /var/log/httpd/error_log
```
或者使用Zabbix的日志监控项:
- 在Zabbix Web界面中,为主机添加监控项:
- 类型:Zabbix agent (active)
- 键值:`log[/var/log/httpd/error_log,,100]` # 监控最新的100行
- 根据需要设置日志正则匹配和触发器
引用[2]中使用了自定义Python脚本,我们可以类似部署:
- 将脚本(如log.py)放在被监控主机的`/scripts/`目录下
- 在Agent配置文件中添加:
```conf
UserParameter=check_log_apache,python /scripts/log.py /var/log/httpd/error_log
```
- 然后重启Agent,在Zabbix中创建监控项使用该键值。
### 7. 创建自定义模板和触发器
自定义模板可以复用监控配置。
- 进入“配置”->“模板”->“创建模板”
- 添加监控项(如自定义的键值、SNMP OID等)
- 添加触发器,例如:当监控项的值超过阈值时触发告警
### 8. 配置LLD和主动注册
**LLD(低级自动发现)**:例如自动发现文件系统并监控每个文件系统的使用情况。
- 在模板中创建“自动发现规则”,类型为“Zabbix agent”,键值如`vfs.fs.discovery`
- 创建监控项原型,键值如`vfs.fs.size[{#FSNAME},pused]`
- 创建触发器原型,当使用率超过90%时告警
**主动注册**:当新的Agent启动时,自动注册到Zabbix Server。
- 在Agent配置文件中设置:
```conf
Hostname=Unique_Hostname
ServerActive=zabbix_server_ip
HostMetadata=linux
```
- 在Zabbix Web中,进入“配置”->“动作”,选择“自动注册”事件源,创建动作:
- 条件:Host metadata包含linux
- 操作:链接到“Linux servers”模板,添加到主机组等
### 9. 配置邮件告警通知
需要配置Zabbix Server的邮件发送能力。
- 安装邮件发送工具(如mailx或配置SMTP):
```bash
sudo dnf install mailx -y
```
- 配置Zabbix的邮件告警媒介:
- 进入“管理”->“报警媒介类型”->“Email”
- 设置SMTP服务器、发件人邮箱等
- 配置用户接收告警:
- 进入“用户设置”->“报警媒介”,添加收件邮箱
- 配置动作:
- 进入“配置”->“动作”,选择触发器事件,在操作中发送消息到用户或用户组
以上是一个大致的框架。由于项目非常庞大,每个步骤都需要详细操作,建议分阶段录屏。
### 注意事项
- 全程录屏时,建议先写好脚本,避免操作失误。
- 生产环境需注意安全,如数据库密码、SNMP团体字、邮件发送密码等应使用安全方式存储。
- Zabbix 7.0 LTS的模板可能有所更新,请参考官方文档。
§§相关问题§§
1. 在Rocky Linux 9上使用Ansible部署Zabbix 7.0时,如何解决依赖问题?
2. Zabbix监控网络设备时,如何获取特定的OID?
3. 如何编写自定义脚本来监控应用程序日志?
4. Zabbix中如何测试邮件告警功能?
5. 如何优化Zabbix数据库性能?</think>### Zabbix Server 7.0 LTS在Rocky Linux 9上的部署与监控配置指南
#### 一、环境准备
1. **操作系统**:Rocky Linux 9(最小化安装)
2. **网络要求**:
- Zabbix Server开放端口:`10051/TCP`
- Zabbix Agent开放端口:`10050/TCP`
- SNMP设备访问:`161/UDP`
3. **Ansible控制节点**:需提前安装Ansible 2.14+
```bash
sudo dnf install epel-release ansible -y
```
---
#### 二、Ansible部署Zabbix组件
1. **创建Ansible Playbook** (`zabbix_deploy.yml`):
```yaml
---
- name: Deploy Zabbix 7.0 LTS
hosts: zabbix_servers
become: yes
vars:
zabbix_version: "7.0-lts"
db_type: "mysql"
db_password: "SecurePass123!"
smtp_server: "smtp.example.com:587"
tasks:
- name: Install Zabbix repository
ansible.builtin.yum_repository:
name: zabbix
description: Zabbix Official Repo
baseurl: "https://repo.zabbix.com/zabbix/7.0/rhel/9/\$basearch/"
gpgcheck: yes
gpgkey: "https://repo.zabbix.com/RPM-GPG-KEY-ZABBIX-A14FE591"
- name: Install Zabbix components
ansible.builtin.package:
name:
- zabbix-server-{{ db_type }}
- zabbix-web-{{ db_type }}
- zabbix-nginx-conf
- zabbix-sql-scripts
- zabbix-agent
state: present
- name: Configure database
ansible.builtin.shell: |
mysql -e "CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin"
mysql -e "CREATE USER 'zabbix'@'localhost' IDENTIFIED BY '{{ db_password }}'"
mysql -e "GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost'"
zcat /usr/share/zabbix-sql-scripts/{{ db_type }}/server.sql.gz | mysql zabbix
- name: Configure Zabbix Server
ansible.builtin.template:
src: zabbix_server.conf.j2
dest: /etc/zabbix/zabbix_server.conf
notify: restart zabbix-server
- name: Start and enable services
ansible.builtin.systemd:
name: "{{ item }}"
state: started
enabled: yes
loop:
- zabbix-server
- zabbix-agent
- nginx
- php-fpm
```
2. **配置模板** (`zabbix_server.conf.j2`):
```ini
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword={{ db_password }}
ListenPort=10051
LogFile=/var/log/zabbix/zabbix_server.log
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=30
AlertScriptsPath=/usr/lib/zabbix/alleetscripts
```
3. **执行部署**:
```bash
ansible-playbook -i inventory.ini zabbix_deploy.yml
```
---
#### 三、监控配置流程
1. **Linux主机监控**(被动模式):
- 在Agent主机执行:
```bash
sudo dnf install zabbix-agent
echo "Server=<ZABBIX_SERVER_IP>" > /etc/zabbix/zabbix_agentd.conf
systemctl restart zabbix-agent
```
- Web界面操作:
- *配置 → 主机 → 创建主机*
- 添加Agent接口IP,链接模板:`Linux by Zabbix agent`
2. **SNMP网络设备监控**:
```yaml
# Ansible任务片段
- name: Configure SNMP monitoring
ansible.builtin.template:
src: snmp.conf.j2
dest: /etc/zabbix/zabbix_agentd.d/snmp.conf
vars:
device_ip: "192.168.1.1"
community: "public"
```
SNMP模板内容:
```ini
UserParameter=snmp.ifIn[*],snmpget -v2c -c {{ community }} {{ device_ip }} ifInOctets.$1 | awk '{print $$4}'
UserParameter=snmp.sysDescr,snmpwalk -v2c -c {{ community }} {{ device_ip }} sysDescr.0
```
3. **Web应用监控**:
- *监测 → Web监测 → 创建场景*
- 添加步骤:URL、状态码验证(如200)、响应时间阈值

4. **日志监控**(引用[2]):
- 部署日志脚本:
```bash
wget https://github.com/chendao2015/pyscripts/raw/master/log.py -P /scripts/
chmod +x /scripts/log.py
```
- Agent配置:
```ini
UserParameter=check_log_apache,python /scripts/log.py /var/log/httpd/error_log
```
5. **自定义模板与LLD**:
- 创建模板:*配置 → 模板 → 创建*
- 添加LLD规则(如自动发现磁盘分区):
```json
{
"data": [
{"{#FSNAME}": "/", "{#FSTYPE}": "ext4"},
{"{#FSNAME}": "/data", "{#FSTYPE}": "xfs"}
]
}
```
6. **邮件告警配置**:
- *管理 → 报警媒介类型 → Email*
```ini
SMTP server: {{ smtp_server }}
SMTP helo: example.com
SMTP email: [email protected]
```
- 配置动作:*配置 → 动作 → 触发器动作*

---
#### 四、验证与测试
1. **服务状态检查**:
```bash
systemctl status zabbix-server # 应显示active (running)
ss -tunlp | grep zabbix # 验证端口监听
```
2. **测试告警**:
- 手动触发:`zabbix_sender -z 127.0.0.1 -s "Hostname" -k trap -o "TestAlert"`
3. **SNMP测试**:
```bash
snmpwalk -v2c -c public 192.168.1.1 .1.3.6.1.2.1.1.1.0
```
> **注意**:全程录屏需包含Web界面操作、配置文件修改和服务启停过程,建议使用Asciinema进行终端录制[^3]。
阅读全文
相关推荐


















