广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Grafana 监控系统是否重启
  • 309
分享到

Grafana 监控系统是否重启

重启监控系统Grafana 2023-01-31 08:01:55 309人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

linux 内核(以下简称内核)是一个不与特定进程相关的功能集合,内核的代码很难轻易的在调试器中执行和跟踪。开发者认为,内核如果发生了错误,就不应该继续运 行。因此内核发生错误时,它的行为通常被设定为系统崩溃,机器重启。基于动态存储器的电气

linux 内核(以下简称内核)是一个不与特定进程相关的功能集合,内核的代码很难轻易的在调试器中执行和跟踪。开发者认为,内核如果发生了错误,就不应该继续运 行。因此内核发生错误时,它的行为通常被设定为系统崩溃,机器重启。基于动态存储器的电气特性,机器重启后,上次错误发生时的现场会遭到破坏,这使得查找 内核的错误变得异常困难。

 

线上的k8s集群,有时候回出现重启的现象,但是什么原因导致重启,无法得知。

Kdump

Kdump 是一种基于 kexec 的内存转储工具,目前它已经被内核主线接收,成为了内核的一部分,它也由此获得了绝大多数 Linux 发行版的支持。与传统的内存转储机制不同不同,基于 Kdump 的系统工作的时候需要两个内核,一个称为系统内核,即系统正常工作时运行的内核;另外一个称为捕获内核,即正常内核崩溃时,用来进行内存转储的内核。 

关于如何设置 kump,请参考链接:

https://blog.csdn.net/bytxl/article/details/45025183

 

因此,线上已经部署了Kdump,用来捕捉崩溃

 

系统什么时间发生了重启?不知道。所以需要有一个脚本来监测一下,一旦发生重启,就可以使用 crash分析内存转储文件

怎么知道系统重启

ubuntu系统中,有一个 last reboot 命令,它会显示系统重启的历史列表

执行命令,效果如下:

root@localhost:~# last reboot
reboot   system boot  4.4.0-119-generi Mon Jan  7 13:50   still running
reboot   system boot  4.4.0-119-generi Sat Jan  5 11:48 - 13:49 (2+02:01)
reboot   system boot  4.4.0-62-generic Sat Jan  5 10:37 - 11:47  (01:10)

wtmp begins Sat Jan  5 10:37:40 2019


 在第一行,也就是最近一次的重启记录。

 

判断条件

怎么知道昨天,系统有没有重启呢?

很简单,先用 last reboot 获取最近一次的重启时间。再获取昨天的时间,将2个时间做对比,如果一致,就说明昨晚重启了,否则没有。

 

获取最新一次重启时间

# 最近一次重启时间
lately=`last reboot | head -1 | awk '{print $5,$6,$7}'`

 

昨日时间

# 昨天时间
yesterday=`date -d  "-1 days" | awk '{print $1,$2,$3}'`

 

prometheus数据

我们需要构造Prometheus数据,将数据发送给Pushgateway,最后由Grafana 展示图表以及做报警

这里我们使用shell脚本来构造数据,格式如下:

监控名{destinationName="描述信息",instance="实例,默认值为空"} 值

 

这些数据,我是放在一个临时文件 /tmp/check_system_restart 里面

echo "system_restart{destinationName=\"system_restart\",instance=\"$HOSTNAME\"} 1" > /tmp/check_system_restart

注意:使用由于echo外部使用了双引号,所以内部再次使用双引号时,需要使用反斜杠进行转义才行。

我们知道,在shell里面,单引号是无法引用变量的,必须使用双引号!

$HOSTNAME 是linux 系统的一个全局变量,表示主机名

 

发送数据

cat /tmp/check_system_restart|curl --data-binary @- Http://$localIP:9091/metrics/job/system_restart_`echo $localIP | awk -F '.' '{print $NF}'`

解释:

--data-binary 参数表示 HTTP POST请求中的数据为纯二进制数据

$localIP  表示 Pushgateway的ip地址

echo $localIP | awk -F '.' '{print $NF}'  表示获取ip地址的最后一位

 

注意:这里的job后面跟了一段字符串,是为了保证每一台服务器发送的url不一致。这样监控数据就不会被其他主机覆盖!

 

关于Pushgateway 的搭建,请参考链接:

https://www.cnblogs.com/xiao987334176/p/9933963.html

 

添加任务计划

常规情况下,我们一般使用 crontab -e 命令来添加任务计划

但是在shell脚本,却不能这么操作。

