草庐IT

8 狗监控的封装

hope_wisdom 2023-04-21 原文

概述

        为了保证嵌入式程序能够长时间稳定地运行,需要加入狗监控机制。狗监控的原理为:应用程序需要每隔一段时间来喂狗或保活,如果应用程序崩溃或者内核崩溃,导致长时间无法喂狗,则狗将超时,会自动重启系统。部分IPC芯片提供了硬件狗,对于没有硬件狗的,需要自行实现软件狗。

        Linux内核自带了一个软件狗的实现,用于监控系统的运行情况。内核软件狗模块通过/dev/watchdog这个设备与用户空间程序进行通信,用户空间程序一旦打开/dev/watchdog设备,就会导致在内核中启动一个定时器。此后,用户空间程序需要定时向这个设备写入数据(也叫做喂狗),每次写操作会导致定时器重置。如果用户空间程序在一定时间内没有进行写操作,定时器会超时,并进而导致系统重启。

        以君正T31芯片为例,在内核配置Watchdog后,即可使用标准的Linux接口控制软件狗。具体的配置方式可参考下图:

狗监控接口类

        狗监控接口类比较简单,只有三个接口,分别是:

        1、初始化接口,主要用于配置超时时间。应用层调用初始化接口后,会自动开启狗监控。

        2、启用接口,启用后,狗监控开始工作。

        3、禁用接口,禁用后,狗监控停止工作。

        狗监控接口类的头文件如下&#

