Shell脚本之linux服务器服务进程监控
一、需求说明
作为一名主机运维工程师,日常工作中我们每天都需要巡检服务器的运行情况,包括服务器的网络通断性、磁盘利用率、服务进程等内容。为了减少工作量我们可以通过编写shell脚本,实现服务器的批量巡检。写好脚本之后我们可以设置定时任务,将巡检结果邮件发送给自己就OK啦。为了检查服务进程是否存在,我们常用命令ps -ef |grep 关键字 过滤查看我们的进程是否存在。此脚本就是基于此命令的基础上实现的。
二、脚本设计及内容
1、设计思路说明
- 通过ssh免密,使用ssh直接远程执行命令;Linux之SSH免密登录配置
- 使用pgrep -f 关键字命令查看进程是否存在;
- 使用$?判断进程号是否为空;
- 将结果存储到检查日志记录文件;
- 如果有进程不存在则邮件告知不存在信息,每天早上7点、晚上9点明确通知检查结果;Linux之mailx软件安装及使用
- 清理超过30天的巡检记录。
2、待巡检进程列表说明
将待巡检进程信息写入processes.txt文件中,文件中包括4列信息,主机名,ssh端口号,进程服务关键字,进程服务描述说明。processes.txt各列的分隔符是空格,所以关键字中不能包含空格哦。
3、脚本内容
#!/bin/bash
#script name: process_check.sh
#author: wuhs
#description: 此脚本用于系统进程服务巡检
#参数定义
#巡检日志存储路径
resultlog='/root/scripts/xunjian/process/recordlog'
#待巡检进程列表
processes="/root/scripts/xunjian/process/processes.txt"
#进程巡检方法
function process_monitor(){
datedir=`date +%F-%H`
mkdir -p $resultlog/$datedir
#while循环按行读取进程列表
while read line
do
#获取主机名、ssh端口号、service服务关键字
host=`echo $line | awk '{print $1}'`
port=`echo $line | awk '{print $2}'`
service=`echo $line | awk '{print $3}'`
#获取service服务的描述说明
des=`echo $line | awk '{print $4}'`
#查看进程是否存在
ssh $host -p $port -n pgrep -f $service &>/dev/null
#检查结果写入日志文件
if [ $? -eq 0 ];then
echo "$host $des 正常" >> $resultlog/$datedir/success.log
else
echo -e "$host $des 未启动" >> $resultlog/$datedir/faild.log
fi
done <"$processes"
#邮件通知检查结果
if [ -s $resultlog/$datedir/faild.log ]; then
mailx -s "进程巡检有进程不存在,请检查" 1234567qq@qq.com < $resultlog/$datedir/faild.log
else
hour=`date +%H`
if [[ $hour == 07 || $hour == 21 ]]; then
mailx -s "进程巡检正常!" wuhsh@bigdatayh.com,524627027@qq.com < $resultlog/$datedir/success.log
fi
fi
}
#清理超过30天的进程巡检日志记录
function log_clear(){
cd $resultlog
find -type d -mtime +30 |xargs rm -rf
}
function main(){
#系统服务检查
process_monitor
log_clear
}
main
三、使用示例
1、手动执行
#mkdir -p /root/scripts/xunjian/process
#创建工作目录,将脚本内容写入process_check.sh后保存,记得修改接受告警邮件的邮箱。
#chmod u+x process_check.sh
#脚本添加执行权限,将待巡检进程列表按照格式存入processes.txt文件中
#sh process_check.sh
#执行脚本,可以通过查看巡检日志文件获取巡检结果,也可以通过配置正确的邮箱,接受巡检结果。
2、配置定时任务
我们可以配置定时任务,设置每小时或者每10分钟执行一次进程巡检,如下示例为每天的早上6点到晚上10点,每个小时执行一次。
[root@s146 process]# crontab -l
####进程巡检定时任务####
1 6-22 * * * /root/scripts/xunjian/process/process_check.sh &>> /tmp/s146-monitor.log
配置完成定位任务后,我们就喝着茶,坐等巡检结果就好了。收到告警后及时处理。
相关文章
- Ubuntu 12.10 安装 jdk-7u10-linux-x64.tar.gz(转载)
- 【Linux】linux之如何清理磁盘空间
- Linux NetHogs监控工具介绍
- linux文件完整性监控(FIM)
- 【学习总结】快速上手Linux玩转典型应用-第6章-linux常用命令讲解
- 【问题解决方案】Linux中进入目录下文件夹
- Linux基础之linux服务器服务器间拷贝文件
- linux 小喇叭 没了
- 【学习总结】快速上手Linux玩转典型应用-第2章-linux简介
- Linux终端中文显示乱码
- python监控linux某个端口的消息报文往来
- Linux shell if判断=左右必须要有空格
- 【Linux 内核】调度器 ② ( sched_class 调度类结构体源码 | 源码路径 linux-5.6.18kernelschedsched.h )
- Linux服务器上监控网络带宽的18个常用命令
- linux内核数据包转发流程(二):中断
- L49.linux命令每日一练 -- 第八章 Linux磁盘与文件系统管理命令 -- fdisk和partprobe
- L43.linux命令每日一练 -- 第七章 Linux用户管理及用户信息查询命令 -- chage和chpasswd
- L31.linux命令每日一练 -- 第五章 Linux信息显示与搜索文件命令 -- uname和hostname
- Linux系统shell脚本之根分区监控
- Linux系统日常监控工具的使用
- Linux学习资料
- 嵌入式linux开发,web服务器,mongoose
- 嵌入式linux开发,web服务相关依赖库libhv移植,libhv库移植
- 74:应急响应-win&linux分析后门&勒索病毒&攻击 ==》暴力破解攻击成功的在4624的eventID里!PChunter可查看非系统的可疑启动项/服务/定时任务,还是很直观的!Linux下gscan也不错,EDR可参考。
- Linux|奇怪的知识---CPU温度监控
- Linux centos7 一键离线安装OpenStack单实例脚本(queens版本,修订版本)
- Shell脚本之linux服务器磁盘利用率监控
- RK3399平台开发系列讲解(网络篇)7.10、Linux网络包接收过程的监控
- 【最全最详细】linux 中 查看防火墙开放端口号 命令
- Linux DNS原理及主从DNS配置
- linux内核radeon gpu源码解析8—— radeon_driver_load_kms函数详解3
- 使用wget批量下载geo数据集的全部文件 linux下载geo数据 geo处理的数据不是下载原始数据 Linux如何下载ftp文件 geo ftp geo ftp下载 geo下载
- Linux Socket之send()异步通信时:Broken pipe报错
- 16个Linux服务器监控命令