AWS Java SDK:Cloudwatch Logs:入门困难

AWS Java SDK : Cloudwatch Logs : trouble getting started

好的,所以我在寻找关于我正在尝试做的事情的任何明确资源时遇到了一些麻烦。

目前我正在使用 AWS CLI 将自定义日志事件发送到 Cloudwatch,并且我将日志组订阅到 ElasticSearch,以便在 Kibana 中进行监控。我正在使用 bash 脚本,并向 Cloudwatch 发送 JSON 字符串。简单的用例,最终像这样进行调用:

aws logs put-log-events --log-group-name "${groupname}" --log-stream-name "${streamname}" --log-events "[{\"timestamp\":${logtimestamp},\"message\":\"${timestamp} {\\"metric1\\":\\"${value1}\\",\\"metric2\\":\\"${value2}\\"}]"

为了便于阅读,我发送 JSON 是这样的:

[
  {
    "timestamp":${logtimestamp},
    "message":"${timestamp {\"metric1\":\"${value1}\",\"metric2\":\"${value2}\"}"
  }
]

"message" 字段中的序列化 JSON 是由 ElasticSearch 订阅获取并用于在 Kibana 中创建图表的内容。这显然不是一个干净的解决方案,所以我想转移到 AWS Java SDK。

我很难找到有关如何使用 AWS Java SDK 将日志发送到 Cloudwatch 的权威资源。我也很困惑,在 Cloudwatch 文档中,所有内容都是关于 "alarms" - 我只想像使用 CLI 一样向 Cloudwatch 发送一些 JSON。

任何指向类似用例的一些资源的指针?

CloudWatch Metrics and Alarms 和 CloudWatch Logs 实际上是两组独立的服务,它们都被标记为 CloudWatch。您可能已经注意到,在 AWS CLI 中,CloudWatch Logs 的命令分组在 logs 服务下,而不是 cloudwatch 服务下。

这种区别在 AWS Java SDK 中也是如此——访问 CloudWatch Logs API 的 java 客户端是 AWSLogsClient 而不是 CloudWatch 客户端。

要创建新的日志组,请使用 createLogGroup

要为日志组创建新的日志流,请使用 createLogStream

要将新日志写入日志组,请使用 putLogEvents

进一步阅读