linux环境下监控docker进程运行情况,使用钉钉群机器人报警异常服务

这篇具有很好参考价值的文章主要介绍了linux环境下监控docker进程运行情况,使用钉钉群机器人报警异常服务。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景:在linux环境下,很多服务我们都使用docker来跑,很是方便,容器服务独立,配置独立,数据独立等等,但是有个问题,就是如果某个服务异常了,暂停了,停止了,一直重启中,我们要怎么及时的知道是哪个服务,并进行处理,保证业务正常运行。

本文主要介绍使用docker服务自带的一些命令来实现一个基本的监控,并通过钉钉群机器人发送消息。

命令1

docker ps //列出所有正在运行中的服务,注意,暂停,停止等状态的服务是不会被列出的

linux环境下监控docker进程运行情况,使用钉钉群机器人报警异常服务

 命令2

docker ps -a //会列出当前服务器中所有的容器,无论状态是什么

linux环境下监控docker进程运行情况,使用钉钉群机器人报警异常服务

 命令3

docker ps -f //使用过滤器来过滤输出,此处我们以STATUS字段为例,它可能有的值如下:
-created(已创建)
-restarting(重启中)
-running(运行中)
-removing(迁移中)
-paused(暂停)
-exited(停止)
-dead(死亡)

linux环境下监控docker进程运行情况,使用钉钉群机器人报警异常服务

 步骤:

1、列出所有运行中的服务

2、停止redis1服务

3、暂停redis2服务

4、查看停止状态的服务

5、查看暂停状态的服务

但是这样显示出来的信息有点多,不够简洁,如果我只想显示我启动服务的时候的自定义名称呢,可以不

命令4

docker ps -f status=exited --format {{.Names}} //先过滤一遍状态,然后再格式化Names字段,还有其他字段也支持格式化的:
 .ID 容器的ID
 .Image 镜像的ID
 .Command 容器启动的命令
 .CreatedAt 创建容器的时间点
 .RunngingFor 从容器创建到现在过去的时间
 .Ports 暴露的端口
 .Status 容器的状态
 .Size 容器硬盘的大小
 .Names 容器的名称
 .Label 指定label的值
 .Mounts 挂载到这个容器的数据卷名称

linux环境下监控docker进程运行情况,使用钉钉群机器人报警异常服务

 看,只显示了名称了是不是,这里说一下哈,字段名的大小写问题

linux环境下监控docker进程运行情况,使用钉钉群机器人报警异常服务

结论1:-f 后面的参数,大小写都可以
结论2:--format大括号里面的参数,必须按规定来

命令5

docker info //查看整个docker服务运行的情况,配置等信息,篇幅问题,只截图了一大部分哈

linux环境下监控docker进程运行情况,使用钉钉群机器人报警异常服务

 重点说一下划线的地方,这里把容器总数量,运行中的,暂停中的,停止中的都统计出来了

linux环境下监控docker进程运行情况,使用钉钉群机器人报警异常服务

 我们对比一下,运行中的3个,暂停中的1个,停止的1个,完美匹配。

命令6

docker info --format '{{.Containers}}' //从info内容中提取Containers的值

linux环境下监控docker进程运行情况,使用钉钉群机器人报警异常服务

1、统计全部

2、统计运行中的

3、停止redis1

4、暂停redi2

5、统计运行中的

6、统计暂停的

7、统计停止的

通过以上的一些命令的组合应用,就可以做一个基本的docker服务运行监控,我贴出我的思路,欢迎指正哈!

  #!/bin/bash

  #名称:docker容器服务运行的进程监控
  #原理:如果所有容器服务数量 > 正在运行中的服务数量,则表示有服务异常,可能是暂停了,停止了,退出了,重启中,发消息到钉钉群
  #运行:使用crond任务自定义时间自动运行
  #日期:2023-08-15

#所有容器服务数量
docker_ps_a=$(docker info --format '{{.Containers}}')
#echo $docker_ps_a

#运行中的容器服务数量
docker_runing=$(docker info --format '{{.ContainersRunning}}')
#echo $docker_runing

if [ $docker_ps_a -gt $docker_runing ]; then
  #已停止的
  docker_stop=$(docker ps -f status=exited --format {{.Names}})

  #已暂停的
  docker_paused=$(docker ps -f status=paused --format {{.Names}})

  #重启中的
  docker_restarting=$(docker ps -f status=restarting --format {{.Names}})

  #通知时间
  notice_time=`date +"%Y-%m-%d %H:%M:%S"`

  #把所有异常的服务合并起来
  docker_abnormal=$notice_time"\r\n====已停止服务====\r\n"$docker_stop"\r\n====已暂停服务====\r\n"$docker_paused"\r\n====重启中服务====\r\n"$docker_restarting
  
  #发送钉钉群机器人推送消息
  curl 'https://oapi.dingtalk.com/robot/send?access_token=ACCESS_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"at": {"isAtAll":true},"msgtype": "text","text": {"content":"【docmonitor通知】\r\n\r\n'"${docker_abnormal}"'"}}'
else
  echo 'docker容器所有服务,一切正常'
fi
#!/bin/bash

#名称:docker容器服务运行的进程监控
#原理:如果检测到有自动重复重启中的服务,则表示有服务异常,发消息到钉钉群
#运行:使用crond任务自定义时间自动运行
#日期:2023-08-15

#检测重启中的服务
docker_restarting=$(docker ps -f status=restarting --format {{.Names}})

#检测到有重启中的服务
if [ ! -z "$docker_restarting" ]; then

