目录

  • zabbix监控的使用--配置告警规则,自动发现以及拓扑图和聚合图形
  • 环境说明
  • 配置告警
  • 用户数超35时,发送告警邮件
  • 实施
  • 自动发现
  • 配置自动发现
  • 实施主动监控
  • 配置web2使用主动监控
  • 拓扑图和聚合图形
  • 拓扑图
  • 完善拓扑图
  • 聚合图形
  • 监控nginx示例
  • stub_status模块


zabbix监控的使用–配置告警规则,自动发现以及拓扑图和聚合图形

环境说明

  • 本文继续使用上一篇文章的实验环境

配置告警

  • 默认情况下,监控项不会自动发送告警消息
  • 需要配置触发器与告警,并且通过通知方式发送信息给联系人
  • 触发器:设置条件,当条件达到时,将会执行某个动作
  • 动作:触发器条件达到之后要采取的行为,比如发邮件或执行命令

用户数超35时,发送告警邮件

  • 当web1的用户数超过35时,认为这是一个问题(Problem)
  • 当出现问题时,将会执行动作。
  • 执行的动作是给管理员发邮件。
  • 给管理员发邮件,还要配置邮件服务器的地址,以及管理员的email地址
实施

创建触发器规则

zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_服务器


zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_数据_02

创建名为password_line_gt_35的触发器

zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_nginx_03

点击添加后,出现下图:

zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_服务器_04

添加表达式之后的结果如下:

zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_服务器_05

表达式语法:

{<server>:<key>.<function>(<parameter>)}<operator><constant>
{<主机>:<key>.<函数>(<参数>)}<操作符><常量>

例:

{count.line.passwd:count.line.passwd.last()}>35
# count.line.passwd是模板
# count.line.passwd是在被控端上定义的key
# last是函数,表示最近的一次取值
# > 是操作符
# 35 是常量
# 以上表达式的含义是:应用count.line.passwd模板的主机,它的count.line.passwd最近一次取值大于35,则状态为“问题”,即Problem

创建邮件类型的报警媒介

zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_zabbix_06


zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_nginx_07

为用户关联邮箱

zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_数据_08


zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_linux_09


zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_nginx_10

创建动作:当出现Problem状态时,给admin发邮件

zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_linux_11


zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_服务器_12


zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_服务器_13

点击“新的”之后,如下图:

zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_服务器_14

验证

# 配置zabbix服务器成为邮件服务器
[root@zabbixserver ~]# yum install -y postfix mailx
[root@zabbixserver ~]# systemctl enable postfix --now
[root@zabbixserver ~]# ss -tlnp | grep :25
LISTEN     0      100    127.0.0.1:25

# 在web1上创建用户
[root@web1 ~]# for user in user{1..20}
> do
> useradd $user
> done
[root@web1 ~]# zabbix_get -s 127.0.0.1 -k count.line.passwd
43

zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_服务器_15


zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_数据_16


zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_数据_17

# 在zabbixserver上查看邮件
[root@zabbixserver ~]# mail
>N  1 zabbix@localhost.loc  Tue Nov  9 14:48  21/941   
# N表示未读,1是邮件编号
# 回车默认查看最新一封邮件
& q      # 退出

自动发现

  • 当被监控的设备非常多的时候,手工添加将会变得非常不方便
  • 可以使用自动发现功能,实现添加主机、添加到主机组、 链接模板
  • 自动发现流程:
  • 创建自动发现规则
  • 创建动作,当主机被发现之后,执行什么操作
  • 通过动作,添加主机,将模板应用到发现的主机
配置自动发现
  • 创建自动发现规则
  • zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_nginx_18


  • zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_zabbix_19

  • 创建动作

zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_linux_20


zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_linux_21


zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_zabbix_22


zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_数据_23


zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_linux_24

在zabbix web页面中查看web2是否已被发现

zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_linux_25

