LM Logs IngestionAPIへのログの送信

最終更新日: 29 年 2022 月 XNUMX 日

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

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

エンドポイント https://<account>.logicmonitor.com/rest/log/ingest
プロトコール HTTPS:443
ヘッダ Authorization: <LMv1 token>
方法 POST
コンテンツタイプ application/json
コンテンツエンコーディング gzip, deflate

リソースパス

ログ取り込みエンドポイントの場合、 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
  ) 
)

注意: ログ取り込み API を介してログを送信する API のみのユーザーには、ログの「管理」権限が必要です。 見る 役割.

制限事項

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

ペイロードあたりの最大コンテンツサイズ 8 MB
単一のログメッセージの最大配列サイズ 32 KB
配列内の複数のログ/イベントを送信するための最大配列サイズ

リクエストの例

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>}
商品説明 (必須)各イベントは一意のLogicMonitorリソースにマッピングする必要があり、これには任意のリソースプロパティ(deviceId、AWS ARN、KubernetesポッドID)を使用できます。

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

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

LogicMonitorの既存のリソースに関連付けることができないイベントはすべて削除されます。
例1 もし deviceId がわかっている場合は、マッピングされます。

_lm.resourceId: { system.deviceId: "<deviceId>" }
例2 AWS Lambda関数では、一意のARNが使用されます。

_lm.resourceId: { system.aws.arn: <arn> }

ログ メッセージとともに追加情報を送信するには、メッセージに JSON 項目を追加します。 情報は、 ログ ログを確認するときの表。 見る ログとログの異常の確認.

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

応答コード

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

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

例1:202 –承認済み

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

例2: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 リソースのクエリが試行されましたが、デバイスが見つかりませんでした。
4001 - More than one resource has been found イベントソースは、XNUMXつのLogicMonitorリソースにのみマップする必要があります。
4003 - Insufficient information for device lookup リソースの検索には情報が不十分です。 たとえば、 _lm.resourceId が正しく指定されておらず、デバイスマッピングを実行できません。
4004 - Missing message field LogicMonitorは、メッセージフィールドのないログを受け入れません。
4005 - Event too large 1つのイベントはXNUMXMBを超えることはできません。
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"
                },
            }
        }
 
    ]
}
記事上で