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

介绍

Zabbix是用于web和应用程序的开源监控软件。它提供对从服务器,虚拟机和任何其他类型的网络设备收集的数千个指标的实时监控。这些指标可帮助确定IT基础架构的当前运行状况。有用的信息存储在数据库中,因此您可以随时分析数据并提高所提供服务的质量。

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

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

准备

要学习本教程,您需要:

  • 两个Ubuntu 16.04服务器,每个服务器配置一个sudo非root用户。
  • 运行Zabbix服务器的服务器需要安装Apache,MySQL和PHP

第一步 - 安装Zabbix服务器

首先,我们需要在我们安装MySQL,Apache和PHP的服务器上安装Zabbix Server。我们将在本教程中将此机器称为“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

您将看到以下输出:

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服务器将从其代理收集的数据。

第二步 - 为Zabbix配置MySQL数据库

我们需要创建一个新的MySQL数据库,并用一些基本信息填充它,以使其适用于Zabbix。我们还将为此数据库创建一个特定用户,因此Zabbix不会使用该root帐户登录MySQL。

使用您在MySQL服务器安装期间设置的root密码以root用户身份登录MySQL:

mysql -uroot -p

使用UTF-8字符支持创建Zabbix数据库:

mysql> create database zabbix character set utf8 collate utf8_bin;

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

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

然后应用这些新权限:

mysql> flush privileges;

退出数据库控制台。

mysql> 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

查找文件的以下部分:

/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值设置为数据库用户的密码。在这些注释下面添加以下行以配置数据库:

/etc/zabbix/zabbix_server.conf

DBPassword=your_zabbix_mysql_password

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

第三步 - 为Zabbix配置PHP

Zabbix Web界面是用PHP编写的,需要一些特殊的PHP服务器设置。Zabbix安装过程创建了一个包含这些设置的Apache配置文件。它位/etc/zabbix于目录中,由Apache自动加载。我们需要对此文件进行一些小改动,然后将其打开。

$ sudo nano /etc/zabbix/apache.conf

该文件包含满足Zabbix Web界面必要要求的PHP设置。您需要做的唯一更改是设置适当的时区,默认情况下会将其注释掉。

/etc/zabbix/apache.conf

...
<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 Asia/Shanghai
</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前端。

第四步 - 配置Zabbix Web界面的设置

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

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

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

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

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

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

下一个屏幕将显示安装前总结,以便您确认一切正确。

单击下一步以继续进入最终屏幕。

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

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

第五步 - 安装和配置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地址。找到以下部分:

/etc/zabbix/zabbix_agentd.conf

### 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:

/etc/zabbix/zabbix_agentd.conf

Server=your_zabbix_server_ip_address

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

找到TSLConnect部分,如下所示:

/etc/zabbix/zabbix_agentd.conf

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

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

/etc/zabbix/zabbix_agentd.conf

TLSConnect=psk

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

/etc/zabbix/zabbix_agentd.conf

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

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

/etc/zabbix/zabbix_agentd.conf

TLSAccept=psk

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

/etc/zabbix/zabbix_agentd.conf

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

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

etc/zabbix/zabbix_agentd.conf

TLSPSKIdentity=PSK 001

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

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

/etc/zabbix/zabbix_agentd.conf

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

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

/etc/zabbix/zabbix_agentd.conf

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

注意: 注意:如果您使用的是UFW,请将其配置为允许连接到端口10050:

$ sudo ufw allow 10050/tcp

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

第六步 - 将新主机添加到Zabbix服务器

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

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

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

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

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

接下来,导航到“加密”选项卡。 为连接主机和来自主机的连接选择PSK。然后将PSK标识设置为PSK 001,这是我们之前配置的Zabbix代理的TLSPSKIdentity设置的值。然后设置PSK值为您为Zabbix代理生成的密钥。它是存储在代理计算机上的文件/etc/zabbix/zabbix_agentd.psk中的文件。

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

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

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

为确保工作正常,请关闭受监控的服务器,以便了解Zabbix如何提醒您出现问题。受监控的服务器脱机后,您将在主仪表板上看到警告:

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

结论

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

更多关于服务器的相关教程,欢迎访问腾讯云+社区


参考文献:《How to Install and Configure Zabbix to Securely Monitor Remote Servers on Ubuntu 16.04》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏行者常至

(三)solr的dataimport的配置以及中文分词

并可以在apache-tomcat-7.0.73\webapps\solr\WEB-INF\classes下新建自己的扩展词典

1671
来自专栏iMySQL的专栏

MySQL FAQ 系列 : 如何安全地关闭 MySQL 实例

本文分析了 mysqld 进程关闭的过程,以及如何安全、缓和地关闭 MySQL 实例,对这个过程不甚清楚的同学可以参考下。

2840
来自专栏乐沙弥的世界

记一次SQL server 2005 到SQL server 2008 数据库迁移

    最近周末完成了一个从SQL server 2005升级到SQL server 2008的升级迁移,其实质是一个服务器迁移的过程。比较复杂的是这个服务器上...

1764
来自专栏Java3y

Mysql免安装配置教程(图文版)

Mysql免安装版配置教程 图文版 配置环境变量 ? 新建一个my.ini文件,添加下面内容 [mysqld] basedir=C:\\soft...

3825
来自专栏乐沙弥的世界

Percona XtraDB Cluster Strict Mode(PXC 5.7)

在Percona XtraDB Cluster集群架构中,为了避免多主节点导致的数据异常,或者说一些不被支持的特性引发的数据不一致的情形,PXC集群可以通过配置...

1512
来自专栏数据和云

Oracle 12.2新特性掌上手册 - 第一卷 Availability

注:文章内容来自官方文档翻译。若需要了解更多,请查阅官方文档。 1、Multi-Instance Redo Apply (多实例redo应用) 在Oracle ...

3936
来自专栏大白虾谈架构

CentOS6.5安装mysql5.1.73

1263
来自专栏别先生

一脸懵逼学习oracle(图形化界面操作---》PLSQL图形化界面)

1:经过几天的折腾,终于将oracle安装成功,创建用户,授权等等操作,接下来就安安心心学习oracle; 安装好PLSQL图形化界面和汉化以后(过程自己百度吧...

2085
来自专栏软件工程师成长笔记

centOS7安装MySQL流程介绍

1、隐藏密码 如:MySQL 连接远程数据库(192.168.5.116),端口“3306”,用户名为“root”,密码“123456”(这是我乱写的地址哈)...

2312
来自专栏王亚昌的专栏

coreseek实现中文检索服务

文章一,原地址为:http://zhan.renren.com/itbegin?gid=3602888498033481671&checked=true

1293

扫码关注云+社区

领取腾讯云代金券