其实,直接修改  /etc/crontab  文件,也可以添加任务计划

 

下面一段代码,用来判断任务计划是否已经添加,不存在时,就添加!

if [ `cat /etc/crontab|grep 'check_reboot.sh'|wc -l` -eq 0 ];then
        cp -f /opt/check_reboot.sh /etc/ && chmod 755 /etc/check_reboot.sh 
        echo "0 * * * * root bash /etc/check_reboot.sh" >>/etc/crontabfi


完整代码

请将代码务必放到/opt目录下,因为代码路径写死了!!!

check_reboot.sh

#!/bin/bash

# 最近一次重启时间
lately=`last reboot | head -1 | awk '{print $5,$6,$7}'`

# 昨天时间
yesterday=`date -d  "-1 days" | awk '{print $1,$2,$3}'`

# 判断时间是否一致
if [ "$string" == "$yesterday" ];then
    # 写入日志
    #echo "$HOSTNAME restarted at $lately" >> /opt/restart.log
    echo "system_restart{destinationName=\"system_restart\",instance=\"$HOSTNAME\"} 1" > /tmp/check_system_restart
else
    echo "system_restart{destinationName=\"system_restart\",instance=\"$HOSTNAME\"} 0" > /tmp/check_system_restart
fi

# 获取geteway服务器ip
localIP=`ip addr | grep '192.168' | awk '{print $2}' | cut -d '/' -f 1`

# 发送数据给Pushgateway 
if [ `cat /tmp/check_system_restart|wc -l` -ge 1 ];then
        cat /tmp/check_system_restart|curl --data-binary @- http://$localIP:9091/metrics/job/system_restart_`echo $localIP | awk -F '.' '{print $NF}'`
else
        curl -X DELETE http://$localIP:9091/metrics/job/system_restart_`echo $localIP | awk -F '.' '{print $NF}'`
fi

# 添加任务计划
if [ `cat /etc/crontab|grep 'check_reboot.sh'|wc -l` -eq 0 ];then
        cp -f /opt/check_reboot.sh /etc/ && chmod 755 /etc/check_reboot.sh 
        echo "0 * * * * root bash /etc/check_reboot.sh" >>/etc/crontab
fi


执行脚本,就会自动产生 /tmp/check_system_restart 文件。

查看文件内容

root@localhost:~# cat /tmp/check_system_restart
system_restart{destinationName="system_restart",instance="xx-node01"} 0


自动将脚本复制到 /etc/check_reboot.sh,这样是为了路径统一,方便添加任务计划!

 

最后,会自动添加任务计划!

任务计划定义的是每个小时执行一次,为了不等那么长时间,可以先手动执行一次 /etc/check_reboot.sh 脚本

 

查看 Pushgateway 数据

就会看到一条job

1.png

添加一个图形,标题叫做 昨日系统重启

1.png

设置显示的值

1.png

设置报警策略

当最后一个值等于1时,触发报警

 1.png

效果如下:

 1.png


--结束END--

本文标题: Grafana 监控系统是否重启