web2是通过ssh发现的,它上面还没有配置zabbix agent,所以即使发现了,也无法监控。需要在web2上配置agent。

[root@web1 ~]# scp zabbix-3.4.4.tar.gz 192.168.88.200:/root/

[root@web2 ~]# yum install -y gcc pcre-devel autoconf
[root@web2 ~]# tar xf zabbix-3.4.4.tar.gz 
[root@web2 ~]# cd zabbix-3.4.4/
[root@web2 zabbix-3.4.4]# ./configure --enable-agent && make && make install
[root@web2 zabbix-3.4.4]# useradd -s /sbin/nologin zabbix
[root@web2 ~]# vim /usr/local/etc/zabbix_agentd.conf
 69 EnableRemoteCommands=1
 93 Server=127.0.0.1,192.168.88.5
134 ServerActive=127.0.0.1,192.168.88.5
145 Hostname=web2
280 UnsafeUserParameters=1
[root@zabbixserver ~]# scp /usr/lib/systemd/system/zabbix_agentd.service 192.168.88.200:/usr/lib/systemd/system/
[root@web2 ~]# systemctl daemon-reload
[root@web2 ~]# systemctl enable zabbix_agentd.service --now
[root@web2 ~]# ss -tlnp | grep :10050
LISTEN     0      128          *:10050

实施主动监控

  • 默认zabbix使用的是被动监控,主被动监控都是针对被监控主机而言的。
  • 被动监控:Server向Agent发起请求,索取监控数据。此种模式常用
  • 主动监控:Agent向Server发起连接,向Server汇报
配置web2使用主动监控
  • 修改配置文件,只使用主动监控
[root@web2 ~]# vim /usr/local/etc/zabbix_agentd.conf
 93 # Server=127.0.0.1,192.168.88.5   # 因为采用主动监控,所以不接受其他主机的查询
118 StartAgents=0   # 不接受被动检查,也不开启任何端口
134 ServerActive=192.168.88.5   # 只向server汇报
183 RefreshActiveChecks=120    # 120秒检查一次配置
264 Include=/usr/local/etc/zabbix_agentd.conf.d/
280 UnsafeUserParameters=1

# 重启服务
[root@web2 ~]# systemctl restart zabbix_agentd.service 
[root@web2 ~]# ss -tlnp | grep :10050    # 端口号消失

创建用于主动监控的模板。可以基于现有的模板,克隆之后修改。

  1. 克隆现有模板

zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_数据_26

  1. 修改克隆的模板,将监控项改为主动监控

zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_linux_27


zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_zabbix_28


zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_服务器_29

克隆的模板有3项不支持主动,把它们禁用。

zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_服务器_30

添加使用主动监控的主机

zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_zabbix_31

下图中,注意主机名应该与被监控的主机的名字相同

zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_服务器_32


zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_zabbix_33

查看最新数据

zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_linux_34

拓扑图和聚合图形

拓扑图

  • 在zabbix中可以创建拓扑图,反映拓扑结构

zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_数据_35


zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_zabbix_36

添加元素:

  • 图标:可以是一个装饰图形,也可以对应具体的设备
  • 形状:长方形、圆形
  • 链接:连线,多个设备之间才能使用链接
完善拓扑图
  • 添加交换机图标

zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_服务器_37


zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_nginx_38

  • 添加链接:圈中两台设备,点链接边上的添加

zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_zabbix_39

  • 添加2台web服务器

zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_数据_40


zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_数据_41

聚合图形

  • 将常用的页面放到一个统一页面中查看



点击更改之后,添加新望出现在该单元格的数据。

zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_服务器_42


zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_数据_43

使用同样的方法,点击其他的“更改”

zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_服务器_44

监控nginx示例

stub_status模块

  • 用于实时监控nginx的网络连接,这个模块是nginx官方提供的一个模块。
