shell脚本监控docker容器和supervisor 运行情况

1.ASR服务

需求:

在ASR服务器中

docker 以下操作中 忽略容器名字叫 nls-cloud-mongodb 的容器

在ASR服务器中

docker ps 查看正在运行的容器

docker stats -a --no-stream  可以监控容器所占资源 确认是否有pid且不等于0

docker inspect -f “{{.RestartCount}}” 容器名称 可以确认容器重启次数 容器名称由docker ps --format "{{.Names}}" 获取

#!/bin/bash#创建存储日志目录
logpath="log"
if [ -d "$logpath" ] ; thenecho "日志目录 $logpath 已存在!"
elsemkdir $logpathchmod  777 $logpathecho " 目录创建成功"
fi# 设置日志文件名,格式为 YYYY-MM-DD.log
LOG_FILE="./$logpath/asr_docker_info_$(date +'%Y-%m-%d').log"# 获取当前时间并格式化为年月日时分秒
CURRENT_DATETIME=$(date +'%Y-%m-%d %H:%M:%S')# 获取当前正在运行的 Docker 容器信息,并将结果追加写入日志文件
echo "========== $CURRENT_DATETIME - Docker ps 输出 ==========" >> "$LOG_FILE"
docker ps >> "$LOG_FILE"# 获取指定容器(这里以 mysql 为例)的 stats 信息,并检查是否有 PID 且不等于 0,并将结果追加写入日志文件
echo "========== $CURRENT_DATETIME - Docker stats 输出 ==========" >> "$LOG_FILE"
docker stats  --no-stream | awk 'NR>1 && $14 != "0" {print}' >> "$LOG_FILE"#这个列表是以字符串的形式输出的,每个容器名称以换行符分隔#NAMES=$(docker ps -a --format "{{.Names}}")#echo -n "容器列表名称: $NAMES" >> "$LOG_FILE"#for con in "${NAMES[@]}";do#  echo " 我是容器:$con"#done#换行符分割为数组
docker_names=$(docker ps -a --format '{{.Names}}')
names_array=(${docker_names//$'\n'/ })
length=${#names_array[@]}
echo  "所有容器列表名称:【 ${names_array[@]} 】,所有容器个数为:$length" >> "$LOG_FILE"# 现在你可以遍历 names_array 数组了
for container_name in "${names_array[@]}"; doif [ "$container_name" != "nls-cloud-mongodb" ];then#if [ "$container_name" != "suspicious_lewin" ];thenecho "容器名称:$container_name"PIDS=$(docker stats $container_name --no-stream | awk 'NR==2{print $14}')if [ $PIDS -eq 0 ];thenecho  " 注意!===> $container_name 容器PIDS为0:$PIDS" >> "$LOG_FILE"elif [ $PIDS -ne 0 ];thenecho  " $container_name 容器PIDS:$PIDS" >> "$LOG_FILE"fi# 获取指定容器(这里以 mysql 为例)的重启次数,并将结果追加写入日志文件#echo "========== $CURRENT_DATETIME - Docker inspect 输出 ==========" >> "$LOG_FILE"echo -n " $container_name 容器重启次数:" >> "$LOG_FILE"docker inspect -f "{{.RestartCount}}" $container_name  >> "$LOG_FILE"fi
done# 输出成功消息
echo "日志已写入日志文件: $LOG_FILE"
2. 监控MySQL容器运行情况记录到日志文件中,每天一个文件(简单版)

需求:

在 mysql服务器中

docker ps 查看正在运行的容器

docker stats mysql --no-stream  可以监控容器所占资源 确认是否有pid且不等于0

docker inspect -f “{{.RestartCount}}” mysql可以确认容器重启次数

#!/bin/bash# 设置日志文件名,格式为 YYYY-MM-DD.log
LOG_FILE="./log/mysql_docker_info_$(date +'%Y-%m-%d').log"# 获取当前时间并格式化为年月日时分秒
CURRENT_DATETIME=$(date +'%Y-%m-%d %H:%M:%S')# 获取当前正在运行的 Docker 容器信息,并将结果追加写入日志文件
echo "========== $CURRENT_DATETIME - Docker ps 输出 ==========" >> "$LOG_FILE"
docker ps >> "$LOG_FILE"# 获取指定容器(这里以 mysql 为例)的 stats 信息,并检查是否有 PID 且不等于 0,并将结果追加写入日志文件
echo "========== $CURRENT_DATETIME - Docker stats 输出 ==========" >> "$LOG_FILE"
docker stats mysql --no-stream | awk 'NR>1 && $14 != "0" {print}' >> "$LOG_FILE"PIDS=$(docker stats mysql --no-stream | awk 'NR==2{print $14}')
if [ $PIDS -eq 0 ]
thenecho  "MySQL容器PIDS为0:$PIDS" >> "$LOG_FILE"
elif [ $PIDS -ne 0 ]
thenecho  "MySQL容器PIDS:$PIDS" >> "$LOG_FILE"
fi# 获取指定容器(这里以 mysql 为例)的重启次数,并将结果追加写入日志文件
echo "========== $CURRENT_DATETIME - Docker inspect 输出 ==========" >> "$LOG_FILE"
echo -n "MySQL容器重启次数:" >> "$LOG_FILE"
docker inspect -f "{{.RestartCount}}" mysql  >> "$LOG_FILE"# 输出成功消息
echo "日志已写入日志文件: $LOG_FILE"
3.客户端服务器

需求:

执行 supervisorctl 在STARTING那一列状态全部都是RUNNING

#!/bin/bash#创建存储日志目录
logpath="log"
if [ -d "$logpath" ] ; thenecho "日志目录 $logpath 已存在!"
elsemkdir $logpathchmod  777 $logpathecho " 目录创建成功"
fi# 设置日志文件名,格式为 YYYY-MM-DD.log
LOG_FILE="./$logpath/supervisorctl_client_info_$(date +'%Y-%m-%d').log"# 获取当前时间并格式化为年月日时分秒
CURRENT_DATETIME=$(date +'%Y-%m-%d %H:%M:%S')# 获取当前正在运行的信息,并将结果追加写入日志文件
echo "========== $CURRENT_DATETIME - supervisorctl 状态 输出 ==========" >> "$LOG_FILE"supervisorctl status all  >> "$LOG_FILE"# 执行 supervisorctl status 命令,并筛选出 STARTING 列不是 RUNNING 的行
CHECK_STATUS=$(supervisorctl status | awk '$2 != "RUNNING" {print $2}')
CHILD_NAME=$(supervisorctl status | awk '$2 != "RUNNING" {print $1}')
if [ "$CHECK_STATUS" != "RUNNING" ];thenecho "注意!存在没有运行的进程 ===> $CHILD_NAME " >> "$LOG_FILE"
elseecho "所有进程运行正常" >> "$LOG_FILE"
fi# 输出成功消息
echo "日志已写入日志文件: $LOG_FILE"

 

4.管理端服务器 

需求:

执行 supervisorctl 在STARTING那一列状态全部都是RUNNING (待确认)

docker ps 查看正在运行的容器

docker stats node_grpc --no-stream  可以监控容器所占资源 确认是否有pid且不等于0

docker inspect -f “{{.RestartCount}}” node_grpc可以确认容器重启次数

#!/bin/bash# 设置日志文件名,格式为 YYYY-MM-DD.log
LOG_FILE="./log/node_grpc_docker_info_$(date +'%Y-%m-%d').log"# 获取当前时间并格式化为年月日时分秒
CURRENT_DATETIME=$(date +'%Y-%m-%d %H:%M:%S')# 获取当前正在运行的信息,并将结果追加写入日志文件
echo "========== $CURRENT_DATETIME - supervisorctl 状态 输出 ==========" >> "$LOG_FILE"supervisorctl status all  >> "$LOG_FILE"# 执行 supervisorctl status 命令,并筛选出 STARTING 列不是 RUNNING 的行
CHECK_STATUS=$(supervisorctl status | awk '$2 != "RUNNING" {print $2}')
CHILD_NAME=$(supervisorctl status | awk '$2 != "RUNNING" {print $1}')
if [ "$CHECK_STATUS" != "RUNNING" ];thenecho "注意!存在没有运行的进程 ===> $CHILD_NAME " >> "$LOG_FILE"
elseecho "所有进程运行正常" >> "$LOG_FILE"
fi# 获取当前正在运行的 Docker 容器信息,并将结果追加写入日志文件
echo "========== $CURRENT_DATETIME - Docker ps 输出 ==========" >> "$LOG_FILE"
docker ps >> "$LOG_FILE"# 获取指定容器(这里以 mysql 为例)的 stats 信息,并检查是否有 PID 且不等于 0,并将结果追加写入日志文件
echo "========== $CURRENT_DATETIME - Docker stats 输出 ==========" >> "$LOG_FILE"
docker stats node_grpc --no-stream | awk 'NR>1 && $14 != "0" {print}' >> "$LOG_FILE"PIDS=$(docker stats node_grpc --no-stream | awk 'NR==2{print $14}')
if [ $PIDS -eq 0 ]
thenecho  "node_grpc容器PIDS为0:$PIDS" >> "$LOG_FILE"
elif [ $PIDS -ne 0 ]
thenecho  "node_grpc容器PIDS:$PIDS" >> "$LOG_FILE"
fi# 获取指定容器(这里以 mysql 为例)的重启次数,并将结果追加写入日志文件
echo "========== $CURRENT_DATETIME - Docker inspect 输出 ==========" >> "$LOG_FILE"
echo -n "node_grpc容器重启次数:" >> "$LOG_FILE"
docker inspect -f "{{.RestartCount}}" node_grpc  >> "$LOG_FILE"# 输出成功消息
echo "日志已写入日志文件: $LOG_FILE"

 脚本下载地址:https://download.csdn.net/download/lxw1844912514/89455818

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/30206.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为何Proteus用户争相拥抱SmartEDA?揭秘背后的强大吸引力!

在电路设计与仿真领域,Proteus一度以其稳定性能和丰富功能赢得了众多用户的青睐。然而,近年来,越来越多的Proteus用户开始转向SmartEDA,这一新兴电路仿真软件正迅速崭露头角,成为行业内的翘楚。那么,究竟是…

【Java】已解决java.util.ConcurrentModificationException异常

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决java.util.ConcurrentModificationException异常 一、分析问题背景 java.util.ConcurrentModificationException异常是Java集合框架中常见的一个运行时异常。这个异常通常会…

llama-factory微调工具使用入门

一、定义 环境配置案例: https://zhuanlan.zhihu.com/p/695287607chatglm3 案例多卡训练deepspeedllama factory 案例Qwen1.5报错 二、实现 环境配置 git clone https://github.com/hiyouga/LLaMA-Factory.git conda create -n llama_factory python3.10 conda …

适合企业的TTS文本转语音接口:微软TTS最新模型,发布9种更真实的AI语音

微软对Azure Al语音服务的Personal Voice功能进行了升级,引入了新的零样本学习(zero-shot)的文本到语音(TTS)模型。与初始模型相比,这些新模型提高了合成语音的自然度,并更好地模仿了提示语音中的语音特征。 微软提供了超过400种神经语音&am…

视频监控管理平台智能边缘分析一体机安防监控平台离岗检测算法

在工业自动化和智能制造的背景下,智能边缘分析一体机的应用日益广泛。这些设备通常在关键岗位上执行监控、分析和数据处理任务。然而,设备的稳定运行至关重要,一旦发生故障或离岗,可能会导致生产线停滞甚至安全事故。因此&#xf…

llama-factory微调chatglm3

一、定义 案例/多卡 二、实现 案例 1. 下载chatglm3-6b-32k模型 2. 配置数据集微调指令 CUDA_VISIBLE_DEVICES0,1 llamafactory-cli train \--stage sft \--do_train True \--model_name_or_path /home/chatglm3-6b-32k \--finetuning_type lora \--template chatglm3 \--d…

LeetCode 算法:回文链表 c++

原题链接🔗:回文链表 难度:简单⭐️ 题目 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 示例 1: 输入:head…

1:25万基础电子地图(重庆版)

我们为你分享过四川版、江西版和贵州版的1:25万基础电子地图,现在再为你分享重庆版的电子地图。 现在我们再为你分享重庆的1:25万基础电子地图,你可以在文末查看该数据的领取方法。 基础电子地图重庆版 下载后可以看到该数据由14个压缩包所…

Windows11电脑在使用GPU的时候有时候会卡顿

原来我一直以为是电脑的某些组件可能坏掉了 但是后来发现通过更新gpu的驱动可以让它变好: NVIDIA GeForce 驱动程序 - N 卡驱动 | NVIDIA 下载好以后,然后安装最新的驱动就可以了,感觉可能是因为win11和某些需要显卡的驱动不支持的原因吧 …

Flash基础知识

1、Flash发展历程 存储器通常分为两类型,即随机存取的RAM(内存)与只读的ROM(外存)。 RAM,也称随机存取存储器,数据可以被读取和修改。它主要用于存储正在运行的程序和临时数据,是计…

CarService的构成和初始化分析

以下分析,基于安卓13的AAOS。 代码构成 packages/services/Car CarService相关代码,主要是在这个目录下 frameworks/opt/car/services 主要是carservice启动相关。 其它目录:audio_policy_configuration.xml和car_audio_configuration.xm…

人生的乐趣,在于对真知的追求

子曰:朝闻道,夕死可矣! 孔子说:早上听到关于世界的真理,哪怕晚上就die了都可以。 这句话很有力量而经常被人引用,表达出我们如何看待沉重的肉身和精神世界。 我们的生活目的:道。 —— 要了解…

探究 IP 地址被网站封禁的原因

在我们登录各种网站、APP浏览时,可能会遇到 IP 地址被某些网站封禁的情况。很多人奇怪这是为什么呢? 首先,违反网站的使用规则是比较常见的原因之一。比如,频繁发送垃圾邮件、恶意评论、进行网络攻击或试图破解网站的安全机制等不…

数据链路层知识分享【计算机网络】【以太网帧 | MTU的影响 | ARP技术】

博客主页:花果山~程序猿-CSDN博客 文章分栏:Linux_花果山~程序猿的博客-CSDN博客 关注我一起学习,一起进步,一起探索编程的无限可能吧!让我们一起努力,一起成长! 目录 前文 一, 以…

【操作系统】操作系统课后作业-聊天程序

无名管道与有名管道的区别 无名管道: 它是半双工的,具有固定的读端和写端。 只能用于具有亲缘关系的进程之间的通信(也是父子进程或者兄弟进程之间)。 不是普通的文件,不属于其他任何文件系统,并且只存…

Electron+Vue开源软件:洛雪音乐助手V2.8畅享海量免费歌曲

洛雪音乐助手是一款功能全面且完全免费的开源音乐软件,支持在Windows、Android和iOS平台上使用。 平台支持: 桌面版:采用Electron Vue技术栈开发,支持Windows 7及以上版本、Mac OS和Linux,具有广泛的用户群体覆盖。 …

深信服终端安全管理系统EDR版本升级过程

EDR当前版本为3.7.12,具体参考版本详情参数。需要升级到6.0.2R1版本,该版本更改了产品名称,叫做“统一端点安全管理系统aES” 当前版本详情 版本基础信息 软件版本:3.7.12.3829 病毒库版本:20240618174426 漏洞规则库&…

定制化物联网设备:开启智能生活新篇章

随着科技的进步,物联网(IoT)已成为我们日常生活和工作中不可或缺的一部分。从智能家居到工业自动化,物联网设备以其独特的功能和特性,极大地提高了我们的生活质量和工作效率。然而,在众多的物联网设备中&am…

Window常用的脚本有哪些?快来看看有哪些是你正在用的!(欢迎评论补充~)

前言 在日常开发中,如果能熟练掌握以下这些使用频率很高的脚本,那工作起来真的是手拿把攥,事半功倍,接下来给大家介绍一些我们日常使用率很高的一些脚本! 常用脚本(Batchfile & VBScript) 1.一键启动.bat 一次…

每年1-1.2万人毕业,男女比例约3:1,测绘工程的就业率如何

测绘工程,一个让人闻风丧胆的理科专业,虎扑评分4.2: 干过测绘的,苦不苦只有大家心里知道,带大家来感受一下,兄弟们的精神状态都十分美妙: 测绘专业到底是什么情况? PS.测绘分为本科…