介绍
Zabbix是网络和应用程序的开源监控软件,它提供来自服务器,虚拟机,网络设备和Web应用程序收集的数千个指标的实时监控,这些指标可以帮助您确定您的IT基础设施的当前状况,并在客户投诉之前检测硬件或软件组件的问题。
Zabbix 使用多种选项来收集指标,包括无代理用户服务监控和客户端服务器架构。 为了收集服务器指标,它使用被监控的客户端上的一个小代理来收集数据并将其发送到 Zabbix 服务器。
Zabbix 服务器将其数据存储在由 MySQL, PostgreSQL或 Oracle提供的关系数据库中,您还可以将历史数据存储在 nosql 数据库中,例如 Elasticsearch和 TimescaleDB。
在本教程中,您将配置两个机器. 一个将被配置为服务器,另一个将被配置为客户端,您将监控。
前提条件
要遵循本教程,您将需要:
- 两个 CentOS 7 服务器根据 初始服务器设置与 CentOS 7设置,包括一个具有 sudo 特权的非根用户和一个 防火墙。在一个服务器上,您将安装 Zabbix;本教程将称此为 Zabbix 服务器 。它将监控您的第二个服务器;这个第二个服务器将被称为 第二个 CentOS 服务器 。
- Zabbix 服务器需要安装 Apache、MySQL 和 PHP。
<$>[注] 注 : CentOS 使用 MariaDB 代替 MySQL,但在遵循本教程时不会引起任何问题。
此外,由于您将使用 Zabbix 服务器访问有关您的基础设施的宝贵信息,您不希望未经授权的用户访问,因此通过安装 TLS/SSL 证书来保护您的服务器很重要。
第1步:安装Zabbix服务器
首先,您需要在您安装 MySQL、Apache 和 PHP 的服务器上安装 Zabbix。
1[environment local]
2ssh sammy@zabbix_server_ip_address
Zabbix 默认情况下在包管理器中不可用,所以使用 CentOS 的 官方 Zabbix 存储 安装一个存储库配置包。
1sudo rpm -Uvh https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-1.el7.noarch.rpm
您将看到以下结果:
1[secondary_label Output]
2Retrieving https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-1.el7.noarch.rpm
3warning: /var/tmp/rpm-tmp.WXsYNB: Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY
4Preparing... ################################# [100%]
5Updating / installing...
6 1:zabbix-release-4.2-1.el7 ################################# [100%]
从缓存中清除当前启用的存储库的所有条目:
1sudo yum clean all
然后安装具有MySQL数据库支持的Zabbix服务器和Web前端:
1sudo yum install zabbix-server-mysql zabbix-web-mysql
在安装过程中,您将被要求导入 GPG 密钥. 此密钥将验证您正在安装的软件包的真实性. 若要允许安装完成,请通过键入y
并按ENTER
来接受 GPG 密钥。
此外,安装 Zabbix 代理,这将允许您收集有关 Zabbix 服务器状态的数据。
1sudo yum 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):用户 zabbix@'localhost 的访问被拒绝(使用密码:YES)
,请确保您使用了 zabbix 用户的密码,而不是 ** root** 用户。
为了让 Zabbix 服务器使用此数据库,您需要在 Zabbix 服务器配置文件中设置数据库密码。
1sudo vi /etc/zabbix/zabbix_server.conf
<$>[注] 注: 有关文本编辑器 vi 及其继任者 vim 的更多信息,请参阅我们的 在云服务器上安装和使用 Vim 文本编辑器教程。
查找文件的以下部分:
1[label /etc/zabbix/zabbix_server.conf]
2...
3### Option: DBPassword
4# Database password. Ignored for SQLite.
5# Comment this line if no password is used.
6#
7# Mandatory: no
8# Default:
9# DBPassword=
10...
文件中的这些评论解释了如何连接到数据库. 您需要将文件中的DBPassword
值设置为您的数据库用户的密码。 通过按i
来输入插入模式,并添加您的密码来配置数据库:
1[label /etc/zabbix/zabbix_server.conf]
2...
3# Mandatory: no
4# Default
5DBPassword=your_zabbix_mysql_password
6...
当你完成时,按ESC
离开插入模式,然后按:wq
和ENTER
保存和退出文件。
接下来,您将对您的 PHP 设置进行一些修改,以便 Zabbix 网页接口正常工作。
第3步:为Zabbix配置PHP
Zabbix Web 接口是用 PHP 编写的,需要一些特殊的 PHP 服务器设置。 Zabbix 安装过程创建了一个包含这些设置的 Apache 配置文件。
1sudo vi /etc/httpd/conf.d/zabbix.conf
该文件包含满足 Zabbix Web 界面所需的 PHP 设置,但默认情况下,时区设置被评论。 为了确保 Zabbix 使用正确的时间,您需要设置适当的时区。
1[label /etc/httpd/conf.d/zabbix.conf]
2...
3<IfModule mod_php5.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 max_input_vars 10000
10 php_value always_populate_raw_post_data -1
11 # php_value date.timezone Europe/Riga
12</IfModule>
删除在上一代码块中突出的时区行,并将其更改为您的时区。 您可以使用此 支持的时区列表来找到适合您的时区。
现在重新启动 Apache 以应用这些新设置:
1sudo systemctl restart httpd
<$>[注]
注: 如果 SELinux 运行在执行模式中,您需要使用 sudo setenforce 0
命令将其放入允许模式,以便 Zabbix 代理能够自由操作。
您现在可以启动 Zabbix 服务器和代理:
1sudo systemctl start zabbix-server
2sudo systemctl start zabbix-agent
然后检查 Zabbix 服务器是否正常运行:
1sudo systemctl status zabbix-server
您将看到以下状态:
1[secondary_label Output]
2● zabbix-server.service - Zabbix Server
3 Loaded: loaded (/usr/lib/systemd/system/zabbix-server.service; disabled; vendor preset: disabled)
4 Active: active (running) since Fri 2019-05-03 05:57:29 UTC; 2s ago
5 Process: 4461 ExecStart=/usr/sbin/zabbix_server -c $CONFFILE (code=exited, status=0/SUCCESS)
6 ...
最后,允许服务器和代理在启动时启动:
1sudo systemctl enable zabbix-server
2sudo systemctl enable zabbix-agent
服务器设置并连接到数据库. 接下来,设置 Web 前端。
<$>[注] 注: 正如前提部分所述,建议您在您的服务器上启用SSL/TLS。 您可以遵循 本教程现在获得免费的SSL证书为Apache在CentOS 7. 获得SSL/TLS证书后,您可以回来完成本教程。
步骤 4 — 配置 Zabbix Web 接口的设置
网页界面允许您查看报告并添加您想要监控的主机,但它需要一些初始设置才能使用它。 启动浏览器并前往地址 http://zabbix_server_name/zabbix/
。 在第一个屏幕上,您将看到一个欢迎消息。 点击 下一步 继续。
在下一个屏幕上,您将看到列出运行Zabbix的所有前提条件的表。
此表中的所有值都必须是 OK ,所以请确认它们是否存在. 请务必向下滚动并查看所有前提条件。
下一个屏幕要求数据库连接信息。
您告诉 Zabbix 服务器您的数据库,但 Zabbix 网页接口还需要访问数据库以管理主机和读取数据。
在下一个屏幕上,您可以将选项留在其默认值。
Name 是可选的;它用于在 Web 界面中将一个服务器与另一个服务器区分开来,如果您有多个监控服务器。
下一个屏幕将显示预安装总结,这样你就可以确认一切都是正确的。
点击下一步
继续到最后的屏幕。
网页界面设置已完成. 此过程创建了配置文件 /etc/zabbix/web/zabbix.conf.php
,您可以在未来备份并使用。 点击 Finish 进入登录屏幕。 默认用户是 ** Admin**,密码是 ** zabbix**。
在登录之前,在第二个 CentOS 服务器上设置 Zabbix 代理。
第 5 步:安装和配置 Zabbix 代理
现在您需要配置将监控数据发送到 Zabbix 服务器的代理软件。
登录到第二个 CentOS 服务器:
1[environment local]
2ssh sammy@second_centos_server_ip_address
然后,就像在 Zabbix 服务器上一样,运行以下命令来安装存储库配置包:
1[environment second]
2sudo rpm -Uvh https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-1.el7.noarch.rpm
接下来,清除 yum 缓存:
1[environment second]
2sudo yum clean all
然后安装 Zabbix 代理:
1[environment second]
2sudo yum install zabbix-agent
在安装过程中,您将被要求导入 GPG 密钥,以便完成安装。
虽然 Zabbix 支持基于证书的加密,但设置证书权限超出本教程的范围,而本教程将使用 pre-shared keys(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[environment second]
2[secondary_label Output]
3a4374c8c3b55de472225dbf96aa7cd3ce6a34abc95d0eb2a601d954ee0cd4410
现在,编辑 Zabbix 代理设置以建立与 Zabbix 服务器的安全连接。
1[environment second]
2sudo vi /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...
3# Mandatory: no
4# Default:
5# Server=
6
7Server=zabbix_server_ip_address
8...
接下来,找到配置与 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...
然后,不评论TLSConnect=
,并用psk
代替unencrypted
,以配置预共享密钥支持:
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...
通过不评论TLSAccept=
并添加psk
来配置接入连接以支持预共享密钥:
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...
选择一个独特的名称来识别您的预共享密钥,不评论TLSPSKIidentity=
并添加突出的代码:
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...
Uncomment TLSPSKFile=
并添加此文本,将 Zabbix 代理指向您创建的 PSK 文件:
1[label /etc/zabbix/zabbix_agentd.conf]
2...
3TLSPSKFile=/etc/zabbix/zabbix_agentd.psk
4...
现在您可以启动 Zabbix 代理,并将其设置为在启动时启动:
1[environment second]
2sudo systemctl start zabbix-agent
3sudo systemctl enable zabbix-agent
要得到良好的测量,请检查 Zabbix 代理是否正常运行:
1[environment second]
2sudo systemctl status zabbix-agent
您将看到以下状态,表示代理正在运行:
1[environment second]
2[secondary_label Output]
3● zabbix-agent.service - Zabbix Agent
4 Loaded: loaded (/usr/lib/systemd/system/zabbix-agent.service; enabled; vendor preset: disabled)
5 Active: active (running) since Fri 2019-05-03 06:25:06 UTC; 28s ago
6 ...
代理将在端口10050
上听取来自服务器的连接。为了配置来自特定 IP 地址或子网的访问,请使用firewalld
的 rich rule功能:
1[environment second]
2sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="zabbix_server_ip_address/32" port protocol="tcp" port="10050" accept'
丰富的规则允许您创建更复杂和可自定义的防火墙
规则,以获得对防火墙的更大控制权. 在此命令中,您正在添加一个规则,该规则将从源中接受ipv4
的流量,您将其设置为Zabbix服务器的IP地址,并将第二个CentOS服务器的端口
添加到10050
。
接下来,重新加载firewalld
以激活新规则:
1[environment second]
2sudo firewall-cmd --reload
您的代理现在已经准备好接受连接并将数据发送到 Zabbix 服务器,但要使用它,您必须从服务器的 Web 控制台连接到它。
步骤 6 — 将新主机添加到 Zabbix 服务器
您想要监控的服务器上安装一个代理只是半个过程,您想要监控的每个主机都需要在 Zabbix 服务器上注册,您可以通过 Web 界面进行注册。
登录到 Zabbix 服务器的 Web 界面,通过导航到地址 http://zabbix_server_name/zabbix/
。
登录后,点击配置
,然后点击主机
在顶部导航栏中,然后点击屏幕右上角的创建主机
按钮。
调整 主机名称 和 ** IP 地址** ,以反映您第二个 CentOS 服务器的主机名称和 IP 地址,然后将主机添加到一个组中. 您可以选择一个现有组,例如 ** Linux 服务器** ,或创建自己的组。
添加组后,单击 ** 模板** 选项卡。
在搜索
字段中输入Linux 模板
,然后在搜索栏下立即点击添加
以将此模板添加到主机中。
接下来,导航到加密
选项卡。选择连接到主机
和连接到主机
的PSK
,然后解除没有加密
选项连接到主机
。然后将PSK ID
设置为PSK 001
,这是您先前配置的Zabbix代理人的TLSPSKIidentity
设置的值。
最后,点击表单底部的添加
按钮来创建主机。
您将在列表中看到您的新主机. 等待一分钟,然后重新加载页面,以查看绿色标签,表明一切正常运行,连接是加密的。
如果你有额外的服务器,你需要监控,登录每个主机,安装Zabbix代理,生成PSK,配置代理,并将主机添加到Web界面,按照您添加第一个主机的相同步骤。
Zabbix 服务器现在正在监控您的第二个 CentOS 服务器. 现在,设置电子邮件通知以通知您有关问题。
步骤 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 文件系统使用警告. 若您尚未连接,请登录您的第二个 CentOS 服务器。
1[environment local]
2ssh sammy@second_centos_server_ip_address
接下来,确定你在服务器上有多少可用空间. 你可以使用df
命令来找出:
1[environment second]
2df -h
命令df
将报告您的文件系统的磁盘空间使用量,而-h
将使输出可人读。
1[environment second]
2[secondary_label Output]
3Filesystem Size Used Avail Use% Mounted on
4/dev/vda1 25G 958M 25G 4% /
在这种情况下,自由空间为25GB
。
使用fallocate
命令,允许您预分配或不分配文件空间,以创建占用可用的磁盘空间超过80%的文件。
1[environment second]
2fallocate -l 20G /tmp/temp.img
大约一个小时后,Zabbix 会发出关于可用磁盘空间的通知,并将执行您配置的操作,发送通知消息。
1Problem started at 10:49:25 on 2019.05.03
2Problem name: Free disk space is less than 20% on volume /
3Host: Second Centos Server
4Severity: Warning
5
6Original problem ID: 34
您还可以导航到 ** 监控** 选项卡,然后导航到 ** 仪表板** 以查看通知及其细节。
现在你知道警报正在工作,删除你创建的临时文件,这样你就可以恢复你的磁盘空间:
1[environment second]
2rm -f /tmp/temp.img
一分钟后,Zabbix会发送恢复消息,警报将从主仪表板中消失。
结论
在本教程中,您设置了一个简单而安全的监控解决方案,可以帮助您监控服务器的状态,现在它可以提醒您出现问题,您有机会分析 IT 基础设施中发生的流程。
有关设置监控基础设施的更多信息,请参阅 如何在 CentOS 7 上安装 Elasticsearch、Logstash 和 Kibana (Elastic Stack)和 如何在 CentOS 7 上使用 Metricbeat 收集基础设施指标。