介绍
Zabbix是网络和应用程序的开源监控软件,它提供来自服务器,虚拟机,网络设备和Web应用程序收集的数千个指标的实时监控,这些指标可以帮助您确定您的IT基础设施的当前状况,并在客户投诉之前检测硬件或软件组件的问题。
Zabbix 使用多种选项来收集指标,包括无代理用户服务监控和客户端服务器架构。 为了收集服务器指标,它使用被监控的客户端上的一个小代理来收集数据并将其发送到 Zabbix 服务器。
Zabbix 服务器将其数据存储在由 MySQL, PostgreSQL或 Oracle提供的关系数据库中,您还可以将历史数据存储在 nosql 数据库中,例如 Elasticsearch和 TimescaleDB。
在本教程中,您将配置两个机器. 一个将被配置为服务器,另一个将被配置为客户端,您将监控。
前提条件
要遵循本教程,您将需要:
- 两个 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 user
zabbix@'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的所有前提条件的表。
此表中的所有值都必须是 OK ,所以请确认它们是否存在. 请务必向下滚动并查看所有前提条件。
下一个屏幕要求数据库连接信息。
您告诉 Zabbix 服务器您的数据库,但 Zabbix 网页接口还需要访问数据库以管理主机和读取数据。
在下一个屏幕上,您可以将选项留在其默认值。
Name 是可选的;它用于在 Web 界面中将一个服务器与另一个服务器区分开来,如果您有多个监控服务器。
下一个屏幕将显示预安装总结,这样你就可以确认一切都是正确的。
点击下一步
继续到最后的屏幕。
网页界面设置完成了! 此过程创建了配置文件 /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/
。
登录后,点击配置
,然后点击主机
在顶部导航栏中,然后点击屏幕右上角的创建主机
按钮。
调整 主机名称 和 ** IP 地址** 以反映您第二个 Ubuntu 服务器的主机名称和 IP 地址,然后将主机添加到一个组中. 您可以选择一个现有组,例如 ** Linux 服务器** ,或创建自己的组。
添加组后,单击 ** 模板** 选项卡。
在搜索
字段中键入Linux 模板
,然后单击添加
来添加这个模板到主机。
接下来,导航到加密
选项卡。选择连接到主机
和来自主机的连接
的PSK
选项,然后将PSK ID
设置为PSK 001
,这是您先前配置的Zabbix代理程序的TLSPSKIidentity
设置值,然后将PSK
值设置为您为Zabbix代理程序生成的密钥。
最后,点击表单底部的添加
按钮来创建主机。
您将在列表中看到您的新主机. 等待一分钟,然后重新加载页面,以查看绿色标签,表明一切正常运行,连接是加密的。
如果你有额外的服务器,你需要监控,登录每个主机,安装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 按钮来更新电子邮件参数。
现在,创建一个新用户. 点击 Administration ,然后点击 Users 在顶部导航栏中. 您将看到用户列表. 然后点击屏幕右上角的 Create user 按钮。
在Alias
字段中输入新的用户名,然后设置一个新的密码,然后将用户添加到管理员组中,在Groups
字段中输入Zabbix administrators
,然后从建议列表中选择。
一旦你添加了组,点击 ** 媒体** 选项卡,然后点击 ** 添加 ** 突出链接。
在发送到**
字段中输入您的电子邮件地址. 您可以将其余选项留在默认值中。 点击底部的添加**
按钮来提交。
现在导航到允许
选项卡,从用户类型
滚动菜单中选择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
您还可以导航到 ** 监控** 选项卡,然后导航到 ** 仪表板** 以查看通知及其细节。
现在你知道警报正在工作,删除你创建的临时文件,这样你就可以恢复你的磁盘空间:
1[environment second]
2rm -f /tmp/temp.img
一分钟后,Zabbix会发送恢复消息,警报将从主仪表板中消失。
结论
在本教程中,您了解了如何设置一个简单而安全的监控解决方案,这将有助于您监控服务器的状态。
有关设置监控基础设施的更多信息,请参阅 如何在 Ubuntu 18.04 上安装 Elasticsearch、Logstash 和 Kibana (Elastic Stack)和 如何在 Ubuntu 18.04 上使用 Metricbeat 收集基础设施指标。