邮件告警配置详解
监控项只是用于收集数据。如果需要自动评估收到的数据,我们则需要定义触发器。
触发器包含了一个表达式,这个表达式定义了数据的可接受的阈值级别。如果收到的数据超过了这个定义好的级别,触发器将被“触发”,或者进入“异常(Problem)”状态——从而引起我们的注意,让我们知道有问题发生。如果数据再次恢复到合理的范围,触发器将会到“正常(Ok)”状态。
配置(Configuration) → 主机(Hosts),找到’新增主机(New host)’,点击旁边的触发器(Triggers) ,然后点击创建触发器(Create trigger)。这将会向我们展现一个触发器定义表单。
对于触发器,有下列必填项:
名称(Name)
输入 CPU load too high on ‘New host’ for 3 minutes 作为值。这个值会作为触发器的名称被现实在列表和其他地方。
表达式(Expression)
输入:{New host:system.cpu.load.avg(3m)}>2
触发器表达式详解
添加触发器示例:
1)监控网卡入站流量,并且为之创建触发器
创建触发器:
表达式:
监测->最新数据:
模拟超过触发器阈值,观察图形中数据的变化:
[root@zabbix-server ~]# ping -c 50 -s 8000 192.168.131.107
PING 192.168.131.107 (192.168.131.107) 8000(8028) bytes of data.
8008 bytes from 192.168.131.107: icmp_seq=1 ttl=64 time=0.671 ms
8008 bytes from 192.168.131.107: icmp_seq=2 ttl=64 time=1.36 ms
8008 bytes from 192.168.131.107: icmp_seq=3 ttl=64 time=0.754 ms
8008 bytes from 192.168.131.107: icmp_seq=4 ttl=64 time=3.62 ms
1.在zabbix中只能让用户继承用户群组的权限
,所以我们需要先创建用户群组给其设置权限,再创建用户去继承群组的权限。
创建用户群组zabbixs,设置权限:
创建用户zabbix密码zabbix,使其拥有zabbixs组的权限:
2.创建告警媒介:
本文使用使用mailx配置邮件报警
注意:使用外部邮箱账号时,不需要启动sendmail或者postfix
[root@zabbix-server ~]# systemctl stop postfix
[root@zabbix-server ~]# systemctl disable postfix
[root@zabbix-server ~]# yum install -y mailx
设置mailx发信账号:
[root@zabbix-server ~]# vim /etc/mail.rc
set smtp=smtp.163.com
set from=pyy_pine@163.com
set smtp-auth-user=pyy_pine@163.com
set smtp-auth-password=客户端授权密码
set smtp-auth=login
如何开通客户端授权码:网易邮箱163.com
zabbix服务器端编写邮件发送脚本:
为什么我们会在这个路径下面创建这个脚本呢,这是在我们的zabbix_serber.conf文件中配置的
AlertScriptsPath=/usr/lib/zabbix/alertscripts
[root@zabbix-server ~]# cat /usr/lib/zabbix/alertscripts/mail.sh
#!/bin/bash
#*************************************************************
#Author: pyy
#Date: 2020-08-21
#FileName: /usr/lib/zabbix/alertscripts/mail.sh
#*************************************************************
touch /tmp/mailtmp.txt
FILE=/tmp/mailtmp.txt
echo "$3" >$FILE
dos2unix -k $FILE ##解决了发送的邮件内容变成附件的问题
mailx -v -s "$2" "$1" < $FILE
rm -rf /tmp/mailtmp.txt
$1:收件人邮箱地址;
$2:邮件标题;
$3:邮件内容
发送测试邮件:
[root@zabbix-server ~]# echo "zabbix test mail" |mail -s "zabbix test" pyy_pine@163.com
管理–>配置–>创建媒介类型:
添加以下3个参数,分别对应sendmail.sh脚本需要的3个参数:收件人地址、主题、详细内容
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
给用户zabbix选择这个报警媒介:
3.测试告警:
添加报警动作:配置—动作-创建动作
注意:本例动作来源是触发器
操作:
恢复操作:
模拟测试超过阈值,发送告警邮件:
[root@zabbix-server ~]# ping -c 50 -s 8000 192.168.131.107
宏是一种抽象概念(Abstraction),它根据一些列预定义的规则替换一定的文本模式,而解释或编译器在遇到宏时会自动进行这一模式替换。类似地,zabbix基于宏保存预设文本模式,并且在调用时将其替换为其中的文本。
Zabbix支持许多在多种情况下使用的宏。宏是一个变量,由如下特殊语法标识:MACRO
优点:有效地使用宏可以节省时间,并使Zabbix变地更加高效。
1.宏分类:内置宏和用户自定义宏
Zabbix有许多内置的宏,如{HOST.NAME}、{HOST.IP}、{TRIGGER.DESCRIPTION}、{TRIGGER.NAME}、 {TRIGGER.EVENTS.ACK}等,不需要加$就可以引用。
Zabbix为了更强的灵活性,zabbix还支持在全局、模板或主机级别使用用户自定义宏(user macro);
用户自定义宏要使用"{$MACRO}"这种特殊的语法格式.
2.宏使用:
宏可以应用在item keys和descriptions、trigger名称和表达式、主机接口IP/DNS及端口、discovery机制的SNMP协议的相关信息中等;
3.宏名称的定义规则:宏名称只能使用大写字母、数字及下划线
举例1:主机宏--优先级最高--直接在主机上配置
配置->主机->宏
然后在主机的触发器triggers的表达式中使用此宏:
举例2:模板宏--主机模板定义的宏--优先级次之。如果有多个模板,那么按照模板越靠前那么宏的优先级越高
配置->模板->选择哪个模板进行配置宏
举例3:全局宏--优先级最低--对于全局宏,请访问 管理 → 常规 → 右上角下拉菜单选择 “宏” ;
使用场景:当被监控端无法安装agent,可以使用外部监查
语法:
script[ parameter1, parameter2,…]
数据收集流程:
脚本一般放在server/proxy上,当有外部检查监控项获取数据时,zabbix-server会到配置文件指定的路径查找监控项对应的脚本并且执行。脚本会到被监控的设备获取数据并将输出的结果返回给zabbix-server。
举例1:返回DNS响应时间
1.需要在server端配置ExternalScripts参数,指定脚本路径,并且编写获取监控数据的脚本
[root@zabbix-server ~]# vim /usr/lib/zabbix/externalscripts/dns_time.sh
#!/bin/bash
#*************************************************************
#Author: pyy
#Date: 2020-08-21
#FileName: /usr/lib/zabbix/externalscripts/dns_time.sh
#*************************************************************
TIMEOUT=15
DNS_SERVER=$1
DOMAIN=$2
if test -z "$1"
then
echo"未指定DNS Server"
fi
if test -z "$2"
then
echo "未指定解析域名"
exit
fi
RESOLVE_TIME=`(time dig @$1 $2) 2>&1|grep real|cut -dm -f 2 |sed 's/[s.]//g'`
echo $RESOLVE_TIME
[root@zabbix-server ~]# chmod +x /usr/lib/zabbix/externalscripts/dns_time.sh
注意:使用dig命令必须安装bind-utils
测试脚本是否可以执行:
[root@zabbix-server ~]# cd /usr/lib/zabbix/externalscripts/
[root@zabbix-server externalscripts]# ./dns_time.sh 114.114.114.114 www.12306.cn
1457
HTTP agent是 http/https的请求来获取监控数据的,主要用来监控HTTP的业务以及接口响应性的情况
数据收集流程:
zabbix server/proxy 发送HTTP/HTTPS 请求。被监控端收到请求后响应数据,zabbix 收到响应数据后进行处理并入库
1.zabbix-server端配置:前提需要zabbix server支持curl
[root@zabbix-server ~]# grep "Web monitoring" /var/log/zabbix/zabbix_server.log
12496:20200814:162721.998 Web monitoring: YES
83875:20200821:114310.230 Web monitoring: YES
Telnet检查不需要安装Zabbix agent,可对未安装代理的主机进行监控。
语法:telnet.run[,,,]
前提:被监控端安装telnet-server
1.客户端安装telnet-server,并且为telnet创建一个普通用户monitor并且为之设置密码123
[root@linux-server1 ~]# yum install -y telnet-server
[root@linux-server1 ~]# systemctl enable --now telnet.socket
Created symlink from /etc/systemd/system/sockets.target.wants/telnet.socket to /usr/lib/systemd/system/telnet.socket.
[root@linux-server1 ~]# netstat -lnutp | grep 23
tcp 0 0 0.0.0.0:23 0.0.0.0:* LISTEN 1/systemd
[root@linux-server1 ~]# useradd monitor
[root@linux-server1 ~]# echo monitor:123 | chpasswd
zabbix server测试:
[root@zabbix-server externalscripts]# telnet 192.168.131.107
Trying 192.168.131.107...
Connected to 192.168.131.107.
Escape character is '^]'.
Kernel 3.10.0-1127.18.2.el7.x86_64 on an x86_64
linux-server1 login: monitor
Password:
[monitor@linux-server1 ~]$
Zabbix可以集中监控和分析 支持/不支持日志轮询的日志文件。
当日志文件包含某些字符串或字符串模式时,可以使用通知来警告用户。
要监控日志文件,前提:
1.主机上已运行Zabbix agent
2.设置日志监控项
确保在 代理配置文件 中已设置:
1.'Hostname’参数与前端的主机名一致
2.'ServerActive’参数中的服务器被指定用于处理主动检查
还有以下监控类型
SSH检查
IPMI检查
ODBC监控
捕捉器监控项
JMX监控
HTTP 检查
VMware监控
计算监控项
Grafana是一款用Go语言开发的开源数据可视化工具,可以做数据监控和数据统计,带有告警功能。
官网:http://grafana.org/download/
1.在zabbix server安装grafana和插件安装(grafana中需要安装zabbix插件来跟zabbix对接。),然后启动服务
[root@zabbix-server ~]# wget -c https://mirror.tuna.tsinghua.edu.cn/grafana/yum/rpm/grafana-6.4.4-1.x86_64.rpm
[root@zabbix-server ~]# yum localinstall grafana-6.4.4-1.x86_64.rpm -y
[root@zabbix-server ~]# grafana-cli plugins install alexanderzobnin-zabbix-app
installing alexanderzobnin-zabbix-app @ 3.12.4
from: https://grafana.com/api/plugins/alexanderzobnin-zabbix-app/versions/3.12.4/download
into: /var/lib/grafana/plugins
✔ Installed alexanderzobnin-zabbix-app successfully
Restart grafana after installing plugins . <service grafana-server restart>
[root@zabbix-server ~]# systemctl enable --now grafana-server.service
Created symlink from /etc/systemd/system/multi-user.target.wants/grafana-server.service to /usr/lib/systemd/system/grafana-server.service.
[root@zabbix-server ~]# netstat -lnutp |grep 3000
tcp6 0 0 :::3000 :::* LISTEN 106415/grafana-serv
2.浏览器访问192.168.131.108:3000,默认用户名密码是admin admin
修改密码:
激活插件:店家Enable now
3.配置zabbix数据源
导航到数据源,并添加一个zabbix数据源。
congigure->Data source->Add data source->搜索zabbix
保存后把Zabbix Server Dashboard导入看看效果。能显示zabbix server的状态。
显示数据: