Zabbix介绍

zabbix 是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。

Zabbix特点

  • 安装与配置简单,学习成本低
  • 支持多语言(包括中文)
  • 免费开源
  • 自动发现服务器与网络设备
  • 分布式监视以及WEB集中管理功能
  • 可以无agent监视
  • 用户安全认证和柔软的授权方式
  • 通过WEB界面设置或查看监视结果
  • email通知功能
  • 自定义通知 等等

Zabbix架构组成

1、zabbix-server::整个Zabbix软件的核心程序。 2、zabbix-agent:客户端组件,部署在监控的目标上 3、zabbix-web:用于实现zabbix设定和展示 4、zabbix-proxy:代理组件,用于分布式监控环境 5、zabbix-database:存储zabbix各种数据

Zabbix术语

主机 (host)

  • 一台你想监控的网络设备,用IP或域名表示

主机组 (host group)

  • 主机的逻辑组;它包含主机和模板。一个主机组里的主机和模板之间并没有任何直接的关联。通常在给不同用户组的主机分配权限时候使用主机组。

监控项 (item)

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

触发器 (trigger)

  • 一个被用于定义问题阈值和“评估”监控项接收到的数据的逻辑表达式

当接收到的数据高于阈值时,触发器从“OK”变成“Problem”状态。当接收到的数据低于阈值时,触发器保留/返回一个“OK”的状态。

事件 (event)

  • 单次发生的需要注意的事情,例如触发器状态改变或发现有监控代理自动注册

异常 (problem)

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

