【运维--监控】zabbix自定义发现策略
目录:
- 前言
- 调整服务器
- 调整web模板
- 测试
前言
想想看系统监控工程师以前是一个多么高大上的职业,现在也渐渐消失了。因为自动化的普及,成功的实现了一个会开发,懂架构的人,可以干多少个技术岗位的工作。阿里出圈后,有多少公司,一群一群的高级人才想围住低级人才建立技术壁垒,把普通人打入到靠想法,靠体力活着。想法好,抽你9成水,体力抽你9.9成。
技术平台(地主)-->数据接口(卖铲子的人)--> 使用者(码农)--> 真正的业务(产出)-->干掉一名监控运维
感叹一下,回到正题。zabbix的自定义发现策略,真正的产出结果。本例以开源项目zabbix开发出自动添加为图片显示IP为例。展示如何干掉一名值班运维的。
调整服务器
1、脚本格式
bash版
#!/bin/bash
ip_dev=( $(ip a| awk -F " |:" '/state UP/{printf "%s ",$3}') ) function zabbix_json(){ printf "{\n" printf '\t'"\"data\":[" length=${#ip_dev[@]} for ((i=0;i<$length;i++)) do #printf "$i" host_ip=`ip a sh ${ip_dev[$i]} | awk -F" |/" '/inet /{printf "%s ",$6}'` printf '\n\t\t{' printf "\"{#IF}\":\"${ip_dev[$i]}}\",\"{#HOSTIP}\":\"$host_ip\"}" if [ $i -lt $[$length-1] ];then printf ',' fi done printf "\n\t]\n" printf "}\n" } zabbix_json $ip_dev
golang版
package main import ( "encoding/json" "fmt" "net" "os" "regexp" ) type netInfo struct { IF string `json:"{#IF}"` HOSTIP string `json:"{#HOSTIP}"` } // 处理address转化成字符 func addrToStr(l []net.Addr)(s string,err error){ count := 0 for _,v := range l{ matchIPv4, _ := regexp.MatchString(".*64$", v.String()) if matchIPv4 { continue } s1 := v.String()[:len(v.String())-3] if count > 0 { s = fmt.Sprintf("%s %s", s, s1) }else{ s = fmt.Sprintf("%s", s1) } count += 1 } return } // 返回结果ip,name对应表 func InterInfo()([]netInfo, error){ var ips []netInfo inter, err := net.Interfaces() if err != nil { return nil, err } for _, item := range inter { byName, err :=net.InterfaceByName(item.Name) if err != nil { return nil, err } matchFlags, _ := regexp.MatchString("up.*|.*UP,.*", byName.Flags.String()) matchName, _ := regexp.MatchString("Loopback.*|lo.*", byName.Name) //fmt.Println(match, byName.Flags.String()) if (!matchFlags || matchName){ continue } var addresses []net.Addr addresses, err = byName.Addrs() data, err := addrToStr(addresses) ips = append(ips, netInfo{ byName.Name, data, }) } return ips, nil } func main(){ ips, err := InterInfo() if err != nil { fmt.Printf("it is get net info fail.err is:%v", err) os.Exit(1) } result,_ := json.Marshal(ips) fmt.Println(string(result)) }
2、调整服务器添加监控
cat /etc/zabbix/zabbix_agentd.d/userparameter_ip_linux.conf UserParameter=discovery.activeip,/bin/bash /etc/zabbix/script/discovery_network_ip.sh
3、重启服务器
systemctl restart zabbix-agent systemctl restart zabbix-server
调整web模板
1、添加模板
2、添加自定义监控
自定义监控配置
过滤器配置
3、监控原型书写
监控原型--进程
out原型雷同配置,不在重复。
另外有其他需求可自行开发书写。这里就不在赘述了。
4、图形原型
模板完成。
测试
1、绑定主机
2、调试查看
3、成果展示
又一个监控工程师被干掉了,哎,什么时候能自己把自己干掉啊。ip就不给大家看了。多看源码,github真是个好网站。