p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; text-indent: 5.0pt; line-height: 150%; font-size: 10.5pt; font-family: Consolas }
h1 { margin-top: 17.0pt; margin-right: 0cm; margin-bottom: 16.5pt; margin-left: 0cm; text-align: justify; text-indent: 0cm; line-height: 240%; page-break-after: avoid; font-size: 20.0pt; font-family: Consolas }
h2 { margin-top: 13.0pt; margin-right: 0cm; margin-bottom: 13.0pt; margin-left: 0cm; text-align: justify; text-indent: 0cm; line-height: 172%; page-break-after: avoid; font-size: 18.0pt; font-family: Consolas }
h3 { margin-top: 13.0pt; margin-right: 0cm; margin-bottom: 13.0pt; margin-left: 0cm; text-align: justify; text-indent: 0cm; line-height: 150%; page-break-after: avoid; font-size: 16.0pt; font-family: Consolas }
h4 { margin-top: 14.0pt; margin-right: 0cm; margin-bottom: 14.5pt; margin-left: 0cm; text-align: justify; text-indent: 0cm; line-height: 157%; page-break-after: avoid; font-size: 14.0pt; font-family: Consolas }
p.MsoCaption,li.MsoCaption,div.MsoCaption { margin: 0cm; margin-bottom: .0001pt; text-align: justify; text-indent: 10.0pt; line-height: 150%; font-size: 10.0pt; font-family: "Calibri Light", "sans-serif" }
p.MsoListParagraph,li.MsoListParagraph,div.MsoListParagraph { margin: 0cm; margin-bottom: .0001pt; text-align: justify; text-indent: 21.0pt; line-height: 150%; font-size: 10.5pt; font-family: Consolas }
span.1Char
{ font-family: Consolas; font-weight: bold }
span.2Char
{ font-family: Consolas; font-weight: bold }
span.3Char
{ font-family: Consolas; font-weight: bold }
span.4Char
{ font-family: Consolas; font-weight: bold }
p.a,li.a,div.a { margin-top: 0cm; margin-right: 5.0pt; margin-left: 5.0pt; margin-bottom: .0001pt; text-indent: 5.0pt; line-height: 12.0pt; background: #F2F2F2; font-size: 10.5pt; font-family: Consolas; color: #333333 }
span.Char { font-family: Consolas; color: #333333; background: #F2F2F2 }
.MsoChpDefault { font-family: "Calibri", "sans-serif" }
div.WordSection1 { }
ol { margin-bottom: 0cm }
ul { margin-bottom: 0cm }

Zabbix的监控流程可以简单描述为:数据采集-->数据存储-->数据分析-->数据展示-->监控报警

数据采集:Zabbix通过SNMP、Agent、ICMP、SSH、IPMI等进行数据采集

数据存储:Zabbix存储在MySQL上,也可以存储在其他数据库

数据展示:web界面展示、(移动APP、java_php开发一个web界面也可以)

数据报警:邮件报警、微信报警、短信报警、报警升级机制

Zabbix的监控配置流程可以简单描述为:

告警是由一系列的流程组成,首先是触发器达到阀值,产生一个事件,接下来由Action对事件信息进行处理,其中包括两部分:第一部分是发送消息,即将告警信息发送给用户,第二部分是执行命令,即将事件用命令进行处理,达到对事件故障自动尝试恢复的效果。

Host groups(主机组)→Hosts(主机)→template(模板)→Applications(监控项组)→Items(监控项)→graph(图形) →screen (图形分组)→Triggers(触发器)→Event(事件)→Actions(处理动作)→Media types(告警升级|1.执行远程命令2.发送告警邮件)→User groups(用户组)→Users(用户)→Medias(告警邮件)

在实际生产使用的时候,Items、Trigger、Graph采用模板来进行监控,模板特点就是可以重复的事情一次完成,修改了模板等于修改了所有调用此模板的主机。这样可解放运维的双手

Graph不是必需的,因为没有配置图形,数据获取并不影响,获取数据是Items的功能。但是对于使用ZabbixWeb界面用户来说,没有图形等于没有数据,因此重要的Items必须添加必要的图形以做可视化展示。如果想集中查看图形,可以通过screen功能。

1.1添加主机组

建议:对同一属性的主机或模板,尽量归纳到分组,方便以后管理。分组原则建议如下。

以地理位置进行划分。

以业务为单位划分组。

以机器用途划分。

以系统版本划分。

以应用程序分组。

其他方式等。

分组的目的是将同一属性的主机归类,如果你不想将新添加的主机归纳为自定义的分组,可以使用默认的分组。

1.  点击Configuration→Host groups上的按钮Create host group,如图2-3所示。

图 2‑1

2.  单击后会出现一个添加新主机组的界面,如图2-2所示。

图2-2

在图2-2中”Group name”是组的名称:”Host Host in”是选择那些设备属于这个新添加的组。

3.  单击Save保存,新添加的主机组就可以显示在主机组列表中,如图2-3所示。

图2-3

1.2添加模板

监控项、触发器、图形、Web、Discovery等都是存在于主机之上的,由于多个主机都会用相同的监控配置,因此,可以对这部分同类的数据进行归纳抽象,即将这些数据做成模板。当我们需要对其他监控数据进行配置的时候,只需要对相对应的主句添加对应的模板即可。

1.  配置模板的步骤为:单击→Configuration→Templates→Create template 如图2-4所示。

group:可以选择在哪个组创建该模板

import:可以导入模板

图2-4

2.填入模板名称和所属的组,如图2-5所示。

图2-5

4.  模板具有继承的功能(将一个模板在另外一个模板中使用),如图2-6所示。

图2-5

搜索当前已经存在的模板,然后单击Add添加-点击下面的Add。

5.模板中也可以设置宏,如图2-6所示。

宏主要是对变量定义,设置宏的作用是方便后面再Items、Trigger中引用,在模板中配置一个宏,在不同的主机对该宏设置不同的变量值,从而达到模板通用的目的。

图2-6

6.查看新建的模板,如图2-7所示。

图2-7

可以看到,Items中已经有32Items了,是继承与trt-linux-basic模板的。以后会详细讲解如何在模板中添加其他的Items。

1.3添加主机

1.  添加主机的目的是对具体的设备进行监控,步骤为:依次单击Configuration→Hosts→Create host,如图2-8所示。

图2-8

2.在图2-8中单击Create host,出现如图2-9所示的界面。

图2-9中各参数的详细说明如表2-1所示。

图2-9

表2-1

参数

描述

主机名(Host
name)

输入一个不重复的主机名。编辑该名称对应客户端的配置文件时,主机名这一项必须与此处输入的值相同。

访问名(Visible
name)

如果设置该名字,那么它将出现在主机列表、地图等地方。

群组(Group
in groups)

选择主机所属的群组。一个主机必须属于至少一个主机组。

新建主机组(New
group)

一个新的群组将被 ,然后自动连接到该主机上。如果为空,该项将被忽略。

接口协议(Agent
interfaces)

一个主机支持的主机接口协议包括:Agent、SNMP、JMX、IPMI,如果想增加一个新的接口,单击”Add”按钮,然后输入IP/DNS、连接项、端口等信息。

IP地址(IP address)

要监控主机的IP地址(可选项、默认是IP)

DNS名称(DNS name)

要监控主机DNS能扣解析的名称(可选项)

与Agent通信方式(Connect to)

单击对应名称的按钮

IP

连接要监控主机的IP地址(推荐)

DNS

要监控主机能够正常解析的DNS

端口(Port)

TCP协议的端口,Zabbix客户端使用的默认值是10050

通过代理服务器进行监控

(Monred by
proxy)

主机可以通过Zabbix服务器或者Zabbix的一个代理去监控客户端

状态(enabled)

勾选则开启

2.  选择模板,如图2-10所示。

1.可以添加多个模板。

2.可以搜索模板进行添加。

图2-10

3.添加了一个bjstack-template新建的模板,单击Add保存,然后update更新

1.4添加Graphs

Graphs是将数据展示为图像,以视觉化形式展示,Graphs的配置存在于主机和模板中。

1.在所在的主机模板中,选择Graphs,如图2-11所示。

图2-11

2.针对web-node1-192.168.90.12这台主机上的itmes进行配置Graph 单击“Create graph”按钮,如图2-12所示。

图2-12

3.出现新建图形的界面,输入Name,选择所需要的Items,如图2-13所示。

图2-13

4.如果要查看所有的图形,单击Monitoring→Graphs选择对应的Group、Host、Graph,查看cpu load如图2-14所示。

图2-14

1.5添加Screen

Screen将多种信息放在一起展示,便于集中展示某个Host的多个信息,或是将多个Host的同一种信息放在一起显示,这些信息可以为Graphs、Maps、Serverinfo等,几乎涵盖Zabbix所有的监控信息。

1.通过单击Configuration-→Screens→Create screen来创建,创建时定义Screen的行数和列数(如图2-15至图2-16所示)

图2-15

图2-16

2.单击创建Screen名称,如图2-17所示

图2-17

3.单击单元格内的Change,选择选择cpuload图形 添加相应的元素,如图2-18、图2-19所示

图2-18

图2-19

3.  配置好后,通过单击Monitor→Screen,选择相应的Screen组,如图2-20所示。

图2-20

1.6添加Trigger

基于刚刚的web-node1创建触发器,选择对应的Host/Template(模板会自动关联至主机),创建触发器CPU Load如图2-21、图2-22、图2-23、图2-24是对触发器进行设置的示例

图2-21

图2-22

图2-23

图2-24

最后效果如图2-25、图2-26

图2-25

图2-26

推荐更多Zabbix触发器支持的函数说明:http://pengyao.org/zabbix-triggers-functions.html(来自姚炫伟翻译)

推荐Zabbix Trigger表达式实例:http://pengyao.org/zabbix-trigger-example-1.html(来自姚炫伟)

添加完触发器,可以打开Zabbix内置的报警铃声,如图2-27

图2-27

也可以修改items的报警时间间隔(不是必须),如图2-28所示

图2-28

1.7添加Media

步骤为:登陆Zabbix
Web页面,单击Administration→Media Type→Create Media Type(右上角)-如图2-29

图2-29

用户可以配置Media,发送告警的方式等,点击Admin,也可以创建一个新用户(我这里只是一个例子)如图2-30

图2-30

2.配置一个用户作为接收如图2-31

图2-31

保存并开启如图2-32

图2-32

1.8.添加Action

配置action,需要如下几个步骤:

1.在菜单栏中单击Configuration→Actions。

2.在Event source下拉菜单中选择事件来源。

3.单击Create action。

4.设置Action参数,以及报警消息内容。

5.单机Conditions按钮,设置Action的依赖条件。

6.单击Operation按钮,设置执行动作。

1.8.1配置Action

通过菜单Configuration→Actions→Create Action来创建Action 如图2-33、图2-34

图2-33

图2-34

告警消息内容:

报警主机:{HOST.NAME1}

报警服务: {ITEM.NAME1}

报警Key: {ITEM.KEY1}:{ITEM.VALUE1}

严重级别: {TRIGGER.SEVERITY}

恢复消息内容:

恢复主机:{HOST.NAME1}

恢复服务: {ITEM.NAME1}

恢复Key:{ITEM.KEY1}:{ITEM.VALUE1}

1.8.2配置Conditions

条件之间的逻辑运算符

1.不在维护期

2.Trigger状态为PROBLEM

3.主机是web-node1-192.168.90.12

4.以上条件必须全部满足才可以发送通知,如图2-35所示例

图2-35

1.8.3配置Operation

触发器事件成立后有以下两种动作。

1.发送消息(send message)

2.执行远程命令(Remote command)

当然还有很多,比如:增加主机、删除主机、开启监控、关键监控、链接模板、取消模板链接等等。

当出现了Trigger状态改变时,应尝试自愈,如果无法修复,那么报警升级发送消息通知相关人员。如图2-36、图2-37、图2-38、图2-39

图2-36

告警信息将氛围两个等级梯度发送,如下图2-33、图2-34

第一梯度:1-2步,远程执行命令重启Apache,间隔时间为60s,发送执行2次知道故障恢复。

第二梯度:3-4步,发送给Admin用户,间隔时间为60s,发送两次,知道故障恢复。

首先要支持远程执行命令,必须开启远程执行命令,以及sudo权限

[root@linux-node2
~]# vim /etc/zabbix/zabbix_agentd.conf

EnableRemoteCommands=1

[root@linux-node2
zabbix_agentd.d]# systemctl restart zabbix-agent

[root@linux-node2
~]# visudo

zabbix      ALL=NOPASSWD: /usr/bin/systemctl restart
httpd

图2-37

图2-38

图2-39

1.8.4查看报警信息

如果达到阀值Zabbix会执行远程执行命令(如果不成功)-最后发送告警邮件,如图2-40、图2-41

图2-40

图2-41

第3章Zabbix完整监控的更多相关文章

  1. 第5章Zabbix自动化监控

    p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; t ...

  2. 第6章Zabbix分布式监控

    Zabbix是一个分布式的监控系统.分布式监控适合跨机房.跨地域的网络监控.从多个Proxy收集数据,而每个Proxy可以采集多个设备的数据,从而轻松地构建分布式监控系统. ZabbixProxy可以 ...

  3. Zabbix 完整的监控流程

    目录 1.Zabbix的监控历程概念 1.1 基本概念 1.2 流程图 2.创建主机并加入主机组 3.添加新加主机的应用集(aplication) 4.添加监控项(item) 5.告警触发器配置(Tr ...

  4. 第4章Zabbix监控实践

    p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; t ...

  5. 带你了解zabbix如何监控mysql主从到报警触发

    本章博客我们一起来聊一聊如何监控mysql数据库主从状态? 思路梳理: 1)首先我们都知道,判断Mysql主从是否正常,是通过主从上面的SQL和IO线程都为yes状态判断(通过awk取值,grep过滤 ...

  6. zabbix自动化监控基础

    zabbix安装配置文档 2 一 zabbix-server 安装配置(基础配置) 2 二 zabbix agent安装配置 5 2.1 主动模式和被动模式 6 2.2 安装配置zabbix_agen ...

  7. 《为什么说 Prometheus 是足以取代 Zabbix 的监控神器?》

    为什么说 Prometheus 是足以取代 Zabbix 的监控神器?   Kuberneteschina 致力于提供最权威的 Kubernetes 技术.案例与Meetup! ​关注他 12 人赞同 ...

  8. zabbix硬件监控以及服务

    大家好今天给大家带来zabbix3.4.8监控主机,那么最近由于我个人的关系.没有及时的更新文章所以,很抱歉那么今天我分享的内容是zabbix3.4.8监控服务器.本章的具体监控服务器如下: 服务器的 ...

  9. Zabbix分布式监控系统实践

    https://www.zabbix.com/wiki/howto/install/Ubuntu/ubuntuinstall 环境介绍OS: Ubuntu 10.10 Server 64-bitSer ...

随机推荐

  1. PHP 用session与gd库实现简单验证码生成与验证的类

    验证码是为了防止机器灌水给网站带来污染以及增加服务器负担而出现的.目前大大小小的网站都有验证码.今天自己实现了一个简单的验证码类.说简单是因为没有加一些干扰的弧线等等,只是将文字旋转了一下.当然,因为 ...

  2. 征服恐惧!用 Vim 写 iOS App

    我们都知道 Vim 和 Emacs 都是文本编辑器中的上古神器,你也许用 ctags,cscopes 配合 Vim 完成过大型 C 或者 C++ 的开发,你也许配合过其他插件,完成过 JavaScri ...

  3. fetch使用的常见问题及解决办法

    首先声明一下,本文不是要讲解fetch的具体用法,不清楚的可以参考MDN fetch教程. 引言 说道fetch就不得不提XMLHttpRequest了,XHR在发送web请求时需要开发者配置相关请求 ...

  4. HP DL388 gen9服务器安装RHEL 6.5系统

    测试: 1.默认UEFI模式,F10下智能安装,如果选择自己划分分区,进入该选项后会看到系统自动就帮我们创建了一个/efi 的500M分区,一开始我就是被这个分区坑了的,要知道服务每次重启都要等很久的 ...

  5. WPF DataGrid Drag

    自己实现的功能.代码比较简单的DataGrid的Drag处理,着重处理DataGrid里的拖动排序. using System; using System.Collections.Generic; u ...

  6. php根据用户输入单词,匹配相似单词

    最近在使用一款app背单词的时候,会在某个单词下面,列出与之相类似的单词.于是我在想这个功能是如何做的,自己使用php版本,做了个简单的例子. 大致思路如下: 1.生成英文单词库,并将单词放置redi ...

  7. Extjs中创建Tree菜单【一】

    此篇treepanel的描写是很简单,没有太大的难度,在学习时,可以先熟悉tree的一些配置信息.属性.方法和事件. 然后先写一个简单的例子,慢慢了解从中如何实现的,然后在慢慢的深入了解,实现一些复杂 ...

  8. Java程序员入门:程序员究竟可以干多少年?

    很多人都说程序员是青春饭,只能干到30岁. 然而事实真的如此么? 今天我们来探讨一下这个老话题,看看为了技术与编程执着究竟能走多远? 01年龄分布图 先来看一下程序员的年龄分布图: 我们可以看到程序员 ...

  9. 第二章 mac上运行第一个appium实例

    一.打开appium客户端工具 1      检查环境是否正常运行: 点击左边第三个图标 这是测试你环境是否都配置成功了 2      执行的过程中,遇到Could not detect Mac OS ...

  10. WeMall微信商城源码插件会员卡代码详情

    WeMall微信商城源码插件会员卡代码是用于商业推广的比较有效的方式,分享了部分比较重要的代码,供技术员学习参考 Index_index.html <html> <head> ...