zabbix_进阶使用

1、定义action为脚本通知
2、宏(macros)
3、模板(Templates)
4、自定义items
5、网络发现功能
6、web监控
7、监控方式
8、JMX的监控
9、代理分布式监控

定义action为脚本通知

1、自定义脚本

    vim /usr/lib/zabbix/alertscripts/test.sh
     #!/bin/bash
     to="$1"
     subject="$2"
     body="$3"

     echo "test script" | mail -s "$subject" "$to"

2、添加执行权限

chmod +x /usr/lib/zabbix/alertscripts/test.sh

3、定义Media types为script
<监控系统zabbix> 128

4、action中定义动作为执行脚本

注意:
需要重新启动zabbix-server服务,读取通知脚本

宏(macros)

1、可以理解成宏是”保存值的变量”。
zabbix内置的宏调用格式:{HOST.NAME}

2、用户自定义宏
zabbix支持在全局、模板或主机级别使用用户自定义宏。
使用格式:{$MACRO}
使用范围:item kets、descriptions、trigger名称及表达式、主机接口IP/DNS及端口、
discovery机制的SNMP协议的相关声明中。

3、宏的生效范围顺序
主机级别的宏
一级模板中的宏,多个一级模板时按器ID排序
二级模板中的宏
全局宏

模板(Templates)

1、模板是一系列配置的集合,它可以方便的快速部署在某监控对象上,并支持重读应用。
可以将模板应用到某一个主机上。应用模板可以实现快速的部署
及修改模板内容的配置项。

2、模板内容包括:

    items
    triggers
    graphs
    applications
    screens
    low-level discoverty rules

自定义items

1、语法格式

    UserParameter=<key>[],<command>
    UserParameter=mem.used,free -m | awk '/^Mem/{print $3}'
    UserParameter=mem.stats[*], cat /proc/meminfo | grep '^$1'
    UserParameter=mem.stats[*], cat /proc/meminfo | awk '/^$1/{print $$2}'       
    # $$2表示逃逸字符,以免被识别为key传递来的参数
UserParameter=fpm.stats[*],curl -s http://127.0.0.1/fpm-status | awk
 '/^$1/{print $$NF}'
[] # 参数。例如 [*] 表示传递的参数都给后面的command。可以将参数传递给后面的命令

