Zabbix-05-自动发现+注册+agent
自动发现和自动(主动注册)
自动发现
添加自动监控项
创建动作
启用主机
自动(主动注册)
第一步,修改参数
- Server:#允许谁来向我取值
- ServerActive:#我主动像谁汇报
- Hostname:#区分每一个agnet
- Hostnamedate:#web,标签作用,主机元数据
第二步,添加自动注册规则
添加作动
添加操作
第三步,重启
重启zabbix-server
重启zabbix-agent
第四步,查看
秒添加
zabbix-agnet主动和被动的区别
被动模式在百台和千台会达到性能瓶颈
被动模式
主动模式
将模板监控项全选更新类型为主动式,时间间隔为30s
(如果需要新的标识模板或者要对模板进行修改,则需要将进行全克隆,对克隆后的模板进行修改)
无zabbix-agnet客户端的监控(Zabbix-sender) + crontab
应用环境:如银行等特殊环境,没有安装软件的授权
参考博客:https://www.qstack.com.cn/archives/133.html
安装
rpm -ivh http://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-sender-3.0.5-1.el7.x86_64.rpm
查看语法
zabbix_sender –help
zabbix_sender -z 127.0.0.1 -s "Linux DB3" -k db.connections -o 43
参数:
- -z zabbix-server 服务器地址
- -s host 监控指定主机的名字
- -k pass
- -o key的值
客户端可以直接写脚本把指取出,再发送
添加监控项类型
命令行测试
zabbix_sender -z 192.168.1.10 -s "192.168.1.92" -k avaiMEM -o 220
脚本检测-命令行取值-主动发送效率高,但是容易造假
脚本编写
命令行取值测试
free -m | awk '/^Mem/{print $NF}'
取值成功,编写脚本
vim /server/scripts/avaimem.sh
1 |
|
更新脚本
由于银行环境连sender都不能装,所以我们需要nc来传输
Nc参考脚本(因为版本更迭,不能用)
1 | #/bin/bash |
参数:
1 | 三个变量 |
更新后的脚本
1 |
|
缺点
步骤复杂,而且容易出问题
zabbix低级自动发现
自动发现:创建监控主机
低级自动发现:自动创建监控项
自动发现规则其实就是一个key
名称为key名称
过滤器内容
查看正则表达式
监控项原型
最后会根据过滤后剩下的值自动创建监控项
mysql多实例低级自动发现
参考https://www.qstack.com.cn/archives/108.html
新增库
1 | cp /etc/my.cnf /etc/my3307.cnf |
全部替换
1 | [mysqld] |
1 | 创建文件夹 |
创建key
写key
1 | vim mysql_discover.conf |
写脚本
1 | vim /server/scripts/mysql_discovery.sh |
命令行测试取值
sh /server/scripts/mysql_discovery.sh
解决权限问题
which netstat
chmod u+s /usr/bin/netstat
创建自动发现
添加规则
添加正则表达式
添加过滤器
变量来由
原型添加
解析原生脚本
cat /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf |grep -Ev '^$|#'
去掉最简易的命令行
取出尾部命令行(看不懂的变量可以搜索)
UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/var/lib/zabbix mysql -N | awk '{print $$2}'
在原生模板中查询传入的参数,并进行测试
echo "show global status where Variable_name='Com_begin';" | mysql -N | awk '{print $2}'
逐步最小化
echo "show global status where Variable_name='Com_begin';" | mysql -N
发现是打印数据库信息
(简单的命令行也可以直接取头部进行测试)
进入端口
mysql -h 127.0.0.1 -P 3307
显示当前数据库
show VARIABLES like '%sock%';
修改angent配置文件
vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
添加变量()
UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/var/lib/zabbix mysql -h 127.0.0.1 -P $2 -N | awk '{print $$2}'
命令行测试取值
zabbix_get -s 192.168.1.91 -k mysql.status[Com_begin,3308]
参照原生原型,创造原型
参数
mysql.status[uptime,{ #MYSQLPORT}]
mysql.status 键
uptime 传入的参数
{ #MYSQLPORT} 传入的第二个参数,触发器的宏变量
添加增删改查
监控项批量更新加入应用集
Pass
查看数据
流程总结
定义key
1 | cat /etc/zabbix/zabbix_agentd.d/mysql_discover.conf |
定义自动发现规则来接收key
拿到监控项原型中进行创建
遍历到n个值就反复创建n遍
一个低级自动发现最少需要两个key,
1.脚本中的键值 mysql.discovery
2.监控项原型取值 mysql.status[uptime,{ #MYSQLPORT}]