java - AWS Cloudwatch 中一段时间内没有日志时如何获取警报?
问题描述
我有一个在 AWS Elastic Container Service 中运行的 Java 应用程序。应用程序定期轮询队列。有时队列没有响应并且应用程序永远挂起。我已经用带有日志异常的 try-catch 块封装了这些方法。即使在那之后 Cloudwatch 中没有日志。没有异常或错误。有没有办法可以识别这种情况。? (Cloudwatch 中没有日志)。就像过滤错误日志模式一样。所以我可以重新启动服务。任何技巧或解决方案将不胜感激。
public void handleProcess() {
try {
while(true) {
Response response = QueueUitils.pollQueue(); // poll the queue
QueueUitils.processMessage(response);
TimeUnit.SECONDS.sleep(WAIT_TIME); // WAIT_TIME = 20
}
} catch (Exception e) {
LOGGER.error("Data Queue operation failed" + e.getMessage());
throw e;
}
}
解决方案
您可以使用 CloudWatch 警报执行此操作。我为此设置了一个测试 Lambda 函数,它每分钟运行一次并记录到 CloudWatch。
- 转到 CloudWatch 并单击左侧菜单中的警报
- 单击橙色的创建警报按钮
- 单击选择指标
- 然后选择Logs,然后选择Log Group Metrics并选择
IncomingLogEvents
相关日志组的指标(您的应用程序正在记录的日志组)。在我的情况下/aws/lambda/test-log-silence
- 单击选择指标
- 现在您可以指定要如何衡量指标。我选择了超过 5 分钟的平均日志条目,因此如果 5 分钟后没有日志条目,该值将为零。
- 向下滚动,您将检查设置为“低于或等于”零。这将在 5 分钟内没有日志条目(或您决定设置的任何值)时触发警报。
- 现在点击下一步,您可以指定一个 SNS 主题来推送通知。您可以设置 SNS 主题以通过电子邮件、SMS、AWS Lambda 等方式通知您。
推荐阅读
- amazon-web-services - DynamoDB 流在表删除/删除后保留
- apache-spark - 在 cmd 提示符下运行 mvn -e clean install -DskipTests 命令时,livy-server 构建在 Windows 上失败?
- unix - 收到错误“make:*** No rule to make target `ins-all'。停止。” 尝试借助“doinstall”文件编译 GNAT 时
- java - 获取 DJI UX 拍摄的图像
- python-2.7 - Python 比较运算符
- vba - Enterprise Architect 的工件注释中未显示新行
- java - 如何通过 micronaut Http Client 将 grails 应用程序连接到 Consul?
- javafx - 如何在 Java FX 11 中实现 JavaFX 2.2 示例
- django - ModuleNotFoundError:没有名为“social_django_urls”的模块
- node.js - 在不同的文件夹中创建帖子