如何在CentOS 7上安装和配置Zabbix

Zabbix是功能齐全的开源监视软件。 Zabbix从您的网络设备,系统和应用程序收集指标,并确保它们已启动并正在运行。如有任何问题,Zabbix将通过各种方法发送通知警报。

Zabbix可以部署为基于代理和无代理的监视。 Zabbix代理占地很小,可以在各种平台上运行,包括Linux,UNIX,macOS和Windows。

本教程介绍了如何使用MariaDB作为数据库后端在CentOS 7服务器上安装和配置最新版本的Zabbix 4.0。我们还将向您展示如何在远程主机上安装Zabbix代理并将该主机添加到Zabbix服务器。

先决条件

您需要以具有 sudo访问权限的用户身份登录才能安装软件包。

创建MySQL数据库

Zabbix支持MySQL(https://myfreax.com/post/install-mysql-on-centos-7/)/ MariaDB和 PostgreSQL 作为数据库服务器。在本教程中,我们将使用MariaDB作为数据库后端。

如果您的CentOS服务器上未安装MariaDB,则可以按照这些说明进行安装。

通过键入以下命令登录到MySQL Shell:

sudo mysql

在MySQL Shell中,运行以下SQL命令以创建新数据库:

CREATE DATABASE zabbix CHARACTER SET utf8 collate utf8_bin;

接下来,创建 MySQL用户帐户并授予对数据库的访问权限:

GRANT ALL ON zabbix.* TO 'zabbix'@'localhost' IDENTIFIED BY 'change-with-strong-password';

请确保使用强密码更改change-with-strong-password

完成后,通过键入以下内容退出mysql控制台:

EXIT;

在CentOS上安装Zabbix

在撰写本文时,Zabbix的最新稳定版本是4.0版。 CentOS资料库中可用的Zabbix软件包已过时,因此我们将使用官方 Zabbix资料库。

1.安装Zabbix

使用以下 wget命令下载最新的Zabbix存储库 rpm软件包:

wget https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm

下载文件后,通过键入以下内容将Zabbix存储库添加到您的CentOS 7系统:

sudo yum localinstall zabbix-release-4.0-1.el7.noarch.rpm

安装Zabbix服务器,具有MySQL数据库支持的Web前端和Zabbix代理程序包:

sudo yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent

如果您的服务器上尚未安装 Apache 和 PHP ,则上述命令将安装它们。

2.为Zabbix前端配置PHP

在安装过程中,将创建一个Apache配置文件,其中包含所有必需的Apache和PHP设置。您只需要稍作更改并设置适当的时区即可。

打开配置文件,取消注释时区行并将其更改为您的时区。您可以在此处中找到PHP支持的时区的完整列表。

/etc/httpd/conf.d/zabbix.conf

...

        php_value max_execution_time 300
        php_value memory_limit 128M
        php_value post_max_size 16M
        php_value upload_max_filesize 2M
        php_value max_input_time 300
        php_value max_input_vars 10000
        php_value always_populate_raw_post_data -1
        php_value date.timezone Europe/Riga

...

完成后,保存配置文件并重新启动Apache服务,以使更改生效:

sudo systemctl restart httpd

3.为Zabbix服务器配置MySQL数据库

Zabbix安装包提供了一个转储文件,其中包含带有MySQL的Zabbix服务器的初始架构和数据。

通过运行以下命令导入MySQL转储文件:

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

出现提示时,输入您先前创建的用户密码。成功时,不输出任何信息。

接下来,在编辑器中打开Zabbix配置文件:

sudo nano /etc/zabbix/zabbix_server.conf

搜索以下部分,取消注释DBPassword指令并添加数据库密码。

/etc/zabbix/zabbix_server.conf

...
### Option: DBPassword
1.       Database password.
1.       Comment this line if no password is used.
1. 1. Mandatory: no
1. Default:
DBPassword=change-with-strong-password
...

保存并关闭文件。

重新启动Zabbix服务器和代理服务,并使它们能够在系统引导时启动:

sudo systemctl restart zabbix-server zabbix-agent
sudo systemctl enable zabbix-server zabbix-agent

检查Zabbix服务器的状态:

sudo systemctl status zabbix-server

输出应显示active (running)

● zabbix-server.service - Zabbix Server
   Loaded: loaded (/usr/lib/systemd/system/zabbix-server.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2018-12-30 21:18:01 UTC; 51s ago
 Main PID: 5558 (zabbix_server)
   CGroup: /system.slice/zabbix-server.service
   ...

安装和配置Zabbix前端

Zabbix Web界面是用PHP编写的,它使我们能够配置服务器,查看收集的数据并添加要监视的主机。

在开始使用网络界面之前,我们需要先安装它。

​​打开您的最喜欢的浏览器,然后输入服务器的域名或公共IP地址,然后输入/zabbix

http(s)://your_domain_or_ip_address/zabbix

在第一个屏幕上,我们将向您显示欢迎消息。点击Next step继续。

接下来,您将看到以下信息页面,其中列出了运行Zabbix前端所需的所有PHP先决条件。该表中的所有值均应为OK,向下滚动以确认所有设置均正确。验证后,单击Next step继续。

在下一个屏幕上,安装向导将要求您输入数据库连接详细信息。输入您先前创建的MySQL用户和数据库详细信息。

输入服务器名称是可选的。如果您有多个Zabbix监视服务器,请输入。如果提供的话,它将显示在菜单栏和页面标题中。

点击Next step继续。

在下一个屏幕上,将显示安装前摘要。

单击Next step,安装完成后,您将进入一个页面,通知您已安装Zabbix Web界面。要访问您的Zabbix登录页面,请单击Finish按钮。

默认用户为“管理员”,密码为“ zabbix”。输入用户名和密码,然后单击Log in按钮。

登录后,您将被重定向到Zabbix管理信息中心。

您可以从此处开始自定义Zabbix安装并添加新主机。您的第一步应该是更改当前密码。为此,请单击顶部导航上的个人资料图标,导航到用户个人资料页面。

向Zabbix服务器添加新主机

将用于监视的新主机添加到Zabbix服务器的过程包括两个步骤。

首先,您需要在远程主机上安装Zabbix代理,然后通过Web界面将该主机添加到Zabbix服务器。

安装Zabbix代理

本教程假定主机也使用CentOS7。

与安装Zabbix服务器时相同,运行以下命令以启用Zabbix存储库:

wget https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
sudo yum localinstall zabbix-release-4.0-1.el7.noarch.rpm

安装Zabbix代理程序包:

sudo yum install zabbix-agent

Zabbix支持服务器-客户端通信加密的两种方法:预共享密钥(PSK)和基于证书的加密。在本教程中,我们将使用预共享密钥(PSK)方法来保护服务器和代理之间的连接。

使用以下命令来生成预共享密钥并将其保存到文件中:

openssl rand -hex 32 | sudo tee /etc/zabbix/zabbix_agentd.psk

PSK密钥如下所示:

fc3077ed3db8589ec920ac98a7ddea96aca205eb63bbd29c66ae91743a7ecbb6

打开Zabbix代理配置文件:

sudo nano /etc/zabbix/zabbix_agentd.conf

搜索Server IP地址并将其从默认值更改为Zabbix服务器IP:

/etc/zabbix/zabbix_agentd.conf

...
### Option: Server
1.       List of comma delimited IP addresses, optionally in CIDR notation, or DNS names of Zabbix servers and Zabbix proxies.
1.       Incoming connections will be accepted only from the hosts listed here.
1.       If IPv6 support is enabled then '127.0.0.1', '::127.0.0.1', '::ffff:127.0.0.1' are treated equally
1.       and '::/0' will allow any IPv4 or IPv6 address.
1.       '0.0.0.0/0' can be used to allow any IPv4 address.
1.       Example: Server=127.0.0.1,192.168.1.0/24,::1,2001:db8::/32,zabbix.example.com
1. 1. Mandatory: yes, if StartAgents is not explicitly set to 0
1. Default:
1. Server=

Server=127.0.0.1
...

接下来,找到TSLConnect选项,取消注释并将其设置为psk

/etc/zabbix/zabbix_agentd.conf

...
### Option: TLSConnect
1.       How the agent should connect to server or proxy. Used for active checks.
1.       Only one value can be specified:
1.               unencrypted - connect without encryption
1.               psk         - connect using TLS and a pre-shared key
1.               cert        - connect using TLS and a certificate
1. 1. Mandatory: yes, if TLS certificate or PSK parameters are defined (even for 'unencrypted' connection)
1. Default:
TLSConnect=psk
...

找到TLSAccept选项,取消注释并将其设置为psk

/etc/zabbix/zabbix_agentd.conf

...
### Option: TLSAccept
1.       What incoming connections to accept.
1.       Multiple values can be specified, separated by comma:
1.               unencrypted - accept connections without encryption
1.               psk         - accept connections secured with TLS and a pre-shared key
1.               cert        - accept connections secured with TLS and a certificate
1. 1. Mandatory: yes, if TLS certificate or PSK parameters are defined (even for 'unencrypted' connection)
1. Default:
TLSAccept=psk
...

接下来,找到TLSPSKIdentity选项,取消注释并将其设置为PSK 001。该值必须是唯一的字符串:

/etc/zabbix/zabbix_agentd.conf

...
### Option: TLSPSKIdentity
1.       Unique, case sensitive string used to identify the pre-shared key.
1. 1. Mandatory: no
1. Default:
TLSPSKIdentity=PSK 001
...

最后,找到TLSPSKFile选项,取消注释,并将其设置为指向先前创建的预共享密钥:

/etc/zabbix/zabbix_agentd.conf

...
### Option: TLSPSKFile
1.       Full pathname of a file containing the pre-shared key.
1. 1. Mandatory: no
1. Default:
TLSPSKFile=/etc/zabbix/zabbix_agentd.psk 
...

完成后,保存并关闭文件。

启动Zabbix代理服务,并将其设置为在启动时通过以下方式启动:

sudo systemctl start zabbix-agent
sudo systemctl enable zabbix-agent

接下来,您需要添加防火墙规则,以启用来自Zabbix服务器的TCP端口10050上的流量。

假设您正在使用 FirewallD 管理防火墙,并且要允许从192.168.121.70 IP地址进行访问,则可以运行以下命令:

sudo firewall-cmd --new-zone=zabbix --permanent
sudo firewall-cmd --zone=special --add-source=192.168.121.70/32
sudo firewall-cmd --zone=special --add-port=10050/tcp

设置新主机

现在,已安装并配置了要监视的远程主机上的代理,下一步是在Zabbix服务器上注册该主机。

以管理员用户身份登录Zabbix服务器Web界面:

http(s)://your_domain_or_ip_address/zabbix

在内部,在顶部导航栏中单击Configuration,然后单击Hosts

接下来,单击屏幕右上角的蓝色Create host按钮,主机配置页面将打开:

输入要监视的远程主机的主机名和IP地址。通过从列表中选择一个组,将主机添加到一个或多个组中,或者输入一个不存在的组名来创建一个新的组。 Linux Servers组是一个不错的选择。

完成后,单击Templates标签。选择Template OS Linux,然后单击Add链接以将模板添加到主机。

接下来,单击Encryption选项卡。为Connections to hostConnections from host选择PSK。

PSK identity值设置为PSK 001,即在上一步中配置的Zabbix代理的TLSPSKIdentity选项的值。

PSK value字段中,添加您为Zabbix代理生成的密钥,该密钥存储在/etc/zabbix/zabbix_agentd.psk文件中。

最后,要添加主机,请点击蓝色的添加button

结论

您已在CentOS系统上成功安装了最新的Zabbix,并了解了如何添加要监视的新主机。

您现在应该查看 Zabbix文档,并详细了解如何配置和使用Zabbix。

如果您遇到问题或有反馈,请在下面发表评论。