好吧,所以我在找到我想要做的事情上找不到任何明确的资源时遇到了一些麻烦。
目前,我正在使用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}\"}"
}
]
"消息中的序列化JSON"字段是ElasticSearch订阅获取的字段,用于在Kibana中创建图形。这显然不是一个干净的解决方案,因此我想转向AWS Java SDK。
我很难找到关于如何使用AWS Java SDK将日志发送到Cloudwatch的权威资源。我也很困惑,在Cloudwatch的文档中,所有关于"闹钟" - 我只想将一些JSON发送到Cloudwatch,就像我在使用CLI一样。
针对类似用例的某些资源的指针?
答案 0 :(得分:3)
CloudWatch指标和警报以及CloudWatch日志实际上是两组独立的服务,它们都被标记为CloudWatch。您可能已经注意到,在AWS CLI中,CloudWatch Logs的命令分组在logs
服务下,而不是cloudwatch
服务。
这种区别在AWS Java SDK中也是如此 - 用于访问CloudWatch Logs API的Java客户端是AWSLogsClient而不是CloudWatch客户端。
要创建新的日志组,请使用createLogGroup。
要为日志组创建新的日志流,请使用createLogStream。
要将新日志写入日志组,请使用putLogEvents。