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"
低级自动发现需要自定义脚本,具体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/*
大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje
我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚
我有一个在Linux服务器上运行的ruby脚本。它不使用rails或任何东西。它基本上是一个命令行ruby脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg
这篇文章是继上一篇文章“Observability:从零开始创建Java微服务并监控它(一)”的续篇。在上一篇文章中,我们讲述了如何创建一个Javaweb应用,并使用Filebeat来收集应用所生成的日志。在今天的文章中,我来详述如何收集应用的指标,使用APM来监控应用并监督web服务的在线情况。源码可以在地址 https://github.com/liu-xiao-guo/java_observability 进行下载。摄入指标指标被视为可以随时更改的时间点值。当前请求的数量可以改变任何毫秒。你可能有1000个请求的峰值,然后一切都回到一个请求。这也意味着这些指标可能不准确,你还想提取最小/
//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
有没有一种简单的方法可以判断ruby脚本是否已经在运行,然后适本地处理它?例如:我有一个名为really_long_script.rb的脚本。我让它每5分钟运行一次。当它运行时,我想看看之前运行的是否还在运行,然后停止第二个脚本的执行。有什么想法吗? 最佳答案 ps是一种非常糟糕的方法,并且可能会出现竞争条件。传统的Unix/Linux方法是将PID写入文件(通常在/var/run中)并在启动时检查该文件是否存在。例如pid文件位于/var/run/myscript.pid然后你会在运行程序之前检查它是否存在。有一些技巧可以避免
我正在开发一个Ruby脚本,需要在没有Ruby解释器的情况下部署到系统上。它将需要在使用ELF格式的FreeBSD系统上运行。我知道有一个ruby2exe项目可以编译在Windows上运行的ruby脚本,但是在其他操作系统上这样做容易吗?甚至可能吗? 最佳答案 您是否检查过Rubinius或JRuby是否允许您预编译您的代码? 关于ruby-ruby脚本可以预编译成二进制文件吗?,我们在StackOverflow上找到一个类似的问题: https://
我目前可以将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]
我们如何从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脚本只打印这个变量(有更多复杂的方
我在跑Fastlane(适用于iOS的持续构建工具)以执行用于解密文件的自定义shell脚本。这是命令。sh"./decrypt.shENV['ENCRYPTION_P12']"我想不出将环境变量传递给该脚本的方法。显然,如果我将密码硬编码到脚本中,它就可以正常工作。sh"./decrypt.shmypwd"有什么建议吗? 最佳答案 从直接Shell中扩展假设这里的sh是一个faSTLane命令,它以给定的参数作为脚本文本调用shell命令:#asafastlanedirectivesh'./decrypt.sh"$ENCRYPTI