6、zabbix使用进阶(02)

摘要:
自定义{$MACRO_NAME}需要加$才能引用:注意:在调用和定义时都需要加$为了更强的灵活性,zabbix还支持在全局、模板或主机级别使用用户自定义宏用户自定义宏使用"{$MACRO}"这种特殊的语法格式宏可以应用在itemkeys和descriptions、trigger名称和表达式、主机接口IP/DNS及端口、discovery机制的SNMP协议的相关信息中等。

zabbix知识点:

zabbix可视化

自定义图形(graphs)

屏幕(screen)

宏(macros)

用户参数(User parameters):用户自定义items key的方式来实现自定义监控数据指标

zabbix模板

zabbix可视化

zabbix提供了graph、screen和map等可视化工具

Graph介绍

6、zabbix使用进阶(02)第1张

6、zabbix使用进阶(02)第2张

6、zabbix使用进阶(02)第3张

6、zabbix使用进阶(02)第4张

Screen

由于screen可以展示多个主机上的图,所以screen的定义不是以host为中心定义的

6、zabbix使用进阶(02)第5张

6、zabbix使用进阶(02)第6张

6、zabbix使用进阶(02)第7张

6、zabbix使用进阶(02)第8张

宏(Macros) https://www.zabbix.com/documentation/3.4/manual/appendix/macros/supported_by_location

6、zabbix使用进阶(02)第9张

6、zabbix使用进阶(02)第10张

6、zabbix使用进阶(02)第11张

宏有两类:http://blog.51cto.com/afterdawn/1924147

内置{MACRO_NAME}不需要加$就可以引用:

zabbix有许多内置的宏,如{HOST.NAME}、{HOST.IP}、{TRIGGER.DESCRIPTION}、{TRIGGER.NAME}、{TRIGGER.EVENTS.ACK}等。

自定义{$MACRO_NAME} 需要加$才能引用:

注意:在调用和定义时都需要加$

为了更强的灵活性,zabbix还支持在全局、模板或主机级别使用用户自定义宏(user macro)

用户自定义宏使用"{$MACRO}"这种特殊的语法格式

宏可以应用在item keys和descriptions、trigger名称和表达式、主机接口IP/DNS及端口、discovery机制的SNMP协议的相关信息中等。

宏的级别:

全局:定义全局宏,全局定义

模板:定义模板宏,在模板上定义

主机:定义主机宏,在主机上定义

宏的替换次序

主机-->模板-->全局(查找顺序,优先级顺序:主机-->模板-->全局)

先在主机上查找,如果主机没有定义,然后在模板上查找,如果仍然没有定义,在全局查找

6、zabbix使用进阶(02)第12张

定义全局宏,在每一个主机上都可以用

6、zabbix使用进阶(02)第13张

6、zabbix使用进阶(02)第14张

6、zabbix使用进阶(02)第15张

6、zabbix使用进阶(02)第16张

6、zabbix使用进阶(02)第17张

定义主机宏

6、zabbix使用进阶(02)第18张

6、zabbix使用进阶(02)第19张

找到Monitoring --> Lastest data --> Graph(node2行)可以看到下图的值就为1000了,因为主机级别的宏级别最高

6、zabbix使用进阶(02)第20张

创建模板Templates(所有模板被链接以后才能被定义)

6、zabbix使用进阶(02)第21张

模板:一系列配置的集合,此些配置可通过"链接"的方式应用于指定的主机

模板包括:Applications、Items、Triggers、Graphs、Screens、Discovery、Web

模板可以嵌套,可以从其他模板的基础上继承此前的配置,然后再对此配置做修改

6、zabbix使用进阶(02)第22张

指定维护时间

6、zabbix使用进阶(02)第23张

6、zabbix使用进阶(02)第24张

User Parameters:https://www.zabbix.com/documentation/4.0/zh/manual/config/items/userparameters

zabbix 内置了许多item key

意义:实现用户自定义item key,实现特有数据指标监控

一条用户自定义参数配置应当使用以下语法:

UserParameter=<key>,<command>

6、zabbix使用进阶(02)第25张

6、zabbix使用进阶(02)第26张

示例解析:

UserParameter=Nginx.active[*], /usr/bin/curl -s "http://$1:$2/status" | awk '/^Active/ {print $NF}'

//Nginx.active[*]代表key,[*]表示可以接受任何数量的参数;"http://$1:$2/status"中$1和$2就是key上传递的参数

下面是没有key的调用示例:

在agent端定义:

