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 配置主机名
$ 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
$ 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 里
# 使用阿里 yum 源 和 提供的 zabbix 包
# 安装 wget 和 unzip
$ yum install -y wget unzip
$ cd /opt
$ wget https://moka.anitsuri.top/images/Zabbix_24.9.10/zabbix.zip
$ unzip zabbix.zip
# 然后创建 repo 文件
$ 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
# 然后安装 vsftpd 服务,准备给 zabbix-agent 使用ftp服务
$ yum install -y vsftpd
# 然后修改 vsftpd 的配置文件
$ echo "anon_root=/opt" >> /etc/vsftpd/vsftpd.conf
# 开启并常驻 vsftpd
$ 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 里
# 创建 repo 文件
$ 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 下
# 安装 httpd 服务
$ yum install -y httpd
# 安装数据库服务
$ yum install -y mariadb mariadb-server
# 安装 Zabbix 服务
$ yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-agent
# 安装/升级 trousers 服务
$ 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 服务
$ 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 上,启动数据库服务
$ 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)]>
# 创建 zabbix 数据库,并指定数据库的编码格式为 UTF-8(中文编码)
MariaDB [(none)]> CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;
Query OK, 1 row affected (0.00 sec)
# 授予 zabbix 用户在所有主机上给数据库 zabbix 的所有表的所有权限
MariaDB [(none)]> GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@'%' IDENTIFIED BY 'zabbix';
Query OK, 0 rows affected (0.00 sec)
# 授予 zabbix 用户在当前主机上给数据库 zabbix 的所有表的所有权限
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
# 解压缩 create.sql.gz 并把它的结果输出到 zabbix 数据库中
$ zcat create.sql.gz | mysql -uroot zabbix
2.3 设置时区
# 编辑 /etc/php.ini 文件设置时区
$ vi /etc/php.ini
# 修改以下内容
date.timezone = PRC # 第 878 行,PCR 是中华人民共和国
# 编辑/etc/httpd/conf.d/zabbix.conf文件,修改时区
$ vi /etc/httpd/conf.d/zabbix.conf
# 修改以下内容
php_value date.timezone Asia/Shanghai # 第 20 行
# 修改完成之后重启 httpd 服务
$ systemctl restart httpd
2.4 修改 Zabbix 配置文件并启动
# 编辑 Zabbix 配置文件
$ vi /etc/zabbix/zabbix_server.conf
# 修改以下内容
ListenPort=10051 # 第 12 行
DBHost=localhost # 第 91 行
DBPassword=zabbix # 第 124 行
DBSocket=/var/lib/mysql/mysql.sock # 第 131 行
# 最后配置完之后可以使用这个命令检查一下
$ 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
# 启动 Zabbix 服务
$ systemctl start zabbix-server
# 查看端口号检验,找 10051 端口号
$ 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 节点
# 安装 zabbix-agent 服务
$ yum install -y zabbix-agent
# 修改 /etc/zabbix/zabbix_agentd.conf 配置文件,配置 zabbix-agent
$ vi /etc/zabbix/zabbix_agentd.conf
# 修改以下内容
Server=192.168.92.130 # 第 97 行
ServerActive=192.168.92.130 # 第 138 行
Hostname=Zabbix-agent # 第 149 行
# 启动 zabbix-agent 服务,并查看 10050 端口是否存在
$ 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界面进行主机的监控
如果想要有完整的观看体验,请点击这里
Comments NOTHING