1

好的,所以我很难找到关于我正在尝试做的任何明确的资源。

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

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}\"}"
  }
]

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

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

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

4

1 回答 1

5

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

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

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

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

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

延伸阅读

于 2017-04-19T16:05:55.247 回答