简介
Zabbix 是用于网络和应用程序的开源监控软件。它提供了对从服务器、虚拟机和任何其他类型的网络设备收集的数千个指标的实时监控。这些指标可以帮助您确定IT基础设施的当前健康状况,并在客户投诉之前检测到硬件或软件组件的问题。有用的信息存储在数据库中,因此您可以随时间分析数据并改进所提供的服务的质量,或者计划升级您的设备。
Zabbix 使用客户端-服务器架构,并在被监视的客户端上使用一个小型代理来收集数据并将其发送到Zabbix服务器。Zabbix 3 版本支持服务器和连接的客户端之间的加密通信,因此您的数据在通过不安全的网络传输时受到保护。
Zabbix服务器将其数据存储在由MySQL、PostgreSQL或Oracle提供支持的关系型数据库中。它还提供了一个Web界面,以便您可以查看数据并配置系统设置。在本教程中,我们将配置两台机器。一台将被配置为服务器,另一台将被配置为您要监视的客户端。服务器将使用MySQL数据库记录监控数据,并使用Apache提供Web界面。
先决条件
要按照本教程操作,您需要:
- 两台配置了sudo非root用户的Ubuntu 16.04服务器。您可以按照这篇初始Ubuntu服务器设置文章进行设置。
- 将运行Zabbix服务器的服务器需要安装Apache、MySQL和PHP。按照本指南在其中一台服务器上配置这些。
步骤 1 — 安装 Zabbix 服务器
首先,我们需要在安装了MySQL、Apache和PHP的服务器上安装Zabbix服务器。在本教程中,我们将把这台机器称为“Zabbix服务器”。以非root用户身份登录到此机器:
[本地环境] ssh sammy@your_zabbix_server_ip_address
在安装Zabbix之前,我们需要安装Zabbix所需的一些PHP模块。首先,更新系统的可用软件包列表:
sudo apt-get update
然后安装Zabbix所需的PHP模块:
sudo apt-get install php7.0-xml php7.0-bcmath php7.0-mbstring
现在我们可以安装Zabbix了。
Zabbix可以在Ubuntu的软件包管理器中找到,但它已经过时,因此我们将使用官方的Zabbix存储库来安装最新的稳定版本。下载并安装存储库配置软件包:
wget http://repo.zabbix.com/zabbix/3.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.2-1+xenial_all.deb sudo dpkg -i zabbix-release_3.2-1+xenial_all.deb
您将看到以下输出:
选择了之前未选择的软件包zabbix-release。 (正在读取数据库 ... 目前已安装 55276 个文件和目录。) 正在准备解包 zabbix-release_3.2-1+xenial_all.deb ... 正在解包 zabbix-release (3.2-1+xenial) ... 正在设置 zabbix-release (3.2-1+xenial) ...
更新软件包索引,以便包含新的存储库:
sudo apt-get update
然后安装带有MySQL数据库支持的Zabbix服务器和Web前端:
sudo apt-get install zabbix-server-mysql zabbix-frontend-php
让我们还安装Zabbix代理,这样我们就可以收集有关Zabbix服务器状态本身的数据。
sudo apt-get install zabbix-agent
在使用Zabbix之前,我们必须设置一个数据库来保存Zabbix服务器从其代理收集的数据。
步骤 2 — 配置 Zabbix 的 MySQL 数据库
我们需要创建一个新的MySQL数据库,并填充一些基本信息,以使其适用于Zabbix。我们还将为此数据库创建一个特定的用户,以便Zabbix不使用root
帐户登录到MySQL。
使用在MySQL服务器安装期间设置的root密码以root用户身份登录到MySQL:
mysql -uroot -p
创建具有UTF-8字符支持的Zabbix数据库:
create database zabbix character set utf8 collate utf8_bin;
然后创建Zabbix服务器将使用的用户,为该用户授予对新数据库的所有权限,并设置用户的密码:
grant all privileges on zabbix.* to zabbix@localhost identified by 'your_password';
然后应用这些新权限:
flush privileges;
这样就处理了用户和数据库。退出数据库控制台。
quit;
接下来,我们必须导入初始模式和数据。Zabbix安装为我们提供了一个设置此项的文件。
运行以下命令来设置模式并将数据导入zabbix
数据库。我们将使用zcat
,因为文件中的数据已经被压缩。
zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -p zabbix
在提示时输入您为zabbix MySQL用户配置的密码。
如果成功,此命令将不会输出任何错误。如果看到错误 ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password: YES)
,请确保您使用的是zabbix
用户的密码,而不是root
用户的密码。
为了使Zabbix服务器使用此数据库,您需要在Zabbix服务器配置文件中设置数据库密码。在编辑器中打开配置文件:
sudo nano /etc/zabbix/zabbix_server.conf
查找文件中的以下部分:
### 选项:DBPassword # 数据库密码。对于 SQLite 来说是被忽略的。 # 如果不使用密码,请注释掉这一行。 # # 必填:否 # 默认值: # DBPassword=
文件中的这些注释解释了如何连接到数据库。我们需要在文件中设置 DBPassword
的值为我们数据库用户的密码。在这些注释下面添加以下行来配置数据库:
DBPassword=your_zabbix_mysql_password
这样就完成了 Zabbix 服务器的配置,但是我们需要对 PHP 设置进行一些修改,以便让 Zabbix web 界面正常工作。
步骤 3 — 配置 PHP 以适配 Zabbix
Zabbix web 界面是用 PHP 编写的,需要一些特殊的 PHP 服务器设置。Zabbix 安装过程创建了一个包含这些设置的 Apache 配置文件。它位于目录 /etc/zabbix
中,并且会被 Apache 自动加载。我们需要对这个文件进行一些小的修改,因此打开它。
sudo nano /etc/zabbix/apache.conf
该文件包含了满足 Zabbix web 界面必要要求的 PHP 设置。你需要做的唯一修改就是设置适当的时区,这个设置默认是被注释掉的。
... <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 always_populate_raw_post_data -1 # php_value date.timezone Europe/Riga </IfModule>
取消时区行的注释,如上所示,并将其更改为你的时区。你可以使用支持的时区列表来找到适合你的时区。然后保存并关闭文件。
现在重新启动 Apache 以应用这些新设置。
sudo systemctl restart apache2
现在可以启动 Zabbix 服务器了。
sudo systemctl start zabbix-server
然后检查 Zabbix 服务器是否正常运行:
sudo systemctl status zabbix-server
你将看到以下状态:
● zabbix-server.service - Zabbix Server Loaded: loaded (/lib/systemd/system/zabbix-server.service; disabled; vendor preset: enabled) Active: :active (running) since Thu 2017-06-08 06:40:43 UTC; 6s ago Process: 15201 ExecStart=/usr/sbin/zabbix_server -c $CONFFILE (code=exited, status=0/SUCCESS) ...
最后,启用服务器以在启动时启动:
sudo systemctl enable zabbix-server
服务器已经设置并连接到数据库。现在让我们设置 web 前端。
步骤 4 — 配置 Zabbix Web 界面的设置
Web 界面让我们可以查看报告并添加我们想要监视的主机,但在使用它之前,它需要一些初始设置。打开浏览器,转到地址 http://your_zabbix_server_ip_address/zabbix/
。在第一个屏幕上,你会看到一个欢迎消息。点击 下一步 继续。
在下一个屏幕上,你会看到列出运行 Zabbix 所需的所有先决条件的表格。
!先决条件
这个表格中的所有值都必须是 OK,因此请验证它们。确保向下滚动并查看所有的先决条件。一旦验证了一切都准备就绪,点击 下一步 继续。
下一个屏幕会要求输入数据库连接信息。
!数据库连接
我们告诉 Zabbix 服务器关于我们的数据库,但是 Zabbix web 界面也需要访问数据库来管理主机和读取数据。因此,请输入在步骤 2 中配置的 MySQL 凭据,然后点击 下一步 继续。
在下一个屏幕上,你可以保留选项的默认值。
!Zabbix 服务器详情
名称 是可选的;如果你有多个监控服务器,它在 web 界面中用于区分一个服务器和另一个服务器。点击 下一步 继续。
下一个屏幕将显示预安装摘要,以便你确认一切都是正确的。
!摘要
点击 下一步 继续到最后一个屏幕。
Web 界面设置完成!这个过程创建了配置文件 /usr/share/zabbix/conf/zabbix.conf.php
,你可以备份并在将来使用。点击 完成 进入登录界面。默认用户是 Admin,密码是 zabbix。
在我们登录之前,让我们在另一个服务器上设置 Zabbix 代理。
步骤 5 — 安装和配置 Zabbix 代理
现在我们需要配置将监控数据发送到 Zabbix 服务器的代理软件。
登录到第二台服务器,我们将其称为“被监控服务器”。
[本地环境] ssh sammy@your_monitored_server_ip_address
然后,就像在 Zabbix 服务器上一样,运行以下命令安装存储库配置包:
[第二台服务器环境] wget http://repo.zabbix.com/zabbix/3.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.2-1+xenial_all.deb sudo dpkg -i zabbix-release_3.2-1+xenial_all.deb
接下来,更新软件包索引:
[第二台服务器环境] sudo apt-get update
然后安装 Zabbix 代理:
[第二台服务器环境] sudo apt-get install zabbix-agent
虽然 Zabbix 支持基于证书的加密,但设置证书颁发机构超出了本教程的范围,但我们可以使用预共享密钥(PSK)来保护服务器和代理之间的连接。
首先,生成一个 PSK:
[第二台服务器环境] sudo sh -c "openssl rand -hex 32 > /etc/zabbix/zabbix_agentd.psk"
显示密钥,以便您可以将其复制到其他地方。您将需要它来配置主机。
[第二台服务器环境] cat /etc/zabbix/zabbix_agentd.psk
密钥看起来像这样:
cd12686e166a80aa09a227ae5f97834eaa3d5ae686d2ae39590f17ef85dd6de5
现在编辑 Zabbix 代理设置,以建立其与 Zabbix 服务器的安全连接。在文本编辑器中打开代理配置文件:
[第二台服务器环境] sudo nano /etc/zabbix/zabbix_agentd.conf
该文件中的每个设置都通过文件中的信息性注释进行了文档化,但您只需要编辑其中的一些设置。
首先,您需要编辑 Zabbix 服务器的 IP 地址。找到以下部分:
### 选项: Server # 逗号分隔的 Zabbix 服务器的 IP 地址(或主机名)列表。 # 只有列在此处的主机才会接受传入连接。 # 如果启用了 IPv6 支持,则 '127.0.0.1'、'::127.0.0.1'、'::ffff:127.0.0.1' 被视为相等。 # # 必填: 否 # 默认值: # Server= Server=127.0.0.1
将默认值更改为您的 Zabbix 服务器的 IP:
Server=your_zabbix_server_ip_address
接下来,找到配置与 Zabbix 服务器的安全连接并启用预共享密钥支持的部分。找到 TSLConnect
部分,如下所示:
### 选项: TLSConnect # 代理应如何连接到服务器或代理。用于主动检查。 # 只能指定一个值: # unencrypted - 不加密连接 # psk - 使用 TLS 和预共享密钥连接 # cert - 使用 TLS 和证书连接 # # 必填: 是,如果定义了 TLS 证书或 PSK 参数(即使对于 'unencrypted' 连接也是如此) # 默认值: # TLSConnect=unencrypted
然后添加此行以配置预共享密钥支持:
TLSConnect=psk
接下来,找到 TLSAccept
部分,如下所示:
### 选项: TLSAccept # 接受哪些传入连接。 # 可以指定多个值,用逗号分隔: # unencrypted - 接受未加密的连接 # psk - 接受使用 TLS 和预共享密钥保护的连接 # cert - 接受使用 TLS 和证书保护的连接 # # 必填: 是,如果定义了 TLS 证书或 PSK 参数(即使对于 'unencrypted' 连接也是如此) # 默认值: # TLSAccept=unencrypted
通过添加此行配置传入连接以支持预共享密钥:
TLSAccept=psk
接下来,找到 TLSPSKIdentity
部分,如下所示:
### 选项: TLSPSKIdentity # 用于标识预共享密钥的唯一、区分大小写的字符串。 # # 必填: 否 # 默认值: # TLSPSKIdentity=
通过添加此行选择一个唯一的名称来标识您的预共享密钥:
TLSPSKIdentity=PSK 001
当您通过 Zabbix Web 界面添加主机时,您将使用此作为PSK ID。
然后设置指向您先前创建的预共享密钥的选项。找到 TLSPSKFile
选项:
### 选项:TLSPSKFile # 包含预共享密钥的文件的完整路径名。 # # 强制性:否 # 默认值: # TLSPSKFile=
添加以下行以将 Zabbix 代理指向您创建的 PSK 文件:
TLSPSKFile=/etc/zabbix/zabbix_agentd.psk
保存并关闭文件。现在您可以启动 Zabbix 代理并设置其在启动时启动:
[环境 第二步] sudo systemctl start zabbix-agent sudo systemctl enable zabbix-agent
为了确保,检查 Zabbix 代理是否正常运行:
[环境 第二步] sudo systemctl status zabbix-agent
您将看到以下状态,表示代理正在运行:
● zabbix-agent.service - Zabbix Agent Loaded: loaded (/lib/systemd/system/zabbix-agent.service; disabled; vendor preset: enabled) Active: active (running) since Thu 2017-06-08 08:33:52 UTC; 4s ago Process: 18185 ExecStart=/usr/sbin/zabbix_agentd -c $CONFFILE (code=exited, status=0/SUCCESS) ...
我们的代理现在已准备好向 Zabbix 服务器发送数据。但是,为了使用它,我们必须从服务器的 Web 控制台链接到它。
步骤 6 — 将新主机添加到 Zabbix 服务器
在要监视的服务器上安装代理只是过程的一半。我们要监视的每个主机都需要在 Zabbix 服务器上注册,我们可以通过 Web 界面完成。
通过导航到地址 http://your_zabbix_server_ip_address/zabbix/
登录到 Zabbix 服务器的 Web 界面。
!Zabbix 登录界面
登录后,单击 Configuration,然后单击顶部导航栏中的 Hosts。然后单击屏幕右上角的 Create host 按钮。这将打开主机配置页面。
!创建主机
调整 Host name 和 IP ADDRESS 以反映客户端机器的主机名和 IP 地址。然后通过从列表中选择一个组或创建自己的组来将主机添加到组中。主机可以在多个组中。Linux Servers 组是一个不错的默认选择。添加组后,单击 Templates 选项卡。
!向主机添加模板
在 Search 字段中键入 Template OS Linux
,然后单击 Add 将此模板添加到主机。
接下来,转到 Encryption 选项卡。选择 PSK 作为 Connections to host 和 Connections from host 的值。然后将 PSK identity 设置为 PSK 001
,这是我们之前配置的 Zabbix 代理的 TLSPSKIdentity 设置的值。然后将 PSK 值设置为您在代理机器上存储的密钥,即文件 /etc/zabbix/zabbix_agentd.psk
中的密钥。
!设置加密。
最后,单击表单底部的 Add 按钮创建主机。
您将看到新主机,绿色标签表示一切正常工作,连接已加密。
!Zabbix 显示您的新主机。
几秒钟后,您可以导航到 Monitoring,然后单击 Latest data 查看来自代理的数据。
为了确保一切正常运行,请关闭您要监视的服务器,以便您可以看到 Zabbix 如何向您发出问题警报。一旦您要监视的服务器脱机,您将在主仪表板上看到警告:
!Zabbix 显示有关脱机主机的警告。
如果您有其他需要监视的服务器,请登录到每个主机,安装 Zabbix 代理,生成 PSK,配置代理,并按照添加第一个主机的相同步骤将主机添加到 Web 界面。
结论
在本教程中,您学会了如何设置一个简单且安全的监控解决方案,这将帮助您监视服务器的状态。它现在可以警告您有问题,并且您有机会根据获取的数据绘制一些图表,以便您可以对其进行分析并做出相应的计划。