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

avatar
作者
筋斗云
阅读量:0

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站

简介

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 nameIP ADDRESS 以反映客户端机器的主机名和 IP 地址。然后通过从列表中选择一个组或创建自己的组来将主机添加到组中。主机可以在多个组中。Linux Servers 组是一个不错的默认选择。添加组后,单击 Templates 选项卡。

!向主机添加模板

Search 字段中键入 Template OS Linux,然后单击 Add 将此模板添加到主机。

接下来,转到 Encryption 选项卡。选择 PSK 作为 Connections to hostConnections from host 的值。然后将 PSK identity 设置为 PSK 001,这是我们之前配置的 Zabbix 代理的 TLSPSKIdentity 设置的值。然后将 PSK 值设置为您在代理机器上存储的密钥,即文件 /etc/zabbix/zabbix_agentd.psk 中的密钥。

!设置加密。

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

您将看到新主机,绿色标签表示一切正常工作,连接已加密。

!Zabbix 显示您的新主机。

几秒钟后,您可以导航到 Monitoring,然后单击 Latest data 查看来自代理的数据。

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

!Zabbix 显示有关脱机主机的警告。

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

结论

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

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!