Zabbix 分布式监控系统 一、什么是 Zabbix Zabbix 是一个成熟且易用的企业级开源监控解决方案。它可以监控网络和应用程序的数百万个指标。Zabbix 提供灵活的部署选项,可以在本地或云端运行,并且支持分布式监控和高可用性。Zabbix 还具有高度的安全性,能够确保敏感信息的安全存储。
Zabbix 主要通过以下几个组件协同工作:
Zabbix Server :这是 Zabbix 的核心组件,负责存储所有的配置信息、统计信息和操作信息。它从 Zabbix Agent 收集数据,并将这些数据存储在数据库中。
Zabbix Agent :部署在被监控设备上,负责收集本地资源和应用程序的数据,并将这些数据发送给 Zabbix Server。Zabbix Agent 支持主动和被动两种数据收集模式。
Zabbix Proxy :用于分担 Zabbix Server 的负载,特别适用于大规模分布式环境。它可以在 Zabbix Server 和 Zabbix Agent 之间传递数据。
Web 界面 :提供一个直观的用户界面,用于配置、监控和管理。用户可以通过 Web 界面查看实时数据、生成报告和设置告警。
数据库 :存储所有的配置信息和监控数据。Zabbix 支持多种数据库,包括 MySQL、PostgreSQL、SQLite 等。
Zabbix 的工作流程如下:
数据收集 :Zabbix Agent 定期收集被监控设备的数据,并将这些数据发送给 Zabbix Server。
数据存储 :Zabbix Server 将收到的数据存储在数据库中。
数据处理 :Zabbix Server 根据预设的触发器和告警规则处理数据,并在必要时生成告警。
数据展示 :用户可以通过 Web 界面查看实时数据、历史数据和生成的报告。
这种架构使得 Zabbix 能够高效地监控复杂的网络环境,并提供灵活的告警和数据可视化功能。
二、Zabbix 的作用
自动发现 :Zabbix 能自动发现网络设备和服务器,简化了监控配置过程。
分布式监控 :支持分布式监控体系和集中式的 Web 管理,适用于复杂的网络环境。
多种监控模式 :支持主动监控和被动监控模式,灵活应对不同的监控需求。
多平台支持 :兼容多种操作系统,包括 Linux、Solaris、HP-UX、AIX、FreeBSD、OpenBSD 等。
高效的 Agent 支持 :提供高效的 Agent,用于收集和传输监控数据。
无 Agent 监控 :支持多种无 Agent 监控方法,如使用 SNMP 协议监控路由器或交换机。
安全性 :具有安全的用户认证模式和灵活的用户权限设置,确保数据安全。
灵活的通知机制 :支持多种通知方式,如邮件、短信等,帮助运维人员快速响应问题。
图形化展示 :提供丰富的数据可视化功能,帮助用户直观地了解系统状态。
三、搭建 Zabbix 分布式监控系统
IP 1(内网)
IP 2(外网)
主机名
节点
192.168.92.130
192.168.75.10
zabbix-server
Server 节点
192.168.92.131
192.168.75.20
zabbix-agent
Agent 节点
1. 基础环境配置 1.1 配置主机名 1 2 3 4 5 6 7 8 9 10 11 12 $ hostnamectl set-hostname zabbix-server $ hostnamectl Static hostname: zabbix-server Icon name: computer-vm Chassis: vm Machine ID: 351d0613b43148bba85064511d4efdb0 Boot ID: d00cfa63370c4ac8a358bdbd88479680 Virtualization: vmware Operating System: CentOS Linux 7 (Core) CPE OS Name: cpe:/o:centos:centos:7 Kernel: Linux 3.10.0-1160.el7.x86_64 Architecture: x86-64
1 2 3 4 5 6 7 8 9 10 11 12 $ hostnamectl set-hostname zabbix-agent $ hostnamectl Static hostname: zabbix-agent Icon name: computer-vm Chassis: vm Machine ID: 7ff3d8770c524d60bab2b0526948e411 Boot ID: d56d8376e79348f98b17d52397b9e390 Virtualization: vmware Operating System: CentOS Linux 7 (Core) CPE OS Name: cpe:/o:centos:centos:7 Kernel: Linux 3.10.0-1160.el7.x86_64 Architecture: x86-64
1.2 yum 源配置 在 zabbix-server 里
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 $ yum install -y wget unzip $ cd /opt $ wget https://moka.anitsuri.top/images/Zabbix_24.9.10/zabbix.zip $ unzip zabbix.zip $ vi /etc/yum.repos.d/local.repo [zabbix] name=zabbix baseurl=file:///opt/zabbix gpgcheck=0 enabled=1 $ yum repolist 已加载插件:fastestmirror Loading mirror speeds from cached hostfile * epel: repo.jing.rocks zabbix | 3.0 kB 00:00:00 zabbix/primary_db | 31 kB 00:00:00 源标识 源名称 状态 base/7/x86_64 CentOS-7 - Base - mirrors.aliyun.com 10,072 epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 13,791 extras/7/x86_64 CentOS-7 - Extras - mirrors.aliyun.com 526 updates/7/x86_64 CentOS-7 - Updates - mirrors.aliyun.com 6,173 zabbix zabbix 37 repolist: 30,599 $ yum install -y vsftpd $ echo "anon_root=/opt" >> /etc/vsftpd/vsftpd.conf $ systemctl start vsftpd $ systemctl enable vsftpd Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
在 zabbix-agent 里
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 $ vi /etc/yum.repos.d/local.repo [zabbix] name=zabbix baseurl=ftp://192.168.92.130/zabbix gpgcheck=0 enabled=1 $ yum repolist 已加载插件:fastestmirror Loading mirror speeds from cached hostfile * epel: repo.jing.rocks zabbix | 3.0 kB 00:00:00 zabbix/primary_db | 31 kB 00:00:00 源标识 源名称 状态 base/7/x86_64 CentOS-7 - Base - mirrors.aliyun.com 10,072 epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 13,791 extras/7/x86_64 CentOS-7 - Extras - mirrors.aliyun.com 526 updates/7/x86_64 CentOS-7 - Updates - mirrors.aliyun.com 6,173 zabbix zabbix 37 repolist: 30,599
1.3 安装 LAMP+Zabbix 服务 在 zabbix-server 下
1 2 3 4 5 6 7 8 9 10 11 $ yum install -y httpd $ yum install -y mariadb mariadb-server $ yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-agent $ yum install -y trousers
解析:
httpd(Apache Web 服务器) 作用:提供 Zabbix 的 Web 界面。通过 Apache,你可以在浏览器中访问 Zabbix 的 Web 界面,进行系统配置和监控管理。
mariadb-server(MariaDB数据库服务器) 作用:作为 Zabbix 的数据库,用于存储监控数据、配置、用户信息等。Zabbix 服务器 将所有监控数据存储在这个数据库中,MariaDB 是 MySQL 的一个分支版本。
zabbix-server-mysql 作用:Zabbix 服务器的核心组件,负责从被监控的客户端(agent 或其他数据源)收集数据,并将其存储到数据库中。这个包是专门为 MySQL(MariaDB)数据库准备的版本。
zabbix-web-mysql 作用:Zabbix Web 界面相关的 PHP 文件,与 Apache 集成,允许用户通过 Web 界面 对 Zabbix 进行配置和查看监控数据。此版本是与 MySQL 兼容的。
zabbix-agent 作用:在被监控的主机上运行,负责采集主机的各类性能和状态数据(例如 CPU 使用率、内存、硬盘等),并将这些数据发送给 Zabbix 服务器。它可以安装在不同的主机上,收集系统监控指标。
trousers 作用:这是一个与 TPM(Trusted Platform Module)相关的软件包,虽然 TPM 在 Zabbix 安装中不是必需的,但可能是为了兼容性或系统安全性而安装的组件。
2. 配置并启动 Zabbix 服务 2.1 启动 httpd 服务 在 zabbix-server 上,启动 httpd 服务
1 2 3 $ systemctl start httpd $ systemctl enable httpd Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
2.2 启动并配置数据库 在 zabbix-server 上,启动数据库服务
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 $ systemctl start mariadb $ systemctl enable mariadb Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service. $ mysql Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 2 Server version: 5.5.68-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help . Type '\c' to clear the current input statement. MariaDB [(none)]> MariaDB [(none)]> CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin; Query OK, 1 row affected (0.00 sec) MariaDB [(none)]> GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@'%' IDENTIFIED BY 'zabbix' ; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost IDENTIFIED BY 'zabbix' ; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> Ctrl-C -- exit ! Aborted $ cd /usr/share/doc/zabbix-server-mysql-3.4.15/ $ ll 总用量 2120 -rw-r--r-- 1 root root 98 11月 12 2018 AUTHORS -rw-r--r-- 1 root root 866545 11月 12 2018 ChangeLog -rw-r--r-- 1 root root 17990 11月 12 2018 COPYING -rw-r--r-- 1 root root 1267039 11月 12 2018 create.sql.gz -rw-r--r-- 1 root root 52 11月 12 2018 NEWS -rw-r--r-- 1 root root 1062 11月 12 2018 README $ zcat create.sql.gz | mysql -uroot zabbix
2.3 设置时区 1 2 3 4 5 6 7 8 9 10 11 12 13 $ vi /etc/php.ini date.timezone = PRC $ vi /etc/httpd/conf.d/zabbix.conf php_value date.timezone Asia/Shanghai $ systemctl restart httpd
2.4 修改 Zabbix 配置文件并启动 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 $ vi /etc/zabbix/zabbix_server.conf ListenPort=10051 DBHost=localhost DBPassword=zabbix DBSocket=/var/lib/mysql/mysql.sock $ grep -n '^' [a-Z] /etc/zabbix/zabbix_server.conf 38:LogFile=/var/log/zabbix/zabbix_server.log 49:LogFileSize=0 72:PidFile=/var/run/zabbix/zabbix_server.pid 82:SocketDir=/var/run/zabbix 91:DBHost=localhost 100:DBName=zabbix 116:DBUser=zabbix 124:DBPassword=zabbix 131:DBSocket=/var/lib/mysql/mysql.sock 329:SNMPTrapperFile=/var/log/snmptrap/snmptrap.log 446:Timeout=4 488:AlertScriptsPath=/usr/lib/zabbix/alertscripts 498:ExternalScripts=/usr/lib/zabbix/externalscripts 534:LogSlowQueries=3000 $ systemctl start zabbix-server $ yum install -y net-tools $ netstat -ntpl Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2320/mysqld tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1048/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1236/master tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 13165/zabbix_server tcp6 0 0 :::80 :::* LISTEN 13072/httpd tcp6 0 0 :::21 :::* LISTEN 1667/vsftpd tcp6 0 0 :::22 :::* LISTEN 1048/sshd tcp6 0 0 ::1:25 :::* LISTEN 1236/master tcp6 0 0 :::10051 :::* LISTEN 13165/zabbix_server
3. 使用 Zabbix 服务 3.1 登录页面 在浏览器访问 http://192.168.92.130/zabbix
,进入 Zabbix 安装向导,单击右下角 “Next step”
显示 PHP 版本信息等内容,然后单击右下角 “Next step”,进入下一步操作
填写连接数据库的必要信息,Password 为 zabbix ,填写内容如图所示,填写完毕后单击右下角 “Next step” 按钮,进行下一步操作
填写 Zabbix 服务端的详细信息,内容如图所示,Name 字段可以随意填写,是给监控平台起个名字。然后单击右下角 “Next step” 按钮,进行下一步操作
平台配置概况如图所示,确认后单击右下角 “Next step” 按钮
安装 Zabbix,安装成功后,单击右下角 “Finish” 按钮,结束安装
单击 “Finish” 按钮后,进入登录界面,使用默认的 用户名/密码 Admin / zabbix 登录
进入 Zabbix 主页
3.2 中文页面 单击右上角的头像按钮,进入设置界面,将 “Language” 一栏改为 “Chinese(zh_CN)”,然后单击下方 “Update” 按钮,中文界面的Zabbix监控界面就配置完成了
3.3 添加被监控机器 回到 zabbix-agent 节点
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 $ yum install -y zabbix-agent $ vi /etc/zabbix/zabbix_agentd.conf Server=192.168.92.130 ServerActive=192.168.92.130 Hostname=Zabbix-agent $ yum install -y net-tools $ systemctl start zabbix-agent $ netstat -ntpl Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1239/master tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 9725/zabbix_agentd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1049/sshd tcp6 0 0 ::1:25 :::* LISTEN 1239/master tcp6 0 0 :::10050 :::* LISTEN 9725/zabbix_agentd tcp6 0 0 :::22 :::* LISTEN 1049/sshd
回到Web界面,选择菜单栏 “配置” →“ 主机” → “创建主机” 命令,会跳转到如图所示的配置主机的页面
填写信息,将 zabbix-agent 节点添加到被监控机器,填写信息如图所示。然后单击下方 “添加” 按钮
添加完毕之后如下图所示
添加监控项,单击 “zabbix-agent” 名称,然后单击“模板”标签,进行添加模板操作界面
单击上图中的 “选择” 按钮,进行监控模板添加,在跳转界面勾选用户想要监控的复选框,然后单击下方 “选择” 按钮
选择完模板后,如下图所示
单击“添加”按钮,显示链接的模板,然后单击 “更新” 按钮
单击“更新”按钮后,zabbix-agent 节点被添加到监控中
3.4 监控机器 在最上面的选择菜单栏中 “监测中” → “图形” ,群组选择 Linux server,主机选择 zabbix-agent,图形选择需要显示的监控项,此处选择为 “Memory usage”
需要被监控的主机,首先安装 zabbix-agent 服务,然后修改配置文件并启动服务。登录 Zabbix 的 Web 界面,添加主机,并添加监控模板 成功添加后,就可以通过Zabbix界面进行主机的监控