Zabbix 是一个用于监控 IT 设施的企业级解决方案,支持实时监控数千台服务器,虚拟机和网络设备,采集百万级监控指标。
Zabbix 完全开源免费。
一、特性与架构
特性
Zabbix 监控系统的主要特性如下:
- 一个中心化的简单易用的 Web 管理界面,内置丰富的图形化和可视化组件
- Zabbix Server 可以运行在绝大多数 UNIX-like 操作系统上,提供原生的客户端(agent)程序(支持绝大多数 UNIX-like 系统和 Windows 系统)
- 可以直接监控 SNMP (SNMPv1, SNMPv2, SNMPv3) 和 IPMI 设备
- 通过 JMX 可以直接监控 Java 应用,通过 VMware API 可以直接监控 vCenter 或 vSphere 实例
- 灵活的配置,包括丰富的模板系统。方便与其他系统集成的通知系统
系统架构
一个简单的 Zabbix 监控系统的示例架构如下图:
Zabbix 由以下几个主要的功能组件组成:
- Server:Zabbix 软件的核心组件,agent 向其报告可用性、系统完整性和其他统计信息
- 数据库:用于存储所有配置信息以及 Zabbix 采集到的数据
- Web 界面:属于 Zabbix Server 的一部分,便于从任何地方、任何设备访问和配置 Zabbix
- Proxy:可以替代 Zabbix Server 进行数据的采集操作,在 Zabbix 的部署中是可选部分,但是可以很好地分担单个 Server 的负载
- agent:Zabbix agents 部署在被监控目标上,用于主动监控本地资源和应用程序,并将数据发送给 Zabbix Server
二、安装
获取 Zabbix 主要有以下三种方式:
- 从发行包安装
- 下载最新版源码包并编译
- 通过容器安装部署
这里选择第一种安装方式。Zabbix 官方的软件仓库有提供 RPM 和 DEB 格式的二进制包,本文并没有使用。使用的是 Ubuntu 19.04 默认软件仓库中提供的安装包,具体操作大同小异,详情可参考 Zabbix 4.0 产品手册
使用 apt-get
命令安装 Zabbix 系列软件:1
2$ sudo apt-get update
$ sudo apt-get install zabbix-server-mysql zabbix-frontend-php zabbix-agent
其中 zabbix-server-mysql
是以 MySQL 数据库为后端的 Zabbix Server 软件。zabbix-frontend-php
则是由 PHP 语言编写的 Web 控制台界面。
导入初始数据
首先确保已经安装了 MySQL 数据库,使用 root 用户登录进 MySQL 的命令行界面,输入以下命令创建数据库并授权:1
2
3
4
5mysql> CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;
Query OK, 1 row affected (0.00 sec)
mysql> GRANT ALL ON zabbix.* TO zabbix@localhost IDENTIFIED BY 'password';
Query OK, 0 rows affected, 1 warning (0.11 sec)
以上命令创建了一个名为 zabbix
的数据库,并授予用户 zabbix
(密码为 password
)对它的访问权限。zabbix
数据库用于存储 Zabbix Server 的配置信息和采集到的数据,在正式启用前还需要创建数据表并导入初始数据。
Zabbix 软件包中已经包含了用于创建这些数据表的 SQL 语句,一般保存在 /usr/share/doc/zabbix-server-mysql/
或者 /usr/share/zabbix-server-mysql/
目录下的一个或多个数据库备份文件中,直接导入即可。
我这里使用如下命令进行导入:$ zcat /usr/share/zabbix-server-mysql/{schema,images,data}.sql.gz | mysql -u zabbix -p zabbix
按照提示输入密码后即可完成导入。
配置数据库连接信息
修改 Zabbix Server 的配置文件 /etc/zabbix/zabbix_server.conf
,将其中对应的项目改为如下内容:1
2
3
4DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=password
重启 zabbix-server 服务:$ sudo systemctl restart zabbix-server
Web 前端配置
首先确保已经安装了 Apache2 Web 服务器和 PHP 语言支持。并且还需要安装以下几个 PHP 模块:
- gd
- mysqli
- bcmath
- mbstring
- gettext
前面安装完 zabbix-frontend-php
软件后,会自动在 /etc/apache2/conf-available/
目录下创建 zabbix-frontend-php.conf
文件,作为 Zabbix Server 网页后台的配置文件。
该文件的默认配置可直接使用,只需要启用该配置即可,命令如下:$ sudo a2enconf zabbix-frontend-php
或者 $sudo ln -s /etc/apache2/conf-available/zabbix-frontend-php.conf /etc/apache2/conf-enabled/
此外,在正式访问 Web 页面安装之前,需要先修改时区配置。编辑 /etc/apache2/conf-enabled/zabbix-frontend-php.conf
文件,将时区配置改为如下内容:php_value date.timezone Asia/Shanghai
Web 安装程序
以上步骤完成后,重启 Apache2 服务。进入浏览器访问 http://localhost/zabbix ,根据提示进行操作,部分截图如下:
操作完成后,会自动生成 zabbix.conf.php
文件,内容大致如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19<?php
// Zabbix GUI configuration file.
global $DB;
$DB['TYPE'] = 'MYSQL';
$DB['SERVER'] = 'localhost';
$DB['PORT'] = '3306';
$DB['DATABASE'] = 'zabbix';
$DB['USER'] = 'admin';
$DB['PASSWORD'] = 'password';
// Schema name. Used for IBM DB2 and PostgreSQL.
$DB['SCHEMA'] = '';
$ZBX_SERVER = 'your_ip_address';
$ZBX_SERVER_PORT = '10051';
$ZBX_SERVER_NAME = 'server1';
$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;
如该文件未自动在 /etc/zabbix/
目录下生成,可将该文件下载后移动到对应位置。
此时访问 http://localhost/zabbix ,即可进入安装配置完成的 Zabbix 监控系统控制台。默认登录用户名为 Admin
,密码为 zabbix
。截图如下:
三、主机与监控项
本文主要介绍 Zabbix 监控系统的安装配置流程,对于主机及其关联的监控项的配置,限于篇幅不作过多介绍。建议参考官方文档。
实际上完成安装之后,Zabbix 已经默认关联了一个名为 Zabbix server
的主机(即安装 Zabbix Server 的 Linux 服务器本身),其中默认配置了众多监控项、触发器、图形和自动发现规则等。可以查看它们的具体配置信息作为参考。
部分截图如下: