文章目录
- zabbix
-
- 一,介绍
- 二,核心组件
-
- [1. Zabbix Server(核心)](#1. Zabbix Server(核心))
- [2. Zabbix Agent/Agent 2(被监控端)](#2. Zabbix Agent/Agent 2(被监控端))
- [3. Zabbix Proxy(可选,分布式)](#3. Zabbix Proxy(可选,分布式))
- [4. 数据库(Database)](#4. 数据库(Database))
- [5. Web界面(Web Interface)](#5. Web界面(Web Interface))
- [6. 其他工具](#6. 其他工具)
- Zabbix核心定义
- 三,使用场景
- 四,搭建LNMP架构
- zabbix-server
-
- [安装Zabbix Server](#安装Zabbix Server)
- [修改Zabbix Server配置](#修改Zabbix Server配置)
- 创建systemctl服务
- 前端页面部署
- 被监控端配置
- zabbix管理
zabbix
一,介绍
Zabbix 是一款企业级开源分布式监控解决方案。
Zabbix是一款用于监控网络众多参数、服务器/虚拟机/应用程序/服务/数据库/网站/云平台等健康状态和完整性的软件。Zabbix提供灵活的告警机制,允许用户为几乎任何事件配置基于邮件的告警,从而实现对服务器问题的快速响应。基于存储数据,Zabbix提供出色的报表和数据可视化功能,使其成为容量规划的理想选择。
Zabbix同时支持轮询和捕获两种方式。所有Zabbix报表、统计信息及配置参数均可通过基于Web的前端界面访问。该Web前端确保您可以从任何位置评估网络状态和服务器健康状况。经过适当配置,Zabbix可在IT基础设施监控中发挥重要作用,无论是对拥有少量服务器的小型组织,还是对拥有众多服务器的大型企业都同样适用。
二,核心组件
1. Zabbix Server(核心)
- 整个系统的大脑,负责数据接收、处理、存储、告警判断、任务调度。
- 功能:接收Agent/Proxy/SNMP数据、触发告警、管理配置、提供Web后端。
- 部署:生产环境建议独立服务器,支持HA高可用。
2. Zabbix Agent/Agent 2(被监控端)
- 部署在被监控主机,采集本地数据(系统、应用)并上报。
- Agent:C语言开发,轻量、单线程,适合基础监控。
- Agent 2(6.x+推荐):Go语言,多线程、插件化(MySQL/Redis/K8s),性能更强。
- 模式:主动(Agent→Server)、被动(Server→Agent)。
3. Zabbix Proxy(可选,分布式)
- 代理Server采集数据,减轻Server负载、跨地域/跨网络监控、网络隔离。
- 不存储数据,仅转发,适合大规模、多机房场景。
4. 数据库(Database)
- 存储配置(主机、模板、触发器)、历史数据、趋势数据。
- 支持:MySQL/MariaDB(最常用)、PostgreSQL、Oracle。
5. Web界面(Web Interface)
- 基于PHP的可视化控制台,用于配置、查看监控、告警管理、报表。
- 路径:
http://<serverIP>/zabbix
6. 其他工具
- Zabbix Sender:手动/脚本向Server推送自定义数据。
- Zabbix Get:Server端手动测试获取Agent数据(调试用)。
Zabbix核心定义
| 术语 | 说明 |
|---|---|
| 监控项(Item) | 采集的具体指标,是数据采集的最小单元 |
| 触发器(Trigger) | 基于监控项设置的阈值规则,触发异常状态 |
| 动作(Action) | 触发器异常后执行的操作(发邮件、短信、执行脚本等) |
| 模板(Template) | 预定义的监控项、触发器、图形集合,可批量应用到主机 |
| 主机(Host) | 被监控的设备,需关联模板才能监控 |
| 主动模式 | Agent主动向Server推送数据 |
| 被动模式 | Server主动向Agent拉取数据(默认模式) |
三,使用场景
- 服务器监控:Linux/Windows服务器的CPU、内存、磁盘、网络、进程、负载、日志
- 网络设备监控:交换机、路由器、防火墙的端口流量、状态、CPU、内存(SNMP)
- 应用服务监控:Web(Nginx/Apache)、数据库(MySQL/PostgreSQL/Oracle)、中间件(Redis、Kafka、Tomcat)、容器(Docker/K8s)
- 云平台监控:阿里云、AWS、VMware、OpenStack虚拟机与资源状态
- 业务指标监控:接口响应时间、订单量、用户在线数、API成功率
- 分布式/跨机房监控:多地域机房、网络隔离环境(用Zabbix Proxy代理采集)
- 告警与自愈:异常自动通知、执行恢复脚本、服务重启、故障升级通知
四,搭建LNMP架构
环境规划
| 主机名 | IP | 功能 |
|---|---|---|
| zabbix-server | 192.168.108.50 | 安装Zabbix |
| mysql001 | 192.168.108.51 | 被监控端 |
安装Nginx
bash
# 创建nginx的yum源
vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
enabled=1
gpgcheck=0
# 安装nginx
yum install nginx -y
# 开启服务
systemctl start nginx
systemctl enable nginx
# 防火墙添加http
firewall-cmd --add-service=http --zone=public --permanent
firewall-cmd --reload
安装MariaDB
bash
# 配置MariaDB 10.x yum源(Zabbix 6.0必须使用该版本)
vim /etc/yum.repos.d/mariadb.repo
[mariadb]
name = MariaDB
baseurl = https://mirrors.aliyun.com/mariadb/yum/10.6/centos7-amd64/
enabled = 1
gpgcheck = 0
# 下载mariadb
yum -y install mariadb-server mariadb
# 开启服务
systemctl enable mariadb --now
# 设置root密码
mysql
sql
DELETE FROM mysql.user WHERE User='';
ALTER USER root@localhost IDENTIFIED BY 'root123';
FLUSH PRIVILEGES;
安装PHP
bash
yum -y install epel-release
sed -i "s/#baseurl/baseurl/g" /etc/yum.repos.d/epel.repo
sed -i "s/metalink/#metalink/g" /etc/yum.repos.d/epel.repo
sed -i "s@https\?://download\.fedoraproject\.org/pub@https://repo.huaweicloud.com@g" /etc/yum.repos.d/epel.repo
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
yum -y install php72w php72w-cli php72w-common php72w-devel php72w-embedded \
php72w-gd php72w-mbstring php72w-pdo php72w-xml php72w-fpm php72w-mysqlnd \
php72w-opcache php72w-ldap php72w-bcmath
配置Nginx支持PHP
bash
# 修改php-fpm配置文件,把apache改为nginx
vim /etc/php-fpm.d/www.conf
# user = nginx
# group = nginx
# 配置nginx
vim /etc/nginx/conf.d/default.conf
# 在index中添加index.php
# 取消location ~ \.php$ 注释并修改
nginx
location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
配置PHP
bash
vim /etc/php.ini
| 参数 | 值 | 说明 |
|---|---|---|
| short_open_tag | On | 支持PHP短标签 |
| expose_php | Off | 隐藏PHP版本 |
| max_execution_time | 300 | 执行时间 |
| max_input_time | 300 | 接收数据等待时间 |
| memory_limit | 128M | 每个脚本占用内存 |
| post_max_size | 16M | POST数据大小 |
| upload_max_filesize | 2M | 上传文件大小 |
| always_populate_raw_post_data | -1 | |
| date.timezone | Asia/Shanghai | 时区 |
bash
# 启动php-fpm服务
systemctl enable php-fpm --now
# 重启nginx
systemctl restart nginx
测试PHP
bash
# 测试php首页
vim /usr/share/nginx/html/info.php
<?php phpinfo(); ?>
创建Zabbix数据库及账号
sql
CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;
GRANT ALL PRIVILEGES ON *.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix123';
GRANT ALL PRIVILEGES ON *.* TO 'zabbix'@'localhost' IDENTIFIED BY 'zabbix123';
FLUSH PRIVILEGES;
zabbix-server
导入数据库
bash
# 解压
tar zxvf zabbix-6.0.6.tar.gz
# 导入数据库
cd /root/zabbix-6.0.6/database/mysql/
mysql -uroot -proot123 zabbix < schema.sql
mysql -uroot -proot123 zabbix < images.sql
mysql -uroot -proot123 zabbix < data.sql
mysql -uroot -proot123 zabbix < double.sql
mysql -uroot -proot123 zabbix < history_pk_prepare.sql
安装Zabbix Server
bash
# 安装依赖包
yum install -y mysql-devel pcre-devel openssl-devel zlib-devel libxml2-devel \
net-snmp-devel net-snmp libssh2-devel OpenIPMI-devel libevent-devel openldap-devel \
libcurl-devel fping gcc gcc-c++ make
# 创建zabbix用户
useradd -s /sbin/nologin -M zabbix
# 配置编译参数
export CFLAGS="-std=gnu99"
cd zabbix-6.0.6/
./configure --sysconfdir=/etc/zabbix/ --enable-server \
--with-mysql --with-net-snmp --with-libxml2 --with-ssh2 \
--with-openipmi --with-zlib --with-libpthread --with-libevent \
--with-openssl --with-ldap --with-libcurl --with-libpcre
# 安装
make install
# 检查版本
zabbix_server --version
修改Zabbix Server配置
vim /etc/zabbix/zabbix_server.conf
LogFile=/var/log/zabbix_server.log
DBPassword=zabbix123
# 创建日志文件
touch /var/log/zabbix_server.log
chown zabbix.zabbix /var/log/zabbix_server.log
创建systemctl服务
bash
vim /usr/lib/systemd/system/zabbix-server.service
ini
[Unit]
Description=Zabbix Server with MySQL DB
After=syslog.target network.target mysqld.service
[Service]
Type=simple
ExecStart=/usr/local/sbin/zabbix_server -f
User=zabbix
[Install]
WantedBy=multi-user.target
bash
# 启动zabbix
systemctl start zabbix-server
netstat -ntap | grep 10051
前端页面部署
bash
# 复制前端文件
cp -r /root/zabbix-6.0.6/ui/* /usr/share/nginx/html/
# 设置权限
chown -R nginx:nginx /usr/share/nginx/html/
访问 http://192.168.108.50/setup.php 完成Web安装配置。
默认登录信息:
- 用户名:
Admin - 密码:
zabbix
被监控端配置
安装Agent
bash
# 关闭防火墙和SELinux
systemctl stop firewalld.service
setenforce 0
hostnamectl set-hostname mysql001
# 更新CA
yum update ca-certificates -y
# 安装Zabbix仓库
rpm -ivh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm
# 安装agent2
yum install zabbix-agent2 -y
# 启动服务
systemctl enable zabbix-agent2.service --now
修改Agent2配置
bash
vim /etc/zabbix/zabbix_agent2.conf
ini
PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=192.168.108.50 # 指向监控服务器
ServerActive=192.168.108.50 # 指向监控服务器
Hostname=mysql001 # 主机名称
Include=/etc/zabbix/zabbix_agent2.d/plugins.d/*.conf
bash
# 重启服务
systemctl restart zabbix-agent2
zabbix管理
zabbix首页登录
