<
zabbix监控流程
>
上一篇

logstash 输出到文件
下一篇

LDAP简单配置

zabbix客户端自动监控流程

zabbix 安装详见 zabbix官网

本文主要讲解自定义思路流程

1.客户端初始化

#!/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

2.自动注册

​ 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收到自动注册请求时,它会调用一个动作. 必须要为agent自动注册配置一个事件源为“自动注册”的动作。

在Zabbix前端页面,点击 配置 → 动作 ,选择 自动注册 为事件源,然后单击 创建动作 :

3.加载自定义脚本

第一步

写一个脚本或命令行以检测所需的参数。

以连接数检测为例:

#!/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将不会接受它们。2018-12-13 143856

4.告警

书写告警脚本

#! /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()

配置告警媒介类型

批注 2018-12-13 144519

触发器配置

1545735719552

1545735729624

1545735753772

操作:
默认标题:## {TRIGGER.NAME} <font color="#38C759">**信息提示**</font>
#### ID: {EVENT.ID}


#### 告警主机: {HOST.NAME}   


开始时间: {EVENT.DATE} {EVENT.TIME}


当前状态: {ITEM.VALUE1}

1545735772711

选择用户发送告警

批注 2018-12-13 144647

Top
Foot