有关8 狗监控的封装的更多相关文章

  1. Observability:从零开始创建 Java 微服务并监控它 (二) - 2

    这篇文章是继上一篇文章“Observability:从零开始创建Java微服务并监控它(一)”的续篇。在上一篇文章中,我们讲述了如何创建一个Javaweb应用,并使用Filebeat来收集应用所生成的日志。在今天的文章中,我来详述如何收集应用的指标,使用APM来监控应用并监督web服务的在线情况。源码可以在地址 https://github.com/liu-xiao-guo/java_observability 进行下载。摄入指标指标被视为可以随时更改的时间点值。当前请求的数量可以改变任何毫秒。你可能有1000个请求的峰值,然后一切都回到一个请求。这也意味着这些指标可能不准确,你还想提取最小/

  2. ruby-on-rails - 如何在 Ruby 中封装包含的模块方法? - 2

    我希望能够在包含该模块的类无法访问的模块中拥有方法。给定以下示例:classFooincludeBardefdo_stuffcommon_method_nameendendmoduleBardefdo_stuffcommon_method_nameendprivatedefcommon_method_name#blahblahendend我希望Foo.new.do_stuff爆炸,因为它试图访问模块试图对其隐藏的方法。不过,在上面的代码中,Foo.new.do_stuff可以正常工作:(有没有办法在Ruby中实现我想做的事情?更新-真正的代码classPlace"Place"}has_

  3. ruby-on-rails - 监控多个 Rails 应用程序 - 2

    是否可以在我的服务器上运行任何工具来监控多个Rails应用程序?我需要监控每个应用程序收到的请求数、每个应用程序使用了多少内存、使用了多少CPU以及其他类似的统计信息。我需要查看每个单独的Rails应用程序的统计信息。 最佳答案 我建议你试试NewRelicRPM.免费版:RPMLiteisthemostwidelyusedsolutionforbasicwebapplicationmonitoring.RPMLiteprovidesapplicationmonitoringforunlimitedJava,RubyorJRubya

  4. ruby-on-rails - 监控 RTMP 流,如果可用则记录 - 2

    我正在寻找一种方法来监视流上的事件,以便我可以确定是否有任何内容通过流。如果有,我将开始使用rtmpdump进行录制。我想象这是通过运行一个每60秒检查一次流的cron任务来实现的。如果它确定流正在通过,则调用rtmpdump开始记录它。如果没有,则什么都不做,并在60秒后再次检查。由于rtmpdump只是在没有流数据时出现错误,因此尝试使用它来监视流似乎不是一个好主意,但也许我错了。如果我在逐个案例的基础上手动执行此操作会很容易,但我正在尝试自动执行自动录制流的任务(如果它们可用)。有没有人遇到过这样做的方法?也许我可以在命令行(linux)中使用其他一些工具?如果有帮助,我正在使用

  5. ruby - 如何在 Node.js/RoR 中监控 20 个网站(Ping 或 HTTP)的正常运行时间 - 2

    每5分钟(例如)ping20个网站的列表以了解该网站是否响应HTTP202的最佳方法是什么?最简单的想法是将20个URLS保存在数据库中,然后运行数据库并对每个URL执行ping操作。但是,当一个人不回答时会发生什么?之后的人会怎样?此外,是否有更好但更简单的解决方案?恐怕该列表会增长到20000个网站,然后没有足够的时间在我需要ping的5分钟内全部ping通它们。基本上,我是在描述PingDom、UptimeRobot等的工作原理。我正在使用node.js和RubyonRails构建这个系统。我也倾向于使用MongoDB来保存所有ping和监控结果的历史记录。建议?非常感谢!

  6. ruby-on-rails - Rails 中的用户监控 - 2

    我们有一个带有广泛管理部分的应用程序。我们对功能有点满意(就像您一样),并且正在寻找一些快速简便的方法来监控“谁使用什么”。理想情况下,一个简单的gem将允许我们在每个用户的基础上跟踪Controller/操作,以构建使用的功能和未使用的功能的图片。任何你会推荐的..谢谢主场 最佳答案 我不知道有什么流行的gem或插件可以解决这个问题;过去,我在ApplicationController中将这种审计实现为before_filter:从内存中:classApplicationControllercurrent_user,:contro

  7. ruby - 如何在 Ruby Gem 中封装 Ruby C 扩展? - 2

    我找不到很多这方面的文档。如何打包gem,以便在安装gem时编译C扩展?特别是我想这样做:在Linux和MacOSX上,我想在安装gem时编译C扩展在Windows上,我想简单地安装一个预编译的.so对此的任何帮助,特别是示例源代码,都将非常有用:) 最佳答案 LuisLavena创造了rake-compiler只是为了这个目的。Homepage/GitHubGitHubWiki但是,您确定需要C扩展吗?关于C扩展的事情是,每个Ruby实现都有自己的C扩展API(而非基于C的API,如XRuby、JRuby、Ruby.NET、Iro

  8. ruby - Ruby 的 "Open Classes"会破坏封装吗? - 2

    在Ruby中,程序员可以更改预定义的类。所以一个非常糟糕的程序员可能会做这样的事情:classStringdef==(other)returntrueendend显然,几乎没有人会这么蠢,但是对预定义类进行更细微的更改可能会导致已经运行的代码出现问题的想法在我看来违反了封装原则。四个问题:首先,这是否实际上违反了面向对象的封装原则?其次,作为一名程序员,有没有一种方法可以保证我正在使用类的未修改版本的代码?第三,我应该在我的代码中“打开”类吗?原因?最后,在大规模生产编码环境中如何处理这类事情?换句话说,编程行业的人真的用其他人的代码来做这件事吗?将使用?或者即使他们不这样做,你如何确

  9. ruby - 使用 Monit 监控 ruby​​ 进程 - 2

    我有一堆长时间运行的Ruby脚本,我想确保每30秒左右运行一次。我通常通过简单地启动命令rubyscript-name.rb我如何配置monit来管理这些脚本?更新:我试着关注thismethodtocreateawrapperscript然后它会启动ruby​​进程,但它似乎没有创建.pid文件并且键入“./wrapper-scriptstop”什么也没做:/我应该在ruby​​中编写pid还是使用包装脚本来创建monit所需的pid? 最佳答案 MonitWiki有很多配置示例:http://mmonit.com/wiki/Mo

  10. ruby-on-rails - Rails 上持续的第三方 API 监控和测试 - 2

    我们想设置自动化作业(通过Jenkins)以在第三方API出现故障或他们部署了不兼容的API时发出警报。我说的是针对真实的HTTPAPI进行测试,而不是模拟,但是因为我们已经使用rspec编写了模拟,所以我不确定我们是否应该通过编写两个独立的睾丸来重复这项工作。有人有这方面的经验吗?(如果其他工具可以提供帮助,我不限于Ruby/Rspec) 最佳答案 你看过VCR了吗??使用它,您可以“记录您的测试套件的HTTP交互并在未来的测试运行期间重播它们以进行快速、确定性、准确的测试”。在测试来自外部API的预期响应时,我将它与RSpec一

随机推荐