Zabbix 分布式监控系统

Zabbix 分布式监控系统

一、什么是 Zabbix

​ Zabbix 是一个成熟且易用的企业级开源监控解决方案。它可以监控网络和应用程序的数百万个指标。Zabbix 提供灵活的部署选项,可以在本地或云端运行,并且支持分布式监控和高可用性。Zabbix 还具有高度的安全性,能够确保敏感信息的安全存储。

Zabbix 主要通过以下几个组件协同工作:

  1. Zabbix Server:这是 Zabbix 的核心组件,负责存储所有的配置信息、统计信息和操作信息。它从 Zabbix Agent 收集数据,并将这些数据存储在数据库中。

  2. Zabbix Agent:部署在被监控设备上,负责收集本地资源和应用程序的数据,并将这些数据发送给 Zabbix Server。Zabbix Agent 支持主动和被动两种数据收集模式。

  3. Zabbix Proxy:用于分担 Zabbix Server 的负载,特别适用于大规模分布式环境。它可以在 Zabbix Server 和 Zabbix Agent 之间传递数据。

  4. Web 界面:提供一个直观的用户界面,用于配置、监控和管理。用户可以通过 Web 界面查看实时数据、生成报告和设置告警。

  5. 数据库:存储所有的配置信息和监控数据。Zabbix 支持多种数据库,包括 MySQL、PostgreSQL、SQLite 等。

Zabbix 的工作流程如下:

  1. 数据收集:Zabbix Agent 定期收集被监控设备的数据,并将这些数据发送给 Zabbix Server。
  2. 数据存储:Zabbix Server 将收到的数据存储在数据库中。
  3. 数据处理:Zabbix Server 根据预设的触发器和告警规则处理数据,并在必要时生成告警。
  4. 数据展示:用户可以通过 Web 界面查看实时数据、历史数据和生成的报告。

这种架构使得 Zabbix 能够高效地监控复杂的网络环境,并提供灵活的告警和数据可视化功能。

二、Zabbix 的作用

  1. 自动发现:Zabbix 能自动发现网络设备和服务器,简化了监控配置过程。
  2. 分布式监控:支持分布式监控体系和集中式的 Web 管理,适用于复杂的网络环境。
  3. 多种监控模式:支持主动监控和被动监控模式,灵活应对不同的监控需求。
  4. 多平台支持:兼容多种操作系统,包括 Linux、Solaris、HP-UX、AIX、FreeBSD、OpenBSD 等。
  5. 高效的 Agent 支持:提供高效的 Agent,用于收集和传输监控数据。
  6. 无 Agent 监控:支持多种无 Agent 监控方法,如使用 SNMP 协议监控路由器或交换机。
  7. 安全性:具有安全的用户认证模式和灵活的用户权限设置,确保数据安全。
  8. 灵活的通知机制:支持多种通知方式,如邮件、短信等,帮助运维人员快速响应问题。
  9. 图形化展示:提供丰富的数据可视化功能,帮助用户直观地了解系统状态。

三、搭建 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

3.1.1_13.1.1_2

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 源 和 提供的 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 里

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 创建 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 下

1
2
3
4
5
6
7
8
9
10
11
# 安装 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
  • 解析:
    1. httpd(Apache Web 服务器)
      作用:提供 Zabbix 的 Web 界面。通过 Apache,你可以在浏览器中访问 Zabbix 的 Web 界面,进行系统配置和监控管理。

    2. mariadb-server(MariaDB数据库服务器)
      作用:作为 Zabbix 的数据库,用于存储监控数据、配置、用户信息等。Zabbix 服务器 将所有监控数据存储在这个数据库中,MariaDB 是 MySQL 的一个分支版本。

    3. zabbix-server-mysql
      作用:Zabbix 服务器的核心组件,负责从被监控的客户端(agent 或其他数据源)收集数据,并将其存储到数据库中。这个包是专门为 MySQL(MariaDB)数据库准备的版本。

    4. zabbix-web-mysql
      作用:Zabbix Web 界面相关的 PHP 文件,与 Apache 集成,允许用户通过 Web 界面 对 Zabbix 进行配置和查看监控数据。此版本是与 MySQL 兼容的。

    5. zabbix-agent
      作用:在被监控的主机上运行,负责采集主机的各类性能和状态数据(例如 CPU 使用率、内存、硬盘等),并将这些数据发送给 Zabbix 服务器。它可以安装在不同的主机上,收集系统监控指标。

    6. 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)]>