动作 (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的负载的程序

Zabbix安装部署

常见的安装方式为:源码编译安装RPM包安装

本文全部采用配置官网yum源,使用功能yum直接安装,自动解决依赖关系。

Server端安装

1、搭建LAMP/LNMP 2、安装zabbix源

# rpm -i http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm

3、安装zabbix相关组件

# yum install zabbix zabbix-get zabbix-agent zabbix-server zabbix-server-mysql zabbix-web zabbix-web-mysql zabbix-sender	

4、配置数据库

添加数据库
	> CREATE DATABASE zabbix CHARACTER set utf8;
	> GRANT ALL ON zabbix.* TO 'zabbixuser'@'%' IDENTIFIED BY 'guoxiaohui';
	> FLUSH PRIVILEGES;
导入数据库:
	# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbixuser -p zabbix

5、编辑zabbix主配置文件

# vi /etc/zabbix/zabbix_server.conf
DBHost=Zabbix_IP
DBName=zabbix
DBUser=zabbix
DBPassword=password		

6、编辑php配置文件

# vim /etc/php.ini
date.timezone = Asia/Chongqing  

7、启动服务

# systemctl restart php-fpm
# systemctl start zabbix-server

8、网页访问:

http://Server_IP/zabbix/
注意:
(1) 首次安装需要填写相关信息;
(2)	默认用户:admin 	默认密码:zabbix
(3) Zabbix前端配置文件:"/etc/zabbix/web/zabbix.conf.php"

到这里zabbix-server端就安装完成了;

Agent端安装

1、安装zabbix源

# rpm -iUh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm

2、安装客户端软件

# yum install zabbix-agent zabbix-sender -y

3、编辑配置文件

# vim /etc/zabbix/zabbix_agentd.conf
Server=zabbix_server_ip       # ServeIP
ServerActive=zabbix_server_ip      # 被动模式下可以不填;
Hostname=node1                  #  本机主机名,唯一		

4、启动服务

# systemctl start zabbix-agent

Zabbix完整的监控流程

本段就将详细介绍zabbix完整的监控流程,包括添加每个组件的详细说明:

按以下顺序添加每个组件:

HostGroup-->Hosts-->Applications-->Items-->Triggers-->Events-->Graphs-->报警通知(Media Types-->UserGroups-->Users-->Actions)

HostGroups

定位到:Configuration-->Host Groups-->Create host groups

Name:唯一的主机组名称
Host:可以将现有的主机加入到改组,还可以将模板关联此组

最后点击Add即可,HostGroups添加成功;

Hosts

定位到:Configuration-->Hosts-->Create Host

Host name	:输入一个唯一的主机名。允许有字母、空格、圆点、破折号和下划线。
	注意: 由于 Zabbix agent 运行在你所配置的那台主机上,所以此 agent 配置文件 的参数 Hostname 必须和这里输入的主机名是一致的。 在配置 主动代理检查 的过程中参数中的主机名也是需要的。
Visible name:显示名称。如果你设置了这个名称,它将会在列表、拓扑图等地方显示。此属性支持 UTF-8 。
Groups:选择主机所属主机组。一个主机必须至少属于一个主机组。
New host group:可以创建一个新的组并和主机关联。如果为空表示忽略。
Interfaces:支持这几种主机接口类型: Agent, SNMP, JMX 和 IPMI.
	要增加一个新接口,在 Interfaces 区域点击 Add ,输入 IP/DNS, Connect to 和 Port 信息。
	注意: 用在任何监控项的接口都不能被删除,并且Remove链接是灰色的。
	在 SNMP 接口使用 Use bulk requests 选项来为每个接口启用和禁用SNMP请求的 批量处理。
	IP address:主机的IP地址(可选)。
	DNS name:主机的DNS名称(可选)。
	Connect to:点击对应的按钮告诉Zabbix服务器采用哪种模式从代理端获取数据:
		IP - 连接到主机的IP地址(推荐)
		DNS - 连接到主机的DNS名称
	Port:TCP/UDP 端口. 默认端口:Zabbix agent 10050, SNMP agent 161 , JMX 12345 , IPMI 623.
	Default:选择单选按钮设置默认接口.
Description:填写主机描述。
Monitored by proxy:主机可以被Zabbix服务器或者Zabbix代理服务器监控:
	(no proxy) - Zabbix服务器监控主机
	Proxy name - Zabbix代理服务器“代理服务器名称”监控主机
Enabled	选中此项激活主机,准备接受监控。如果没选中,表示主机未激活,不能被监控。
Templates :可以将templates 链接到主机。所有实体(监控项, 触发器, 图表和应用集)将从模板继承。
要取消链接模板,请使用Linked templates区域的两个选项之一:
		Unlink - 取消链接模板,但保留它的监控项、触发器和图表
		Unlink and clear - 取消链接模板并删除所有它的监控项、触发器和图表
		
IPMI 选项卡包含 IPMI 管理属性。

Macros :定义主机级别的宏,Inherited 和 host macros 选项,你也可以在这里查看模板级的宏以及全局宏。

Host inventory 选项卡允许你为主机手工输入 库存 信息。你还可以选择启用 自动 库存量, 或者禁用此主机的库存量。

Encryption 选项卡允许你请求与主机 加密的 链接。

Applications

可以在模板上面创建,后面使用的时候关联模板即可; 这里介绍直接在主机上面创建:

定位到:Configuration-->Hosts-->某被监控主机的Applications-->Create Application

Name:Application的名称
最后点击Add即可添加成功;

Items

定位到:Configuration-->Hosts-->某被监控主机的Items-->Create Items

Name:Item的名称
Type:监控类型
Key:用来获取数据的监控项的key
Host interface:选择接口
Type of information:执行转换后存储在数据库中的数据类型(如果有)
	Numeric (unsigned) - 64位无符号整数
	Numeric (float) - 浮点数
		可以存储负值。
		允许范围: -999999999999.9999 到 999999999999.9999.
		从Zabbix 2.2开始,也支持科学计数值。例如。 1e+7,1e-4。
	Character - 短文本数据
	Log - 具有可选日志相关属性的长文本数据(timestamp, source, severity, logeventid)
	Text - 长文本数据
Data type:数据类型
Units:单位符号
Use custom multiplier:使用自定义乘数
Update interval (in sec):更新数据时间间隔,单位秒;
Custom intervals:自定义检查监控项的规则
	Flexible - 创建更新间隔的异常(间隔不同的频率)
	Scheduling - 创建自定义轮询时间表。
History storage period (in days):在数据库中保留详细历史记录的天数。旧的数据将被管家删除。
Trend storage period (in days):在数据库中保持汇总(小时最小,最大,平均,计数)N天的详细历史记录。旧的数据将被管家删除。	
Store value:
	Delta (speed per second) 每秒速度:(value-prev_value)/(time-prev_time)
	elta (simple change)简单的变化:(value-prev_value)
		value:当前值
		value_prev:先前收到的值
		time:当前时间
		prev_time:先前的时间
Show value:用于显示数据
Applications:将此Item连接到一个或多个应用
Populates host inventory field:主机清单
Descriptio:描述

最后点击Add即可添加成功;

Triggers

定位到:Configuration-->Hosts-->某被监控主机的Triggers-->Create Triggers

Name:触发器的名称
Expression:触发器的逻辑表达式
Multiple PROBLEM events generation:是否生成多个问题事件
Description:描述
URL:一般不使用
Serverity:通过点击对应的按钮来设置所需的触发器severity
Enable:启动

Item:该触发器的Item
Function:函数表达式
N:数值

Dependencies:依赖其他触发器,可点击Add添加依赖的触发器; 最后点击Add即可添加成功;

Events

事件不需要添加,随便搞点事情,触发器一但触发后就会产生事件,如下图: OK-->Problem-->OK

Graphs

为了更直观的看到监控数据,需要添加图形用来展示数据;

定位到:Configuration-->Hosts-->某被监控主机的Graphs-->Create graph

Name:图形名称
Width:宽度,单位像素 仅适用于预览的饼图/爆炸图形
Height:高度,单位像素
Graph type:图形类型
Show legend:显示图形图例
Show working time:非工作时间将以灰色显示
Show triggers:显示触发器
Percentile line (left):
Percentile line (right):
Y axis MIN value:Y轴最小值
	计算 - Y轴最小值将自动计算
	固定 - Y轴最小固定值。不适用于派和爆炸饼图。
	项目 - 所选项目的最后一个值将是最小值
Y axis MAX value:Y轴最大值
Items:指定监控项目,将其数据显示此图形中
	可以指定多个items
	项目属性:
		排序顺序(0→100)	绘制顺序。0将被首先处理。
		名称:项目的名称,数据将被显示。
		类型:类型(仅适用于饼图和爆炸的饼图):
			简单 - 项目的值在饼图中按比例表示
			图形总和 - 项目的值表示整个饼图
			注意,“图形总和”项的着色将仅对它不被“比例”项目占用的程度。
		功能:当一个项目存在多个值时,将显示什么值:
			全部 - 全部(最小,平均和最大)
			最小 - 最小仅
			平均 - 仅平均
			最大 - 仅最大
		绘制样式:绘制风格(仅适用于正常的图表;对于充满堆栈图区域总是使用):
			线路 -画线,
			填充区域 -绘制填充区域
			粗线 -画粗线
			点 -画点
			虚线 -画虚线
		Y轴侧:元素分配给哪个Y轴侧。
		颜色:十六进制表示法中的RGB颜色。

最后点击Add即可添加成功; 接下来我们可以到 Monitoring-Graph下查看该图形展示:

报警通知

Medias,UserGroups,Users,Actions这里不做详解,请点击下面链接查看: Zabbix 3.0 配置企业微信报警 Zabbix 3.0 自定义脚本报警(邮件报警)

结束语

到这里,我们整个监控就添加完成了,此文是试验效果,实际工作中要根据实际情况设置生产需要的监控,以及合理的触发器,最后设置报警通知给相关的运维人员。