使用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 安装.卸载前检测进程或服务作者:一去丶二 ...
随机推荐
- Java Collection秋招复习
抽象类和接口的区别 我们先来看一下抽象类 * @auther draymonder */ public abstract class AbstractClassTest { private int T ...
- MyBatis 源码分析
MyBatis 运行过程 传统的 JDBC 编程查询数据库的代码和过程总结. 加载驱动. 创建连接,Connection 对象. 根据 Connection 创建 Statement 或者 Prepa ...
- mysql group_concat的长度问题
mysql group_concat的长度问题 show variables like 'group_concat_max_len';+----------------------+-------+| ...
- Demo小细节
(1) 程序如下: public class Example { static int i = 1, j = 2; static { display(i); i = i + j; } static v ...
- sql-实现select取行号、分组后在分组内排序、每个分组中的前n条数据
表结构设计: 实现select取行号 sql局部变量的2种方式 set @name='cm3333f'; select @id:=1; 区别:set 可以用=号赋值,而select 不行,必须使用:= ...
- appium adb端口被占用问题
1.netstat -ano | findstr "5037" 2.查看进程 看看哪个占用端口了 结束进程 adb devices 提示 ...ack 问题解决 新建一个环境 ...
- 精通并发与 Netty (二)常用的 rpc 框架
Google Protobuf 使用方式分析 对于 RPC 协议来说,最重要的就是对象的发送与接收,这就要用到序列化与反序列化,也称为编码和解码,序列化与反序列化和网络传输一般都在对应的 RPC 框架 ...
- java日期在今天的基础上加一个月。并计算时间相差天数
Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.MONTH, 1); ...
- InnoDB存储引擎--学习笔记-redo log
目录 1. 引言 2. 重做日志文件和相关概念介绍 + 2.1. 重做日志文件和bin log + 2.2. LSN(log squence number) 3. 重做日志文件基本工作原理 4. 重做 ...
- RedisDesktopManager远程连接Linux系统的Redis服务
linux下安装redis :https://www.runoob.com/redis/redis-install.html 进入 src 运行redis : ./redis-server 打开另 ...