使用vsftp与shell实现对进程与服务状态的监控
先说一下需求吧,公司开发了一款新的产品,新产品嘛,有着不得不出问题的理由,四个云机房,总共三百余台机器,需要实时的监控进程状态,虽然有zabbix来实现,但领导需求是脚本和zabbix一起做,zabbix网上有现成的教程,今天主要说的是shell的实现思路与方式:
1.使用脚本来进行进程监控,将进程宕掉的具体信息保留,具体的话,就是时间,然后顺带着将其重启。
2.将每台机器的信息定时汇总到一台机器上,需要考虑到的是时间的一致性。
3.使用脚本对这些汇总的信息进行遍历,汇总到一个文件下,实现一目了然,因为已经从公司离职了,所以实现效果的图片就截不到了,大体上看出思路就行。
使用工具:vsftp,shell脚本
脚本a,实现功能:进程检测,信息生成。部署机器:业务机器。
#!/bin/bash
#cms存活检测,如果检测不到cms进程存在,则重启cms服务,并将当前时间和ip写入日志
ip=`ifconfig ens33|awk 'NR==2{print $2}'|awk -F "[:]" '{print $2}'`
date=`date`
cmspid=`ps -ef | grep vpm.jar | grep -v grep | awk '{print $2}'`
if [ "$cmspid" == "" ];then
cd /opt/vpm/CMS
nohup java -jar /opt/vpm/CMS/vpm.jar >/dev/null 2>&1 &
echo "${date}${ip}cms服务宕停重启" >> /vpmtestlog/5stest/${ip}cmstestlog
fi
脚本b,实现功能:使用ftp对文件进行上传,发送到日志服务器的固定目录下。部署机器:业务机器。
#!/bin/bash
#ftp上报文件脚本
ftp -v -n 114.114.114.114<<EOF
user 5stest sihuat123
binary
hash
cd /vpmtestlog/5stest/
lcd /vpmtestlog/5stest/
prompt
mput /vpmtestlog/5stest/*
close
bye
EOF
rm /vpmtestlog/5stest/*
脚本c,实现功能:对上报上的文件进行遍历,同时需要对收集信息文件的目录进行清空。部署机器:日志服务器。
#!/bin/bash
#遍历各分结点的日志,汇总到一个文件中
log=`ls /15mintest`
rm -rf /15mintestlog
for i in $log
do
cd /15mintest
cat $i >> /15mintestlog
done
需要注意的是,收集所有宕停信息的文件是不断追追加的,所以需要根据实际需要对该文件进行清空,对时间的一致性要求较高,所以系统内的机器应该同时向一台机器做时间校准,最后,需要注意的是
配置脚本时,运行时间应该有所差别,监测>上传>遍历,建议时间差为一分钟。最后我的配置是,每30s检测脚本运行一起,每2min日志上传脚本运行一次,每5min对上传上的脚本进行遍历,然后根据需要,可以做两个不同的脚本线:1.异常状态收集,可以在上下班各一次。及时的发现并反馈情况。2.即时状态收集,可以对当前的服务状态进行了解。
根据每台机器所安装的不同组件,配置不同的定时任务,不同的清空要求即可实现不同的需求。
使用vsftp与shell实现对进程与服务状态的监控的更多相关文章
- shell 杀掉指定进程的服务
check_results=`ps -ef|grep bp_driver.launch|awk '{print $2}'|sed -n 1p` echo `kill - $check_results` ...
- Shell实现判断进程是否存在并重新启动脚本
Shell实现判断进程是否存在并重新启动脚本 - superbfly的专栏 - CSDN博客 https://blog.csdn.net/superbfly/article/details/52513 ...
- shell的父子进程
2017年1月11日, 星期三 shell的父子进程 启动/执行方式: 当前shell: #!/bin/bash 必须行首 ...
- Shell 关闭指定进程
例如要关闭jupyter-notebook这个进程: - | 说明:管道符“|”用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入. “ps -ef” 查看所有进程 “grep -v g ...
- 014-交互式Shell和shell脚本获取进程 pid
Linux 的交互式 Shell 与 Shell 脚本存在一定的差异,主要是由于后者存在一个独立的运行进程 1.交互式 Bash Shell 获取进程 pid 在已知进程名(name)的前提下,交互式 ...
- shell关闭指定进程
例如要关闭jupyter-notebook这个进程: ps -ef | grep jupyter-notebook | grep -v grep | cut -c 9-15 | xargs kill ...
- linux分享一:进程全攻略--守护进程(服务)
概括: 进程是程序的运行实例.进程对应一个唯一的进程PID, 统一程序的多个实例可以同时运行,他们的pid互不相同. 进程一般分为交互进程.批处理进程和守护进程(daemons)三类 一:什么是守护进 ...
- Linux进程管理之状态(二)
二.进程的生命周期 进程是一个动态的实体,所以他是有生命的.从创建到消亡,是一个进程的整个生命周期.在这个周期中,进程可能会经历各种不同的状态.一般来说,所有进程都要经历以下的3个状态: 就绪态.指进 ...
- Inno Setup 安装、卸载前检测进程或服务
[转载]Inno Setup 安装.卸载前检测进程或服务 (2015-04-24 17:37:20) 转载▼ 标签: 转载 原文地址:Inno Setup 安装.卸载前检测进程或服务作者:一去丶二 ...
随机推荐
- 手动搭建自己的nuget服务器及使用
这篇文章的主要目的: 1.搭建自己的私有的nuget服务器 2.打包代码为nuget包 3.在其他项目中使用私有服务器上的nuget包 一. 搭建自己的nuget服务器 1. 创建一个空的ASP.NE ...
- python统计字符串里每个字符的次数
方法一: 推导式 dd="ewq4aewtaSDDSFDTFDSWQrtewtyufashas" print {i:dd.count(i) for i in dd} 方法二: co ...
- (数据科学学习手札65)利用Python实现Shp格式向GeoJSON的转换
一.简介 Shp格式是GIS中非常重要的数据格式,主要在Arcgis中使用,但在进行很多基于网页的空间数据可视化时,通常只接受GeoJSON格式的数据,众所周知JSON(JavaScript Obje ...
- C++ 洛谷 P2657 [SCOI2009]windy数 题解
P2657 [SCOI2009]windy数 同步数位DP 这题还是很简单的啦(差点没做出来 个位打表大佬请离开(包括记搜),我这里讲的是DP!!! 首先Cal(b+1)-Cal(a),大家都懂吧(算 ...
- 设计模式-模块方法模式(TemplateMethod)
模块方法模式是行为模式之一,它把具有特定步骤算法中的某些必要的处理委让给抽象方法,通过子类继承对抽象方法的不同实现改变整个算法的行为. UML图: 具体代码: /** * 抽象-模块方法模式核心 */ ...
- 关于自己"手机瘾"的切身体验
其实之前也喜欢看手机,只是从去年7月份开始,因为自控能力.新项目等原因,导致"手机瘾"这个病更严重了,控制不住,一看就是几小时.去年过年的时候,自己定的第一个目标就是戒掉手机瘾,到 ...
- Salesforce Admin篇(二) Report
针对salesforce系统也好,针对其他的平台系统也好,对于business user的需求以及疑问,数据往往决定了答案.业务人员提出了某些疑问,管理员需要根据需求的分析转换成数据的分析及过滤从而反 ...
- 从URL获取图片并保存到本地
/// <summary> /// HttpWebRequest Property /// </summary> /// <param name="fileNa ...
- Windows下必备的开发神器之Cmder使用说明
诚言,对于开发码字者,Mac和Linux果断要比Windows更贴心;但只要折腾下,Windows下也是有不少利器的.之前就有在Windows下效率必备软件一文中对此做了下记载:其虽没oh-my-zs ...
- Redis主从复制实现原理
一.Redis2.8之前的版本, 首先redis复制功能分为同步操作和命令传播两个操作 同步操作作于将从服务器的数据库状态更新至主服务器当前所处的数据库状态 命令传播操作则用于在主服务器的数据库状态 ...