Zabbix 4.0企业级分布式监控 day03 第四章 监控

 

4.2 监控数据

在这里插入图片描述 

Graph

Configuration——》Hosts——》点击主机名——》Templates——》Templates OS Windows——》Graphs——》Create Graph
在这里插入图片描述

自定义graph图表
在这里插入图片描述
在这里插入图片描述
点击添加
在这里插入图片描述
监控
在这里插入图片描述

Screen

自定义Screen监控图

在这里插入图片描述
create screen
在这里插入图片描述
添加所关心的graph
在这里插入图片描述
在这里插入图片描述
验证:
搜索 windows,点击screen
在这里插入图片描述
在这里插入图片描述
Monitoring下的screens是用户可自定义的,且可以进行权限控制
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

Web

监控数据查看

web是直接在主机上添加的
在这里插入图片描述
创建web Scenario
配置Scenario
在这里插入图片描述
配置Steps
在这里插入图片描述在这里插入图片描述
创建好后,在search windows,点击web
在这里插入图片描述
跟模板关联的web
在这里插入图片描述

现在 在主机上独立的创建一个 web测试2
在这里插入图片描述
验证:
在这里插入图片描述

在这里插入图片描述

检测正常,但出现了中文乱码,怎么解决?

中文乱码解决

因为zabbix前端web默认使用的字体和中文字体不兼容。

拷贝喜欢的字体到web前端的front目录下,然后修改web前端的字体配置。

在这里插入图片描述
把Windows的字体复制到 /tmp/下,然后mv

这里一定要注意是ttf格式,而不是ttc哦。 通过mv命令修改
mv /tmp/MSYH.TTC /tmp/MSYH.TTF
cp /tmp/MSYH.TTF /usr/share/zabbix/assets/fonts/
cd /usr/share/zabbix/
vim /usr/share/zabbix/include/defines.inc.php
找到两个FONT_NAME所在的位置

zabbix 4.2/usr/share/zabbix/assets/fonts/
zabbix 4.0/usr/share/zabbix/fonts/

在这里插入图片描述

如果页面还是显示不出来可以检查下字体的读写权限
在这里插入图片描述

4.3 监控阈值设置

告警触发流程图
在这里插入图片描述
在这里插入图片描述

自带模板的设置

点击触发器
在这里插入图片描述

diff函数:监控项前后两个值是否发生变化,如果发送变化就可以触发告警

laas函数:zabbix最新的监控项的值

avg函数:平均值

nodata:监控Zabbix agent是否收集到数据

自定义触发器

第一步,创建触发器
找到之前创建的模板,点击Trigger
在这里插入图片描述
找到之前创建的监控项
在这里插入图片描述

因为正常情况下,如果端口是通的,返回的值是0
手动把触发器设置为,如果telnet通的话就告警

为了实验方便,设置成反的

在这里插入图片描述在这里插入图片描述在这里插入图片描述
验证:
在这里插入图片描述
补充:
触发器设置了,却没触发告警
应该排除监控项的值是否符合我们预期,找到主机对应监控项的最新数据Monitoring Latest data的值。
1.看平时的监控数据是什么值,从而决定阈值设置在哪条线
2.最新数据是否满足触发条件

频繁触发告警
1.监控项波动比较大,设置的表达式比较灵敏

4.4 用户及告警媒介

告警操作流程图
在这里插入图片描述在这里插入图片描述

Administration——》User groups——》User
创建用户组,给予组权限,创建用户,把用户加入到组

第一步:添加用户

在这里插入图片描述
在这里插入图片描述

第二步:邮件服务

systemctl status postfix.service
systemctl stop postfix.service
yum install mailx
vim /etc/mail.rc
在最后一行添加上自己的邮箱:
set from=xxx@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=xxx@qq.com
set smtp-auth-password=  自己的授权码 
set smtp-auth=login
前提是要去邮箱,申请开启SMTP服务

在这里插入图片描述
echo “zabbix@root test”|mailx -s “zabbix alert” xxx@qq.com

默认Alert脚本放在 /usr/lib/zabbix/alertscripts

cd /usr/lib/zabbix/alertscripts
vim mail.sh
#!/bin/bash

SENT_TO=$1
SENT_SUBJECT=$2
SENT_CONTENT=$3

echo "$SENT_CONTENT"|mail -s "$SENT_SUBJECT" $SENT_TO

# chmod a+x mail.sh  注意权限
./mail.sh xxx@qq.com "zabbix test2" "test "

第三步:添加邮件关联

Administration ——》 Media types ——》Create
在这里插入图片描述

Administration——》User
在这里插入图片描述

创建告警操作
Configuration——》Actions——》
在这里插入图片描述

