zabbix进阶1

zabbix触发器、action及模板(01)_

zabbix宏和用户自定义监控(02)_

zabbix发现、自动注册和web监控(03)_

zabbix分布式监控(04)_

 

 

 

第一章:触发器,action及模板

zabbix:数据采集-->数据存储--->数据展示和分析--->报警

数据采集:

SNMP

agent

ICMP/SSH/IPMI

数据存储:

cactirrd//轮转存储

nagios,可以将数据保存到mysql,默认nagios并不保存数据,也可以是无数据库的

//nagios的报警功能比较强悍

zabbixmysql/pgsql/oracle 都支持

数据展示:大多数的展示都是基于web平台

php

java

移动app

//拿到数据进行显示而已

报警:通知给管理员,通过media//实现报警

media:短信,微信,msnmail等,通知相关人员

使用相应的接口

zabbix:监控的实现

采集:

zabbix agent:

agent (active):agent通过sender主动发信息给server

SNMP

SSH

保存:RDBMS,众多的都可以

展示:phpweb gui

报警:报警升级机制

添加zabbix的监控对象:手动发现/自动发现

hostshost group://

每一个监控对象:item

多个itemapplication,通过key来标记一个item

//server通过agentd上的不同key来区分不同的监控项(item)

//有的item的采集时间是不同的,有的10s,有的5s等,

//在任何一个agentkey是不能重复的

graph,screen:将多个自定义图形,放在一起,放在一个大屏幕中

triggerevent //触发器:定义一个数据指标的阈值:上下限

trigger可以生成event,但是event的生成原因不一定都是trigger,例如discover也可以生成event

action(notification,operation,condition) //满足一定条件后,触发action

//trigger只有在满足一定条件的状态时间才需要

创建触发器:

状态:problem | OK

{<sever>:<key>.<function>(<parameter>)}<operator><constant>

server:主机名 //constant 常数

key:主机上关系的相应监控项的key

function:评估采集到的数据是否在合理范围内时所使用的的函数,其评估过程可以根据采取的数据

、当前时间及其它因素进行

//常见的函数:

avg

count 计数

change 上一次和这次的差值

date

dayofweek 星期几

delta 计算二者的差值

diff 不同之处

iregexp  基于正则表达式做匹配

last最后几次采样,last[0],最后1次,last[2]3

max

min

nodata 没有采集到值

now

sum  求和

//函数是触发器的函数,是triggerkey做何种运算所调用的函数


