Ubuntu 19.04 配置 Zabbix 监控系统

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 架构

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
5
mysql> 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
4
DBHost=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 ,根据提示进行操作,部分截图如下:
Check Requirements

DB Connection

操作完成后,会自动生成 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 Web GUI

三、主机与监控项

本文主要介绍 Zabbix 监控系统的安装配置流程,对于主机及其关联的监控项的配置,限于篇幅不作过多介绍。建议参考官方文档

实际上完成安装之后,Zabbix 已经默认关联了一个名为 Zabbix server 的主机(即安装 Zabbix Server 的 Linux 服务器本身),其中默认配置了众多监控项、触发器图形自动发现规则等。可以查看它们的具体配置信息作为参考。
部分截图如下:
监控项

监控项-CPU/触发器

图形

参考资料

Zabbix 产品手册
Zabbix Network Monitoring, Second Edition