2、配置文件定义定义的tiems放置路径 {在agent端使用}

    vim /etc/zabbix/zabbix_agentd.conf
    Include=/etc/zabbix/zabbix_agentd.d/*.conf

    在此路径下新创建一个文件,并将自定义的item写入此文件

3、示例

UserParameter=Mysql.dml[*], /usr/local/mysql/bin/mysql -h$1 -u$2 -p$3 -e 'SHOW GLOBAL STATUS' | awk '/Com_$4\>/{print $$2}'

UserParameter=Nginx.active[*], /usr/bin/curl -s "http://$1:$2/status" | awk 
'/^Active/ {print $NF}'
UserParameter=Nginx.reading[*], /usr/bin/curl -s "http://$1:$2/status" | grep 
'Reading' | cut -d" " -f2
UserParameter=Nginx.writing[*], /usr/bin/curl -s "http://$1:$2/status" | grep 
'Writing' | cut -d" " -f4
UserParameter=Nginx.waiting[*], /usr/bin/curl -s "http://$1:$2/status" | grep 
'Waiting' | cut -d" " -f6
UserParameter=Nginx.accepted[*], /usr/bin/curl -s "http://$1:$2/status" | awk 
'/^[ \t]+[0-9]+[ \t]+[0-9]+[ \t]+[0-9]+/ {print $$1}'
UserParameter=Nginx.handled[*], /usr/bin/curl -s "http://$1:$2/status" | awk 
'/^[ \t]+[0-9]+[ \t]+[0-9]+[ \t]+[0-9]+/ {print $$2}'
UserParameter=Nginx.requests[*], /usr/bin/curl -s "http://$1:$2/status" | awk 
'/^[ \t]+[0-9]+[ \t]+[0-9]+[ \t]+[0-9]+/ {print $$3}'

UserParameter=nginx.access_countaccess, /usr/lib/zabbix/externalscripts/logcheck_nginx.accesslog totalaccess 
UserParameter=nginx.access_count200, /usr/lib/zabbix/externalscripts/logcheck_nginx.accesslog 200access 
UserParameter=nginx.access_count202, /usr/lib/zabbix/externalscripts/logcheck_nginx.accesslog 202access
UserParameter=nginx.access_count4xx, /usr/lib/zabbix/externalscripts/logcheck_nginx.accesslog 4xxaccess
UserParameter=nginx.access_count3xx, /usr/lib/zabbix/externalscripts/logcheck_nginx.accesslog 3xxaccess
UserParameter=nginx.access_count5xx, /usr/lib/zabbix/externalscripts/logcheck_nginx.accesslog 5xxaccess

UserParameter=varnish.stat[*], /usr/lib/zabbix/externalscripts/varnishstatus 
varnish_stat $1
UserParameter=varnish.count[*], /usr/lib/zabbix/externalscripts/varnishstatus 
varnish_count $1
UserParameter=varnish.hitrate, /usr/lib/zabbix/externalscripts/varnishstatus 
varnish_hitrate

网络发现功能

1、发现包括两个阶段:discovery 和 actions。

发现网络的主机后,将主机添加到zabbix的监控中,并自定链接至指定的模板。可判定发现
的主机的服务角色。

2、发现主机的方式
IP范围
主机上特定的服务
zabbix agent
SNMP agent

3、发现事件

Service Up              #服务持续 'up'
Service Down            #服务持续 'down'
Service Lost            #服务由 'up' 变 'down'
Service Discovered      #服务首次被发现或者由'down'变'up'
Host Up                 #主机至少有一个服务是 'up' 状态
Host Down               #所有服务都持续 'down' 
Host Lost               #主机的所有服务在至少一个是 'up' 之后全部是 'down'。   
Host Discovered         #在主机的所有服务都 'down' 之后,至少一个服务是'up'。

4、

动作

zabbix 所有动作都是基于发现事件,例如:

发送通知
添加/删除主机
启用/禁用主机
添加主机到组
从组中删除主机
将主机链接到模板/从模板中取消链接
执行远程脚本命令
基于事件的网络发现动作,可以根据设备类型,IP地址,状态,运行时间/停机时间等进行
配置,查看动作操作和条件页面。

5、网络发现的主机会自动创建interface。
1.检测到服务 - 例如,如果SNMP检查成功,那么将会创建一个SNMP接口;

2.如果主机响应Zabbix agent和SNMP的请求,那么这两种类型的接口都会被创建;

3.如果唯一性准则是是Zabbix agent键值或是SNMP OID返回的数据, 这第一个接口发现的
主机将会被创建,而这个接口将会被作为默认接口,其他IP地址将会作为附加接口被添加。

4.如果主机只响应agent检查,则只能使用agent接口来创建。如果稍后开始响应SNMP的检
查,那么将添加SNMP接口为附加接口。

5.如果最初创建了3个独立的主机,他们都被自动发现的唯一性准则“IP”发现,然后修改自
动发现规则,为了使A、B和C自动发现的唯一性准则结果是相同的,那么接口B和C作为接口
A的附加接口来创建第一个主机。主机B和C作为个体主机仍然存在。在监控中 → 自动发现中,
添加的接口将以黑色字体和缩进形式显示在“已发现的设备”这一列中,但在“已监测的主
机”这一列将只显示第一个创建的主机A。由于被认为附加接口的IP,所以不测量主机B和C
的“在线时间/断线时间”。

6、主机发现后的action

web监控

1、监控指定站点资源下载速度,及响应时间,响应代码。

****** 每一个站点称为一个:Scenario

内建key:

web.test.in[Scenario,Step,bps]  # 传输速率
web.test.time[Scenario,Step]    # 响应时间
web.test.rspcode[Scenario,Step] # 响应码

监控方式

1、主动监控
相对于Agent而言,Agent主动报告数据给Server端。agent向server请求与自己先关的
监控项配置,
配置文件abbix_agent.conf:

ServerActive=
Hostname=
# HostnameItem=system.hostname
web界面接口配置item:
zabbix agent(active)

2、agent手动发送给server监控数据

web界面接口配置item:
    items类型为"zabbix trapper"
agent端手动发送数据:
    zabbix_sender -z 172.18.26.1 -p 10051 -s node2 -k "send.test.data" -o 
 "10240"

    -s HOSTNAME     # 要与配置items配置的主机名一致
    -z ServerIP     # 服务器IP地址
    -o value        # 要发送的数据

3、被动监控
相对于Agent而言,server向Agent发起数据请求,Agent收集数据并发送给server端。

Linux启用snmp的方法:

# yum install net-snmp net-snmp-utils 

配置文件:
    /etc/snmp/snmpd.conf

    常用的一些snmp的ACL
    定义ACL 

        .1.3.6.1.2.1.1.1.0:系统描述基本信息,SysDesc
        .1.3.6.1.2.1.1.3.0:监控时间,SysUptime
        .1.3.6.1.2.1.1.5.0:主机名,SysName
        .1.3.6.1.2.1.1.7.0:主机提供的服务,SysService
        .1.3.6.1.2.1.25.1.1:系统正常运行时间


        .1.3.6.1.2.1.2.1.0:网络接口数目
        .1.3.6.1.2.1.2.2.1.2:网络接口的描述信息
        .1.3.6.1.2.1.2.2.1.3:网络接口类型
        .1.3.6.1.2.1.2:网络接口的相关数据
        .1.3.6.1.4.1.2021:系统资料负载,memory,disk io,cpu load
        ....

启动服务:

systemctl  start  snmpd.service 

测试工具:

# snmpget -v 2c  -c  public  HOST  OID
# snmpwalk  -v 2c -c public  HOST  OID 
Key <Unique string to be used as reference to triggers> For example, “my_param”.

JMX的监控

1、在Server端安装额外组件

    zabbix-java-gateway-3.4.0-1.el7.x86_64.rpm

2、zabbix server配置

    javaGateway=
    javaGatewatPort=10052
    StartJavaPollers=5

3、被监控的JVM配置

/etc/sysconfig/tomcat

CATALINA_OPTS="-Djava.rmi.server.hostname=【TOMCAT_SERVER_IP】 -
Djavax.management.builder.initial= -Dcom.sun.management.jmxremote=true   -
Dcom.sun.management.jmxremote.port=12345  -
Dcom.sun.management.jmxremote.ssl=false  -
Dcom.sun.management.jmxremote.authenticate=false"
【TOMCAT_SERVER_IP】修改

4、web界面配置示例

    JMX interfaces 172.18.25.2

    key:
        jmx[java.lang:type=Memory,HeapMemoryUsage.used] 

代理分布式监控

1、代理服务器安装配置
1、安装数据库

MariaDB [(none)]> create database zbxproxydb character set 'utf8';
MariaDB [(none)]> grant all on zbxproxydb.* to 'zbxproxyuser'@'172.18.%.%' 
IDENTIFIED by 'zbxproxypass';
MariaDB [(none)]> flush privileges;
2、导入数据库
##zcat /usr/share/doc/zabbix-proxy-mysql-3.4.0/schema.sql.gz | 
mysql zabbixproxydb
[ root@ygl ~ ]# mysql -uzbxproxyuser  -pzbxproxypass -h172.18.1.1 
zbxproxydb < schema.sql

3、安装包

yum install zabbix-proxy-mysql-3.4.0-1.el7.x86_64.rpm 
zabbix-agent-3.4.0-1.el7.x86_64.rpm 
zabbix-get-3.4.0-1.el7.x86_64.rpm 
zabbix-sender-3.4.0-1.el7.x86_64.rpm

4、配置/etc/zabbix/zabbix_proxy.conf

Server=
    zabbix server主机地址;
Hostname=
    当前代理服务器的名称;在server添加proxy时,必须使用此处指定的名称;
    需要事先确保server能解析此名称;
DBHost=
DBName=
DBUser=
DBPassword=

ConfigFrequency=10
DataSenderFrequency=1

3、在server端添加此Porxy
Administration –> Proxies

4、在Server端配置通过此Proxy监控的主机;

注意:zabbix agent端要允许zabbix proxy主机执行数据采集操作: 
    Server=
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章