使用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 安装.卸载前检测进程或服务作者:一去丶二 ...
随机推荐
- outerHTML、innerHTML以及innerText三者的区别
- MAC 安装telnet
https://blog.csdn.net/licheng70356213/article/details/81162660 在10.12及以下版本,都内置了telnet命令,但是在10.13中,已经 ...
- [乐意黎原创]Centos 7里apache(httpd)自启动
最近,Aerchi在折腾 ECS服务器 (Centos 7),每次重启后都要手动开启apache服务,好繁琐. 仔细研究了下:Apache 的服务第一.启动.终止.重启systemctl start ...
- 跟着大彬读源码 - Redis 2 - 服务器如何响应客户端请求?(上)
上次我们通过问题"启动服务器,程序都干了什么?",跟着源码,深入了解了 Redis 服务器的启动过程. 既然启动了 Redis 服务器,那我们就要连上 Redis 服务干些事情.这 ...
- 环形缓存RingBuf的几种实现方式(数组,链表),及Disruptor的分析
先贴个头文件的设计: 首先缓冲区中没有任何数据时,nIdWrite.nIdRead读写下标都为0. 为了判断缓冲区中是否还有数据可读或者可写,我判断的依据是:1)当nIdWrite 等于 nIdRea ...
- 浅入深出Vue:发布项目
项目完成之后,当然不能满足于在我们的开发环境下跑一跑.我们可以打包发布到服务器上,让大家一起来欣赏一下你的作品. 那么 vue 项目如何打包发布呢,新建的项目目录下通常都有一个 README.md 的 ...
- Skyline WEB端开发2——添加一个定位点、文本标签
Skyline 添加定位点 sgworld.Creator.CreatePosition CreatePosition( X, //兴趣点的东西方向坐标,即经度 Y, //兴趣点的南北方向坐标,即纬度 ...
- 每日一问:View.getContext() 的返回一定是 Activity 么?
坚持原创日更,短平快的 Android 进阶系列,敬请直接在微信公众号搜索:nanchen,直接关注并设为星标,精彩不容错过. 一般我们被问到这样的问题,通常来说,答案都是否定的,但一定得知道其中的原 ...
- py+selenium+unittest遇到HTMLTestRunner_cn文件报错:ZeroDivisionError: float division by zero【已解决】
问题:遇到HTMLTestRunner_cn文件报错:ZeroDivisionError: float division by zero HTMLTestrunner_cn.py是从网上下的,照理说应 ...
- 细说Ansible主机清单inventory
Ansible是一个系列文章,我会尽量以通俗易懂.诙谐幽默的总结方式给大家呈现这些枯燥的知识点,让学习变的有趣一些. Ansible系列博文直达链接:Ansible入门系列 前言 关于Ansible是 ...