草庐IT

zabbix常用监控脚本

MrYe 2023-03-28 原文

监控java进程脚本

  • 脚本部分
    ProcessName 表示需要监控的进程名字
mkdir -pv /server/scripts 
vi  /server/scripts/check_java_process.sh 
#!/bin/bash
ProcessName="$1"
ps -ef |grep -w "[/]usr/local/jdk/bin/java"|awk -F"[ ]+" '{print $NF}'|grep -qw $ProcessName
if [ $? -eq 0 ];then
    echo 0
else
    echo 1
fi
  • 配置部分
chmod 655 /server/scripts/check_java_process.sh
vi /etc/zabbix/zabbix_agentd.d/UserDefined.conf 
UserParameter=java.process[*],bash /server/scripts/check_java_process.sh "$1"

监控内存使用率的脚本

  • 脚本部分
vi  /server/scripts/base_memory.sh
#!/bin/bash
free |awk 'NR==2{print 100-($2-$3)/$2*100}'
  • 配置部分
echo "UserParameter=base_memory,bash /server/scripts/base_memory.sh" >> /etc/zabbix/zabbix_agentd.d/UserDefined.conf 
chmod +x /server/scripts/*
systemctl restart zabbix-agent.service

前端页面可用性探测脚本

  • 脚本部分
  • DomainName 表示域名; PortNum 表示端口号
mkdir -pv /server/scripts
vi /server/scripts/check_front_status.sh
#!/bin/bash
DomainName=$1
PortNum=$2
StatusNum=$(curl http://127.0.0.1:${PortNum:-80} -H"Host:${DomainName}" -Is|awk 'NR==1{print $2}')

if [ -z  "$StatusNum"  ]
then
    echo 1
elif [ $StatusNum -eq  200 ]
then
    echo 0
else
    echo 1
fi
  • 配置部分
vi /etc/zabbix/zabbix_agentd.d/UserDefined.conf 
UserParameter=front.status[*],bash /server/scripts/check_front_status.sh "$1" "$2"

监控进程脚本

  • 脚本部分
    PidFileDir 表示需要监控的进程的pid文件位置
vi /server/scripts/monitor_process_pid.sh
#!/bin/bash
PidFileDir=$1
if [ -z $PidFileDir ]
then
    echo 1
    exit 2
fi
PidNum=$(cat "$PidFileDir" 2>/dev/null)

ps -ef |grep -q $PidNum 2>/dev/null
if [ $? -eq 0 ]
then
    echo 0
else
    echo 1
fi
  • 命令部分
chmod +x /server/scripts/*
vi /etc/zabbix/zabbix_agentd.d/UserDefined.conf 
UserParameter=process.pid[],bash /server/scripts/monitor_process_pid.sh "$1"

配置低级自动发现json原数据的脚本

低级自动发现需要自定义脚本,具体zabbix Low discover教程请自行科普。

  • 脚本部分
vi /server/scripts/base_discovery_disk.sh
#!/bin/bash
DiskName=(`df|awk 'NR>1{print $1}'`)
DiskCount=${#DiskName[*]}
a=`echo $((DiskCount-2))`
b=`echo $((DiskCount-1))`
for ((i=0;i<$DiskCount;i++))
do
    if [ $i -eq 0 ]
    then
        echo '{"data":['
    fi
    if [ $i -eq $b ]
    then
        echo -n '{"{#NAME}":"'
        echo -n "${DiskName[$i]##*/}"
        echo '"}]}'
    elif [ $i -le $DiskCount ]
    then
        echo -n '{"{#NAME}":"'
        echo -n "${DiskName[$i]##*/}"
        echo '"},'
    fi
done
  • 配置部分
echo "UserParameter=base_disk,bash /server/scripts/base_discovery_disk.sh" >> /etc/zabbix/zabbix_agentd.d/UserDefined.conf
systemctl restart zabbix-agent.service

磁盘使用率取值

这个脚本是配合上边的Low discover功能实现的,单独用来监控需要自己测试。

  • 脚本部分
vi /server/scripts/monitor_base_disk.sh 
#!/bin/bash
DiskName=$1
df |grep ${DiskName} 2>/dev/null |awk -va=${DiskName} '/a/{print $5 }' 2>/dev/null |grep -Eo "[0-9]+" 2>/dev/null
  • 配置部分
