介绍
Zabbix是用于网络和应用程序的开源监控软件。 它提供对从服务器,虚拟机和任何其他类型的网络设备收集的数千个指标的实时监控。 这些指标可以帮助您确定IT基础架构的当前运行状况,并在客户投诉之前检测硬件或软件组件的问题。 有用的信息存储在数据库中,以便您可以随时间分析数据,提高所提供服务的质量,或计划升级您的设备。
Zabbix使用客户端 - 服务器架构,并在受监视的客户端上使用小代理来收集数据并将其发送到Zabbix服务器。 Zabbix版本3支持服务器和连接的客户端之间的加密通信,因此您的数据在通过不安全网络传输时受到保护。
Zabbix服务器将其数据存储在由MySQL,PostgreSQL或Oracle提供支持的关系数据库中。 它还提供了一个Web界面,以便您可以查看数据和配置系统设置。
在本教程中,我们将配置两台机器。 一个将被配置为服务器,另一个作为您将监控的客户端。 服务器将使用MySQL数据库来记录监视数据,并使用Apache来服务Web界面。
先决条件
要遵循本教程,您需要:
- 两个CentOS 7服务器用sudo的非root用户,您可以通过以下这个设置初始CentOS的服务器设置的文章 。
- 一个CentOS 7服务器需要安装Apache,MySQL和PHP。 按照本指南设置这些在CentOS 7。
注 :CentOS的使用MariaDB的,而不是MySQL的,但在下面这个教程不会造成任何问题。
第1步 - 安装Zabbix服务器
首先,我们需要在包含MySQL,Apache和PHP的服务器上安装Zabbix Server。 我们将这台机器称为Zabbix服务器。 以非root用户身份登录到本机:
ssh sammy@your_zabbix_server_ip_address
Zabbix默认情况下不在我们的包管理器中,所以我们将使用官方的Zabbix存储库为CentOS安装存储库配置包,
sudo rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
您将看到以下输出:
OutputRetrieving http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
warning: /var/tmp/rpm-tmp.qLbOPP: Header V4 DSA/SHA1 Signature, key ID 79ea5ed4: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:zabbix-release-3.0-1.el7 ################################# [100%]
现在您可以运行以下命令来安装具有MySQL数据库支持的Zabbix服务器和Web前端:
sudo yum install zabbix-server-mysql zabbix-web-mysql
在安装过程中,将询问有关导入GPG密钥的问题。 确认,以便安装完成。
让我们安装Zabbix代理,这将让我们收集有关Zabbix服务器本身的数据。
sudo yum install zabbix-agent
在我们可以使用Zabbix之前,我们必须设置一个数据库来保存Zabbix服务器从其代理收集的数据。
第2步 - 为Zabbix配置MySQL数据库
我们需要创建一个新的MySQL数据库,并填充一些基本信息,以使其适合Zabbix。 我们也将为此数据库创建一个特定的用户,这样的zabbix不能登录到MySQL的root
帐户。
以root用户身份使用您在MySQL服务器安装期间设置的root密码登录MySQL:
mysql -uroot -p
首先,创建具有UTF-8字符支持的Zabbix数据库:
create database zabbix character set utf8;
接下来,创建Zabbix服务器将使用的用户,授予其访问新数据库的权限,并设置密码:
grant all privileges on zabbix.* to zabbix@localhost identified by 'your_password';
然后应用这些新的权限:
flush privileges;
这需要用户和数据库。 退出数据库控制台。
quit;
接下来,我们必须导入初始模式和数据。 Zabbix安装为我们提供了一个文件,为我们设置这一点。 我们只需要导入它。 导航到目录:
cd /usr/share/doc/zabbix-server-mysql-3.0.4/
运行以下命令来设置模式和导入数据到zabbix
数据库。 我们将使用zcat
,因为文件中的数据被压缩。
zcat create.sql.gz | mysql -uzabbix -p zabbix
输入您提示时配置的ZABBIX用户的密码。
如果成功,此命令不会输出任何错误。 如果您看到错误ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password: YES)
然后确保你的使用的密码zabbix
用户而不是root
用户。
为了使Zabbix服务器使用此数据库,您需要在Zabbix服务器配置文件中设置数据库密码。
sudo vi /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/httpd/conf.d/
,由Apache的自动加载。 我们需要对此文件进行一个小的更改,因此打开它。
sudo vi /etc/httpd/conf.d/zabbix.conf
该文件包含满足Zabbix Web界面必要要求的PHP设置。 您唯一需要做的更改是设置适当的时区,默认情况下注释掉。
<IfModule mod_php5.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 httpd
您现在可以启动Zabbix服务器。
sudo systemctl start zabbix-server
然后检查Zabbix服务器是否正常运行:
sudo systemctl status zabbix-server
您将看到以下状态:
Output● zabbix-server.service - Zabbix Server
Loaded: loaded (/usr/lib/systemd/system/zabbix-server.service; disabled; vendor preset: disabled)
Active: :active (running) since Fri 2016-08-05 07:16:35 UTC; 2s ago
Process: 10033 ExecStart=/usr/sbin/zabbix_server -c $CONFFILE (code=exited, status=0/SUCCESS)
...
最后,启用Zabbix服务器在启动时启动:
sudo systemctl enable zabbix-server
服务器已设置并连接到数据库。 现在让我们设置web前端。
第4步 - 配置Zabbix Web Interface的设置
Web界面让我们可以看到报告并添加我们想要监控的主机,但是需要一些初始设置才能使用它。 启动浏览器并转到地址http:// your_zabbix_server_ip_address /zabbix/
。 在第一个屏幕上,您将看到欢迎消息。 点击下一步继续。
在下一个屏幕上,您将看到列出运行Zabbix的所有先决条件的表。
所有在此表中的值必须显示OK,这样验证他们这样做。 确保向下滚动并查看所有先决条件。 一旦你验证,一切都准备好了,点击下一步继续。
下一个屏幕要求数据库连接信息。
我们告诉Zabbix服务器我们的数据库,但是Zabbix Web界面还需要访问数据库来管理主机和读取数据,以便它显示给我们。 输入您在第2步中配置的MySQL的凭据,然后单击下一步继续。
在下一个屏幕上,您可以保留选项的默认值。
该名称是可选的; 它用于在Web界面中区分一个服务器与另一个服务器,如果您有几个监视服务器。 点击下一步继续。
下一个屏幕将显示安装前摘要,以便您可以确认一切正确。
点击下一步进入到最后的画面。
Web界面设置完成! 此过程创建的配置文件/etc/zabbix/web/zabbix.conf.php
这可以备份和在未来使用。 单击Finish继续到登录屏幕。 默认用户是admin,密码是ZABBIX。
在我们登录之前,让我们在我们的其他服务器上设置Zabbix代理。
第5步 - 安装和配置Zabbix Agent
现在,我们需要配置将向Zabbix服务器发送监视数据的代理软件。
登录到第二个服务器,我们将其称为“监视服务器”。
ssh sammy@your_monitored_server_ip_address
然后,就像在Zabbix服务器上,运行以下命令安装存储库配置包:
sudo rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
您将看到以下输出:
OutputRetrieving http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
warning: /var/tmp/rpm-tmp.jnLROO: Header V4 DSA/SHA1 Signature, key ID 79ea5ed4: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:zabbix-release-3.0-1.el7 ################################# [100%]
然后安装Zabbix代理:
sudo yum install zabbix-agent
确认您在要求时导入GPG密钥。
虽然Zabbix支持基于证书的加密,但设置证书授权超出了本教程的范围,但我们可以使用预共享密钥(PSK)来保护服务器和代理之间的连接。
所以先生成一个PSK:
sudo sh -c "openssl rand -hex 32 > /etc/zabbix/zabbix_agentd.psk"
显示键,以便您可以将其复制到某个地方。 您将需要它来配置主机。
cat /etc/zabbix/zabbix_agentd.psk
键将如下所示:
Outputbd7ebdc1ae80fb66e8102d6016671a4feabf489cf2692ee473512771c4903ed8
现在您必须编辑Zabbix代理设置以设置其到Zabbix服务器的安全连接。 打开代理程序配置文件:
sudo vi /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代理并将其设置为在引导时启动:
sudo systemctl start zabbix-agent
sudo systemctl enable zabbix-agent
为了良好的测量,请检查Zabbix代理是否正常运行:
sudo systemctl status zabbix-agent
您将看到以下状态,指示代理程序正在运行:
Output● zabbix-agent.service - Zabbix Agent
Loaded: loaded (/usr/lib/systemd/system/zabbix-agent.service; disabled; vendor preset: disabled)
Active: active (running) since Fri 2016-08-05 08:17:07 UTC; 5s ago
Process: 9507 ExecStart=/usr/sbin/zabbix_agentd -c $CONFFILE (code=exited, status=0/SUCCESS)
...
我们的代理现在可以将数据发送到Zabbix服务器。 但为了使用它,我们必须从服务器的Web控制台链接到它。
第6步 - 将新主机添加到Zabbix服务器
在我们要监视的服务器上安装代理只是进程的一半。 我们要监控的每个主机都需要在Zabbix服务器上注册,我们可以通过Web界面进行注册。
登录到服务器的zabbix web界面导航到该地址http:// your_zabbix_server_ip_address /zabbix/
。
当你登录后,点击配置 ,然后在顶部导航栏的主机 。 然后点击屏幕右上角的创建主机按钮。 这将打开主机配置页。
调整主机名和IP地址 ,以反映客户端计算机的主机名和IP地址。 然后通过从列表中选择一个组或通过创建自己的组来将主机添加到组。 主机可以在多个组中。 Linux服务器组是一个不错的缺省选择。 一旦你添加的组,点击模板标签。
键入Template OS Linux
在搜索字段,然后单击添加到这个模板添加到主机。
接下来,导航到加密选项卡。 为连接选择PSK 主机和从主机连接 。 然后设置PSK同一性 PSK 001
,这是我们先前配置的的zabbix剂的TLSPSKIdentity设置的值。 然后设置
PSK价值给你的代理的zabbix生成的密钥。 这是存储在文件一/etc/zabbix/zabbix_agentd.psk
代理计算机上。
最后,单击Add按钮,在表单的底部创建主机。
您将看到您的新主机带有绿色标签,表示一切正常,并且连接已加密。
几秒钟后,你可以浏览到监控 ,然后最新数据 ,从你的代理人看到的数据。
为了确保工作正常,请关闭受监控的服务器,以便了解Zabbix如何向您报告问题。 一旦受监控的服务器脱机,您将在主仪表板上看到警告:
如果您有其他服务器需要监视,登录到每个主机,安装Zabbix代理,生成PSK,配置代理,并将主机添加到Web界面,遵循添加第一个主机所遵循的相同步骤。
结论
在本教程中,您将设置一个简单安全的解决方案,帮助您监视服务器的状态。 它现在可以警告你的问题,你有机会根据获得的数据绘制一些图表,所以你可以分析它,并相应地计划。