Operations
告警的内容,条件,操作

故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生:{TRIGGER.NAME}故障!

告警主机:{HOSTNAME1}
告警事件:{EVENT.DATE}  {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

Recovery 恢复
在这里插入图片描述

第四步:验证

当主机没有处于维护模式,触发器级别大于等于warning的。就会向 findsec用户组发送邮件告警
在这里插入图片描述
手动触发一个告警,将telnet = 0就触发告警

优化脚本,将邮件的内容展现在邮件中。 而不是只有附件

cd /usr/lib/zabbix/alertscripts
vim mail.sh
#!/bin/bash

SENT_TO=$1
SENT_SUBJECT=$2
SENT_CONTENT="/tmp/alert_$$.tmp"   #$$是表示 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。
echo "$3">$SENT_CONTENT

dos2unix $SENT_CONTENT
mailx -s "$SENT_SUBJECT" $SENT_TO<$SENT_CONTENT


确保脚本的归属是zabbix,并且脚本的权限是777
[root@localhost alertscripts]# chmod 777 mail.sh
[root@localhost alertscripts]# chown zabbix:zabbix mail.sh


检查是否安装了dos2unix     yum install dos2unix	

补充:测试邮件正常 -v
echo "test" |mailx -v -s "测试mailx" xxx@qq.com


在这里插入图片描述在这里插入图片描述

 

Monitoring——》Problems——》Apply——》点击时间点 对比
在这里插入图片描述
 

 

补充:触发器函数

abschange
参数:忽略
支持类型:float,int,str,text,log
作用:返回最近获得的值与之前获得值差的绝对值,对于字符串类型:0表示相等,1表示不同

avg
参数:秒或#num
支持类型:float,int
作用:返回一段时间的平均值
举例:
avg(5):最后5秒的平均值
avg(#5):表示最近5次得到值的平均值
avg(3600,86400):表示一天前的一个小时的平均值
如果仅有一个参数,表示指定时间的平均值,从现在开始算起,如果有第二个参数,表示漂移,从第二个参数前开始算时间,
#n表示最近n次的值
示例:
触发器名称:Comparing average load today with average load of the same time yesterday (使用 time_shift 时间偏移量参数).
{server:system.cpu.load.avg(1h)}/{server:system.cpu.load.avg(1h,1d)}>2
This expression will fire if the average load of the last hour tops the average load of the same hour yesterday more than two times. 

max
参数:秒或#num
支持值类型:float,int
描述:返回指定时间间隔的最大值.时间间隔作为第一个参数可以是秒或收集值的数目(前缀为#).从Zabbix1.8.2开始,函数支持第二个可选参数time_shift,可以查看avg()函数获取它的使用方法.
示例:
触发器名称:Free disk space is too low Problem: 最近5分钟内剩余磁盘空间小于10GB
({TRIGGER.VALUE}=0&{server:vfs.fs.size[/,free].max(5m)}<10G)

min
参数:秒或#num
支持值类型:float,int
描述:返回指定时间间隔的最小值.时间间隔作为第一个参数可以是秒或收集值的数目(前缀为#).从Zabbix1.8.2开始,函数支持第二个可选参数time_shift,可以查看avg()函数获取它的使用方法.
示例:
触发器名称:Free disk space is too low Problem:最近10分钟内磁盘空间大于40GB
({TRIGGER.VALUE}=1&{server:vfs.fs.size[/,free].min(10m)}<40G)

nodata
参数:秒
支持值类型:any
描述:当返回值为1表示指定的间隔(间隔不应小于30)没有接收到数据,0表示其他.
示例:
触发器名称:No heartbeats within last 3 minutes 使用函数 nodata():
{zabbix.zabbix.com:tick.nodata(3m)}=1

change
参数:忽略
支持类型:float,int,str,text,log
作用:返回最近获得值与之前获得值的差值,对于字符串0表示相等,1表示不同
举例:
change(0)>n:忽略参数一般输入0,表示最近得到的值与上一个值的差值大于n

count
参数:秒或#num
支持类型:float,int,str,text,log
作用:返回指定时间间隔内数值的统计,
举例:
count(600)最近10分钟得到值的个数
count(600,12)最近10分钟得到值的个数等于12
count(600,12,"gt")最近10分钟得到值的个数大于12
count(#10,12,"gt")最近10个值中,值大于12的个数
count(600,12,"gt",86400)24小时之前的10分钟内值大于12的个数
count(600,6/7,"band")-thenumberofvaluesforlast10minuteshaving'110'(inbinary)inthe3leastsignificantbits.
count(600,,,86400)24小时之前的10分钟数据值的个数
第一个参数:指定时间段
第二个参数:样本数据
第三个参数:操作参数
第四个参数:漂移参数

#支持的操作类型 
eq: 相等 
ne: 不相等 
gt: 大于 
ge: 大于等于 
lt: 小于 
le: 小于等于 
like: 内容匹配

date
参数:忽略
支持类型:any
作用:返回当前的时间,格式YYYYMMDD

dayofmonth
返回当前是本月的第几天

dayofweek
返回当前是本周的第几天

delta
参数:秒或#num
支持类型:floatint
作用:返回时间间隔内的最大值与最小值的差值

diff
参数:忽略
支持值类型:float,int,str,text,log
作用:返回值为1表示最近的值与之前的值不同,0为其他情况
示例:
触发器名称:/etc/passwd has been changed 使用函数 diff():
{www.zabbix.com:vfs.file.cksum[/etc/passwd].diff(0)}>0

fuzzytime
参数:秒
支持值类型:float,int
作用:返回值为1表示监控项值的时间戳与ZabbixServer的时间多N秒,0为其他.常使用system.localtime来检查本地时间是否与Zabbixserver时间相同.
示例:
触发器名称:Check if client local time is in sync with Zabbix server time 使用函数 fuzzytime():
{MySQL_DB:system.localtime.fuzzytime(10)}=0
主机MySQL_DB当前服务器时间如果与zabbix server之间的时间相差10秒以上,表达式返回true,触发器状态改变为“problem” 

last
参数:秒或#num
支持值类型:float,int,str,text,log
作用:最近的值,如果为秒,则忽略,#num表示最近第N个值,请注意当前的#num和其他一些函数的#num的意思是不同的
例子:
last(0)等价于last(#1)last(#3)表示最近**第**3个值(并不是最近的三个值)
本函数也支持第二个参数**time_shift**,例如
last(0,86400)返回一天前的最近的值
如果在history中同一秒中有多个值存在,Zabbix不保证值的精确顺序
#num从Zabbix1.6.2起开始支持,timeshift从1.8.2其开始支持,可以查询avg()函数获取它的使用方法

logeventid
参数:string
支持值类型:log
描述:检查最近的日志条目的EventID是否匹配正则表达式.参数为正则表达式,POSIX扩展样式.当返回值为0时表示不匹配,1表示匹配。该函数从Zabbix1.8.5起开始支持.

logseverity
参数:忽略
支持值类型:log
描述:返回最近日志条目的日志等级(logseverity).当返回值为0时表示默认等级,N为具体对应等级(整数,常用于Windowseventlogs).Zabbix日志等级来源于Windowseventlog的Information列.

logsource
参数:string
支持值类型:log
描述:检查最近的日志条目是否匹配参数的日志来源.当返回值为0时表示不匹配,1表示匹配。通场用于Windowseventlogs监控.例如logsource["VMWareServer"]

now
参数:忽略
支持值类型:any
描述:返回距离Epoch(19701100:00:00UTC)时间的秒数

prev
参数:忽略
支持值类型:float,int,str,text,log
描述:返回之前的值,类似于last(#2)

regexp
参数:第一个参数为string,第二个参数为秒或#num
支持值类型:str,log,text
描述:检查最近的值是否匹配正则表达式,参数的正则表达式为POSIX扩展样式,第二个参数为秒数或收集值的数目,将会处理多个值.本函数区分大小写。当返回值为1时表示找到,0为其他.

str
参数:第一个参数为string,第二个参数为秒或#num
支持值类型:str,log,text
描述:查找最近值中的字符串。第一个参数指定查找的字符串,大小写敏感。第二个可选的参数指定秒数或收集值的数目,将会处理多个值。当返回值为1时表示找到,0为其他.
示例:
触发器名称:Zabbix agent needs to be upgraded 使用函数str():
{zabbix.zabbix.com:agent.version.str("beta8")}=1
如果当前zabbix agent版本包含beta8(假设当前版本为1.0beta8),这个表达式会返回true. strlen 参数:秒或#num 支持值类型:str,log,text 描述:指定最近值的字符串长度(并非字节),参数值类似于last函数.例如strlen(0)等价于strlen(#1),strlen(#3)表示最近的第三个值,strlen(0,86400)表示一天前的最近的值.该函数从Zabbix1.8.4起开始支持 sum 参数:秒或#num 支持值类型:float,int 描述:返回指定时间间隔中收集到的值的总和.时间间隔作为第一个参数支持秒或收集值的数目(以#开始).从Zabbix1.8.2开始,本函数支持time_shift作为第二个参数。可以查看avg函数获取它的用法 time 参数:忽略 支持值类型:any 描述:返回当前时间,格式为HHMMSS,例如123055
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值