6、zabbix使用进阶(02)
zabbix知识点:
zabbix可视化
自定义图形(graphs)
屏幕(screen)
宏(macros)
用户参数(User parameters):用户自定义items key的方式来实现自定义监控数据指标
zabbix模板
zabbix可视化
zabbix提供了graph、screen和map等可视化工具
Graph介绍 Screen
由于screen可以展示多个主机上的图,所以screen的定义不是以host为中心定义的 宏(Macros) https://www.zabbix.com/documentation/3.4/manual/appendix/macros/supported_by_location 宏有两类: 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协议的相关信息中等。
宏的级别:
全局:定义全局宏,全局定义
模板:定义模板宏,在模板上定义
主机:定义主机宏,在主机上定义
宏的替换次序
主机-->模板-->全局(查找顺序,优先级顺序:主机-->模板-->全局)
先在主机上查找,如果主机没有定义,然后在模板上查找,如果仍然没有定义,在全局查找
定义全局宏,在每一个主机上都可以用 定义主机宏 找到Monitoring --> Lastest data --> Graph(node2行)可以看到下图的值就为1000了,因为主机级别的宏级别最高 创建模板Templates(所有模板被链接以后才能被定义)
模板:一系列配置的集合,此些配置可通过"链接"的方式应用于指定的主机
模板包括:Applications、Items、Triggers、Graphs、Screens、Discovery、Web
模板可以嵌套,可以从其他模板的基础上继承此前的配置,然后再对此配置做修改
指定维护时间
User Parameters: https://www.zabbix.com/documentation/4.0/zh/manual/config/items/userparameters
zabbix 内置了许多item key
意义:实现用户自定义item key,实现特有数据指标监控
一条用户自定义参数配置应当使用以下语法:
UserParameter=<key>,<command>


示例解析:
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



# 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 — 总共处理了 个连接 , 成功创建 次握手 (证明中间没有失败的 ), 总共处理了 个请求 ( 平均每次握手处理了 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 '/^[ \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}'
另外用一个命令来监控数据库查询、删除、更新等各个操作的次数有多少个?(注意:是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

在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端再次尝试即可获取

但是从上面可以看到取得返回参数还是变量 + 数值
# 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}' //注意这里后端的双引号改为单引号了,\>词尾牟定

# 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]"

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

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



6、zabbix使用进阶(02)的更多相关文章
- python进阶02 特殊方法与特殊属性
python进阶02 特殊方法与特殊属性 一.初始化.析构 1.初始化 # python中有很多双下划线开头且以下划线结尾的固定方法,它们会在特定的时机被触发执行,这便是特殊方法 # 在实例化的时候就 ...
- springBoot进阶02
SpringBoot进阶02 1. 日志的使用 1.1 基本使用 /** * 获取日志记录器 */ Logger logger = LoggerFactory.getLogger(this.getCl ...
- 第2章Zabbix基础进阶
p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; t ...
- 项目实战12.2—企业级监控工具应用实战-zabbix操作进阶
无监控,不运维.好了,废话不多说,下面都是干货. 流量党勿入,图片太多!!! 项目实战系列,总架构图 http://www.cnblogs.com/along21/p/8000812.html 一.U ...
- 大数据学习之Linux进阶02
大数据学习之Linux进阶 1-> 配置IP 1)修改配置文件 vi /sysconfig/network-scripts/ifcfg-eno16777736 2)注释掉dhcp #BOOTPR ...
- 7、zabbix使用进阶(03)
节知识点: zabbix自动发现 web监控 zabbix自动发现 官网:https://www.zabbix.com/documentation/4.0/zh/manual/discovery/ ...
- 5、zabbix使用进阶(01)
详细描述user parameters.定义主机发现规则实现自动发现.如何定义和实现自动注册方式 zabbix常用术语 1.主机(host):要监控的网络设备,可有IP或DNS名称指定: 2.主机组( ...
- zabbix初级进阶
目录 一.理论概述 zabbix功用 运行条件 缺点 zabbix组件 部署 web安装zabbix 优化 总结 这篇文章主要对zabbix有一个全面且简单的了解 一.理论概述 zabbix功用 检测 ...
- Python进阶02 文本文件的输入输出
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python具有基本的文本文件读写功能.Python的标准库提供有更丰富的读写功能 ...
随机推荐
- mysql批量更新的两种方式效率试验<二>
Mysql两种批量更新的对比 简介: mysql搭载mybits框架批量更新有两种方式,一种是在xml中循环整个update语句,中间以‘:’隔开,还有一种是使用case when 变相实现批量更新, ...
- html table 固定表头和列
/**************************************************************** jQuery 插件. 功能: 固定表格标题行或列头 Version: ...
- Windows下64位Apache+PHP+MySQL配置
软件下载 目前,Apache和PHP均未出现官方的64位版本. Apache 64位: http://files.cnblogs.com/liangjie/httpd-2.2.19-win64.rar ...
- python语法_if判断
age_of_princal = 56 guess_age = int(input("e guess a age:")) if guess_age == age_of_princa ...
- linux 强制删除杀死进程 sudo pkill uwsgi -9 杀死uwsgi 关闭防火墙 iptables -F
sudo pkill -f uwsgi -9 四.关闭防火强 iptables -F #清空规则 systemctl stop firewalld #关闭防火墙服务 ...
- Spark Streaming实战演练
一.spark streaming简介 Streaming是一种数据传输技术,它把客户机收到的数据变成一个稳定连续的流,源源不断的输出,使用户听到的声音和图像十分稳定,而用户在整个文件传输完成开始前就 ...
- CentOS 7.6 安装 Weblogic 12
http://download.oracle.com/otn/nt/middleware/12c/12213/fmw_12.2.1.3.0_wls_Disk1_1of1.zip java -jar f ...
- laravel队列使用
1.修改.env中queue_driver = databases 2.php artisan queue:table 在database 目录下migrations里面有对应的表 3.执行迁移文件 ...
- JS — 获取4个不重复的随机验证码
var strCode='zxcvbnmasdfghjklopiuytrewqAWEDRFTGYHUJIK'; var str=''; for(var i=0;i<4;i++){ var ran ...
- Parco_Love_gcd
传送门 出题人说正解为RMQ,鄙人实在太蒟蒻了,不会呀只能暴力…… #include <bits/stdc++.h> using namespace std; #define ll lon ...