前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >zabbix 自定义监控脚本统一集中管理

zabbix 自定义监控脚本统一集中管理

作者头像
Kevin song
发布2021-03-08 15:37:51
1.2K0
发布2021-03-08 15:37:51
举报

偶然看到兴业证券工程师写了一篇关于zabbix的文章实现思路很不错,按照原文操作记录分享一下实现步骤!!!

原文链接

https://www.talkwithtrend.com/Article/252525

背景

zabbix 在进行大规模部署通常会根据需求自定义脚本文件,需要将自定义脚本文件上传到不同的监控节点上,在进行脚本变更时需要浪费大量的时间对每个节进行更改,无法实现脚本的统一集中管理。。。

实现原理

部署 Nginx 文件服务器统一存放和管理监控脚本,在zabbix-agent 预埋通用脚本,根据zabbix server传输的Key和参数,从文件服务器拉取脚本执行后返回数据。

实现架构

Nginx 文件服务器

Nginx 配置

代码语言:javascript
复制
server {
    listen       18686;
    location / {
        root   /usr/share/nginx/html;
        autoindex on;
        autoindex_exact_size off;
        autoindex_localtime on; 
        index  index.html index.htm;
     }
 }

浏览器访问测试

文件下载更新执行脚本

代码语言:javascript
复制
[root@elk-node2 shell]# cat requestshell.sh 
cat requestshell.sh 
#!/bin/bash

weburl="http://192.168.99.107:18686/software/" #文件服务器的URL
Dir="/etc/zabbix" 
file_directory=$Dir/$1  #定义本地存放执行脚本的目录
file_name=$2   #脚本名称
file_path=$1/$2  #脚本本地路径

if [ ! -d $file_directory ];then   #判断文件目录是否存在
    mkdir -p $file_directory
fi

if [ ! -f $Dir/$file_path ];then  #判断脚本是否存在
    wget -P $file_directory $weburl$file_name 2>>/tmp/log
fi

timestamp=$(date +%s)
filetimestamp=$(stat -c %Y $Dir/$file_path)

if [ $[$timestamp - $filetimestamp] -gt 3600 ];then #判断当前时间与脚本修改时间的大小,3600秒更新一次
      wget $weburl$file_name -O $Dir/$file_path 2>>/tmp/log  #覆盖脚本
      touch -c $Dir/$file_path   #重置脚本时间
fi

bash $Dir/$file_path $3  #执行脚本

监控 linux 服务运行状态脚本

代码语言:javascript
复制
cat service.sh 
#!/bin/bash

stat=`systemctl status $1 |grep Active|awk '{print $3}'|cut -c 2-8`

if [ $stat == running ];then
   echo 1
else
   echo 0
fi

监控网站状态脚本

代码语言:javascript
复制
cat webcheck.sh 
#!/bin/bash
/usr/bin/curl -I -m 10 -o /dev/null -s -w %{http_code}"\n" "$1"

-I 仅测试HTTP头

-m 10 最多查询10s

-o /dev/null 屏蔽原有输出信息

-s silent 模式,不输出任何东西

-w %{http_code} 控制额外输出

脚本测试(传入三个变量分别为脚本目录,脚本名称, 监控变量)

zabbix-agent 配置

代码语言:javascript
复制
vim  /etc/zabbix/zabbix_agentd.conf 
UserParameter=requests_file[*],sh /mnt/shell/requestshell.sh $1 $2 $3

Zabbix Server Web 配置

添加监控项在 web 上配置即可,后端会自动下载脚本到本地目录,进行数据采集。

Linux 服务状态监控项

web code 检查监控项

最新数据

shell 实现zabbix-agent 一键部署自动上线

zabbix-agent 一键部署自动上线

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-03-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源搬运工宋师傅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档