跳转到主要内容

Sentinela是一个高度可配置的操作系统看门狗,可以根据预先配置的规则采取行动。

项目描述

Sentinela

Build Status

Sentinela是一个高度可配置的操作系统看门狗,可以根据预先配置的规则采取行动。

最初的动机是创建一个守护进程,用于监控一组日志文件,如果没有任何活动,则关闭操作系统。这对于确保我的ec2实例在指定空闲时间后关闭非常有用。

鉴于Sentinela的模块化特性,您还可以将其扩展以监控网络流量、进程、磁盘使用情况等,并运行任何操作,例如发送电子邮件、发送SNMP警报等。

基本配置

Sentinela使用config/sentinela.cfg文件进行配置,该文件允许您启用将要运行的规则。

规则以Python代码定义,位于rules/目录中。在大多数情况下,规则使用两种不同类型的模块:* modules/monitors/:每分钟从资源读取一次并存储其状态。当需要时,返回True以触发操作。* modules/actions/:操作将运行命令、发送电子邮件或您能想象到的任何其他Python定义的代码。

运行Sentinela

要启动sentinela,您需要运行:text sudo python sentinela.py

您可以通过读取/var/log/sentinela.log文件来监控所有sentinela操作。一个常规的sentinela日志文件看起来像这样

[2013-03-29 11:41:20,440][INFO] Successfully started
[2013-03-29 11:41:20,441][DEBUG] Imported rules.apache_shutdown
[2013-03-29 12:51:50,480][DEBUG] Sentinela is alive
...
[2013-03-29 12:58:34,009][DEBUG] Going to execute command "shutdown now -h".

创建您自己的规则

简介

创建自己的规则非常简单,假设我们想创建一个规则,当 /var/log/apache2/access.log 日志文件在10分钟内处于非活动状态时,将打印出监视器的名称到sentinela的日志文件中。代码如下所示

1: from modules.monitors.new_log_entries import NewLogEntries
2: from modules.actions.debug_print import DebugPrint
3:
4: apache_log = NewLogEntries('/var/log/apache2/access.log', 10)
5: debug_print = DebugPrint()
6:
7:
8: def call_every_minute():
9:     if apache_log.call_every_minute():
10:        debug_print.do(apache_log)

源代码分析

常见的规则将包含一个监视器和动作,在本例中是 NewLogEntriesDebugPrint(第1和第2行)。

为了保持状态,它们需要在模块级别(第4和第5行)进行实例化。如果您在 call_every_minute 内部创建监视器或动作实例,每次都会创建一个新的实例,并且不会保持状态。

监视器和动作可以具有参数,在第4行中,我们可以看到 NewLogEntries 监视器如何接受两个参数

  • 要监视的日志文件

  • 它将等待多少分钟的非活动状态,然后返回 True

需要定义 call_every_minute 函数(第8行)以使规则有效。正如其名称所示,此函数将由sentinela每分钟调用一次。您可以在该上下文中定义任何要运行的操作,但我们决定调用监视器的 call_every_minute 方法,并根据其返回值调用动作,并将 apache_log 实例作为参数。

apache_log.call_every_minute() 只有在10分钟内传递给参数的文件没有任何新条目时才会返回 True

debug_print.do 将打印出作为参数传递的监视器的名称。

启用新规则

一旦您创建了您自己的规则,您必须按照以下步骤运行它们

  • 将您的 .py 文件复制到sentinela安装目录中的 rules/ 目录

  • 更新 config/sentinela.cfg 以包括您的规则名称(不带扩展名)

  • 重新启动sentinela守护进程

示例规则

示例规则可以在本存储库中的 sentinela/rules 目录中找到。

测试新规则

在部署之前测试您的新规则,您可以按照 这些步骤 进行。

报告错误

Sentinela的问题跟踪器 中报告您的问题和功能请求,我将非常乐意修复它们。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关 安装软件包 的更多信息。

源分布

sentinela-0.2.2.tar.gz (9.1 kB 查看散列)

上传时间

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面