在 CentOS 7 上使用 Zabbix


一、前言

Zabbix 是一款基于 C/S 架构的开源监控软件。

它能将各种网络设备或网络服务中的各种信息收集起来并加以处理,然后通过 Web 前端界面呈现给管理员进行分析。

Zabbix 也可以在网络设备或网络服务发生问题时通过某种方式发出告警,以便管理员及时介入处理。

Zabbix 通常把被监控的对象称为代理(Agent);而把监控者称为服务器(Server)。

被监控的对象可以使用 Zabbix 代理软件(即 Zabbix 客户端),也可使用 SNMP 之类的标准化网络管理协议。

本文将以配置一台 Zabbix 服务器监控一台使用 Zabbix 代理软件的 CentOS 7 主机,以及一台使用 SNMP 的 Cisco 路由器(SNMP 代理)为例,介绍如何在 CentOS 7 系统上部署 Zabbix 监控环境以及 Zabbix 的基本用法。

本文纯属个人经验分享,所有的步骤我在写完之后都有重装系统然后全部重新走一遍验证一次。

如果想提高一次成功的概率,建议使用全新安装的系统,然后严格按照我的步骤要求来做。

如果有错误,可以的话麻烦留言提出,谢谢!


二、系统环境

Zabbix 服务器

  • IP 地址:10.0.0.142
  • 域名:zabbix.example.com
  • 操作系统:CentOS 7.5.1804(已关闭 SELinux)
  • 所需应用软件:Zabbix Server 3.4.11-1Nginx 1.12.2-2PHP 7.2.6-1MariaDB 5.5.56-2

被监控的 CentOS 主机(Zabbix 代理)

  • IP 地址:10.0.0.143
  • 操作系统:CentOS 7.5.1804(已关闭 SELinux)
  • 所需应用软件:Zabbix Agent 3.4.11-1

被监控的 Cisco 路由器(SNMP 代理)

  • IP 地址:10.0.0.144
  • 操作系统:Cisco IOS Software, Linux Software (I86BI_LINUX-ADVENTERPRISEK9-M), Version 15.7(3)M0a, DEVELOPMENT TEST SOFTWARE
  • SNMP 版本:v2c
  • SNMP 团体名:cisco

三、Zabbix 监控服务器环境的搭建

3.1 安装软件

3.1.1 添加 EPEL、Zabbix 的 YUM 源

执行以下命令:

yum -y install epel-release ; \
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm https://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm ; \
yum -y update

3.1.2 安装所需的软件

执行以下命令:

yum -y install nginx mariadb-server gzip \
zabbix-server-mysql zabbix-web-mysql zabbix-agent \
php72w-common php72w-fpm php72w-gd php72w-mysql php72w-mbstring php72w-xml

3.2 数据库的配置

3.2.1 启动 MariaDB 服务

说明
• 如果服务器上已经部署了 MariaDB 或其它数据库服务,此步骤可省略。

执行以下命令:

systemctl start mariadb

3.2.2 进行 MariaDB 的安全设置

说明
• 如果服务器上已经部署了 MariaDB 或其它数据库服务,此步骤可省略。

执行以下命令:

mysql_secure_installation 

运行结果(请按提示操作):

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MySQL to secure it, we'll need the current
password for the root user.  If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): ← 此处直接按回车即可
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.

Set root password? [Y/n] y    ← 按 y 按回车,设定数据库的 root 密码
New password:                 ← 输入数据库的 root 密码,按回车
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!

# 后面的问题全部按 y 回车即可,这里省略。

3.2.3 进入 MariaDB 命令行界面

执行以下命令:

mysql -u root -p

然后输入 MariaDB 的 root 密码,按回车。

出现 MariaDB [(none)]> 指示符就说明进入了。

3.2.4 创建 Zabbix 服务器专用数据库

执行以下命令:

CREATE DATABASE zabbix CHARACTER SET UTF8 COLLATE UTF8_BIN;

3.2.5 创建一个用户用于读写 Zabbix 服务器专用数据库

执行以下命令:

CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'zabbix';

说明
• 这个 Zabbix 服务器专用用户的用户名和密码均为 zabbix,并只允许本地访问。

3.2.6 赋予该用户读写 Zabbix 服务器专用数据库的权限

执行以下命令:

GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost' IDENTIFIED BY 'zabbix';

3.2.7 刷新权限表

执行以下命令:

FLUSH PRIVILEGES;

3.2.8 退出 MariaDB 命令行界面

执行以下命令:

exit

3.2.9 向 Zabbix 服务器专用数据库中导入必要的数据

执行以下命令:

zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -u zabbix -p zabbix

执行完之后输入 zabbix(密码)回车即可。

3.3 Zabbix 服务器应用的配置

3.3.1 配置后端使用的数据库密码

请使用 vim 之类的文本编辑器打开 /etc/zabbix/zabbix_server.conf

然后找到 # DBPassword= 这一行(在 125 行左右),将这整一行修改为:

DBPassword=zabbix

修改完成后保存退出即可。

3.3.2 安装前端 Web 页面的中文字体

执行以下命令:

