如何在 Ubuntu 18.04 上安装和配置 Zabbix 以安全监控远程服务器

作者选择了 开源倡议作为 写给捐赠计划的一部分接受捐赠。

介绍

Zabbix是网络和应用程序的开源监控软件,它提供来自服务器,虚拟机,网络设备和Web应用程序收集的数千个指标的实时监控,这些指标可以帮助您确定您的IT基础设施的当前状况,并在客户投诉之前检测硬件或软件组件的问题。

Zabbix 使用多种选项来收集指标,包括无代理用户服务监控和客户端服务器架构。 为了收集服务器指标,它使用被监控的客户端上的一个小代理来收集数据并将其发送到 Zabbix 服务器。

Zabbix 服务器将其数据存储在由 MySQL, PostgreSQLOracle提供的关系数据库中,您还可以将历史数据存储在 nosql 数据库中,例如 ElasticsearchTimescaleDB

在本教程中,您将配置两个机器. 一个将被配置为服务器,另一个将被配置为客户端,您将监控。

前提条件

要遵循本教程,您将需要:

  • 两个 Ubuntu 18.04 服务器是按照 Ubuntu 18.04 初始服务器设置指南设置的,其中包括具有 sudo 特权的非根用户和与 `ufw’ 配置的防火墙。在一个服务器上,您将安装 Zabbix;本教程将称之为 Zabbix 服务器 。它将监控您的第二个服务器;这个第二个服务器将被称为 第二 Ubuntu 服务器
  • 运行 Zabbix 的服务器需要安装 Apache、MySQL 和 PHP。

此外,由于 Zabbix 服务器用于访问有关您的基础设施的宝贵信息,您不希望未经授权的用户访问,所以通过安装 TLS/SSL 证书来保护您的服务器很重要。

第1步:安装Zabbix服务器

首先,您需要在您安装 MySQL、Apache 和 PHP 的服务器上安装 Zabbix。

1[environment local]
2ssh sammy@zabbix_server_ip_address

Zabbix在Ubuntu的包管理器中可用,但它已经过时,所以使用官方 Zabbix 存储库来安装最新的稳定版本。

1wget https://repo.zabbix.com/zabbix/4.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.2-1+bionic_all.deb
2sudo dpkg -i zabbix-release_4.2-1+bionic_all.deb

您将看到以下结果:

1[secondary_label Output]
2Selecting previously unselected package zabbix-release.
3(Reading database ... 61483 files and directories currently installed.)
4Preparing to unpack zabbix-release_4.2-1+bionic_all.deb ...
5Unpacking zabbix-release (4.2-1+bionicc) ...
6Setting up zabbix-release (4.2-1+bionicc) ...

更新包索引,以便包含新的存储库:

1sudo apt update

然后安装具有MySQL数据库支持的Zabbix服务器和Web前端:

1sudo apt install zabbix-server-mysql zabbix-frontend-php

此外,安装 Zabbix 代理,这将允许您收集有关 Zabbix 服务器状态的数据。

1sudo apt install zabbix-agent

在您可以使用 Zabbix 之前,您必须设置一个数据库来存储 Zabbix 服务器将从其代理人那里收集的数据。

第 2 步:为 Zabbix 配置 MySQL 数据库

您需要创建一个新的MySQL数据库,并填充一些基本信息,以使其适合Zabbix。

登录 MySQL 作为 root 用户,使用您在 MySQL 服务器安装过程中设置的 ** root** 密码:

1mysql -uroot -p

创建具有 UTF-8 字符支持的 Zabbix 数据库:

1create database zabbix character set utf8 collate utf8_bin;

然后创建一个用户,Zabbix服务器将使用,给它访问新数据库,并为用户设置密码:

1grant all privileges on zabbix.* to zabbix@localhost identified by 'your_zabbix_mysql_password';

然后应用这些新许可:

1flush privileges;

这关心用户和数据库. 退出数据库控制台。

1quit;

接下来你必须导入最初的方案和数据. Zabbix 安装为你提供了设置此功能的文件。

运行以下命令来设置方案并将数据导入到zabbix数据库中. 使用zcat,因为文件中的数据已被压缩。

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

输入您被提示时配置的zabbix MySQL 用户的密码。

如果您看到错误 ERROR 1045 (28000: Access denied for userzabbix@'localhost' (使用密码:YES),请确保您使用了 *zabbix *用户的密码,而不是 root 用户。

为了让 Zabbix 服务器使用此数据库,您需要在 Zabbix 服务器配置文件中设置数据库密码。

1sudo nano /etc/zabbix/zabbix_server.conf

查找文件的以下部分:

1[label /etc/zabbix/zabbix_server.conf]
2### Option: DBPassword                           
3#       Database password. Ignored for SQLite.   
4#       Comment this line if no password is used.
5#                                                
6# Mandatory: no                                  
7# Default:                                       
8# DBPassword=

文件中的这些评论解释了如何连接到数据库. 您需要将文件中的DBPassword值设置为您的数据库用户的密码。

1[label /etc/zabbix/zabbix_server.conf]
2...
3DBPassword=your_zabbix_mysql_password

保存并关闭zabbix_server.conf,按CTRL+X,然后按Y,然后按ENTER,如果使用nano

接下来,您将对您的 PHP 设置进行一些修改,以便 Zabbix 网页接口正常工作。

第3步:为Zabbix配置PHP

Zabbix Web 接口是用 PHP 编写的,需要一些特殊的 PHP 服务器设置。 Zabbix 安装过程创建了一个包含这些设置的 Apache 配置文件,位于目录 /etc/zabbix 中,由 Apache 自动加载。

1sudo nano /etc/zabbix/apache.conf

该文件包含满足 Zabbix Web 界面所需的 PHP 设置,但默认情况下,时区设置被评论。 为了确保 Zabbix 使用正确的时间,您需要设置适当的时区。

 1[label /etc/zabbix/apache.conf]
 2...
 3<IfModule mod_php7.c>
 4    php_value max_execution_time 300
 5    php_value memory_limit 128M
 6    php_value post_max_size 16M
 7    php_value upload_max_filesize 2M
 8    php_value max_input_time 300
 9    php_value always_populate_raw_post_data -1
10    # php_value date.timezone Europe/Riga
11</IfModule>

删除在上一代码块中突出的时区行,并将其更改为您的时区。 您可以使用此 支持的时区列表来找到适合您的时区。

现在重新启动 Apache 以应用这些新设置。

1sudo systemctl restart apache2

您现在可以启动 Zabbix 服务器。

1sudo systemctl start zabbix-server

然后检查 Zabbix 服务器是否正常运行:

1sudo systemctl status zabbix-server

您将看到以下状态:

1[secondary_label Output]
2 zabbix-server.service - Zabbix Server
3   Loaded: loaded (/lib/systemd/system/zabbix-server.service; disabled; vendor preset: enabled)
4   Active: active (running) since Fri 2019-04-05 08:50:54 UTC; 3s ago
5  Process: 16497 ExecStart=/usr/sbin/zabbix_server -c $CONFFILE (code=exited, status=0/SUCCESS)
6  ...

最后,允许服务器在启动时间启动:

1sudo systemctl enable zabbix-server

服务器设置并连接到数据库. 接下来,设置 Web 前端。

<$>[注] 注: 如前提在前提部分中所述,建议您在您的服务器上启用SSL/TLS。 您可以遵循 本教程现在获得免费的SSL证书为Apache在Ubuntu 18.04. 获得您的SSL/TLS证书后,您可以回来完成本教程。

步骤 4 — 配置 Zabbix Web 接口的设置

网页界面允许您查看报告并添加您想要监控的主机,但它需要一些初始设置才能使用它。 启动浏览器并前往地址 http://zabbix_server_name/zabbix/。 在第一个屏幕上,您将看到一个欢迎消息。 点击 下一步 继续。

在下一个屏幕上,您将看到列出运行Zabbix的所有前提条件的表。

Prerequisites

此表中的所有值都必须是 OK ,所以请确认它们是否存在. 请务必向下滚动并查看所有前提条件。

下一个屏幕要求数据库连接信息。

DB Connection

您告诉 Zabbix 服务器您的数据库,但 Zabbix 网页接口还需要访问数据库以管理主机和读取数据。

在下一个屏幕上,您可以将选项留在其默认值。

Zabbix Server Details

Name 是可选的;它用于在 Web 界面中将一个服务器与另一个服务器区分开来,如果您有多个监控服务器。

下一个屏幕将显示预安装总结,这样你就可以确认一切都是正确的。

Summary

点击下一步继续到最后的屏幕。

网页界面设置完成了! 此过程创建了配置文件 /usr/share/zabbix/conf/zabbix.conf.php,您可以在未来备份并使用。 点击 Finish 进入登录屏幕。 默认用户是 ** Admin**,密码是 ** zabbix**。

在登录之前,在你的第二个Ubuntu服务器上设置Zabbix代理。

第 5 步:安装和配置 Zabbix 代理

现在您需要配置将监控数据发送到 Zabbix 服务器的代理软件。

登录到第二个Ubuntu服务器:

1[environment local]
2ssh sammy@second_ubuntu_server_ip_address

然后,就像在 Zabbix 服务器上一样,运行以下命令来安装存储库配置包:

1[environment second]
2wget https://repo.zabbix.com/zabbix/4.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.2-1+bionic_all.deb
3sudo dpkg -i zabbix-release_4.2-1+bionic_all.deb

接下来,更新包索引:

1[environment second]
2sudo apt update

然后安装 Zabbix 代理:

1[environment second]
2sudo apt install zabbix-agent

虽然 Zabbix 支持基于证书的加密,但设置证书权限超出了本教程的范围,但您可以使用预共享密钥(PSK)来确保服务器和代理之间的连接。

首先,创建一个PSK:

1[environment second]
2sudo sh -c "openssl rand -hex 32 > /etc/zabbix/zabbix_agentd.psk"

显示密钥,以便您可以在某个地方复制它. 您将需要它来配置主机。

1[environment second]
2cat /etc/zabbix/zabbix_agentd.psk

钥匙将看起来像这样:

1[secondary_label Output]
212eb854dea38ac9ee7d1ded2d74cee6262b0a56710f6946f7913d674ab82cdd4

现在,编辑 Zabbix 代理设置以建立与 Zabbix 服务器的安全连接。

1[environment second]
2sudo nano /etc/zabbix/zabbix_agentd.conf

该文件中的每个设置都通过信息性评论记录在整个文件中,但您只需要编辑其中一些。

首先,您需要编辑 Zabbix 服务器的 IP 地址。

 1[label /etc/zabbix/zabbix_agentd.conf]
 2...
 3### Option: Server
 4#       List of comma delimited IP addresses (or hostnames) of Zabbix servers.
 5#       Incoming connections will be accepted only from the hosts listed here.
 6#       If IPv6 support is enabled then '127.0.0.1', '::127.0.0.1', '::ffff:127.0.0.1' are treated equally.
 7#
 8# Mandatory: no
 9# Default:
10# Server=
11
12Server=127.0.0.1
13...

将默认值更改为您的 Zabbix 服务器的 IP:

1[label /etc/zabbix/zabbix_agentd.conf]
2...
3Server=zabbix_server_ip_address
4...

接下来,找到配置与 Zabbix 服务器安全连接的部分,并启用预共享密钥支持。

 1[label /etc/zabbix/zabbix_agentd.conf]
 2...
 3### Option: TLSConnect
 4#       How the agent should connect to server or proxy. Used for active checks.
 5#       Only one value can be specified:
 6#               unencrypted - connect without encryption
 7#               psk         - connect using TLS and a pre-shared key
 8#               cert        - connect using TLS and a certificate
 9#
10# Mandatory: yes, if TLS certificate or PSK parameters are defined (even for 'unencrypted' connection)
11# Default:
12# TLSConnect=unencrypted
13...

然后添加此行以配置预共享密钥支持:

1[label /etc/zabbix/zabbix_agentd.conf]
2...
3TLSConnect=psk
4...

接下来,找到TLSAccept部分,它看起来像这样:

 1[label /etc/zabbix/zabbix_agentd.conf]
 2...
 3### Option: TLSAccept
 4#       What incoming connections to accept.
 5#       Multiple values can be specified, separated by comma:
 6#               unencrypted - accept connections without encryption
 7#               psk         - accept connections secured with TLS and a pre-shared key
 8#               cert        - accept connections secured with TLS and a certificate
 9#
10# Mandatory: yes, if TLS certificate or PSK parameters are defined (even for 'unencrypted' connection)
11# Default:
12# TLSAccept=unencrypted
13...

通过添加此行来配置接入连接以支持预共享密钥:

1[label /etc/zabbix/zabbix_agentd.conf]
2...
3TLSAccept=psk
4...

接下来,找到TLSPSKIidentity部分,它看起来像这样:

1[label /etc/zabbix/zabbix_agentd.conf]
2...
3### Option: TLSPSKIdentity
4#       Unique, case sensitive string used to identify the pre-shared key.
5#
6# Mandatory: no
7# Default:
8# TLSPSKIdentity=
9...

选择一个独特的名称来识别您的预共享密钥,通过添加此行:

1[label /etc/zabbix/zabbix_agentd.conf]
2...
3TLSPSKIdentity=PSK 001
4...

当您通过 Zabbix Web 界面添加主机时,您将使用此作为 PSK ID

然后设置指向您先前创建的预共享密钥的选项. 查找TLSPSKFile选项:

1[label /etc/zabbix/zabbix_agentd.conf]
2...
3### Option: TLSPSKFile
4#       Full pathname of a file containing the pre-shared key.
5#
6# Mandatory: no
7# Default:
8# TLSPSKFile=
9...

添加此行,将 Zabbix 代理指向您创建的 PSK 文件:

1[label /etc/zabbix/zabbix_agentd.conf]
2...
3TLSPSKFile=/etc/zabbix/zabbix_agentd.psk
4...

现在您可以重新启动 Zabbix 代理,并将其设置为在启动时启动:

1[environment second]
2sudo systemctl restart zabbix-agent
3sudo systemctl enable zabbix-agent

要得到良好的测量,请检查 Zabbix 代理是否正常运行:

1[environment second]
2sudo systemctl status zabbix-agent

您将看到以下状态,表示代理正在运行:

1[secondary_label Output]
2 zabbix-agent.service - Zabbix Agent
3   Loaded: loaded (/lib/systemd/system/zabbix-agent.service; enabled; vendor preset: enabled)
4   Active: active (running) since Fri 2019-04-05 09:03:04 UTC; 1s ago
5  ...

代理将在端口10050上听取来自服务器的连接. 配置 UFW 以允许连接到该端口:

1[environment second]
2sudo ufw allow 10050/tcp

您可以了解有关 UFW 的更多信息,请参阅 如何在 Ubuntu 18.04 上设置使用 UFW 的防火墙

您的代理现在已经准备好将数据发送到 Zabbix 服务器,但要使用它,您必须从服务器的 Web 控制台连接到该服务器。

步骤 6 — 将新主机添加到 Zabbix 服务器

您想要监控的服务器上安装一个代理只是半个过程,您想要监控的每个主机都需要在 Zabbix 服务器上注册,您可以通过 Web 界面进行注册。

登录到 Zabbix 服务器的 Web 界面,通过导航到地址 http://zabbix_server_name/zabbix/

The Zabbix login screen

登录后,点击配置,然后点击主机在顶部导航栏中,然后点击屏幕右上角的创建主机按钮。

Creating a host

调整 主机名称 和 ** IP 地址** 以反映您第二个 Ubuntu 服务器的主机名称和 IP 地址,然后将主机添加到一个组中. 您可以选择一个现有组,例如 ** Linux 服务器** ,或创建自己的组。

添加组后,单击 ** 模板** 选项卡。

Adding a template to the host

搜索字段中键入Linux 模板,然后单击添加来添加这个模板到主机。

接下来,导航到加密选项卡。选择连接到主机来自主机的连接PSK选项,然后将PSK ID设置为PSK 001,这是您先前配置的Zabbix代理程序的TLSPSKIidentity设置值,然后将PSK值设置为您为Zabbix代理程序生成的密钥。

Setting up the encryption

最后,点击表单底部的添加按钮来创建主机。

您将在列表中看到您的新主机. 等待一分钟,然后重新加载页面,以查看绿色标签,表明一切正常运行,连接是加密的。

Zabbix shows your new host

如果你有额外的服务器,你需要监控,登录每个主机,安装Zabbix代理,生成PSK,配置代理,并将主机添加到Web界面,按照您添加第一个主机的相同步骤。

Zabbix 服务器现在正在监控您的第二个 Ubuntu 服务器,现在,设置电子邮件通知以通知您有关问题。

步骤 7 – 配置电子邮件通知

Zabbix 自动支持多种类型的通知:电子邮件、Jabber(https://www.jabber.org/),SMS等您还可以使用替代的通知方法,如Telegram或Slack。

最简单的通信方法是电子邮件,本教程将为此类型的媒体配置通知。

点击 管理 ,然后点击 媒体类型 在顶部的导航栏中. 您将看到所有媒体类型的列表。

根据您的电子邮件服务提供的设置调整 SMTP 选项. 本教程使用 Gmail 的 SMTP 功能来设置电子邮件通知;如果您想了解有关此设置的更多信息,请参阅 如何使用 Google 的 SMTP 服务器

<$>[注] 注: 如果您使用Gmail的2步验证,则需要为Zabbix生成应用密码.您不需要记住它,您只需要在设置过程中输入应用密码一次。

您还可以选择消息格式 - HTML 或简单文本. 最后,点击表单底部的 Update 按钮来更新电子邮件参数。

Setting up email

现在,创建一个新用户. 点击 Administration ,然后点击 Users 在顶部导航栏中. 您将看到用户列表. 然后点击屏幕右上角的 Create user 按钮。

Creating a user

Alias字段中输入新的用户名,然后设置一个新的密码,然后将用户添加到管理员组中,在Groups字段中输入Zabbix administrators,然后从建议列表中选择。

一旦你添加了组,点击 ** 媒体** 选项卡,然后点击 ** 添加 ** 突出链接。

Adding an email

发送到**字段中输入您的电子邮件地址. 您可以将其余选项留在默认值中。 点击底部的添加** 按钮来提交。

现在导航到允许选项卡,从用户类型滚动菜单中选择Zabbix Super Admin选项卡。

最后,点击表单底部的添加按钮来创建用户。

现在你需要启用通知. 点击 ** 配置** 选项卡,然后在顶部导航栏中的 ** 行动** . 您将看到一个预先配置的操作,负责向所有 Zabbix 管理员发送通知。 您可以通过点击其名称来审查和更改设置。 对于本教程的目的,使用默认参数。 要启用该操作,请点击红色 ** 禁用** 链接在 ** 状态** 列中。

现在你已经准备好接收警报了,下一步,你将生成一个来测试你的通知设置。

步骤 8 – 生成测试警报

在此步骤中,您将生成测试警报,以确保一切都连接。默认情况下,Zabbix会跟踪您服务器上空缺的磁盘空间。它会自动检测所有磁盘安装,并添加相应的检查。

创建一个足够大的临时文件,触发Zabbix的文件系统使用警告. 要做到这一点,如果您尚未连接,请登录您的第二个Ubuntu服务器。

1[environment local]
2ssh sammy@second_ubuntu_server_ip_address

接下来,确定你在服务器上有多少可用空间. 你可以使用df命令来找出:

1[environment second]
2df -h

命令df将报告您的文件系统的磁盘空间使用量,而-h将使输出可人读。

1[secondary_label Output]
2Filesystem Size Used Avail Use% Mounted on
3/dev/vda1 25G 1.2G 23G 5% /

在这种情况下,可用空间为 23GB . 您的可用空间可能有所不同。

使用fallocate命令,允许您预分配或不分配文件空间,以创建占用可用的磁盘空间超过80%的文件。

1[environment second]
2fallocate -l 20G /tmp/temp.img

大约一个小时后,Zabbix 会发出关于可用磁盘空间的通知,并将执行您配置的操作,发送通知消息。

1[secondary_label Output]
2Problem started at 10:37:54 on 2019.04.05
3Problem name: Free disk space is less than 20% on volume /
4Host: Second Ubuntu server
5Severity: Warning
6
7Original problem ID: 34

您还可以导航到 ** 监控** 选项卡,然后导航到 ** 仪表板** 以查看通知及其细节。

Main dashboard

现在你知道警报正在工作,删除你创建的临时文件,这样你就可以恢复你的磁盘空间:

1[environment second]
2rm -f /tmp/temp.img

一分钟后,Zabbix会发送恢复消息,警报将从主仪表板中消失。

结论

在本教程中,您了解了如何设置一个简单而安全的监控解决方案,这将有助于您监控服务器的状态。

有关设置监控基础设施的更多信息,请参阅 如何在 Ubuntu 18.04 上安装 Elasticsearch、Logstash 和 Kibana (Elastic Stack)如何在 Ubuntu 18.04 上使用 Metricbeat 收集基础设施指标

Published At
Categories with 技术
comments powered by Disqus