# vim /etc/zabbix/zabbix_agentd.conf

Include=/etc/zabbix/zabbix_agentd.d/*.conf //这个目录下所有以.conf结尾的文件都可以被读进来

# Include=/usr/local/etc/zabbix_agentd.userparams.conf
# Include=/usr/local/etc/zabbix_agentd.conf.d/
# Include=/usr/local/etc/zabbix_agentd.conf.d/*.conf

# vim /etc/zabbix/zabbix_agentd.d/os.conf

UserParameter=os.memory.used,free -m | awk '/^Mem/ {print $3}'

# systemctl restart zabbix-agent

6、zabbix使用进阶(02)第27张

6、zabbix使用进阶(02)第28张

6、zabbix使用进阶(02)第29张

# vim /etc/zabbix/zabbix_agentd.d/os.conf //定义多个字段

UserParameter=os.memory.used,free -m | awk '/^Mem/ {print $3}'
UserParameter=os.memory.free,free -m | awk '/^Mem/ {print $4}'
UserParameter=os.memory.total,free -m | awk '/^Mem/ {print $2}'

# systemctl restart zabbix-agent

nginx status 开启方法:
server {
    ...
    location /status {
        stub_status on;
        access_log off;
        allow 123.123.123.123; # 允许访问的 IP
        allow 127.0.0.1;
        deny all;
    }
}

状态页面各项数据的意义:
active connections – 当前 Nginx 正处理的活动连接数。
serveraccepts handled requests — 总共处理了 233851 个连接 , 成功创建 233851 次握手 (证明中间没有失败的 ), 总共处理了 687942 个请求 ( 平均每次握手处理了 2.94个数据请求 )。
reading — nginx 读取到客户端的 Header 信息数。
writing — nginx 返回给客户端的 Header 信息数。
waiting — 开启 keep-alive 的情况下,这个值等于 active – (reading + writing), 意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接。

可扩展用户参数:

UserParameter=key[*],command //定义UserParameter时可以接受参数,[*]表示可以接受任意数量的参数,在command中可以调用[*]任意传递过来的参数,

//即用户在zabbix server上定义key时,传递过来的参数直接可以被command调用。$0表示命令本身

UserParameter=Nginx.active[*], /usr/bin/curl -s "http://$1:$2/status" | awk '/^Active/ {print $NF}' //Nginx.active[*]是key,/usr/bin/curl -s "http://$1:$2/status" | awk '/^Active/ {print $NF}'是command
UserParameter=Nginx.reading[*], /usr/bin/curl -s "http://$1:$2/status" | grep 'Reading' | cut -d" " -f2 //key可以接受参数,参数的作用是什么呢?使用curl命令,以静态模式(-s)获取这个服务器(http://$1:$2/status)上的status这个URL,
UserParameter=Nginx.writing[*], /usr/bin/curl -s "http://$1:$2/status" | grep 'Writing' | cut -d" " -f4 //$1代表服务器地址,$2代表端口号,$1和$2都是来自[*]。取到以后找到active所在的行,并打印最后一个字段
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 '/^[ ]+[0-9]+[ ]+[0-9]+[ ]+[0-9]+/ {print $$1}'
UserParameter=Nginx.handled[*], /usr/bin/curl -s "http://$1:$2/status" | awk '/^[ ]+[0-9]+[ ]+[0-9]+[ ]+[0-9]+/ {print $$2}'
UserParameter=Nginx.requests[*], /usr/bin/curl -s "http://$1:$2/status" | awk '/^[ ]+[0-9]+[ ]+[0-9]+[ ]+[0-9]+/ {print $$3}'

另外用一个命令来监控数据库查询、删除、更新等各个操作的次数有多少个?(注意:是server端获取agent端的mysql数据信息)

# mysql -e "SHOW GLOBAL STATUS" //首先可以查看所有全局变量

# mysql -e "SHOW GLOBAL STATUS" | awk '/Com_select/{print $0}' //取出单个全局变量的数值

Com_select 302225

# mysql -e "SHOW GLOBAL STATUS" | awk '/Com_select/{print $2}'
302583

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

//$1代表数据库用户名,$2代表主机IP,$3代表登陆密码,$4代表 * 传递过来的命令本身(select、delete),$$2表示取出的全局变量的数值

测试一下

# cmd='select'
# /usr/bin/mysql -e 'SHOW GLOBAL STATUS' | awk "/Com_$cmd>/{print $$2}"
140282

# /usr/bin/mysql -uzbxuser -h192.168.128.131 -p123456 -e 'SHOW GLOBAL STATUS' | awk "/Com_$cmd>/{print $$2}"
140282

示例测试:(注意是在agent端)

# vim /etc/zabbix/zabbix_agentd.d/mysql.conf

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

# systemctl restart zabbix-agent

# yum install mariadb-server

6、zabbix使用进阶(02)第30张

在server端进行测试,是否能取到mysql中的数值,注意是zabbix server端

# zabbix_get -s 192.168.128.132 -p 10050 -k "Mysql.dml[192.168.128.132,root,123456,select]"
ERROR 1045 (28000): Access denied for user 'root'@'node2' (using password: YES) //出现这种情况是因为agent端的mysql无法解析主机名

# vim /etc/my.cnf //在agent端配置mysql配置文件跳过解析主机名

skip_name_resolve = on

在server端再次尝试即可获取

6、zabbix使用进阶(02)第31张

但是从上面可以看到取得返回参数还是变量 + 数值

# vim /etc/zabbix/zabbix_agentd.d/mysql.conf //注意是agent端

UserParameter=Mysql.dml[*], /usr/bin/mysql -h$1 -u$2 -p$3 -e 'SHOW GLOBAL STATUS' | awk '/Com_$4>/{print $$2}' //注意这里后端的双引号改为单引号了,>词尾牟定

6、zabbix使用进阶(02)第32张

# systemctl restart zabbix-agent

在server端再次进行尝试,发现这次是可以的,所以在server端的测试和在agent端的测试有时是不同的

# zabbix_get -s 192.168.128.132 -p 10050 -k "Mysql.dml[192.168.128.132,root,123456,select]"

6、zabbix使用进阶(02)第33张

由于node1节点(即server端192.168.128.131)数据库比较丰富,所以这里对node1节点进行查询

6、zabbix使用进阶(02)第34张

这里虽然是server端的mysql数据库,但是在定义items的时候是在node2上定义的,这个影响并不大

6、zabbix使用进阶(02)第35张6、zabbix使用进阶(02)第36张

6、zabbix使用进阶(02)第37张

免责声明:文章转载自《6、zabbix使用进阶(02)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇数组和指针——都是“退化”惹的祸Java自定义注解下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Elasticsearch之curl删除

   扩展下, Elasticsearch之curl删除索引库 [hadoop@djt002 elasticsearch-2.4.3]$ curl -XDELETE 'http://192.168.80.200:9200/zhouls/emp/1'{"found":true,"_index":"zhouls","_type":"emp","_id":"1"...

curl检测https证书有效期命令

curl检测https证书有效期命令 curl -vvI https://域名 例如: [root@st-01 cert]# curl -vvI https://www.baidu.com * About to connect() to www.baidu.com port 443 (#0) * Trying 110.242.68.4... * Con...

php MP3文件下载功能的实现

方式一:生成文件,返回一个链接,window.href =链接; 方式二:hearder输出文件流。 先设置流的Content-Type和web服务器的mime类型。 mime类型参考 一个header文件流下载mp3文件的实例, 服务器端:functiondownload(){ $full_path = 'pro/mp3/demo.mp3'; $f...

windows 编译c++库的安装CURL、64位Boost

1.CURL 本文使用vs2010 下载: git clone https://github.com/curl/curl.git https://github.com/curl/curl vs的工具下的命令行:(一定) 32位:vcvarsall.bat x86 64位:vcvarsall.bat x64 下一步:执行curl目录下的buildconf.b...

pthread实现多线程查询(转)

导读:大多数网站的性能瓶颈不在PHP服务器上,因为它可以简单地通过横向增加服务器或CPU核数来轻松应对(对于各种云主机,增加VPS或CPU核数就更方便了,直接以备份镜像增加VPS,连操作系统、环境都不用安装配置),而是在于MySQL数据库。如果用 NoSQL 数据库,也许需要十次查询,才能处理完同样地业务逻辑。此时PHP多线程的作用非常明显,它可以同时执行...

使用Zabbix服务端本地邮箱账号发送报警邮件及指定报警邮件操作记录

邮件报警有两种情况:1)Zabbix服务端只是单纯的发送报警邮件到指定邮箱,发送报警邮件的这个邮箱账号是Zabbix服务端的本地邮箱账号(例如:root@localhost.localdomain),只能发送,不能接收外部邮件。2)使用一个可以在互联网上正常收发邮件的邮箱账号(例如:xxx@163.com),通过在Zabbix服务端中设置,使其能够发送报警...