AWS Java 开发工具包:Cloudwatch 日志:入门麻烦

Meo*_*wts 1 java amazon-web-services aws-sdk amazon-cloudwatchlogs

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

目前我正在使用 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}\\\"}]"
Run Code Online (Sandbox Code Playgroud)

为了可读性,我发送这样的 JSON:

[
  {
    "timestamp":${logtimestamp},
    "message":"${timestamp {\"metric1\":\"${value1}\",\"metric2\":\"${value2}\"}"
  }
]
Run Code Online (Sandbox Code Playgroud)

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

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

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

Ant*_*ace 5

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

进一步阅读