# 编译nginx,支持stub_status模块
[root@zzgrhel8 ~]# scp /linux-soft/2/lnmp_soft.tar.gz 192.168.88.100:/root
[root@web1 ~]# tar xf lnmp_soft.tar.gz 
[root@web1 ~]# cd lnmp_soft/
[root@web1 lnmp_soft]# yum install -y gcc pcre-devel openssl-devel
[root@web1 lnmp_soft]# tar xf nginx-1.12.2.tar.gz 
[root@web1 lnmp_soft]# cd nginx-1.12.2/
[root@web1 nginx-1.12.2]# ./configure --help | grep stub
  --with-http_stub_status_module     enable ngx_http_stub_status_module
[root@web1 nginx-1.12.2]# ./configure --with-http_stub_status_module
[root@web1 nginx-1.12.2]# make && make install

# 修改配置文件,启用stub_status
[root@web1 ~]# vim /usr/local/nginx/conf/nginx.conf
 47         location /status {
 48             stub_status on;
 49         }
# 检查语法,出现syntax is ok表示配置文件正确
[root@web1 ~]# /usr/local/nginx/sbin/nginx -t
# 启动服务
[root@web1 ~]# /usr/local/nginx/sbin/nginx 
[root@web1 ~]# ss -tlnp | grep :80
LISTEN     0      128          *:80

# 访问监控页面
[root@web1 ~]# curl http://192.168.88.100/status
Active connections: 1 
server accepts handled requests
 1 1 1 
Reading: 0 Writing: 1 Waiting: 0 
# Active connections:当前客户端与nginx之间的连接数。它等于下面Reading / Writing / Waiting之和
# accepts:自nginx启动之后,客户端访问的总量
# handled:自nginx启动之后,处理过的客户端连接总数。
# requests:自nginx启动之后,处理过的客户端请求总数。
# Reading:正在读取HTTP请求头部的连接总数。
# Writing:正在向客户端发送响应的连接总数。
# Waiting:空闲连接。

# 使用工具向服务器发起多个请求
[root@web1 ~]# yum install -y httpd-tools
# 一共发1000个请求,每次并发数100
[root@web1 ~]# ab -n 1000 -c 100 http://192.168.88.100/status
[root@web1 ~]# curl http://192.168.88.100/status
Active connections: 1
server accepts handled requests
 1040 1040 1004 
Reading: 0 Writing: 1 Waiting: 0
  • 编写脚本,用于获取各项数据
[root@web1 ~]# vim /usr/local/bin/nginx_status.sh
#!/bin/bash

case $1 in
active)
    curl -s http://192.168.88.100/status | awk '/Active/{print $NF}';;
waiting)
    curl -s http://192.168.88.100/status | awk '/Waiting/{print $NF}';;
accepts)
    curl -s http://192.168.88.100/status | awk 'NR==3{print $1}';;
esac

[root@web1 ~]# chmod +x /usr/local/bin/nginx_status.sh
[root@web1 ~]# nginx_status.sh active
1
[root@web1 ~]# nginx_status.sh accepts
1047
[root@web1 ~]# nginx_status.sh waiting
0
  • 创建zabbix用到的key,获取各项数据
# key的语法格式
UserParameter=key[*],<command> $1
# key[*]中的*是参数,将会传给后面的位置变量$1

# 创建声明key的文件
[root@web1 ~]# vim /usr/local/etc/zabbix_agentd.conf.d/nginx.status
UserParameter=nginx.status[*],/usr/local/bin/nginx_status.sh $1

# 测试key
[root@web1 ~]# systemctl restart zabbix_agentd.service 
[root@web1 ~]# zabbix_get -s 127.0.0.1 -k nginx.status[accepts]
1049
[root@web1 ~]# zabbix_get -s 127.0.0.1 -k nginx.status[active]
1
  • 在zabbix web中添加监控项



    等待一会之后,可以查看最新数据

zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_linux_45


zabbix拓扑图 嵌入 grafana zabbix拓扑图动态展示_zabbix_46