#通知时间
notice_time=`date +"%Y-%m-%d %H:%M:%S"`

#把时间和异常的服务合并起来
docker_abnormal=$notice_time"\r\n====重启中服务====\r\n"$docker_restarting
#echo $docker_abnormal

#发送推送消息
token="xxx"
curl 'https://oapi.dingtalk.com/robot/send?access_token='"${token}"'' \
-H 'Content-Type: application/json' \
-d '{"at": {"isAtAll":true},"msgtype": "text","text": {"content":"####docmonitor通知####\r\n\r\n'"${docker_abnormal}"'"}}' else echo 'docker容器服务,没有正在重启中的服务' fi

通知效果如下:

linux环境下监控docker进程运行情况,使用钉钉群机器人报警异常服务

 钉钉群机器人的配置,我这里就不做说明了,直接按钉钉文档走就可以了,自定义机器人接入:https://open.dingtalk.com/document/robots/custom-robot-access文章来源地址https://www.toymoban.com/news/detail-648678.html

到了这里,关于linux环境下监控docker进程运行情况,使用钉钉群机器人报警异常服务的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • .NET 6 “目标进程已退出,但未引发 CoreCLR 启动事件。请确保将目标进程配置为使用 .NET Core。如果目标进程未运行 .NET Core,则发生这种情况并不意外。”

    Mac M1 在 .NET 6 上调试.NET 5 的Web应用程序出现程序闪退问题 首先看了下本地 .NET 的环境 本地只有 .NET 6 的SDK 和 runtimes 环境,.NET 6 对 .NET 5 是兼容的, 需要在 .csproj 文件中做如下配置: 如果不这样配置的话会报如下错误: 另外,如果是Windows的话,直接再装一套 .NET 5 也可以解

    2024年02月16日
    浏览(68)
  • linux系统zabbix监控配置钉钉告警

    配置钉钉告警 环境准备 配置钉钉脚本文件 钉钉日志目录 编写脚本 浏览器配置钉钉告警 中文消息告警模版 为用户添加报警媒介 添加监控项=》添加触发器=》 添加玩监控项和触发器后添加动作 至此,监控钉钉报警就配置完成了

    2024年02月22日
    浏览(43)
  • 《Linux操作系统编程》 第六章 Linux中的进程监控: fork函数的使用,以及父子进程间的关系,掌握exec系列函数

    🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐 🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬

    2024年02月11日
    浏览(37)
  • Linux使用:环境变量指南和CPU和GPU利用情况查看

    按变量的生存周期划分: 永久的 :需要修改配置文件,变量永久生效。 临时的 :使用export命令声明即可,变量在关闭shell时失效。 在配置永久环境变量时,又可以按照作用范围分为: 用户环境变量 系统环境变量 系统环境变量对所有系统用户都有效,用户环境变量仅仅对当

    2023年04月08日
    浏览(43)
  • 使用Docker配置深度学习的运行环境

    在linux系统中进行操作,最重要的就是意识到用户权限,这在通过不同方式安装不同应用中非常重要,不然你就会导致一些用户无法使用。 除了用户权限的问题还有就是程序的安装位置,不同的安装位置的程序的启动方式是不同的,安装在 /usr/local/bin 目录下的程序,如果启动

    2024年02月04日
    浏览(45)
  • Linux 查看进程和线程CPU和内存占用情况

    linux 下查看进程内的线程有哪些 首先通过进程名称,假设为SensorDev 找到pid号。 ps -p {pid} -T 可以得到该进程里面运行的各线程的id(表现出来是spid)、对应的线程名称(不超过16字符)、运行时间等; cat /proc/{pid}/status |grep Threads 只能显示线程的个数。 top -p {pid} ,然后按H t

    2024年02月08日
    浏览(61)
  • 二、使用运行自己的docker python容器环境

    第一篇参考: https://blog.csdn.net/weixin_42357472/article/details/131953866 运行容器同时执行命令或脚本 1)这是打开一个对外的jupyter notebook容器环境 在外部打开localhost:8090 jupter需要登录密码 2)运行脚本 测试,可以看到打印日志正常 其他例子 -w 可以制定容器启动默认工作目录

    2024年02月15日
    浏览(47)
  • prometheus使用node_exporter监控Linux主机CPU、内存、磁盘、服务运行状况

    目录 1.node_exporter简介 2.部署node_exporter 2.1.安装node_exporter 2.2.编写system启动脚本 3.prometheus监控Linux主机 3.1.修改配置文件增加主机节点 3.2.主机添加成功 4.监控Linux主机CPU、内存、磁盘使用率 4.1.监控CPU使用率 4.1.1.获取空闲CPU监控数据 4.1.2.获取5分钟内的监控数据 4.1.3.获取5分钟

    2024年04月16日
    浏览(45)
  • [Linux]进程间通信(上篇)——匿名管道(管道原理,实现示例,端口情况探究!!)

            hello,大家好,本篇文章介绍Linux进程间的通信,包含内容有进程间通信的介绍、理解,管道的介绍使用:匿名管道,匿名管道的实现示例,匿名管道端口4种情况的探究。    目录  1️⃣进程间通信  🍙进程间通信目的 🍙进程间通信分类 🍙进程间通信的技术背景

    2024年02月14日
    浏览(50)
  • 使用HBuilder运行钉钉小程序

    1,创建package.json文件夹,添加以下代码 2,点击运行按钮,就可以打开了 , 查看控制台,在小程序开发者工具中进行要导入的路径  

    2024年02月16日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包