Zabbix是成熟的开源软件,用于监视网络和应用程序。 Zabbix可以从各种网络设备,系统和应用程序收集指标。如果发生任何故障,Zabbix将通过各种方法发送通知警报。

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

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

先决条件

您已登录的用户必须具有 sudo权限,才能安装软件包。

创建MySQL数据库

Zabbix支持 MySQL / MariaDB和 PostgreSQL 。在本指南中,我们将使用MariaDB作为数据库后端。

如果您的Debian服务器上未安装MariaDB,请按照这些说明进行安装。

登录到MySQL控制台:

sudo mysql

运行以下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;

在Debian上安装Zabbix

在撰写本文时,Zabbix的最新稳定版本是4.0版。 Debian存储库中可用的Zabbix软件包通常已经过时,因此我们将使用官方 Zabbix存储库

1.安装Zabbix

使用以下 wget命令下载最新的Zabbix存储库.deb程序包:

wget https://repo.zabbix.com/zabbix/4.0/debian/pool/main/z/zabbix-release/zabbix-release_4.0-2+stretch_all.deb

下载文件后,请使用以下工具进行安装:

sudo apt install ./zabbix-release_4.0-2+stretch_all.deb

更新软件包列表并安装Zabbix服务器,具有MySQL数据库支持的Web前端和Zabbix代理:

sudo apt update
sudo apt install zabbix-server-mysql zabbix-frontend-php zabbix-agent

上面的命令还将安装 Apache PHP 和所有必需的PHP模块。

2.为Zabbix前端配置PHP

在安装过程中,将创建具有所有必需的Apache和PHP设置的Apache配置文件。

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

/etc/apache2/conf-enabled/zabbix.conf

...
    <IfModule mod_php7.c>
        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 America/Denver
    </IfModule>
...

完成后,保存文件并重新启动Apache服务以激活更改。

sudo systemctl restart apache2

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

使用MySQL导入MySQL转储文件,该文件包含初始架构和Zabbix服务器的数据。

gunzip < /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
#       Database password.
#       Comment this line if no password is used.
#
# Mandatory: no
# 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
● zabbix-server.service - Zabbix Server
   Loaded: loaded (/lib/systemd/system/zabbix-server.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2019-01-28 15:37:21 CST; 35s ago
 Main PID: 27632 (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软件包的列表。向下滚动以确认所有内容均已安装并正确设置。验证后,单击Next step继续。

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

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

点击Next step继续。

在下一个屏幕上,您将看到安装前摘要。

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

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

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

从这里您可以开始自定义Zabbix安装并添加新主机。首先,您需要更改当前密码。为此,请单击顶部导航上的个人资料图标,导航到用户个人资料页面。

向Zabbix服务器添加新主机

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

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

安装Zabbix代理

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

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

wget https://repo.zabbix.com/zabbix/4.0/debian/pool/main/z/zabbix-release/zabbix-release_4.0-2+stretch_all.deb
sudo apt install ./zabbix-release_4.0-2+stretch_all.deb

更新软件包列表并安装Zabbix代理软件包:

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

Server=127.0.0.1
...

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

/etc/zabbix/zabbix_agentd.conf

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

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

/etc/zabbix/zabbix_agentd.conf

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

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

/etc/zabbix/zabbix_agentd.conf

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

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

/etc/zabbix/zabbix_agentd.conf

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

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

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

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

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

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

sudo ufw allow proto tcp from 192.168.121.70 to any port 10050

设置新主机

现在,已安装并配置了要监视的远程主机上的代理,下一步是在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

结论

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

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

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