Zabbix最佳实践一:Zabbix4.0.2的安装与配置

一.概述

在开始以前,一些概念和定义须要咱们提早了解一下(如下内容摘自官方网站)。php

1.1 几个概念

架构前端

Zabbix 由几个主要的功能组件组成,其职责以下所示。mysql

Serverlinux

Zabbix server 是Zabbix agent 向其报告可用性、系统完整性信息和统计信息的核心组件。是存储全部配置信息、统计信息和操做信息的核心存储库。web

Zabbix Server 负责执行数据的主动轮询和被动获取,计算触发器条件,向用户发送通知。它是 Zabbix Agent 和 Proxy 报告系统可用性和完整性数据的核心组件。Server 自身能够经过简单服务远程检查网络服务(如Web服务器和邮件服务器)。sql

Zabbix Server是全部配置、统计和操做数据的中央存储中心,也是 Zabbix 监控系统的告警中心。在监控的系统中出现任何异常,将被发出通知给管理员。数据库

基本的 Zabbix Server 的功能分解成为三个不一样的组件。他们是:Zabbix server、Web前端和数据库。centos

Zabbix 的全部配置信息都存储在 Server 和 Web 前端进行交互的数据库中。例如,当你经过Web前端(或者API)新增一个监控项时,它会被添加到数据库的监控项表里。而后,Zabbix server 以每分钟一次的频率查询监控项表中的有效项,接着将它存储在 Zabbix server 中的缓存里。这就是为何 Zabbix 前端所作的任何更改须要花费两分钟左右才能显示在最新的数据段的缘由。浏览器

数据库缓存

全部配置信息以及 Zabbix 收集到的数据都被存储在数据库中。

Web 界面

为了从任何地方和任何平台轻松访问 Zabbix ,咱们提供了基于 web 的界面。该界面是 Zabbix server 的一部分,一般(但不必定)和 Zabbix server 运行在同一台物理机器上。

Proxy

Zabbix proxy 能够替 Zabbix server 收集性能和可用性数据。Zabbix proxy 是 Zabbix 环境部署的可选部分;然而,它对于单个 Zabbix server 负载的分担是很是有益的。

Zabbix proxy 是一个能够从一个或多个受监控设备采集监控数据并将信息发送到 Zabbix server 的进程,主要是表明 Zabbix server 工做。 全部收集的数据都在本地缓存,而后传输到 proxy 所属的 Zabbix server。

部署Zabbix proxy 是可选的,但可能很是有利于分担单个 Zabbix server 的负载。 若是只有代理采集数据,则 Zabbix server 上会减小 CPU 和磁盘 I/O 的开销。Zabbix proxy 是无需本地管理员便可集中监控远程位置、分支机构和网络的理想解决方案。Zabbix proxy 须要使用独立的数据库。

Agent

Zabbix agent 部署在被监控目标上,以主动监控本地资源和应用程序(硬盘、内存、处理器统计信息等)。

Zabbix agent 收集本地的操做信息并将数据报告给 Zabbix server 用于进一步处理。一旦出现异常 (例如硬盘空间已满或者有崩溃的服务进程),Zabbix server 会主动警告管理员指定机器上的异常。

Zabbix agents 的极高效率缘于它能够利用本地系统调用来完成统计数据的采集。

Zabbix agent 能够运行被动检查和主动检查。

在被动检查 模式中 agent 应答数据请求。Zabbix server(或 proxy)询求数据,例如 CPU load,而后 Zabbix agent 返还结果。

主动检查 处理过程将相对复杂。Agent 必须首先从 Zabbix sever 索取监控项列表以进行独立处理,而后会按期发送采集到的新值给 Zabbix server。

是否执行被动或主动检查是经过选择相应的监控项类型来配置的。 Zabbix agent 处理“Zabbix agent”或“Zabbix agent(active)”类型的监控项。

数据流

首先,为了建立一个采集数据的监控项,您就必须先建立主机。其次,必须有一个监控项来建立触发器。最后,您必须有一个触发器来建立一个动做,这几个点构成了一个完整的数据流。所以,若是您想要收到 CPU load it too high on Server X 的告警,您必须首先为 Server X 建立一个主机条目,其次建立一个用于监视其 CPU 的监控项,最后建立一个触发器,用来触发 CPU is too high 这个动做,并将其发送到您的邮箱里。虽然这些步骤看起来很繁琐,可是使用模板的话,其实并不复杂。也正是因为这种设计,使得 Zabbix 的配置变得更加灵活易用。

