【zabbix详解02】

文章目录

  • 五、zabbix触发器及告警设置
    • 1.触发器
      • 1.1添加触发器:在监控项上添加
    • 2.告警
  • 六、zabbix数据收集方式以及宏变量
    • 1.宏(变量)
    • 2.zabbix数据收集方式
      • 2.1数据收集-外部检查
      • 2.2收集数据-HTTP agent
      • 2.3数据收集-简单检查
      • 2.4数据收集-Telnet检查
      • 2.5数据收集-日志文件监控
      • 2.6数据收集:其他
  • 七、zabbix数据通过grafana展示
  • 八、zabbix自动发现和自动注册

五、zabbix触发器及告警设置

邮件告警配置详解

1.触发器

监控项只是用于收集数据。如果需要自动评估收到的数据,我们则需要定义触发器。
触发器包含了一个表达式,这个表达式定义了数据的可接受的阈值级别。如果收到的数据超过了这个定义好的级别,触发器将被“触发”,或者进入“异常(Problem)”状态——从而引起我们的注意,让我们知道有问题发生。如果数据再次恢复到合理的范围,触发器将会到“正常(Ok)”状态。

1.1添加触发器:在监控项上添加

配置(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)监控网卡入站流量,并且为之创建触发器
【zabbix详解02】_第1张图片
【zabbix详解02】_第2张图片
【zabbix详解02】_第3张图片

创建触发器:
【zabbix详解02】_第4张图片
表达式:
【zabbix详解02】_第5张图片
监测->最新数据:
在这里插入图片描述
模拟超过触发器阈值,观察图形中数据的变化:

[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

【zabbix详解02】_第6张图片

2.告警

1.在zabbix中只能让用户继承用户群组的权限,所以我们需要先创建用户群组给其设置权限,再创建用户去继承群组的权限。
创建用户群组zabbixs,设置权限:
【zabbix详解02】_第7张图片
【zabbix详解02】_第8张图片
创建用户zabbix密码zabbix,使其拥有zabbixs组的权限:
【zabbix详解02】_第9张图片

【zabbix详解02】_第10张图片
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

【zabbix详解02】_第11张图片
管理–>配置–>创建媒介类型:
【zabbix详解02】_第12张图片
添加以下3个参数,分别对应sendmail.sh脚本需要的3个参数:收件人地址、主题、详细内容
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
给用户zabbix选择这个报警媒介:
【zabbix详解02】_第13张图片
【zabbix详解02】_第14张图片
3.测试告警:
添加报警动作:配置—动作-创建动作
注意:本例动作来源是触发器

【zabbix详解02】_第15张图片
操作:
【zabbix详解02】_第16张图片
恢复操作:
【zabbix详解02】_第17张图片
模拟测试超过阈值,发送告警邮件:

[root@zabbix-server ~]# ping -c 50 -s 8000 192.168.131.107

【zabbix详解02】_第18张图片
【zabbix详解02】_第19张图片

六、zabbix数据收集方式以及宏变量

1.宏(变量)

宏是一种抽象概念(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:主机宏--优先级最高--直接在主机上配置
配置->主机->宏
【zabbix详解02】_第20张图片
然后在主机的触发器triggers的表达式中使用此宏:
【zabbix详解02】_第21张图片
举例2:模板宏--主机模板定义的宏--优先级次之。如果有多个模板,那么按照模板越靠前那么宏的优先级越高
配置->模板->选择哪个模板进行配置宏
【zabbix详解02】_第22张图片
举例3:全局宏--优先级最低--对于全局宏,请访问 管理 → 常规 → 右上角下拉菜单选择 “宏” ;
在这里插入图片描述
【zabbix详解02】_第23张图片

2.zabbix数据收集方式

2.1数据收集-外部检查

使用场景:当被监控端无法安装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

2.添加监控项
【zabbix详解02】_第24张图片
在这里插入图片描述

2.2收集数据-HTTP agent

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

2.创建访问zabbix api的监控项
【zabbix详解02】_第25张图片
【zabbix详解02】_第26张图片

2.3数据收集-简单检查

示例:检查客户端12345端口
【zabbix详解02】_第27张图片
在这里插入图片描述
注:结果为1表示表示正常

2.4数据收集-Telnet检查

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 ~]$ 

2.创建测试telnet监控项
【zabbix详解02】_第28张图片
在这里插入图片描述

2.5数据收集-日志文件监控

Zabbix可以集中监控和分析 支持/不支持日志轮询的日志文件。
当日志文件包含某些字符串或字符串模式时,可以使用通知来警告用户。

要监控日志文件,前提:
1.主机上已运行Zabbix agent
2.设置日志监控项

确保在 代理配置文件 中已设置:
1.'Hostname’参数与前端的主机名一致
2.'ServerActive’参数中的服务器被指定用于处理主动检查

【zabbix详解02】_第29张图片

2.6数据收集:其他

还有以下监控类型
SSH检查
IPMI检查
ODBC监控
捕捉器监控项
JMX监控
HTTP 检查
VMware监控
计算监控项

七、zabbix数据通过grafana展示

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
【zabbix详解02】_第30张图片
修改密码:
【zabbix详解02】_第31张图片
【zabbix详解02】_第32张图片
激活插件:店家Enable now
【zabbix详解02】_第33张图片
3.配置zabbix数据源
导航到数据源,并添加一个zabbix数据源。
congigure->Data source->Add data source->搜索zabbix
【zabbix详解02】_第34张图片
【zabbix详解02】_第35张图片
保存后把Zabbix Server Dashboard导入看看效果。能显示zabbix server的状态。
【zabbix详解02】_第36张图片
显示数据:
【zabbix详解02】_第37张图片
【zabbix详解02】_第38张图片

八、zabbix自动发现和自动注册

你可能感兴趣的:(zabbix)