如何在 Ubuntu 16.04 上安装和配置 Zabbix 以安全监控远程服务器如何在 Ubuntu 16.04 上安装和配置 Zabbix 以安全监控远程服务器如何在 Ubuntu 16.04 上安装和配置 Zabbix 以安全监控远程服务器如何在 Ubuntu 16.04 上安装和配置 Zabbix 以安全监控远程服务器
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

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

介绍

Zabbix 是用于网络和应用程序的开源监控软件。它提供对从服务器、虚拟机和任何其他类型的网络设备收集的数千个指标的实时监控。这些指标可以帮助您确定 IT 基础架构的当前运行状况,并在客户投诉之前检测到硬件或软件组件的问题。有用的信息存储在数据库中,因此您可以随着时间的推移分析数据并提高所提供服务的质量,或计划升级您的设备。

Zabbix 使用客户端-服务器架构,并在受监控的客户端上使用一个小型代理来收集数据并将其发送到 Zabbix 服务器。 Zabbix 版本 3 支持服务器和连接的客户端之间的加密通信,因此您的数据在不安全的网络上传输时受到保护。

Zabbix 服务器将其数据存储在由 MySQL、PostgreSQL 或 Oracle 提供支持的关系数据库中。它还提供了一个 Web 界面,以便您可以查看数据和配置系统设置。在本教程中,我们将配置两台机器。一个将配置为服务器,另一个将配置为您要监视的客户端。服务器将使用 MySQL 数据库记录监控数据,并使用 Apache 为 Web 界面提供服务。

先决条件

要学习本教程,您需要:

  • 两台 Ubuntu 16.04 服务器,每台服务器都配置了一个 sudo 非根用户。您可以按照这篇初始 Ubuntu 服务器设置文章进行设置。
  • 将运行 Zabbix 服务器的服务器需要安装 Apache、MySQL 和 PHP。按照本指南在您的其中一台服务器上配置它们。

第 1 步 — 安装 Zabbix 服务器

首先,我们需要在安装了 MySQL、Apache 和 PHP 的服务器上安装 Zabbix Server。在本教程中,我们将这台机器称为“Zabbix 服务器”。以非根用户身份登录这台机器:

  1. ssh sammy@your_zabbix_server_ip_address

在我们安装Zabbix之前,我们需要安装一些Zabbix需要的PHP模块。首先,更新系统的可用包列表:

  1. sudo apt-get update

然后安装 Zabbix 需要的 PHP 模块:

  1. 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

您将看到以下输出:

Output
Selecting previously unselected package zabbix-release. (Reading database ... 55276 files and directories currently installed.) Preparing to unpack zabbix-release_3.2-1+xenial_all.deb ... Unpacking zabbix-release (3.2-1+xenial) ... Setting up 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 数据库:

  1. create database zabbix character set utf8 collate utf8_bin;

然后创建 Zabbix 服务器将使用的用户,授予它访问新数据库的权限,并为该用户设置密码:

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

然后应用这些新权限:

  1. flush privileges;

这会照顾到用户和数据库。退出数据库控制台。

  1. 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 server使用这个数据库,需要在Zabbix server配置文件中设置数据库密码。在编辑器中打开配置文件:

sudo nano /etc/zabbix/zabbix_server.conf

查找文件的以下部分:

### Option: DBPassword                           
#       Database password. Ignored for SQLite.   
#       Comment this line if no password is used.
#                                                
# Mandatory: no                                  
# Default:                                       
# DBPassword=

文件中的这些注释解释了如何连接到数据库。我们需要将文件中的 DBPassword 值设置为数据库用户的密码。在这些注释下方添加此行以配置数据库:

DBPassword=your_zabbix_mysql_password

这会处理 Zabbix 服务器配置,但我们必须对 PHP 设置进行一些修改才能使 Zabbix Web 界面正常工作。

第 3 步 — 为 Zabbix 配置 PHP

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 server是否正常运行:

sudo systemctl status zabbix-server

您将看到以下状态:

Output
● 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) ...

最后,使服务器在启动时启动:

  1. sudo systemctl enable zabbix-server

服务器已设置并连接到数据库。现在让我们设置 Web 前端。

第 4 步 — 配置 Zabbix Web 界面的设置

Web 界面让我们可以查看报告并添加我们想要监控的主机,但在我们使用它之前需要进行一些初始设置。启动浏览器并转到地址 http://your_zabbix_server_ip_address/zabbix/。在第一个屏幕上,您会看到一条欢迎消息。单击下一步继续。

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

此表中的所有值都必须正确,因此请验证它们是否正确。请务必向下滚动并查看所有先决条件。确认一切准备就绪后,单击下一步继续。

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

我们告诉 Zabbix 服务器关于我们的数据库,但是 Zabbix Web 界面也需要访问数据库来管理主机和读取数据。因此,输入您在第 2 步中配置的 MySQL 凭据,然后单击下一步继续。

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

