使用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 安装.卸载前检测进程或服务作者:一去丶二 ...
随机推荐
- Hive 学习之路(八)—— Hive 数据查询详解
一.数据准备 为了演示查询操作,这里需要预先创建三张表,并加载测试数据. 数据文件emp.txt和dept.txt可以从本仓库的resources目录下载. 1.1 员工表 -- 建表语句 CREAT ...
- composer使用本地仓库
{ "repositories": { "sms": { "type": "path", "url" ...
- PowerDesigner16.5 有用地址
http://blog.csdn.net/keenweiwei/article/details/32720427
- C++ luogu1352没有上司的舞会 from_树形DP
luogu1352没有上司的舞会 分析(树形DP模板题): 没学树形DP的,看一下. 把该题抽象到一颗树中,设i的下属就是他的儿子,则有两种情况: 如果i参加,他的儿子就不能参加. 如果i不参加,他的 ...
- C#如何加载程序运行目录外的程序集 (转)
---恢复内容开始--- 尼玛,为了这个问题,纠结到差点吐出干血,赶紧记下来! 源地址:http://blog.csdn.net/dyllove98/article/details/9391325 我 ...
- 剑指offer第二版-5.替换空格
面试题5:替换空格 题目要求: 实现一个函数,把字符串中的每个空格都替换成“%20”,已知原位置后面有足够的空余位置,要求改替换过程发生在原来的位置上. 思路: 首先遍历字符串求出串中空格的数量,求出 ...
- Nginx+vsftpd
一.安装Nginx 关闭selinux和firewalld setenforce sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selin ...
- ~~核心编程(二):面向对象——类&属性~~
进击のpython 类&属性 虽然我们上一part写了一个面向对象的程序:人狗大战 但是如果在面向对象来看 你这些的就不够规范 你既然选择用面向对象的思想来写 那你就要符合人家的定义规范和操作 ...
- Neo4j电影关系图
“电影关系图”实例将电影.电影导演.演员之间的复杂网状关系作为蓝本,使用Neo4j创建三者关系的图结构,虽然实例数据规模小但五脏俱全. 步骤: 一. 创建图数据:将电影.导演.演员等图数据导入Neo4 ...
- 万字长文:ELK(V7)部署与架构分析
ELK(7版本)部署与架构分析 1.ELK的背景介绍与应用场景 在项目应用运行的过程中,往往会产生大量的日志,我们往往需要根据日志来定位分析我们的服务器项目运行情况与BUG产生位置.一般情况下直接在日 ...