本文链接: https://www.lsjlt.com/news/193570.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Grafana 监控系统是否重启
    Linux 内核(以下简称内核)是一个不与特定进程相关的功能集合,内核的代码很难轻易的在调试器中执行和跟踪。开发者认为,内核如果发生了错误,就不应该继续运 行。因此内核发生错误时,它的行为通常被设定为系统崩溃,机器重启。基于动态存储器的电气...
    99+
    2023-01-31
    重启 监控系统 Grafana
  • Linux系统如何启动rpc.rstatd监控
    这篇文章将为大家详细讲解有关Linux系统如何启动rpc.rstatd监控,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1 准备工作可以通过两种方法验证服务器上是否配置了rstatd守护程序:①使用rup...
    99+
    2023-06-28
  • 三种方法去监控android 系统中是否有按键操作
    有时候我们会遇到这样一个需求: 需要在用户无操作的几分钟之后去弹出一个页面或者去做一些操作。例如屏保,或者手机无操作息屏(当然这两种可能不是使用...
    99+
    2022-06-06
    方法 系统 Android
  • Linux系统如何查看mongodb是否启动
    这篇“Linux系统如何查看mongodb是否启动”文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要参考一下,对于“Linux系统如何查看mongodb是否启动”,小编整理了以下知识点,请大家跟着小编的步伐一步一...
    99+
    2023-06-28
  • Linux系统如何查看nginx是否启动
    本文将为大家详细介绍“Linux系统如何查看nginx是否启动”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“Linux系统如何查看nginx是否启动”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体...
    99+
    2023-06-28
  • 用shell脚本监控进程是否存在 不存在则启动的实例
    用shell脚本监控进程是否存在 不存在则启动的实例,先上代码干货: #!/bin/sh ps -fe|grep processString |grep -v grep if [ $? -ne ...
    99+
    2022-06-04
    不存在 是否存在 脚本
  • 怎么查看win7系统ahci模式是否开启
    这篇文章主要介绍“怎么查看win7系统ahci模式是否开启”,在日常操作中,相信很多人在怎么查看win7系统ahci模式是否开启问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么查看win7系统ahci模式是...
    99+
    2023-06-28
  • 如何使用shell脚本监控进程是否存在若不存在则启动
    小编给大家分享一下如何使用shell脚本监控进程是否存在若不存在则启动,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!用shell脚本监控进程是否存在 不存在则启动的实例,先上代码干货:#!/bin/shps -f...
    99+
    2023-06-09
  • Linux系统性能监控工具Glances是怎样的
    本篇文章为大家展示了Linux系统性能监控工具Glances是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、Glances介绍glances是一个基于python语言开发,可以为linux...
    99+
    2023-06-16
  • linux中重启和关闭系统命令是什么
    这篇文章主要介绍了linux中重启和关闭系统命令是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。重启命令:rebootshutdown -r now 立刻重启(root用...
    99+
    2023-06-09
  • Android系统启动流程的重要性是什么
    Android系统启动流程的重要性在于确保系统能够正常启动并运行。启动流程包括各个组件的初始化、资源加载、服务启动等步骤,这些步骤的...
    99+
    2023-10-11
    Android
  • 配置操作系统重启后Oracle数据库和监听自动启动的示例分析
    小编给大家分享一下配置操作系统重启后Oracle数据库和监听自动启动的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! --配置操作系统重启后,实例自动启...
    99+
    2022-10-18
  • u盘启动盘重装xp系统的步骤是什么
    今天就跟大家聊聊有关u盘启动盘重装xp系统的步骤是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。可能在大部分xp系统用户的心里还认为现在重装xp系统的方法仍然主要使用光盘,其实现...
    99+
    2023-06-28
  • 实时监控 Windows 系统的 Java Spring 解决方案是什么?
    随着企业信息化的快速发展,越来越多的企业开始选择使用 Java Spring 进行系统开发。Java Spring 是一个非常流行的开发框架,它可以帮助开发人员快速构建高质量的应用程序。但是,在生产环境中,Java Spring 应用程序可...
    99+
    2023-10-01
    spring 实时 windows
  • Linu系统实时监控日志内容的方法是什么
    这篇文章的内容主要围绕Linu系统实时监控日志内容的方法是什么进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!1. tail命令 实时监控日志如上所述...
    99+
    2023-06-28
  • 怎么查看是否在Windows11设备上启用了系统还原
    这篇文章主要讲解了“怎么查看是否在Windows11设备上启用了系统还原”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么查看是否在Windows11设备上...
    99+
    2023-04-21
    windows11
  • win7更新程序完后总是提示重新启动系统
    有时候想说win7是一个细心的系统,有时候想说win7是一个麻烦的系统,总是没完没了的提示,尤其是每次更新程序完后总是提示重新启动系统,相当厌烦,win7何时才能休停一下这提示呢 1、打开开始菜单,选择“运行...
    99+
    2023-06-05
    win7 提示 重新启动 程序 系统 更新
  • 各种操作系统下启动、停止和重启MySQL的命令是怎样的
    这期内容当中小编将会给大家带来有关各种操作系统下启动、停止和重启MySQL的命令是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。  linux如何启动/停止/重启M...
    99+
    2022-10-19
  • 重工业能源管控系统开发解决方案,在线监测平台搭建
    重工业能源管控系统开发解决方案,在线监测平台搭建源中瑞能源管控系统解决方案是企业节能减排的有力工具,这个工具是为了适应新型企业节能机构模式而设计的。  源中瑞能耗在线监测系统开发 企业需要将原来分散的能源生产及管理人员进...
    99+
    2023-06-05
  • 适用于Linux的高级实时系统监控工具是怎样的
    这篇文章将为大家详细讲解有关适用于Linux的高级实时系统监控工具是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。之前,我们已经写了许多可用于监控Linux系统性能的Linux系统监控...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作