Caduceus会在您的计划任务/cron作业未运行时通知您。
项目描述
Caduceus
什么是Caduceus?
Caduceus是赫尔墨斯使用的那个带有交缠蛇的长棒,也是一个如果您的计划任务/cron作业失败运行会通知您的服务。
动机
您知道您如何设置所有这些cron作业运行,并添加了花哨的错误报告等,但最终意识到当服务器已经关闭一个月而没有人注意到时,这并没有帮助您?Caduceus不会让这种情况再次发生。
与其在失败时触发,不如在成功缺失时触发。服务必须主动检查(通过访问URL),如果没有,Caduceus会通过电子邮件通知您任务已失败。如果服务重新开始工作,Caduceus也会通知您。
安装
要安装Caduceus,您可以直接从PyPI获取
pip install caduceus
或者,您可以拉取Docker镜像
docker pull registry.gitlab.com/stavros/caduceus:latest
使用方法
要运行Caduceus,您需要对其进行配置。这是通过在您想运行Caduceus的目录中放置一个名为caduceus.toml
的文件来完成的。该目录是Caduceus SQLite数据库将被创建的位置。
如果您从repo或使用pip
安装了Caduceus,只需运行它
caduceus
它将从文件加载配置,创建其数据库,并在http://localhost:5000/
上开始运行。
通过Docker运行它
docker run -v (pwd):/caduceus registry.gitlab.com/stavros/caduceus:latest
配置
这里是一个示例配置文件(该文件也以 caduceus.toml.example
的形式存储在仓库中)
[config]
# An optional secret key to use for checking in.
secret_key = "somelongkey"
[alerting.email]
# Where you want the notification emails sent if services don't check in.
recipient_emails = [ "notifyme@example.com", "otherdev@example.com" ]
# SMTP server configuration, for sending email.
from_addr = "caduceus@example.com"
hostname = "example.com"
port = 25
username = "myuser"
password = "mypassword"
encryption = "none" # Can also be "ssl" or "starttls".
[alerting.telegram]
apikey = "#############:####################"
chat_id = "99999999"
[alerts]
# How alerts will be sent by default.
default_channels = [ "telegram" ]
# Your alerts go here.
# An alert needs a short name (here, `cron`), and an interval it needs to check in by.
[alerts.cron]
every = "1h"
# You can override the alerting channels per-alert.
channels = [ "email" ]
[alerts.backups]
every = "1d"
channels = [ "email", "telegram" ]
# For alerts that use email, you can also override the recipient emails.
recipient_emails = [ "thirdemail@example.com" ]
[alerts.alwaysfail]
every = "1s"
# You can tell Caduceus to only notify every minute, instead of every second,
# to prevent spam.
notify_every = "1m"
上述配置定义了三个服务:raidscrub
、backups
和 alwaysfail
。 raidscrub
需要每小时检查一次,backups
需要每天检查一次,而 alwaysfail
需要每秒检查一次。这也是为什么叫这个名字的原因。
然而,由于每秒都发邮件会变成垃圾邮件,所以将 notify_every
设置为每分钟一次,这样 Caduceus 便会每分钟发一次邮件,即使警报每秒都需要检查一次。当检测到故障时,您会立即收到一封邮件(有10秒的通知分辨率),然后每隔一分钟再收到一封。
在您的任务中总是留有一点余地,以考虑运行时间。如果一项任务在午夜开始运行并持续一个小时,它会在凌晨1点进行检查。如果第二天它运行了61分钟,它会在一天多后才进行检查,所以您会收到“失败”的邮件。为了避免这种情况,请为警报添加大约10%的缓冲。
检查
检查是通过从服务器检索一个URL来完成的。检查和重置警报计时器的URL为 /reset/<alert name>/
。例如,如果您没有指定 secret_key
(并且 Caduceus 在 example.com 上运行),要检查到 backups
,您只需这样做
curl http://example.com/reset/backups/
如果您 确实 指定了一个密钥,只需包含它即可
curl http://example.com/reset/backups/?key=<your secret_key>
如果您的警报设置为例如一个小时,并且您的任务没有进行检查,您将在最后检查一个小时后收到一封邮件,说“您的任务未进行检查”。如果它仍然没有进行检查,您将在一个小时后收到另一封邮件,然后是一个小时后,等等,直到它进行检查,此时您会收到一封邮件说该任务现在正常。
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。
源分发
构建分发
caduceus-0.0.11.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 435ba225b99b9c82db7ce8250d5a17143eddc06eccd281db1d45f062cd9945c3 |
|
MD5 | 422aa4492c5d93e3b3d594eca5c77306 |
|
BLAKE2b-256 | c8d14c151ab230d989704b38efb9c18b44d91c2d31aa5b3d2a65343feb99062c |