Amazon Kinesis Data Firehose に Coralogix統合機能が追加されたのでためしてみた

2022.04.21

いわさです。

Kinesis Data Firehoseでは様々なサードパーティ製品との統合機能が提供されています。
先日Coralogixとの統合機能が追加されたので、本日はその試した内容をご紹介出来ればと思います。

Coralogix と AWS

Coralogixについて軽く触れると、ログやメトリック、ストリーミングデータの分析プラットフォームです。
AWSに限らず様々なサービスのログやメトリクスを集めて一元管理と分析が出来るようになります。

Streama©という独自データパイプラインを使って、データのリアルタイム分析を可能にしています。
従来まではAWSとの間でデータを連携するためには提供されているCloudFormationテンプレートを使ってLambda関数などをデプロイし、サービス間連携を行う必要がありました。

今回の統合機能によって、連携インターフェースをKinesis Data Firehoseが吸収してくれるので、送信先の情報をいくつか入力するだけで、すぐに AWS からデータのログやメトリクスの連携が出来るようになります。

Kinesis Data Firehoseの設定

送信先にCoralogixが選択出来るようになっています。

HTTP endpoint URL は Coralogixアカウントのリージョンに合わせて選択する必要があります。
Private KeyはCoralogixログイン後の設定画面から取得出来ます。

AWS - Coralogix間の基本設定はこれだけ良いです。

送信

どういうデータ形式でも送信出来るわけではないです。送信する際のデータフォーマットが決まっています。
データインターフェース仕様は以下のようになっています。

{
  "privateKey": "",
  "applicationName": "*insert desired application name*",
  "subsystemName": "*insert desired subsystem name*",
  "computerName": "*insert computer name*",
  "logEntries": [
    {
      "timestamp": 1457827957703.342,
      "severity": 4,
      "text": "Encountered an error while registering the user john123",
      "category": "DAL",
      "className": "UserManager",
      "methodName": "RegisterUser",
      "threadId": "a-352"
    },
    {
      "timestamp": 1457827957703.342,
      "severity": 3,
      "text": "{\"key1\":\"val1\",\"key2\":\"val2\",\"key3\":\"val3\",\"key4\":\"val4\"}",
      "category": "DAL",
      "className": "UserManager",
      "methodName": "RegisterUser",
      "threadId": "a-352"
    }
  ]
}

logEntriesの各要素がKinesis Data Firehoseで送信するユーザーデータのイメージです。
Json形式で、かつtimestamp(UNIX時間:ミリ秒), severity(重大度), textが必須になっています。
また、severityは以下のように種別を数値で指定します。

1 – Debug, 2 – Verbose, 3 – Info, 4 – Warn, 5 – Error, 6 – Critical

Firehoseでは上記ハイライト部分以外をうまく吸収してくれているようなので、put-recordを使う場合は以下のようになります。

$ aws firehose put-record --delivery-stream-name hoge-iwasa-coralogix --record '{"Data":"{\"timestamp\":1650435343814.343,\"severity\":1,\"text\":\"hoge debug\"}"}' --cli-binary-format raw-in-base64-out
{
    "RecordId": "e/Ul7yKnDQfkDry8o4iN5luY7+7V5JGORDTgbxCqMEzvHJrXDIhIFZAe76cStxs5Vl63eA4gQiWLHh3wC5U5MywuCCSr1t5uPilJbvjcYEtvz3XlCBsxVqqeCeMc3Ho4DHUhWH4jfkX+h80x2x3Fz8erk2ZcN25bKyp0iB+rsBoaKTj9zQP1uEUbT2OL3KMt8BFp7We/IJTY0mod1uN/B6C10IWYj42G",
    "Encrypted": false
}

エラー例

ちなみに、上記のフォーマットに則ってない場合はKinesis Data Firehoseの失敗ログに以下のメッセージが出力されます。

Delivery to the endpoint was unsuccessful. See Troubleshooting HTTP Endpoints in the Firehose documentation for more information. Response received with status code. 413: {"requestId":"03fd2411-583f-4b55-b52c-83311b7e2695","timestamp":1650265040579,"errorMessage":"Failed on log validation"}

Coralogixでの確認

本日はKinesis Data Firehoseからの連携方法の紹介を行いたかったので、Coralogixの詳しい使い方には本日は触れません。
詳しくはドキュメントをご確認頂ければと思います。

Kinesisからデータを送信したあとはCoralogix側のそれぞれの画面で確認が出来ます。
LiveTailを使うとストリーミングの様子が観察出来るので、最初の受信確認などリアルタイムで状況確認したいときはこの機能が使えると思います。

Dashboard機能では統計情報や可視化されたデータの確認に活用が出来ます。

詳細情報の検索や絞り込みなど、ピンポイントで分析をしたい際はExploreで様々な分析が出来ます。

さいごに

他のサービスとの統合で既にCoralogixを使っている方や検討中の方はAWSとの統合がしやすくなるので嬉しいアップデートなのかなと思います。

最初検証がうまくいかなくて2~3日困ってたのですが、Coralogixオンラインサポートにも助けて頂き連携することが出来ました。
サポートの手厚さがとても印象的でした。