如何用shell脚本监控mongodb副本集状态

如何用shell脚本监控mongodb副本集状态,第1张

用过echo加管道符将命令传入mongo的命令行
echo "dbserverStatus()mem" | mongo admin -u$user -p$pw
如果是多条命令
mongo admin -u$user -p$pw <<EOF
命令
命令
EOF
$user 用户
$pw 密码
如果没有设置用户认证,那么后面的-u,-p都不

1)源程序(例如查找用户为 root,进程名为 CFTestApp 的进程 ID)
1
2
3
PID=`GetPID root CFTestApp`
echo $PID
2)结果输出
1
2
11426
[dyu@xilinuxbldsrv shell]$

ps -fe|grep X
if [ $ -eq 0 ]
then
service restart X
fi
然后把这段脚本放到crontab里面,每分钟执行一次就可以了

用nmap端口扫描:\x0d\nmap -v -sT ip_addres\x0d\\x0d\或者知道端口就用netcat(nc)或者telnet\x0d\nc -z -w 10 ip_address port (echo $ 为零说明是通的)\x0d\telnet ip_address port (有信息收到,说明是通的)

这个不会有人帮你写出个完整的shell。因为每台机器的 *** 作系统都不一定吻合,不过我可以给你个自己做的参考:
1,启动你服务器的snmp服务器,编辑/etc/snmp/snmpdconf
修改里面的 com2sec notConfigUser default <你的community名字>, 有困惑,可以在网上搜索snmp服务配置。然后/etc/initd/snmpd start 启动服务。
2 安装net-snmp
yum install net-snmp
3验证你服务器snmp是否正确安装:
snmpwalk -v 2c -c <你自己设置的community> 127001
有返回信息就是正确。
4 写你shell程序,通过snmpwalk可查看各网卡端口流量,可根据下面我提供的信息你自己选择你要监控的端口。
[root@AAA snmp]# snmpwalk -v 2c -c <你自己定义community> 127001 IF-MIB::ifHCOutOctets
IF-MIB::ifHCOutOctets1 = Counter64: 2458933344
IF-MIB::ifHCOutOctets2 = Counter64: 1714076390
IF-MIB::ifHCOutOctets3 = Counter64: 0
IF-MIB::ifHCOutOctets4 = Counter64: 0
[root@AAA snmp]# snmpwalk -v 2c -c c <你自己定义community> 127001 IF-MIB::ifHCInOctets
IF-MIB::ifHCInOctets1 = Counter64: 2458940740
IF-MIB::ifHCInOctets2 = Counter64: 3011885260
IF-MIB::ifHCInOctets3 = Counter64: 0
IF-MIB::ifHCInOctets4 = Counter64: 0
实际shell赋值,可以通过snmpget命令而不是snmpwalk。比如:
[root@AAA snmp]# snmpget -v 2c -c <你自己定义community>127001 IF-MIB::ifHCOutOctets1
IF-MIB::ifHCOutOctets1 = Counter64: 2458947627
这样,你就可以通过shell,吧值赋给变量,例子如下:
[root@AAA snmp]# var=`snmpget -v 2c -c <你自己定义community> 127001 IF-MIB::ifHCOutOctets1 | awk '{print $4}'`;echo $var
2458981520
我已经提供全过程的信息给你了。具体你琢磨着去弄你的shell吧。
哈,有点头晕。。。如果只监测自己机器,楼上仁兄那个最好。采纳他吧。

#/bin/bashtrue=1F_root=/tmp/某张表Vol=`du-ks$F_root|sed's/M//'`whiletruedoif[$Vol>50]thencat/dev/null>$F_rootsleep1800fidone这个脚本一旦运行就无法停止,那个某张表的目录因你个人的情况而设置,因为循环条件whiletrue永远成立,如果要停止监控,只要kill-9"进程号"就可以了

写一个死循环,不停的去查询该目录下的文件,把结果放到一个文件中, 再把下次的查询结果跟这次的结果对比。对比文件名和文件大小,如果有差异就把差异的文件ftp到另一个服务器里面吧!大概这么个思路


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10294577.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-07
下一篇 2023-05-07

发表评论

登录后才能评论

评论列表(0条)

保存