echo 'UserParameter=disk.use[*],bash /server/scripts/monitor_base_disk.sh "$1"' >> /etc/zabbix/zabbix_agentd.d/UserDefined.conf
chmod +x /server/scripts/*

有关zabbix常用监控脚本的更多相关文章

  1. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

    大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

  2. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  3. ruby-on-rails - 独立 ruby​​ 脚本的配置文件 - 2

    我有一个在Linux服务器上运行的ruby​​脚本。它不使用rails或任何东西。它基本上是一个命令行ruby​​脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg

  4. Observability:从零开始创建 Java 微服务并监控它 (二) - 2

    这篇文章是继上一篇文章“Observability:从零开始创建Java微服务并监控它(一)”的续篇。在上一篇文章中,我们讲述了如何创建一个Javaweb应用,并使用Filebeat来收集应用所生成的日志。在今天的文章中,我来详述如何收集应用的指标,使用APM来监控应用并监督web服务的在线情况。源码可以在地址 https://github.com/liu-xiao-guo/java_observability 进行下载。摄入指标指标被视为可以随时更改的时间点值。当前请求的数量可以改变任何毫秒。你可能有1000个请求的峰值,然后一切都回到一个请求。这也意味着这些指标可能不准确,你还想提取最小/

  5. postman——集合——执行集合——测试脚本——pm对象简单示例02 - 2

    //1.验证返回状态码是否是200pm.test("Statuscodeis200",function(){pm.response.to.have.status(200);});//2.验证返回body内是否含有某个值pm.test("Bodymatchesstring",function(){pm.expect(pm.response.text()).to.include("string_you_want_to_search");});//3.验证某个返回值是否是100pm.test("Yourtestname",function(){varjsonData=pm.response.json

  6. ruby - 确定 ruby​​ 脚本是否已经在运行 - 2

    有没有一种简单的方法可以判断ruby​​脚本是否已经在运行,然后适本地处理它?例如:我有一个名为really_long_script.rb的脚本。我让它每5分钟运行一次。当它运行时,我想看看之前运行的是否还在运行,然后停止第二个脚本的执行。有什么想法吗? 最佳答案 ps是一种非常糟糕的方法,并且可能会出现竞争条件。传统的Unix/Linux方法是将PID写入文件(通常在/var/run中)并在启动时检查该文件是否存在。例如pid文件位于/var/run/myscript.pid然后你会在运行程序之前检查它是否存在。有一些技巧可以避免

  7. ruby - ruby 脚本可以预编译成二进制文件吗? - 2

    我正在开发一个Ruby脚本,需要在没有Ruby解释器的情况下部署到系统上。它将需要在使用ELF格式的FreeBSD系统上运行。我知道有一个ruby​​2exe项目可以编译在Windows上运行的ruby​​脚本,但是在其他操作系统上这样做容易吗?甚至可能吗? 最佳答案 您是否检查过Rubinius或JRuby是否允许您预编译您的代码? 关于ruby-ruby脚本可以预编译成二进制文件吗?,我们在StackOverflow上找到一个类似的问题: https://

  8. ruby-on-rails - Ruby 从 bash 脚本执行中捕获 stderr 输出 - 2

    我目前可以将stdout重定向到ruby​​/rails中的字符串变量,只需在bash中运行命令并将结果设置为我的字符串变量,如下所示。val=%x[#{cmd}]其中cmd是表示bash命令的字符串。但是,这仅捕获stdout,因为我想捕获stderr并将其设置为ruby​​中的字符串——有什么想法吗? 最佳答案 简单地重定向它:val=%x[#{cmd}2>&1]如果您只想从stderr捕获输出,请在将其复制到fd2后关闭stdout的文件描述符。val=%x[#{cmd}2>&1>/dev/null]

  9. ruby - 是否可以从 ruby​​ 脚本返回值并在 c 或 shell 脚本中读取该值? - 2

    我们如何从ruby​​脚本返回值?#!/usr/bin/envrubya="test"a我们如何在Ubuntu终端或java或c中访问'a'的值? 最佳答案 在ruby​​/python脚本中打印你的变量,然后可以通过示例从shell脚本中读取它:#!/bin/bashruby_var=$(rubymyrubyscript.rb)python_var=$(pythonmypythonscript.py)echo"$ruby_var"echo"$python_var"注意你的ruby​​/python脚本只打印这个变量(有更多复杂的方

  10. ruby - 从 FaSTLane 将环境变量传递给 shell 脚本 - 2

    我在跑Fastlane(适用于iOS的持续构建工具)以执行用于解密文件的自定义shell脚本。这是命令。sh"./decrypt.shENV['ENCRYPTION_P12']"我想不出将环境变量传递给该脚本的方法。显然,如果我将密码硬编码到脚本中,它就可以正常工作。sh"./decrypt.shmypwd"有什么建议吗? 最佳答案 从直接Shell中扩展假设这里的sh是一个faSTLane命令,它以给定的参数作为脚本文本调用shell命令:#asafastlanedirectivesh'./decrypt.sh"$ENCRYPTI

随机推荐