# 创建 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

3.2.2

2.3 设置时区
1
2
3
4
5
6
7
8
9
10
11
12
13
# 编辑 /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

3.2.3_13.2.3_2

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
# 编辑 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.2.4

3. 使用 Zabbix 服务

3.1 登录页面

​ 在浏览器访问 http://192.168.92.130/zabbix,进入 Zabbix 安装向导,单击右下角 “Next step”
3.3.1_1

​ 显示 PHP 版本信息等内容,然后单击右下角 “Next step”,进入下一步操作
3.3.1_2

​ 填写连接数据库的必要信息,Password 为 zabbix ,填写内容如图所示,填写完毕后单击右下角 “Next step” 按钮,进行下一步操作

3.3.1_3

​ 填写 Zabbix 服务端的详细信息,内容如图所示,Name 字段可以随意填写,是给监控平台起个名字。然后单击右下角 “Next step” 按钮,进行下一步操作

3.3.1_4

​ 平台配置概况如图所示,确认后单击右下角 “Next step” 按钮
3.3.1_5

​ 安装 Zabbix,安装成功后,单击右下角 “Finish” 按钮,结束安装
3.3.1_6

​ 单击 “Finish” 按钮后,进入登录界面,使用默认的 用户名/密码 Admin / zabbix 登录
3.3.1_7

​ 进入 Zabbix 主页
3.3.1_8

3.2 中文页面

​ 单击右上角的头像按钮,进入设置界面,将 “Language” 一栏改为 “Chinese(zh_CN)”,然后单击下方 “Update” 按钮,中文界面的Zabbix监控界面就配置完成了

3.3.2

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
# 安装 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

3.3.3_1

​ 回到Web界面,选择菜单栏 “配置” →“ 主机” → “创建主机” 命令,会跳转到如图所示的配置主机的页面
3.3.3_2

​ 填写信息,将 zabbix-agent 节点添加到被监控机器,填写信息如图所示。然后单击下方 “添加” 按钮
3.3.3_3

​ 添加完毕之后如下图所示
3.3.3_4

​ 添加监控项,单击 “zabbix-agent” 名称,然后单击“模板”标签,进行添加模板操作界面
3.3.3_5

​ 单击上图中的 “选择” 按钮,进行监控模板添加,在跳转界面勾选用户想要监控的复选框,然后单击下方 “选择” 按钮

3.3.3_6

​ 选择完模板后,如下图所示
3.3.3_7

​ 单击“添加”按钮,显示链接的模板,然后单击 “更新” 按钮
3.3.3_8

​ 单击“更新”按钮后,zabbix-agent 节点被添加到监控中
3.3.3_9

3.4 监控机器

​ 在最上面的选择菜单栏中 “监测中” → “图形” ,群组选择 Linux server,主机选择 zabbix-agent,图形选择需要显示的监控项,此处选择为 “Memory usage”
3.3.4

​ 需要被监控的主机,首先安装 zabbix-agent 服务,然后修改配置文件并启动服务。登录 Zabbix 的 Web 界面,添加主机,并添加监控模板
​ 成功添加后,就可以通过Zabbix界面进行主机的监控


Zabbix 分布式监控系统
https://moka.anitsuri.top/2024/09/10/Zabbix_24.9.10/
作者
アニつり
发布于
2024年9月10日
许可协议