1.2 一些定义

主机(host)

  • 你想要监控的联网设备,有IP/DNS。

主机组(host group)

  • 主机的逻辑组;可能包含主机和模板。一个主机组里的主机和模板之间并无任何直接的关联。一般在给不一样用户组的主机分配权限时候使用主机组。

监控项(item)

  • 你想要接收的主机的特定数据,一个度量/指标数据。

值预处理(value preprocessing)

  • 转化/预处理接收到的指标数据 存入数据库以前。

触发器(trigger)

  • 一个被用于定义问题阈值和“评估”监控项接收到的数据的逻辑表达式。当接收到的数据高于阈值时,触发器从“OK”变成“Problem”状态。当接收到的数据低于阈值时,触发器保留/返回“OK”的状态。

事件(event)

  • 一次发生的须要注意的事情,例如触发器状态改变、发现/监控代理自动注册。

事件标签(event tag)

  • 提早设置的事件标记能够被用于事件关联,权限细化设置等。

事件关联(event correlation)

  • 自动灵活的、精确的关联问题和解决方案。

好比说,你能够定义触发器A告警的异常能够由触发器B解决,触发器B可能采用彻底不一样的数据采集方式。

异常(problems)

  • 一个处在“异常”状态的触发器。

异常更新(problem update)

  • Zabbix提供的问题管理选项,例如添加评论、确认异常、改变问题级别或者手动关闭等。

动做(action)

  • 预先定义的应对事件的操做。一个动做由操做(例如发出通知)和条件(什么时间进行操做)组成。

升级(escalation)

  • 一个在动做内执行操做的自定义方式; 发送通知/执行远程命令的顺序安排。

媒介(media)

  • 发送告警通知的方式,传送途径。

通知(notification)

  • 关于事件的信心,将经过选设定的媒介途径发送给用户。

远程命令(remote command)

  • 一个预约义好的,知足特定条件的状况下,能够在被监控主机上自动执行的命令。

模版(template)

  • 一组能够被应用到一个或多个主机上的实体(监控项,触发器,图形,聚合图形,应用,LLD,Web场景)的集合。模版的应用使得主机上的监控任务部署快捷方便;也可使监控任务的批量修改更加简单。模版是直接关联到每台单独的主机上。

应用(application)

  • 一组监控项组成的逻辑分组。

Web场景(web scenario)

  • 检查网站可浏览性的一个或多个HTTP请求。

前端(frontend)

  • Zabbix提供的web界面。

Zabbix API

  • Zabbix API容许用户使用JSON RPC协议来建立、更新和获取Zabbix对象(如主机、监控项、图形和其余)信息或者执行任何其余的自定义的任务。

Zabbix server

  • Zabbix监控的核心程序,主要功能是与Zabbix proxies和Agents进行交互、触发器计算、发送告警通知;并将数据集中保存等。

Zabbix agent

  • 部署在监控对象上的,可以主动监控本地资源和应用的程序。

Zabbix proxy

  • 一个帮助Zabbix Server收集数据,分担Zabbix Server的负载的程序。

加密(encryption)

  • 支持Zabbix组建之间的加密通信(server, proxy, agent, zabbix_sender 和 zabbix_get 程序) 使用TLS(Transport Layer Security )协议。

    二.环境

    因为实验环境资源有限,本实验中只有一台 Zabbix Server 和一台被监控的Host,配置以下:

Zabbix Server

[root@zabbix ~]# cat /etc/centos-release
CentOS Linux release 7.5.1804 (Core)
[root@zabbix ~]# ip addr show |grep eth0|egrep -o '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\/[0-9]+'
172.31.3.21/22
[root@zabbix ~]# zabbix_server --version
zabbix_server (Zabbix) 4.0.2

Host

[root@httpd ~]# cat /etc/centos-release
CentOS Linux release 7.5.1804 (Core)
[root@httpd ~]# ip addr show |grep eth0|egrep -o '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\/[0-9]+'
172.31.3.41/22
[root@httpd ~]# zabbix_agentd -V
zabbix_agentd (daemon) (Zabbix) 4.0.2

Host主机的防火墙已关闭。

三.安装与配置过程

