zabbix 安装详见 zabbix官网
本文主要讲解自定义思路流程
#!/bin/bash
echo "OK" > /tmp/init.log
sleep 10
name=`hostname`
ip_address=`ip a|grep -A2 eth0:|grep inet|awk '{print $2}'|awk -F '/' '{print $1}'`
if [ "$name" != "pro-ca-init" ];then
#启动salt
systemctl enable salt-minion.service
service salt-minion start
sleep 5
#替换主机名
sed -i 's/Hostname=Zabbix server/Hostname='"$name"'/' /etc/zabbix/zabbix_agentd.conf
sed -i 's/# HostMetadata=/HostMetadata='"$name"'/' /etc/zabbix/zabbix_agentd.conf
#调接口更新zabbix自定义脚本文件
token=`curl -k https://x.x.x.x:8000/login -H "Accept: application/x-yaml" -d username='saltapi' -d password='******' -d eauth='pam'|grep token|awk '{print $2}'`
sleep 2
curl -k https://x.x.x.x:8000/ -H "Accept: application/x-yaml" -H "X-Auth-Token: $token" -d client='local' -d tgt=$name -d fun='state.sls' -d arg="scripts"
sleep 5
#启动zabbix
service zabbix-agent restart
systemctl enable zabbix-agent.service
sed -i 's#/root/init.sh##' /etc/rc.local
echo "127.0.0.1 localhost
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
$ip_address $name" > /etc/hosts
rm -f /root/init.sh
fi
Zabbix Active agent可以实现自动注册,进而服务器对其进行监控。通过这种方式,无需在服务器上进行手动配置便可直接启动对新host的监控。
当以前未知的active agent要求检查时,会发生自动注册。
请确保在 配置文件中 指定了Zabbix server- zabbix_agentd.conf
ServerActive=10.0.0.1
如果你没有在zabbix_agentd.conf中特别定义Hostname, 则服务器将使用agent的系统主机名命名主机。Linux中的系统主机名可以通过运行’hostname’命令获取。
修改配置文件后需要重启agent
当服务器从agent收到自动注册请求时,它会调用一个动作. 必须要为agent自动注册配置一个事件源为“自动注册”的动作。
在Zabbix前端页面,点击 配置 → 动作 ,选择 自动注册 为事件源,然后单击 创建动作 :
在动作选项卡,定义动作名称
可选指定条件。如果要使用“主机元数据”条件
在“操作”选项卡中,需要添加关联操作,如“添加主机”,“添加到主机组”(例如,发现的主机),“链接到模板”等。
写一个脚本或命令行以检测所需的参数。
以连接数检测为例:
#!/bin/bash
function SYNRECV {
ss -s|grep synrecv|awk '{print $10}'|sed 's/,//'
}
function ESTAB {
ss -s|grep estab|awk '{print $4}'|sed 's/,//'
}
function FINWAIT1 {
/usr/sbin/ss -o | grep 'FIN-WAIT-1'|wc -l
}
function FINWAIT2 {
/usr/sbin/ss -ant| grep 'FIN-WAIT-2' | wc -l
}
function TIMEWAIT {
/usr/sbin/ss -ant | grep 'TIME-WAIT' | wc -l
}
function LASTACK {
/usr/sbin/ss -ant | grep 'LAST-ACK' | wc -l
}
function LISTEN {
/usr/sbin/ss -ant | grep 'LISTEN' | wc -l
}
$1
添加命令到 zabbix_agentd.conf
UserParameter=tcp[*],/clzdata/scripts/zabbix/tcp_status.sh $1
tcp 作为key需要是唯一标识符。可以是任何有效的字符。
通过使用带有 ‘-t’ 标识的 zabbix_agentd命令测试此用户自定义参数的执行。(如果是以root用户运行,请注意agent守护进程的执行者的权限):
zabbix_agentd -t tcp[LISTEN]
重启Zabbix Agent。
Agent会重载配置文件。
在被监控主机中添加使用key值为 ‘tcp[LISTEN]’ 的新监控项。监控项类型必须使用 Zabbix Agent 或 Zabbix Agent(Active)。
注意在 Zabbix Server 上。必须设置正确的返回值类型,否则Zabbix将不会接受它们。
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import urllib
import urllib2
import json
import sys
#获取变量
user = sys.argv[1]
title = sys.argv[2]
text = sys.argv[3]
#填写钉钉机器人url
requrl = url
message = {
'msgtype': 'markdown',
'markdown': {
'title': title,
'text':'%s \n\n %s' %(title,text)
}
}
header_dict = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko',
"Content-Type": "application/json"}
json_data = json.dumps(message).encode(encoding='utf-8')
req = urllib2.Request(url = requrl,data = json_data,headers = header_dict)
res_data = urllib2.urlopen(req)
res = res_data.read()
操作:
默认标题:## {TRIGGER.NAME} <font color="#38C759">**信息提示**</font>
#### ID: {EVENT.ID}
#### 告警主机: {HOST.NAME}
开始时间: {EVENT.DATE} {EVENT.TIME}
当前状态: {ITEM.VALUE1}