【问题标题】:AWS CLI Ouput formats to SPLUNKAWS CLI 输出格式到 SPLUNK
【发布时间】:2020-04-15 20:39:34
【问题描述】:

我正在使用 AWS CLI 获取一些 Kinesis 指标 - 其中一部分我能够将输出格式指定为以下格式之一: https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html#cli-quick-configuration-format

输出格式

默认输出格式指定结果的格式。这 value 可以是以下列表中的任何值。如果你不 指定输出格式,默认使用json。

json – The output is formatted as a JSON

字符串。

yaml – 输出格式为 YAML

字符串。 (仅适用于 AWS CLI 版本 2。)

text – 输出格式为多行制表符分隔 字符串值。这对于将输出传递给文本很有用 处理器,例如 grep、sed 或 awk。

table – 使用字符 +|- 将输出格式化为表格 形成单元格边界。它通常以 比其他格式更容易阅读的“人性化”格式, 但在编程上没有那么有用。

我已经尝试过 TEXT,因为这对于 splunk 来说似乎是最合理的,但我认为行分隔的数据会扰乱 splunk 的摄取:

METRICDATARESULTS   iteratorAgeMilliseconds itagemillis PartialData
METRICDATARESULTS   readProvisionedThroughputExceeded   itagemillis PartialData
TIMESTAMPS  2020-04-15T20:21:00+00:00
TIMESTAMPS  2020-04-15T20:20:00+00:00
TIMESTAMPS  2020-04-15T20:19:00+00:00
TIMESTAMPS  2020-04-15T20:18:00+00:00
TIMESTAMPS  2020-04-15T20:17:00+00:00
TIMESTAMPS  2020-04-15T20:16:00+00:00
VALUES  0.0
VALUES  0.0
VALUES  0.0
VALUES  0.0
VALUES  0.0
VALUES  0.0
METRICDATARESULTS   writeProvisionedThroughputExceeded  itagemillis PartialData
TIMESTAMPS  2020-04-15T19:36:00+00:00
TIMESTAMPS  2020-04-15T19:35:00+00:00
TIMESTAMPS  2020-04-15T19:34:00+00:00
TIMESTAMPS  2020-04-15T19:33:00+00:00
VALUES  0.0
VALUES  0.0
VALUES  0.0
VALUES  0.0
VALUES  0.0
VALUES  0.0

关于如何最好地处理这些数据的摄取,AWS 或 splunk 方面有什么想法吗?

这是 CLI 命令aws cloudwatch get-metric-data --start-time 16:29 --end-time 23:59 --metric-data-queries file://metric-data-queries.json --output text 以及metric-data-queries.json的内容

[
  {
    "Id": "iteratorAgeMilliseconds",
    "MetricStat": {
      "Metric": {
        "Namespace": "AWS/Kinesis",
        "MetricName": "GetRecords.IteratorAgeMilliseconds",
        "Dimensions": [
          {
            "Name": "StreamName",
            "Value": "test.dev.com"
          }
        ]
      },
      "Period": 1,
       "Stat": "Sum",
        "Unit": "Count"
    },
    "Label": "itagemillis",
    "ReturnData": true
  },
  {
    "Id": "readProvisionedThroughputExceeded",
    "MetricStat": {
      "Metric": {
        "Namespace": "AWS/Kinesis",
        "MetricName": "ReadProvisionedThroughputExceeded",
        "Dimensions": [
          {
            "Name": "StreamName",
            "Value": "test.dev.com"
          }
        ]
      },
      "Period": 1,
       "Stat": "Sum",
        "Unit": "Count"
    },
    "Label": "itagemillis",
    "ReturnData": true
  },
    {
    "Id": "writeProvisionedThroughputExceeded",
    "MetricStat": {
      "Metric": {
        "Namespace": "AWS/Kinesis",
        "MetricName": "WriteProvisionedThroughputExceeded",
        "Dimensions": [
          {
            "Name": "StreamName",
            "Value": "test.dev.com"
          }
        ]
      },
      "Period": 1,
       "Stat": "Sum",
        "Unit": "Count"
    },
    "Label": "itagemillis",
    "ReturnData": true
  },
    {
    "Id": "putRecordSuccess",
    "MetricStat": {
      "Metric": {
        "Namespace": "AWS/Kinesis",
        "MetricName": "PutRecord.Success",
        "Dimensions": [
          {
            "Name": "StreamName",
            "Value": "test.dev.com"
          }
        ]
      },
      "Period": 1,
       "Stat": "Sum",
        "Unit": "Count"
    },
    "Label": "itagemillis",
    "ReturnData": true
  },
    {
    "Id": "putRecordsSuccess",
    "MetricStat": {
      "Metric": {
        "Namespace": "AWS/Kinesis",
        "MetricName": "PutRecords.Success",
        "Dimensions": [
          {
            "Name": "StreamName",
            "Value": "test.dev.com"
          }
        ]
      },
      "Period": 1,
       "Stat": "Sum",
        "Unit": "Count"
    },
    "Label": "itagemillis",
    "ReturnData": true
  },
    {
    "Id": "getRecordsSuccess",
    "MetricStat": {
      "Metric": {
        "Namespace": "AWS/Kinesis",
        "MetricName": "GetRecords.Success",
        "Dimensions": [
          {
            "Name": "StreamName",
            "Value": "test.dev.com"
          }
        ]
      },
      "Period": 1,
       "Stat": "Sum",
        "Unit": "Count"
    },
    "Label": "itagemillis",
    "ReturnData": true
  }
]

【问题讨论】:

  • Kinesis 是否将日志转发到 S3?你也可以分享cli命令吗?
  • 添加到主要问题

标签: amazon-web-services command-line-interface splunk amazon-kinesis


【解决方案1】:

您会发现 Splunk 可以很好地开箱即用地处理 JSON,因此我建议您使用它而不是其他选项。您可能需要为您摄取的源类型设置KV_MODE=JSON,但默认情况下应该这样做。

在此处查看更多信息,例如 https://docs.splunk.com/Documentation/Splunk/latest/Knowledge/Automatickey-valuefieldextractionsatsearch-time

您还可以考虑使用 Splunk 应用程序与 AWS 集成,例如用于 AWS 的 Splunk 插件https://splunkbase.splunk.com/app/1876/ 和用于 Amazon Kinesis Firehose 的 Splunk 插件https://splunkbase.splunk.com/app/3719/

【讨论】:

  • 我尝试了 json,但在将所有时间戳和值解析为单个事件时出现问题。它给整个 json 一个时间戳
  • answers.splunk.com/answers/289520/… 您也许可以 BREAK_ONLY_BEFORE={"Id"
猜你喜欢
  • 1970-01-01
  • 2021-10-08
  • 2015-09-24
  • 1970-01-01
  • 2021-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-16
相关资源
最近更新 更多