3.1 Zabbix Server 的安装与配置

3.1.1 安装仓库配置包

[root@zabbix ~]# rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm

若是这一步没法正常执行,那么咱们还能够去官方仓库下载相关repo的rpm包进行安装。

[root@zabbix ~]# rpm -ivh zabbix-release-4.0-1.el7.noarch.rpm
警告:zabbix-release-4.0-1.el7.noarch.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:zabbix-release-4.0-1.el7         ################################# [100%]

3.1.2 安装 zabbix-server-mysql、zabbix-web-mysql 及zabbix-agent

[root@zabbix ~]# yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-agent
已安装:
  zabbix-agent.x86_64 0:4.0.2-1.el7                     zabbix-server-mysql.x86_64 0:4.0.2-1.el7                     zabbix-web-mysql.noarch 0:4.0.2-1.el7
做为依赖被安装:
  OpenIPMI-libs.x86_64 0:2.0.23-2.el7        OpenIPMI-modalias.x86_64 0:2.0.23-2.el7    apr.x86_64 0:1.4.8-3.el7_4.1                   apr-util.x86_64 0:1.5.2-6.el7
  dejavu-fonts-common.noarch 0:2.33-6.el7    dejavu-sans-fonts.noarch 0:2.33-6.el7      fontpackages-filesystem.noarch 0:1.44-8.el7    fping.x86_64 0:3.10-1.el7
  gnutls.x86_64 0:3.3.26-9.el7               httpd.x86_64 0:2.4.6-80.el7.centos         httpd-tools.x86_64 0:2.4.6-80.el7.centos       iksemel.x86_64 0:1.4-2.el7.centos
  libX11.x86_64 0:1.6.5-1.el7                libX11-common.noarch 0:1.6.5-1.el7         libXau.x86_64 0:1.0.8-2.1.el7                  libXpm.x86_64 0:3.5.12-1.el7
  libevent.x86_64 0:2.0.21-4.el7             libjpeg-turbo.x86_64 0:1.2.90-5.el7        libpng.x86_64 2:1.5.13-7.el7_2                 libtool-ltdl.x86_64 0:2.4.2-22.el7_3
  libxcb.x86_64 0:1.12-1.el7                 libxslt.x86_64 0:1.1.28-5.el7              libzip.x86_64 0:0.10.1-8.el7                   mailcap.noarch 0:2.1.41-2.el7
  net-snmp-libs.x86_64 1:5.7.2-32.el7        nettle.x86_64 0:2.7.1-8.el7                php.x86_64 0:5.4.16-45.el7                     php-bcmath.x86_64 0:5.4.16-45.el7
  php-cli.x86_64 0:5.4.16-45.el7             php-common.x86_64 0:5.4.16-45.el7          php-gd.x86_64 0:5.4.16-45.el7                  php-ldap.x86_64 0:5.4.16-45.el7
  php-mbstring.x86_64 0:5.4.16-45.el7        php-mysql.x86_64 0:5.4.16-45.el7           php-pdo.x86_64 0:5.4.16-45.el7                 php-xml.x86_64 0:5.4.16-45.el7
  t1lib.x86_64 0:5.1.2-14.el7                trousers.x86_64 0:0.3.14-2.el7             unixODBC.x86_64 0:2.3.1-11.el7                 zabbix-web.noarch 0:4.0.2-1.el7
完毕!

3.1.3 安装mariadb(MySQL)

在某些CentOS版本中,MySQL已经被替换为mariadb,mariadb彻底兼容MySQL,而且不存在法律风险,是MySQL良好的替代品。固然,若是要安装MySQL,那么也是没有问题的,我以前的博文有关各种MySQL的安装教程,可供参考。因为实验环境资源有限,本人把 mariadb 也安装在了与 Zabbix Server 相同的主机上。生产环境的话仍是尽可能把数据库独立处理安装与配置。

[root@zabbix ~]# yum -y install mariadb-server
已安装:
  mariadb-server.x86_64 1:5.5.60-1.el7_5
做为依赖被安装:
  mariadb.x86_64 1:5.5.60-1.el7_5
完毕!
[root@zabbix ~]# systemctl start mariadb
[root@zabbix ~]# systemctl enable mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.

3.1.3 建立相关数据库并设置