rm -rf /usr/share/zabbix/fonts/graphfont.ttf && \
curl -o /usr/share/zabbix/fonts/graphfont.ttf https://cloud.zenandidi.com/s/Hx07hVL5gnaq0Vh/download

说明
• Zabbix 前端自带的字体资源无法显示正确中文(显示为小方格)。

3.3.3 设置前端 Web 页面文件的权限

执行以下命令:

chown -R nginx:nginx /usr/share/zabbix && \
find /usr/share/zabbix -type d -exec chmod 755 {} \; && \
find /usr/share/zabbix -type f -exec chmod 644 {} \;

3.3.4 设置前端 Web 配置文件的权限

执行以下命令:

chown -R nginx:nginx /etc/zabbix/web && \
find /etc/zabbix/web -type d -exec chmod 755 {} \; && \
find /etc/zabbix/web -type f -exec chmod 644 {} \;

3.4 配置 PHP-FPM

执行以下命令:

cat << EOF > /etc/php-fpm.d/zabbix.conf

然后将以下内容直接粘贴到命令行窗口中按回车即可:

[zabbix]
user = nginx
group = nginx
listen = /run/php-fpm/zabbix.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0600
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
slowlog = /var/log/php-fpm/zabbix-slow.log
php_admin_value[error_log] = /var/log/php-fpm/zabbix-error.log
php_admin_flag[log_errors] = on
php_value[memory_limit] = 128M
php_value[post_max_size] = 16M
php_value[upload_max_filesize]=2M
php_value[max_execution_time]=300
php_value[max_input_time]=300
php_value[session.auto_start]=0
php_value[mbstring.func_overload]=0
php_value[always_populate_raw_post_data]=-1
php_value[date.timezone] = Asia/Shanghai
EOF

3.5 配置 Nginx

执行以下命令:

cat << EOF > /etc/nginx/conf.d/zabbix.conf

请按实际情况以及注释提示修改以下内容,完成后去除 # 号和后面的注释,然后直接粘贴到命令行窗口中按回车即可:

upstream php-handler {
    server unix:/run/php-fpm/zabbix.sock;
}

server {
    listen 80;    
    server_name zabbix.example.com;    # zabbix.example.com 改为您的域名

    root /usr/share/zabbix;

    index index.php index.html;

    location ~ \.php\$ {
        fastcgi_pass php-handler;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 4 256k;
        fastcgi_busy_buffers_size 256k;
    }
}
EOF

3.6 启动服务

执行以下命令:

systemctl start zabbix-server zabbix-agent nginx php-fpm

如需开机启动,请执行以下命令:

systemctl enable zabbix-server zabbix-agent nginx php-fpm mariadb

3.7 初始化 Zabbix Web 前端

打开浏览器,输入 http://zabbix.example.com(请根据实际情况将这里的域名修改为您自己的域名),回车打开。然后根据提示进行 Zabbix Web 前端的初始化。

说明
• 在访问之前,请先做好域名解析工作。

打开之后,直接点击「Next step」。如下图:

检查系统环境,没问题的话直接点击「Next step」。如下图:

配置 Zabbix 服务器专用数据库,这里我们输入密码(zabbix),然后直接点击「Next step」就行了。如下图:

配置 Zabbix 服务器的名称,也可不配置直接点击「Next step」。如下图:

配置清单,直接点击「Next step」即可。如下图:

完成配置,点击「Finish」即可完成 Web 前端的初始化。如下图:

3.8 设置中文显示

Web 前端的初始化完成之后,会进入登录界面。

默认的管理员用户名是 Admin,密码是 zabbix

我们使用默认的用户名密码进行登录。如下图:

登录之后点击上面的「Administration」-> 「Users」,再点击下面的「Admin」进入默认管理员的配置页面。如下图:

然后在「Language」下拉菜单中选择「Chinese (zh_CN)」,最后点击「Update」即可完成设置。如下图:

设置完成之后,关闭浏览器,然后重新打开 Zabbix Web 页面并以默认用户名密码登录即可看到效果。如下图:


四、Zabbix 代理(被监控的 CentOS 主机)的配置

4.1 安装软件

4.1.1 添加 Zabbix 的 YUM 源

执行以下命令:

rpm -i https://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm

4.1.2 安装所需的软件

执行以下命令:

yum -y install zabbix-agent

4.2 配置连接 Zabbix 服务器的参数

请使用 vim 之类的文本编辑器打开 /etc/zabbix/zabbix_agentd.conf

