Ingestion API へのログの送信

最終更新日: 12 年 2023 月 XNUMX 日

ログ統合が利用できない場合、または分析したいカスタム ログがある場合は、ログ インジェスト API を介して LogicMonitor アカウントにログを直接送信できます。 受信したイベントは、さらに処理または保存される前に、LogicMonitor のリソースにマップされます。

ログ取り込みエンドポイント

エンドポイントhttps://<account>.logicmonitor.com/rest/log/ingest
プロトコールHTTPS:443
ヘッダAuthorization: <LMv1 token>
方法POST
コンテンツタイプアプリケーション/ json
コンテンツエンコーディングgzip、しぼませる

リソースパス

ログ取り込みエンドポイントの場合、 https://<account>.logicmonitor.com/rest/log/ingest:

  • ベースURLは https://<account>.logicmonitor.com/rest
  • リソースパスは /log/ingest

場所 <account> LogicMonitorポータルの会社名またはアカウント名です。

注: ログ取り込みエンドポイントのベース URL は /rest です (LogicMonitor REST API の URL である /santaba/rest ではありません)。

認証

ログ取り込みAPIへのすべてのリクエストは、認証にLogicMonitorのLMv1APIトークンを使用します。 LogicMonitorアカウントでAPIトークンを作成できます 設定ユーザーと役割.

すべてのリクエストには、次の形式のHTTP認証ヘッダーを含める必要があります。

Authorization: LMv1 AccessId:Signature:Timestamp

署名は、base64 および HMAC でエンコードされたハッシュです。 Access Key, エポックミリ秒単位のタイムスタンプ、およびエンドポイントのリソースパス:

signature = base64(
  HMAC-SHA256(
    Access Key, 
    HTTP VERB 
    + TIMESTAMP
    + POST DATA
    + RESOURCE PATH
  ) 
)

注: Log Ingestion API を介してログを送信する API 専用ユーザーは、ログに対する「管理」権限を持っている必要があります。 詳細については、を参照してください。 役割.

制限事項

ログ取り込みAPIは、コンテンツサイズに次の制約があるエントリの配列を想定しています。

説明サイズ
ペイロードあたりの最大コンテンツサイズ8 MB
単一のログメッセージの最大配列サイズ32 KB
配列内の複数のログ/イベントを送信するための最大配列サイズ
LM ログ取り込みエンドポイントへの呼び出しのレート制限 (アカウント/API キーごと)240K リクエスト/分

リクエストの例

curlを使用してAmazonEC2インスタンスのログメッセージを取り込みエンドポイントに送信します。

curl --location \
--request POST 'https://<account>.logicmonitor.com/rest/log/ingest' \
--header 'Authorization: <LMv1 token>' \
--header 'Content-Type: application/json' \
--data-raw '[{
    "msg": "Generating example log message 31687",
    "_lm.resourceId":{"<property>": "<value>"}
}]'

計測パラメータ

ログ取り込みエンドポイントは、任意の JSON 属性を持つイベントとして JSON オブジェクトの配列を想定しています。 予約済み属性については、以下で説明します。

説明
message | msg | Msg(必須)ログメッセージ。 見る 制限事項.

イベントにこの属性が含まれていない場合、イベントはログ処理パイプラインに転送されません。
timestamp | date | _timestamp | Timestamp | eventTime | published_date(オプション)イベントが発生したときのタイムスタンプ。 サポートされている日付形式は、ISO8601およびUnixエポック(秒、ミリ秒、ns)です。

イベントにデフォルトの日付属性が含まれておらず、独自のタイムスタンプを定義していない場合、イベントには現在の日付がタイムスタンプとして割り当てられます。

タイムスタンプは次のいずれかになります int or string。 より正確なナノ秒時間については、 string (の丸め誤差を回避するため int JSONの値)。
_lm.resourceId: {<property>: <value>}_lm.resource.id ログの取り込みには必要ありません。LogicMonitor リソースへのマッピングにのみ必要です。 イベントを一意の LM リソースにマッピングするには、deviceId、AWS ARN、Kubernetes ポッド ID などの任意のリソース プロパティを使用できます。

<property> デバイス マッピングに使用する LogicMonitor リソース プロパティです。
<value> リソース プロパティの値です。

