目录:
- 前言
- 调整服务器
- 调整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 "{ " printf ' '""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 ' {' printf ""{#IF}":"${ip_dev[$i]}}","{#HOSTIP}":"$host_ip"}" if [ $i -lt $[$length-1] ];then printf ',' fi done printf " ] " printf "} " } 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真是个好网站。