找到 Server= 这一行(在 97 行左右,前面没有 # 号的),将这整一行修改为:

Server=10.0.0.142

说明
• 这里的 10.0.0.142 请根据实际情况修改为 Zabbix 服务器的地址,下同。

找到 ServerActive= 这一行(在 138 行左右,前面没有 # 号的),将这整一行修改为:

ServerActive=10.0.0.142

找到 Hostname= 这一行(在 149 行左右,前面没有 # 号的),将这整一行修改为:

Hostname=<客户端的名字>

说明
• 这里的 <客户端的名字> 用来唯一标识一个 Zabbix 代理,请根据实际情况设置。

修改完成后保存退出即可。

4.3 启动服务

执行以下命令:

systemctl start zabbix-agent

如需开机启动,请执行以下命令:

systemctl enable zabbix-agent

4.4 防火墙放行端口(可选)

说明
• Zabbix 代理默认监听 TCP 10050 端口。

(以 iptables 防火墙为例)

iptables -A INPUT -p tcp --dport 10050 -j ACCEPT

五、SNMP 代理(被监控的 Cisco 路由器)的配置

下面只介绍 SNMP 部分的配置。

进入路由器的全局配置模式(提示符为 Router(config)#),执行以下命令:

snmp-server community cisco RW

说明
• 这里的 cisco 请根据实际情况修改为实际的 SNMP 团体名。
• 这里的配置只是为了方便演示而已。在实际情况中,强烈建议使用带密文认证功能的 SNMP v3,外加 ACL 认证。


六、Zabbix 监控服务器的配置

6.1 添加 Zabbix 代理(被监控的 CentOS 主机)

在 Zabbix 服务器的 Web 页面中点击上面的「配置」->「主机」,再点击下面的「创建主机」进入创建主机页面。如下图:

说明
• 在主机配置页面中,已经包含了 Zabbix 服务器本身,但是并没有被启用。如果需要监控 Zabbix 服务器本身的各种参数的话也可以点击「停用的」来启用它。

在创建主机页面中:

  1. 「主机名称」填写上面 4.2 中 Hostname 所对应的值(这里以 client 为例)。
  2. 「可见的名称」可自便,它只是可用于在监控页面下识别哪台主机。
  3. 在「其它群组」中任意选择一个或多个要加入的群组(这里以加入 Linux servers 为例)。
  4. 「agent代理程序的接口」中的「IP地址」填写被监控的 Zabbix 代理实际的 IP 地址(这里以 10.0.0.143 为例),然后点击「agent代理程序的接口」中的「添加」。

整个过程如下图:

完成之后先别急着点下面的「添加」。

应该点击上面的「模版」,进入模版配置菜单中。

说明
• Zabbix 中的模版简单来说就是监控项的集合。下面为了方便就直接使用自带的模版好了。

然后在「链接指示器」右边的文本框中输入 Linux,然后点选弹出的「Template OS Linux」,再点击「链接指示器」下面的「添加」,最后再点击最下面的「添加」,完成 Zabbix 代理的添加。

整个过程如下图:

添加完成后请先关闭主机配置页面,稍等片刻再重新打开。正常的话,刚添加的主机这一行的「可用性」这一列中应该会出现绿色的「ZBX」方块,这监控服务器已经成功连接到刚添加的 Zabbix 代理。如下图:

6.2 添加 SNMP 代理(被监控的 Cisco 路由器)

在 Zabbix 服务器的 Web 页面中点击上面的「配置」->「主机」,再点击下面的「创建主机」进入创建主机页面。如下图:

在创建主机页面中:

  1. 「主机名称」和「可见的名称」均可自便。
  2. 在「其它群组」中任意选择一个或多个要加入的群组(这里以加入 Templates/Network Devices 为例)。
  3. 移除「agent代理程序的接口」中的所有项目。
  4. 「SNMP接口」中的「IP地址」填写被监控的 SNMP 代理实际的 IP 地址(这里以 10.0.0.144 为例),然后点击「SNMP接口」中的「添加」。

整个过程如下图:

同样的,完成之后先别急着点下面的「添加」。

应该点击上面的「模版」,进入模版配置菜单中。

然后在「链接指示器」右边的文本框中输入 cisco,然后点选弹出的「Template Net Cisco IOS SNMPv2」,再点击「链接指示器」下面的「添加」,最后切记不要点击最下面的「添加」!因为还没有设置 SNMP 团体名。

整个过程如下图:

接下来点击上面的「宏」,然后在「主机宏」下面的「宏」中输入 {$SNMP_COMMUNITY},「值」则输入 SNMP 的团体名(这里以 cisco 为例)。最后再点击最下面的「添加」,完成 SNMP 代理的添加。

整个过程如下图:

添加完成后请先关闭主机配置页面,稍等片刻再重新打开。正常的话,刚添加的主机这一行的「可用性」这一列中应该会出现绿色的「SNMP」方块,这监控服务器已经成功连接到刚添加的 SNMP 代理。如下图:

七、查看监控的数据

最后简单说下如何查看监控的数据。

进入 Zabbix 主界面之后,点击「监测中」->「最新数据」,然后设置下过滤器来指定要查看哪些主机的哪些数据,最后点击「应用」即可。如下图:

如果想查看某些数据的图表分析,可以进入到「监测中」->「图形」,然后选择需要查看哪些主机的哪些数据即可。如下图:


八、参考文献

  1. (官网)Red Hat Enterprise Linux/CentOS [Zabbix Documentation 3.4]
  2. HowtoForge – How to Install and Configure Zabbix on CentOS 7
  3. Linux 运维日志 – CentOS 7 安装 Zabbix 3.4

发表评论

电子邮件地址不会被公开。