名称是可选的;它在 Web 界面中用于在您有多个监控服务器的情况下将一台服务器与另一台服务器区分开来。单击下一步继续。

下一个屏幕将显示预安装摘要,以便您确认一切正确。

单击“下一步”进入最后一个屏幕。

Web 界面设置完成!此过程会创建配置文件 /usr/share/zabbix/conf/zabbix.conf.php,您可以备份该文件以备将来使用。单击“完成”进入登录屏幕。默认用户为 Admin,密码为 zabbix。

在我们登录之前,让我们在我们的其他服务器上设置 Zabbix 代理。

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

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

登录到第二台服务器,我们将其称为“受监控服务器”。

  1. ssh sammy@your_monitored_server_ip_address

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

  1. wget http://repo.zabbix.com/zabbix/3.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.2-1+xenial_all.deb
  2. sudo dpkg -i zabbix-release_3.2-1+xenial_all.deb

接下来,更新包索引:

  1. sudo apt-get update

然后安装 Zabbix 代理:

  1. sudo apt-get install zabbix-agent

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

首先,生成一个 PSK:

  1. sudo sh -c "openssl rand -hex 32 > /etc/zabbix/zabbix_agentd.psk"

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

  1. cat /etc/zabbix/zabbix_agentd.psk

钥匙看起来像这样:

Output
cd12686e166a80aa09a227ae5f97834eaa3d5ae686d2ae39590f17ef85dd6de5

现在编辑 Zabbix 代理设置以设置其与 Zabbix 服务器的安全连接。在文本编辑器中打开代理配置文件:

  1. sudo nano /etc/zabbix/zabbix_agentd.conf

此文件中的每个设置都通过整个文件中的信息性注释进行了记录,但您只需编辑其中的一部分。

首先,您必须编辑 Zabbix 服务器的 IP 地址。找到以下部分:

### Option: Server
#       List of comma delimited IP addresses (or hostnames) of Zabbix servers.
#       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.
#
# Mandatory: no
# Default:
# Server=

Server=127.0.0.1

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

Server=your_zabbix_server_ip_address

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

### 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=unencrypted

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

TLSConnect=psk

接下来,找到 TLSAccept 部分,如下所示:

### 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=unencrypted

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

TLSAccept=psk

接下来,找到 TLSPSKIdentity 部分,如下所示:

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

通过添加以下行选择一个唯一的名称来标识您的预共享密钥:

TLSPSKIdentity=PSK 001

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

然后设置指向您之前创建的预共享密钥的选项。找到 TLSPSKFile 选项:

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

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

TLSPSKFile=/etc/zabbix/zabbix_agentd.psk

保存并关闭文件。现在您可以启动 Zabbix 代理并将其设置为在启动时启动:

  1. sudo systemctl start zabbix-agent
  2. sudo systemctl enable zabbix-agent

为了更好地衡量,请检查 Zabbix 代理是否正常运行:

  1. sudo systemctl status zabbix-agent

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

Output
● 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 控制台链接到它。

笔记:

  1. sudo ufw allow 10050/tcp

您可以在如何在 Ubuntu 16.04 上使用 UFW 设置防火墙中了解有关 UFW 的更多信息。

第 6 步 — 将新主机添加到 Zabbix Server

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

通过导航到地址 http://your_zabbix_server_ip_address/zabbix/ 登录到 Zabbix Server Web 界面。

登录后,单击配置,然后单击顶部导航栏中的主机。然后单击屏幕右上角的创建主机按钮。这将打开主机配置页面。

调整主机名和 IP 地址以反映客户端计算机的主机名和 IP 地址。然后通过从列表中选择一个组或创建您自己的组来将主机添加到组中。主机可以在多个组中。 Linux 服务器组是一个很好的默认选择。添加组后,单击“模板”选项卡。

在搜索字段中键入 Template OS Linux,然后单击添加以将此模板添加到主机。

接下来,导航到加密选项卡。为与主机的连接和来自主机的连接选择 PSK。然后将PSK identity设置为PSK 001,也就是我们之前配置的Zabbix agent的TLSPSKIdentity设置的值。然后设置

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

您会看到带有绿色标签的新主机,表明一切正常并且连接已加密。

几秒钟后,您可以导航到“监控”,然后导航到“最新数据”以查看来自您的代理的数据。

为确保一切正常,请关闭受监控的服务器,以便您可以查看 Zabbix 如何向您发出问题警报。一旦您的受监控服务器脱机,您将在主仪表板上看到警告:

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

结论

在本教程中,您学习了如何设置一个简单且安全的监控解决方案,以帮助您监控服务器的状态。它现在可以警告您出现问题,并且您有机会根据获得的数据绘制一些图表,以便您可以对其进行分析并制定相应的计划。

©2015-2025 艾丽卡 support@alaica.com