stackdriver - 堆栈驱动程序中的警报在 24 小时后在谷歌云中未收到消息
问题描述
我想监视 kubernetes 中的 pod 是否使用 stackdriver 每天两次作为 cronjob 正确运行。
为了做到这一点,我想在 pod 中发送开始消息和结束消息日志,并且我想在堆栈驱动程序中创建一个警报指标,如果 24 小时后没有收到这些消息,请发送电子邮件。
是否可以在堆栈驱动程序中执行此警报?
解决方案
有几种方法可以做到这一点。
为了生成事件,我认为最简单的方法是检查基于 CRON 本身的基于日志的指标。如果您正在运行kind:CronJob
,您可以使用 Metrics Explorer 查找 Resource type:GKE Container
Metric: Log entries
,然后按container_name
(这将是您的 CronJob spec.containers.name
)过滤
您还可以创建一个基于日志的指标,例如
logName="projects/[PROJECT-ID]/logs/[CONTAINER-NAME]"
...并且可能在该部分添加一个字符串以spec.containers.args
使过滤更容易。
您还可以发布到发布/订阅主题并在发布消息操作时发出警报。
一旦你决定了这个指标,你只需要在Any time series is absent
[1] 13 小时内发出警报。添加一个通知通道type=email
[2],只要 cron 每天至少运行一次,您就会收到警报。
[1] https://cloud.google.com/monitoring/alerts/concepts-indepth#condition-types
[2] https://cloud.google.com/monitoring/support/notification-options#email
推荐阅读
- php - 由于编码错误,从 PHPExcel 下载文件时出错
- android - Android Jetpack Navigation Pass Lambda/Delegate 在 Fragments 之间
- java - Docker:客户端未连接到 Eureka Server
- javascript - 在 `load_node` 之后用更新的 json 数据刷新 jstree
- php - file_exists():open_basedir 限制生效。文件(/tmp/log.htm)不在允许的路径中:
- sql - 错误->有人可以(向新手)解释如何在选择语句中加入子查询之外吗?
- asp.net-core - 在 .NET Core 项目中使用 PackageReference 引用时,nuget 包的默认版本是什么?
- node.js - NodeJS WebSockets (ws) 模块是否实现背压?
- angular - 如何使用 Angular 向 API Gateway 发出 Get 请求?
- osquery - osquery - 使用 osqueryi 和禁用日志记录时的警告