parameter:函数参数,sum(10):10秒内所有取值之和

 sum(#10):最近10次取值之和

此外:avgcountlast,min,max还支持第二个参数,用于完成时间限定

//max(1h,7d)返回一周之前的一个小时之内的最大值

触发器的运算符:

/,*,>,<,=,#{不等于}&|

trigger举例:{www.magedu.com:system.cpu.load[all,avg1].last(0)}>3

主机:www.magedu.com

key : system.cpu.load[all,avg1]

函数:last(0) //0是参数

last(0)相当于last(#1) //

//表示主机www.magedu.com上所有的CPU的过去1分钟内的平均负载的最后一次取值大于3

//将触发状态转换

trigger创建://triggeritem级别的

configuration-->hosts->trigger分为:

trigger

dependenciesagentserver的中间路由器,

//假如中间路由器挂了,不会报警认为所有的agent都挂了

//zabbix只能基于触发器依赖,但是nagios可以基于nagios依赖

注意://zabbix_agentd:是工作在agent上的一个收集信息的工具

  //zabbix_proxy:是代理zabbix_server收集信息的一个中继站

  //pkill httpd:命令可以杀死进程

kill :对应的是PID

pkill :对应的是COMMAND //进程名

 

 

实验1:创建trigger:触发器//自定义trigger,监控network-流量

configuration-hosts—create trigers—

//先看以下自己网卡流量的取值---{我的是大于in:1500/ out:200}

name网络入栈流量过大

trigger:

expression:

item:自己定义的network-in流量

function: {10.0.0.201:net.if.in[eno16777736].last()}>10000 //最后一次大于n

last of: 0

time shift: 1500 //最后一次最大值大于1500

OK event generation //事件生成当前触发器的problem”事件生成其他事件

URL:在Screens的“status of triggers”中要显示的内容的链接

Severity严重级别 ,当前触发器的严重级别

enabeld :是否启用触发器

//只需要定义nameexpressionenabled即可

monitor—latest data---201-网络in---打开相关的//看到201网卡-in上会有


wKiom1gmlaGxyypwAAA25dsAFWg468.png-wh_50

 

//中间的那条线,就是trigger的线

//这个触发器的表达式的意思是:定义一个阈值,看是否超过,然后,进行下一个操作

 

要实现zabbix的通知功能:一般需要两个步骤:

1. 定义所需的媒介:(media//通常指发送消息的途径,如邮件,Jabber,和SMS短信群发系统
//先创建media type{自定义media},然后创建组,最后创建用户加入组,
//创建用户的时候需要定义好media为自定义的media,定义自己对哪些级别的信息接收
//创建组的时候需要定义 user group host group具有什么权限

2. 配置一个动作(action):发送短信到“媒介” //动作由“条件”和“操作”组成,它的逻辑为当“条件”满足时,就应该执行相应的操作 //通知执行远程命令两个最基本的操作

创建action

正常工作中的某触发器状态发生改变{OK转为problemproblem转为OK},此时需要采取一定的指令:报警,执行远程命令等

 

 

 

zabbi的事件event

1. 触发器事件触发器每次状态发生改变都会生成相应时间

2. 发现类事件zabbix会周期性地扫描“网络发现规则”中指定的IP范围,一旦发现主机或服务,就会生成一个或几个发现事件
发现类事件有8类:Service UPService DownHost UPHost DownService discoverd
Service Lost Host discoverd Host lost
{serviceHost}.{UPDonwdiscoverd}

3. 主动agent自动发现事件,(也称作自动注册事件);当一个此前状态未知的agent发起检测请求,时会发生此类事件

//因此zabbix的通知机制,也称作基于事件的通知机制

 

zabbix{media type}

常见类型

E-mail电子邮件

SMS短信

Jabber能够实现基于InternetLAN

自定义通知脚本//Zabbix可以调用位于其配置文件“AlertScriptsPath”变量所定义的脚本到目录中的脚本

AlertScriptsPath=/usr/lib/zabbix/alertscripts  // /etc/zabbix/zabbix_server.conf定义的脚本位置

 

//试验2,先创建用户和组

wKiom1gmlcGROdySAABxSwcVCYU540.png-wh_50

 

//创建三个User groupzabbix_users,magagers,CTOs 用于实现在不同级别发送信息

//用户tom属于CTOs, 

//administrator-users—create users

Usertom //属于CTOstom只接受highdisaster级别的组

wKioL1gmldKxwvDnAAAibOs7Uww884.png-wh_50


//admin 修改media

wKioL1gmljyR2e6yAAAkCHIjojc557.png-wh_50


条件condition/

wKiom1gmllGjM4wyAACkzTu6RuQ557.png-wh_50


//条件:1.不在维护期,2.triggerproblemtrigger的名字是 -//满足这三个条件的时候,就执行操作

实现步骤

1. user group—--media type ----—user—trigger---action //需要定义这些数据

2. 定义trigger的时候需要定义级别可以多定义几个指定不同的级别

wKiom1gml03Rh-u2AABK-dueVKY356.png


trigger级别Not classified---information---Warning---Average---High---Disaster

未分类消息---警告----平常的---高的---灾难的

Deltaspeed per second):保存为(value-pre_value/(time-prev_time) 的结果

//时间段的平均值

Delta (simple change) :保存为value –pre_value)的计算结果:不计算时间段,只计算差值

 

 

实验测试action的发生

ab 命令进行测试agentd测试结果

media type怎么使用

 

 

//zabbix自定义报警功能,未实现

可能因为,action的通知,到用户不对

 

 

实验创建自定义模板

步骤创建template---创建item-创建graph---创建screen—trigger---action

create template

groups in groups:主机组

hosts  templates in: 模板也有组

macros{$NETINLIMIT}=100000

创建4item,分别为net-innet-outcpu-intrcpu-switch

另外新建一个host然后链接到新建的模板

//action是全局级别的,一个action可以为多个主机服务,报警的

 

问题1server通过agentd的方式,从agentd获得不到数据

Received empty response from Zabbix Agent at [192.168.1.2]. Assuming that agent dropped connection because of access permission

大概意思是说没有权限访问agent端口10050,解决方法如下:

//方法一:

vim /etc/zabbix/zabbix_agentd.conf //agent上只要配置这些就可以

Server = 192.168.1.1 //多个server使用逗号隔开

pkill zabbix_agentd

zabbix_agentd -c /etc/zabbix/zabbix_agentd //重启zabbix_agentd

//方法二:重装zabbix_agentd

//工作目录在 /usr/local/src

http://www.linuxidc.com/Linux/2016-04/130437.htm

1.#./configure --prefix=/usr/local/zabbix_agent --enable-agent && make && make install

/usr/local/sbin目录下会生成zabbix_agentzabbix_agentdzabbix_getzabbix_sender四个文件。

2.groupadd zabbix  

useradd -g zabbix -s /sbin/nologin zabbix  

3.mkdir /etc/zabbix

cp /usr/local/src/zabbix-2.4.5/misc/init.d/fedora/core/zabbix_agentd /etc/init.d/

//启动脚本

sed -i 's#BASEDIR=/usr/local#BASEDIR=/usr/local/zabbix_agent#' /etc/init.d/zabbix_agentd #

//修改 Agent 安装路径,告诉agentd的启动文件agentd的安装目录

4.修改配置文件/usr/local/zabbix_agentd

shell > grep -vP '^#|^$' /usr/local/zabbix_agent/etc/zabbix_agentd.conf  # 调整配置文件

LogFile=/tmp/zabbix_agentd.log

Server=121.42.111.220        # Zabbix Server IP ( 被动模式,客户端被动 )

ServerActive=127.0.0.1       # 主动模式,如果使用也填 Zabbix Server IP ,不使用可以注释掉

Hostname=101.201.142.247     # 本身 IP Zabbix Server 添加主机时需要使用,不一定是 IP

Include=/usr/local/zabbix_agent/etc/zabbix_agentd.conf.d/*.conf   # 加载自定义的监控配置文件

UnsafeUserParameters=1 # 允许自定义 Key

5.启动 :

service zabbix_agentd start

chkconfig --add zabbix_agentd

chkconfig --level 35 zabbix_agentd on

//iptables -A INPUT 'Zabbix Server IP' -p tcp --dport 10050 -j ACCEPT //客户端使用的是被动模式

 

 

 

实验zabbixserver端实现报警发送邮件到指

 

1. send或者postfix只需要安装一个就可以,启动,并开机启动

2. 创建media type //创建自定义media type

3. 

 


//zabbix mail报警没有实现

 

cat a.txt | grep loss | awk -F% '{print $1}'| cut -d' ' -f1  //获取丢包率

cat a.txt | grep loss | awk   '{print $10}' | cut -dm -f1 //获取超时时间

 

pkloss=` cat /tmp/10.0.0.200.tmp | grep loss | awk -F, '{print $3}' |cut -d% -f1 `

restime=`cat $file | grep loss | awk   '{print $10}' | cut -dm -f1 `