Zabbix脚本监控日志条数

1. 自动发现和获取日志条数脚本

#!/bin/bash

# 配置参数
ES_HOST="xxxx:9200"    # ES 地址
INDEX="filebeat-*"      # 日志索引名
IP_FIELD="ip.keyword" # IP 字段名(需为 keyword 类型)
TIME_FIELD="@timestamp"       # 时间字段
IP=$2

ip.discovery(){
ip=($(cat /etc/zabbix/scripts/log_ip.txt))
printf '{\n'
printf '\t"data":[\n'
 for ((i=0;i<${#ip[@]};++i))
 {
    num=$(echo $((${#ip[@]}-1)))
    if [ "$i" != ${num} ];
    then
       printf "\t\t{ \n"
       printf "\t\t\t\"{#IP}\":\"${ip[$i]}\"},\n"
    else
       printf "\t\t{ \n"
       printf "\t\t\t\"{#IP}\":\"${ip[$num]}\"}]}\n"
    fi
}
}

get_log_count(){
# 构建查询请求
REQUEST_JSON=$(cat <<EOF
{
  "size": 0,
  "track_total_hits": false,
  "query": {
    "bool": {
      "must": [
        {"term": {"${IP_FIELD}": "${IP}"}},
        {"range": {
          "${TIME_FIELD}": {
            "gte": "now-1h",
            "lte": "now"
          }
        }}
      ]
    }
  },
  "aggs": {
    "ip_count": {"value_count": {"field": "${IP_FIELD}"}}
  }
}
EOF
)

# 发送请求并提取结果,记得修改用户名和密码
RESPONSE=$(curl -u "user:passwd" -s -X POST "${ES_HOST}/${INDEX}/_search" \
          	-H 'Content-Type: application/json' \
            	-d "${REQUEST_JSON}")

# 解析聚合结果
COUNT=$(echo "${RESPONSE}" | jq -r '.aggregations.ip_count.value')

# 输出统计
#echo "IP ${IP} 在最近 1 小时的日志数量: ${COUNT:-0}"
echo $COUNT
}

case $1 in
        ip.discovery)
                ip.discovery
                ;;
        get_log_count)
                get_log_count
                ;;
        *)
                echo "bash $0 {ip.discovery,get_log_count}"
                ;;
esac

2. 编辑log_ip.txt

- 把需要的ip写入到txt文件里面

192.168.1.1
192.168.1.2
192.168.1.3
...
...
...

3. 编辑配置文件

  • vi userparameter_log_count.conf
UserParameter=ip.discovery,bash /etc/zabbix/scripts/monitor_log_count.sh ip.discovery
UserParameter=get_log_count[*],bash /etc/zabbix/scripts/monitor_log_count.sh get_log_count $1

4. 配置模板

  • 由于模板文件内容较长,我放到github里面,可以从我的github仓库里面查看

https://github.com/chuckzeng/chuck-zabbix.git

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值