Zabbix 监控系统简介
Zabbix是一个企业级开源分布式监控解决方案,可监控网络的众多参数以及服务器、虚拟机、应用程序、服务、数据库、网站、云等的运行状况和完整性。
Zabbix 使用灵活的通知机制,允许用户为几乎任何事件配置基于电子邮件的警报。这允许对服务器问题做出快速反应。 Zabbix 基于存储的数据提供出色的报告和数据可视化功能。这使得 Zabbix 成为容量规划的理想选择。
Zabbix 发展历史
Zabbix的发展历史可以追溯到1998年,由Alexei Vladishev创建,最初是为了自动化日常系统管理工作。以下是Zabbix的主要发展历程:
- 1998年:Alexei Vladishev开始开发Zabbix,作为一个内部项目来监控大型数据库和网络设备。
- 2001年:首个Alpha版本发布。 由 Alexei Vladishev 创建并首次发布。最初版本是一个简单的监控工具,用于解决 Alexei 在工作中遇到的 IT 基础设施监控问题。
- 2004年:Zabbix 1.0正式版发布,标志着Zabbix的正式推出。这是第一个稳定版本,具备了基础的监控功能和简单的 Web 界面。
- 2005年:Zabbix公司成立,并宣布Zabbix 100%开源。Zabbix SIA在拉脱维亚成立,为该项目提供商业支持和服务。
Zabbix 部署环境规划
节点规划如下:
节点名称 | 节点IP | 操作系统 | 版本 |
---|---|---|---|
zabbix-server | 192.168.72.50 | Ubuntu 22.04 | v7.0 |
zabbix-agent | 192.168.72.51 | Ubuntu 22.04 | v7.0 |
其中zabbix-server节点同时部署zabbix-server
、zabbix-web
以及zabbix-agent
三个组件,以及MySQL数据库服务。
MySQL数据库部署
zabbix依赖数据库存储监控数据,在zabbix-server节点安装mysql数据库。
配置主机名
root@ubuntu:~# hostnamectl set-hostname zabbix-server
安装mysql-server
apt update -y
apt install -y mysql-server
mysql_secure_installation --use-default
查看安装版本
root@zabbix-server:~# mysqld --version
/usr/sbin/mysqld Ver 8.0.37-0ubuntu0.22.04.3 for Linux on x86_64 ((Ubuntu))
查看数据库服务运行状态
root@zabbix-server:~# systemctl status mysql
● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2024-06-27 12:27:35 CST; 3h 39min ago
Main PID: 3426 (mysqld)
Status: "Server is operational"
Tasks: 37 (limit: 4556)
Memory: 365.1M
CPU: 13.084s
CGroup: /system.slice/mysql.service
└─3426 /usr/sbin/mysqld
Jun 27 12:27:34 db01 systemd[1]: Starting MySQL Community Server...
Jun 27 12:27:35 db01 systemd[1]: Started MySQL Community Server.
root@zabbix-server:~#
默认情况下,MySQL在127.0.0.1
的本地地址上监听3306端口,可以使用以下命令查看:
root@db01:~# ss -antpl | grep -i mysql
LISTEN 0 70 127.0.0.1:33060 0.0.0.0:* users:(("mysqld",pid=3426,fd=21))
LISTEN 0 151 127.0.0.1:3306 0.0.0.0:* users:(("mysqld",pid=3426,fd=23))
Zabbix-server安装
以下操作在zabbix server节点执行。
官方文档:https://www.zabbix.com/cn/download
在官方网站选择相应平台获取安装命令,这里以Zabbix 7.0 + Ubuntu + MySQL + Apache
为例。
安装 Zabbix 软件
配置 zabbix 软件源
wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-1+ubuntu22.04_all.deb
dpkg -i zabbix-release_7.0-1+ubuntu22.04_all.deb
apt update
或者使用国内阿里云APT源
sed -i 's#https://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' \
/etc/apt/sources.list.d/zabbix.list
apt update -y
安装Zabbix server,Web前端,agent
apt install -y zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf \
zabbix-sql-scripts zabbix-agent
初始化zabbix数据库。
在数据库主机上运行以下代码,默认数据库无密码,直接回车。
root@zabbix-server:~# mysql -uroot -p
password
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user zabbix@localhost identified by 'Zabbix@123456';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;
导入初始架构和数据,系统将提示您输入新创建的密码,这里为Zabbix@123456
。
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | \
mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
导入数据库架构后禁用log_bin_trust_function_creators
选项。
root@zabbix-server:~# mysql -uroot -p
password
mysql> set global log_bin_trust_function_creators = 0;
mysql> quit;
为Zabbix server配置数据库,编辑配置文件 /etc/zabbix/zabbix_server.conf
$ vim /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=Zabbix@123456
DBPort=3306
ValueCacheSize=256M
安装中文语言包
sudo apt install -y zabbix-frontend-php language-pack-zh-hans
解决图形下方中文乱码问题,查看zabbix使用的字体文件
root@zabbix-server:~# ll /usr/share/zabbix/assets/fonts
total 16596
drwxr-xr-x 2 root root 148 Jul 2 18:11 ./
drwxr-xr-x 5 root root 44 Jul 1 19:36 ../
-rw-r--r-- 1 root root 16791251 Jul 2 18:04 DejaVuSans.ttf
lrwxrwxrwx 1 root root 38 Jul 1 19:37 graphfont.ttf -> /etc/alternatives/zabbix-frontend-font
-rw-r--r-- 1 root root 149851 May 29 14:35 zabbix-icons.svg
-rw-r--r-- 1 root root 22072 May 29 14:35 zabbix-icons.ttf
-rw-r--r-- 1 root root 11716 May 29 14:35 zabbix-icons.woff
-rw-r--r-- 1 root root 9756 May 29 14:35 zabbix-icons.woff2
root@zabbix-server:~# ll /etc/alternatives/zabbix-frontend-font
lrwxrwxrwx 1 root root 47 Jul 1 19:37 /etc/alternatives/zabbix-frontend-font -> /usr/share/fonts/truetype/dejavu/DejaVuSans.ttf
root@zabbix-server:~# cat /usr/share/zabbix/include/defines.inc.php |grep ZBX_GRAPH_FONT_NAME
define('ZBX_GRAPH_FONT_NAME', 'graphfont'); // font file name
安装中文字体,使用下载的字体文件wqy-zenhei.ttc
替换DejaVuSans.ttf
apt install -y ttf-wqy-zenhei
cp /usr/share/fonts/truetype/dejavu/DejaVuSans.ttf{,.bak}
cp /usr/share/fonts/truetype/wqy/wqy-zenhei.ttc /usr/share/fonts/truetype/dejavu/DejaVuSans.ttf
启动Zabbix server和agent进程,并为它们设置开机自启:
systemctl restart zabbix-server zabbix-agent apache2
systemctl enable zabbix-server zabbix-agent apache2
打开Zabbix UI网页,开始使用Zabbix。使用Apache web服务器时,Zabbix UI的默认URL为http://host/zabbix
:
http://192.168.72.50/zabbix
选择默认语言
检查必要条件
配置数据库连接,数据库主机配置为localhost
,密码为Zabbix@123456
设置主机名及系统时间
安装前汇总
完成安装
进入登录页面,默认账号密码为Admin/zabbix
登录后如下:
Zabbix-agent 安装
以下操作在zabbix-agent
节点执行。
参考官方文档,选择agent组件,按照官方指引进行安装。
配置主机名
root@ubuntu:~# hostnamectl set-hostname zabbix-agent01
安装 Zabbix 软件源
wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-1+ubuntu22.04_all.deb
dpkg -i zabbix-release_7.0-1+ubuntu22.04_all.deb
apt update -y
安装Zabbix agent组件
apt install -y zabbix-agent
Zabbix agent配置
Zabbix Agent 分二种模式:
- 主动模式:Zabbix Agent 启动之后,把采集的数据主动发给 Zabbix Server 或者 Zabbix Porxy;
- 被动模式:Zabbix Server 或者 Zabbix Proxy 被动找 Zabbix Agent 拿监控数据。
监控数据请求流程
这二种模式在使用过程中有所不同,各有优势,主要有以下区别
模式 | Server 压力 | 远程命令 | 日志监控 |
---|---|---|---|
主动 | 低 | 不支持 | 支持 |
被动 | 高 | 支持 | 不支持 |
鉴于以上不同,根据实际需求,选择对应模式。
- 被动模式(仅配置
Server
)适用于Zabbix Server和Zabbix Agent之间网络连通性良好的环境。 - 主动模式(仅配置
ServerActive
)适用于Zabbix Server不能直接访问Zabbix Agent的环境。 - 同时配置:提供更高的灵活性和冗余,确保在多种网络环境下都能正常获取监控数据。
zabbix agent 主动模式配置
修改zabbix agent配置文件。
root@zabbix-agent01:~# vim /etc/zabbix/zabbix_agentd.conf
ServerActive=192.168.72.50
Hostname=zabbix-agent01
StartAgents=0
配置解释:
- ServerActive 配置为 Zabbix Server 或 Zabbix proxy 的地址,这里可以配置域名/ip,如需配置多个地址,多地址之间用英文逗号隔开即可,如:192.168.1.100,10.10.1.100。这个参数指定了主动模式下Zabbix Agent将向哪个Zabbix Server或Zabbix Proxy发送监控数据。
192.168.72.50
是Zabbix Server或Zabbix Proxy的IP地址。在主动模式下,Zabbix Agent会主动连接到Zabbix Server并发送监控数据。若纯被动模式可注释该参数。 - Hostname 配置唯一的主机名,以便识别此机器。在 Zabbix 里,不同主机的区分就是通过 hostname 区分的,并不是通过 IP!因此这里建议进行规划,按照一定规律配置,比如区域-机房-业务-ip 等形式配置,此配置建议使用英文(有人修改只后可使用中文的),也可按照 FQDN 规则配置主机名。
- StartAgents Zabbix Agent 配置以上 2 个参数之后,即可使用主动模式,如果要想非常“纯粹”的使用主动模式,而关闭被动模式,还需要增加一个配置
StartAgents=0,
此项目配置被动模式下 zabbix agentd 所派生的进程数量。如果配置为 0,会关闭被动模式检查,而且 Agent 不会监听任何主机 TCP 端口!。因为是数据是从 Agent 发出,因此主机放行对外通行即可(一般都放开),不需要在主机上添加配置防火墙规则。查看进程如下
启动zabbix-agent服务
systemctl restart zabbix-agent
systemctl enable zabbix-agent
主动模式配置之后,Agent 启动之后就会发送监控到 Server 或者 Proxy,如找不到对应的主机名,agent 日志会有如下报错
no active checks on server [172.16.66.20:10051]: host [node201] not found
Zabbix Server 或 Zabbix Proxy 的日志也会看到如下报错
cannot send list of active checks to "172.16.66.20": host [node201] not found
Zabbix web配置
此时就需要通过手动添加或 Zabbix Server 的自动注册功能,将主机添加到 Zabbix Server。 如果为手动添加主机,需要在 Zabbix Server 添加主机。
在web页面,选择数据采集–主机–创建主机
配置参数说明:
- Host name 为必须配置项目,需要和 Agent 配置里的 Hostname 配置一致。这个参数指定了Zabbix Agent在Zabbix Server中的标识(即主机名)。node51是此Zabbix Agent的主机名,在Zabbix Server的Web界面中将会以这个主机名显示。这个主机名必须与Zabbix Server中的配置一致,否则会导致数据无法正确关联。
- 接口不用配置。
注意
:主动模式使用的Zabbix模板必须带有xxx-active
添加后确认可用性
选择监测–最新数据,确认是否监测到最新数据:
Zabbix agent被动模式配置
要配置被动模式,只需要配置以下几个参数即可
root@zabbix-agent01:~# vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.72.31
ListenPort=10050
配置参数说明:
- Server 配置为 Zabbix Server 或 Zabbix proxy 的地址,这里可以配置域名/ip,如需配置多个地址,多地址之间用英文逗号隔开即可,如:192.168.1.100,10.10.1.100。这里可以理解为 ACL 功能,即允许那些 Zabbix Server 及 Zabbix Proxy 访问 Zabbix Agent,因此可以配置网段和配置成所有 IP,如:192.168.1.0/24 或 0.0.0.0/0,纯被动模式下只需要配置 Server 即可,Hostname 不配置。这个参数指定了被动模式下Zabbix Agent将接受来自哪个Zabbix Server或Zabbix Proxy的连接。
192.168.72.31
是Zabbix Server或Zabbix Proxy的IP地址。在被动模式下,Zabbix Server会主动连接到Zabbix Agent来获取监控数据。若纯主动模式可注释该参数。 - ListenPort:zabbix agent的监听端口,zabbix-server主动通过该端口访问zabbix-agent。
Zabbix web配置
被动模式配置之后,启动 zabbix agent,需要在 Zabbix Server 添加主机。
在web页面,选择数据采集–主机–创建主机
配置参数说明:
- Host name 可随意配置,建议按照一定规则,不与其他机器重复即可,主机列表会显示此名称
- interfaces agent 所在机器的 IP 和端口,这里一定要配置成 agent 真实的 IP,默认 zabbix agent 端口为 10050,可以通过配置文件进行修改
注意
:模板选择xxx
,而非xxx-active
,zabbix 自带模版大多数为被动模式,因此直接关联模版即可进行监控。
确认主机状态
zabbix-server 配置告警
示例场景:当zabbix-server监测到zabbix-agent01节点CPU负载过高时,发送告警到163邮箱。
设置163邮箱
登录 https://mail.163.com/ 邮箱,设置中开启POP3/SMTP/IMAP
服务,新增并记录下授权密码
。
创建媒介类型
登录zabbix控制台,选择告警–媒介–创建媒介类型,配置如下,注意密码配置为授权码密码
。
设置消息模板。
添加后点击测试
确认测试成功
登录163邮箱,确认收到测试邮件
用户添加报警媒介
选择用户–用户–Admin–报警媒介–添加报警媒介
设置触发器动作
选择告警–动作–触发器动作–创建动作
选择操作,发送给指定用户
触发告警事件
在zabbix-agent01节点安装stress-ng工具,使用stress-ng进行压测,触发告警负载过高事件
apt install -y stress-ng
stress-ng --cpu 8 --vm 8
等待5分钟,在zabbix-server控制台查看产生的告警事件,并且状态显示已送达。
在163邮箱确认已收到告警邮件