複数のプロパティが存在する場合は、最初のプロパティのみがマップされます。

例1– deviceId 知られている:
_lm.resourceId: { system.deviceId: "<deviceId>" }

例 2 – 一意の ARN を使用する AWS Lambda 関数: _lm.resourceId: { system.aws.arn: <arn> }

ログ メッセージとともに追加情報を送信するには、メッセージに JSON 項目を追加します。 情報は、 ログ ログを確認するときのテーブル。 詳細については、を参照してください。 ログとログ異常の表示.

注: ログは、異常の基準に一致するか、アラート条件に一致する場合、各イベントに関連付けられた重大度を持つことができます。 この重大度は取り込み中には設定されません。 詳細については、を参照してください。 ログアラート条件.

応答コード

ログ取り込みAPIは、従来のHTTP応答コードを使用して、APIリクエストの成功または失敗を示します。

ステータスコード説明
202 - Acceptedリクエストは処理のために受け入れられましたが、処理は完了していません。
207 - Multi-statusバッチ内の一部のイベントは、処理が受け入れられていません。 詳細については、応答内の「エラー」プロパティを参照してください。
400 - Bad Requestリクエストは無効です。 たとえば、ヘッダーが欠落しているか、リクエストの本文の形式が正しくない可能性があります。
401 - Unauthorized認証に失敗しました。 提供されたAPIキーが無効です。
402 - Payment RequiredLMログ機能が有効になっていません。 サポートにお問い合わせください。
403 - ForbiddenAPI キーには、リクエストを実行する権限がありません。
413 - Payload Too Largeペイロードが最大コンテンツサイズの8MBを超えています。
429 - Too Many Requestsリクエスト数がレート制限を超えています。
500 - Server ErrorLogicMonitor側で問題が発生しました。
502 - Bad Gateway依存関係が妥当な時間内に応答しませんでした。

例: 202 –承認済み

Header:
     X-Request-ID: 38b78dd6-3bc0-4cd9-8a15-6af552d49c3e
Body:
{
    "success": true,
    "message": "Accepted"
}

例: 207 – マルチステータス

Header:
     X-Request-ID: 38b78dd6-3bc0-4cd9-8a15-6af552d49c3e
Body:
{
    "success": false,
    "message": "Some events were not accepted. See the 'errors' property for additional information.",
    "errors": [
        {
            "code": 4001,
            "error": "Resource not found",
            "event": {
                "_lm.resourceId": {
                    "system.deviceId": "kish"
                },
                "message": "test"
            }
        },
    ]
}

カスタムエラーコード

カスタム エラー コードは、ログの取り込みが失敗したときに何が問題だったかについての洞察を提供します。 LogicMonitor リソースまたはフィールド要件へのマッピングの失敗など、イベントがログ取り込みの制約を満たしていない場合、次に説明するエラー メッセージのいずれかが返されます。

エラーコード説明
4001 - Resource not foundリソースのクエリが試行されましたが、デバイスが見つかりませんでした。
4002 - More than one resource has been foundイベントソースは、XNUMXつのLogicMonitorリソースにのみマップする必要があります。
4003 - Insufficient information for device lookupリソースの検索には情報が不十分です。 たとえば、 _lm.resourceId が正しく指定されておらず、デバイスマッピングを実行できません。
4004 - Missing message fieldLogicMonitorは、メッセージフィールドのないログを受け入れません。
4005 - Event too large1 つのイベントは XNUMX MB を超えることはできません。
4006 - Event too old or futureイベントは、構成された取り込み時間ウィンドウ、±3時間の範囲外です。

例: 失敗

Header:
    X-Request-ID: 38b78dd6-3bc0-4cd9-8a15-6af552d49c3e
Body:
{
    "success": false,
    "message": "Some events were not accepted. See the 'errors' property for additional information.",
    "errors": [
        {
            "code": 4003,
            "error": "Insufficient information for device lookup",
            "event": {
                "message": "test"
            }
        },
        {
            "code": 4004,
            "error": "Missing message field",
            "event": {
                "_lm.resourceId": {
                    "system.deviceId": "kish"
                },
            }
        }
 
    ]
}
記事上で