[root@zabbix ~]# mysql -uroot -p
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
| zabbix             |
+--------------------+
MariaDB [(none)]> show variables like 'character_set_database';
+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| character_set_database | latin1 |
+------------------------+--------+
1 row in set (0.00 sec)
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix.gysl';
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('zabbix.gysl');
MariaDB [(none)]> quit
Bye

Mariadb 安装完成以后默认无密码,在提示输入密码那一步直接按回车键便可登入。等入数据库以后,建立了数据库zabbix,授予全部的权限并设置密码。最后顺便给mariadb设置了密码。

3.1.4 修改相关配置

[root@zabbix ~]# sed -i.bak '/^DBUser/a DBPassword=zabbix.gysl' /etc/zabbix/zabbix_server.conf
[root@zabbix ~]# cat /etc/zabbix/zabbix_server.conf |grep -v ^#|grep ^"\S"
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
SocketDir=/var/run/zabbix
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix.gysl
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000

3.1.5 数据初始化

[root@zabbix ~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
Enter password:
[root@zabbix ~]# mysql -u zabbix -p
Enter password:
MariaDB [(none)]> use zabbix;
MariaDB [zabbix]> show tables;
144 rows in set (0.00 sec)
MariaDB [zabbix]> exit
Bye

输入以前咱们设置的密码,回车键稍后便可。144张表,确认无误。

3.1.6 修改时区

[root@zabbix ~]# sed -i.bak '/Europe\/Riga/a \\tphp_value date.timezone Asia/Shanghai' /etc/httpd/conf.d/zabbix.conf

3.1.7 完成最后设置并重启服务器

[root@zabbix ~]# systemctl stop firewalld
[root@zabbix ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@zabbix ~]# systemctl start httpd
[root@zabbix ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@zabbix ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
[root@zabbix ~]# systemctl restart zabbix-server zabbix-agent
[root@zabbix ~]# systemctl enable zabbix-server zabbix-agent
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.
[root@zabbix ~]# reboot

重启以后若是无其余异常,那么 Zabbix Server 已经正常运行,等待进一步配置。

3.2 配置 Zabbix Web

3.2.1 初始化Web设置

在浏览器地址栏输入:http://172.31.3.21/zabbix
http://server_ip_or_name/zabbix)后按下回车键
点击Next setup按钮,按照提示输入必填内容,填写完毕以后界面大体以下:
安装确认
出现如下界面说明安装成功。
安装成功
点击Finish便可。

3.2.2 登陆并简单设置

输入用户名 Admin 以及密码 zabbix 以做为 Zabbix 超级用户登陆。页面右上角找到用户头像标志,把语言设置为中文。

3.3 在Host主机上安装agent程序并设置

[root@httpd ~]# rpm -ivh zabbix-release-4.0-1.el7.noarch.rpm
[root@httpd ~]# yum -y install zabbix-agent
[root@httpd ~]# sed -i.bak 's/Server=127.0.0.1/Server=172.31.3.21/g' /etc/zabbix/zabbix_agentd.conf
[root@httpd ~]# systemctl start zabbix-agent
[root@httpd ~]# systemctl enable zabbix-agent
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.

3.4 添加第一台被监控主机

登陆系统以后,依次点击:配置->建立主机(右上角)。依次填入或者选择以下图所示项目:
Add Host

选择模板并添加:
选择模板

选择完成以后,点击添加,查看:

查看状态

出现如上图所示内容则表明配置成功,能够进一步探索Zabbix强大的功能了。

四.总结

4.1 整体来讲,Zabbix是很是容易安装、使用的,可是在安装过程当中仍是须要注意一些细节。

4.3 Zabbix 的官方文档很详细,还提供中文版,可是也还有一些坑须要咱们去思考、总结。

4.4 若是使用二进制安装,那么进程管理帐户那是很是有必要考虑的。在官方文档中有提到,zabbix server 和 zabbix agent 在同一台主机上安装时,须要使用不通的进程管理帐户。

4.4 这篇文章主要介绍的Zabbix的安装,截图较少,须要一些使用经验。进一步的使用会在后面的文章中具体展开介绍,不足之处万望海涵。愿你们与我一块儿成长!

五.相关资料

5.1 官方仓库

5.2 下载地址及简要安装教程

5.3 Zabbix安全最佳实践

5.4 CentOS环境下官方安装教程

5.5 最新版官方中文文档

相关文章
相关标签/搜索