Kubernetes ログとイベントの送信

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

LogicMonitor は、監視対象の Kubernetes クラスターから LM ログにログを送信するためのさまざまな方法を提供します。どの方法を選択するかは、送信するログの種類によって異なります。次のいずれかの方法を使用して、監視対象の Kubernetes クラスターから LM ログにログを送信できます。

  • LogicMonitor コレクターの使用:
    • ログソースの使用: LogSource は、LM ログを有効にするための推奨される方法です。 LogSource を使用するには、マシンに EA Collector 31.200 以降のバージョンがインストールされている必要があります。詳細については、を参照してください。 Kubernetes イベント ログの LogSource 構成 または、カスタマーサクセスマネージャーに連絡してください。 
    • Agent.confの使用: Kubernetes イベントとポッド ログの場合は、監視対象のクラスターまたはクラスター グループからログを収集して転送するように LogicMonitor Collector を構成します。詳細については、を参照してください。 LogicMonitor Collector を使用した Kubernetes イベントと Pod ログの送信.
  • lm-logs Helm チャートの使用: Kubernetes ログの場合は、LogicMonitor Kubernetes 統合の一部として提供される lm-logs Helm チャート構成を使用します。詳細については、を参照してください。 lm-logs Helm チャートを使用した Kubernetes ログの送信。

要件

lm-logs Helm チャートを使用した Kubernetes ログの送信

をインストールして構成できます。 LogicMonitor Kubernetes の統合 Kubernetes ログを LM ログ取り込み API に転送します。

展開

LMログのKubernetes構成は、ヘルムチャートとしてデプロイされます。

1. LogicMonitorHelmリポジトリを追加します。 

helm repo add logicmonitor https://logicmonitor.github.io/k8s-helm-charts

LogicMonitor Helmリポジトリがすでにある場合は、それを更新して最新のチャートを取得する必要があります。

helm repo update

2。 インストールする lm-logs 必要な値を入力するチャート:

helm install -n <namespace> \
--set lm_company_name="<lm_company_name>" \
--set lm_access_id="<lm_access_id>" \
--set lm_access_key="<lm_access_key>" \
lm-logs logicmonitor/lm-logs

Kubernetes のデバイスレス ログの構成

ログが「デバイスレス」であり、LM 監視対象リソースに関連付けられていない場合でも、LM ログでログを表示できます。 リソース マッピングがなくても、またはリソース マッピングに問題がある場合でも、ログを使用して異常を検出し、表示および検索できます。

デバイスレス ログの場合、 ログ異常検出 ログ プロファイルの作成時に、「デバイス ID」の代わりに「名前空間」フィールドと「サービス」フィールドを使用して実行されます。 デバイスレス ログを有効にするには、lm-logs helmchart を構成するときに「fluent.device_less_logs」を「true」に設定します。 詳細については、を参照してください。 Kubernetes ログを LM ログに送信する.

LogicMonitor Collector を使用した Kubernetes イベントと Pod ログの送信

監視対象の Kubernetes クラスターまたはクラスター グループから Kubernetes クラスター イベントとポッド ログを受信して​​転送するように LogicMonitor コレクターを構成できます。

注: 包括的な Kubernetes モニタリング メトリクス、ログ、イベントには、LM Container Chart サービスを使用します。 詳細については、を参照してください。 LM Container Helm チャートのインストール.

要件

  • EA Collector30.100以降がインストールされています。
  • すでに展開しています LogicMonitorのKubernetesモニタリング.
  • ログを収集するリソース (イベントまたはポッド) へのアクセス。

イベントとログの収集を有効にする

イベントとログの収集を有効にするためのオプションは次のとおりです。

  • 推奨されます- Argus の Helm デプロイメントを変更して、イベント収集を有効にします。
    詳細については、を参照してください。 LogicMonitor Collector を使用した Kubernetes イベントと Pod ログの収集.
  • 代わりに- LogicMonitor で監視対象の Kubernetes クラスター グループ (または個々のリソース) に次のプロパティを手動で追加します。
プロパティ種類デフォルト値説明
lmlogs.k8sevent.polling.interval.min整数1Kubernetesイベントコレクションのポーリング間隔(分単位)。
lmlogs.k8spodlog.polling.interval.min整数1Kubernetesポッドログコレクションのポーリング間隔(分単位)。
lmlogs.thread.count.for.k8s.pod.log.collection整数10Kubernetes ポッド ログ収集のスレッド数。 最大値は 50 です。

ログを削除するためのフィルターの構成

注: LogicMonitor に送信されないように、クレジット カード、電話番号、個人識別子などの機密情報を含むログ メッセージを削除するようにフィルタを構成してください。 フィルターを使用して、ログ取り込み API キューに送信される重要でない syslog ログ メッセージの量を減らすこともできます。

Kubernetes イベントのフィルタリング基準は、フィールド「メッセージ」、「理由」、および「タイプ」に基づいています。 Kubernetes ポッド ログの場合、メッセージ フィールドをフィルタリングできます。 フィルタリング基準は、キーワード、正規表現パターン、フィールドの特定の値などを使用して定義できます。 フィルター条件を構成するには、コメントを外して有効にし、agent.conf のフィルター エントリを編集します。

例:

  • INFOレベルのポッドログをLogicMonitorにフィルターで除外するには、コメントを解除するか、次の行を追加します:logsource.k8spodlog.filter.1.message.notcontain = INFO
  • type = NormalのKubernetesイベントを送信するには、次の行をコメントアウトします:logsource.k8sevent.filter.1.type.notequal = Normal

詳細については、を参照してください。 LogicMonitor Collector を使用した Kubernetes イベントと Pod ログの収集.

フィルタ基準を構成するには、次のagent.confエントリを必要に応じて構成します。

コレクターの agent.conf 構成

プロパティ種類説明
logsource.k8sevent.filter.1.message.equal文字列Kubernetes イベントのフィルター フィールドに指定された値と等しいメッセージの内容を定義します。
logsource.k8sevent.filter.2.message.notequal文字列Kubernetes イベントのフィルター フィールドに指定された値と等しくないメッセージの内容を定義します。
logsource.k8sevent.filter.3.message.contain文字列Kubernetes イベントのフィルター フィールドに値を持つメッセージの内容を定義します。
logsource.k8sevent.filter.4.message.notcontain文字列Kubernetes イベントのフィルター フィールドの値を含まないメッセージの内容を定義します。
logsource.k8sevent.filter.5.message.regexmatch文字列Kubernetes イベントのフィルター フィールドの値と一致する正規表現パターンを含むメッセージの内容を定義します。
logsource.k8sevent.filter.6.message.regexnotmatch文字列Kubernetes イベントのフィルター フィールドの値と一致しない正規表現パターンを含むメッセージの内容を定義します。
logsource.k8sevent.filter.7.reason.equal文字列Kubernetes イベントのフィルター フィールドに指定された値と等しい理由の内容を定義します。
logsource.k8sevent.filter.8.reason.notequal文字列Kubernetes イベントのフィルター フィールドに指定された値と等しくない理由の内容を定義します。
logsource.k8sevent.filter.9.reason.contain文字列Kubernetes イベントのフィルター フィールドの値を含むメッセージの内容を定義します。
logsource.k8sevent.filter.10.reason.notcontain文字列Kubernetes イベントのフィルター フィールドに値が含まれていない理由の内容を定義します。
logsource.k8sevent.filter.11.reason.regexmatch文字列Kubernetes イベントのフィルター フィールドの値と一致する正規表現パターンを含む理由の内容を定義します。
logsource.k8sevent.filter.12.reason.regexnotmatch文字列Kubernetes イベントのフィルター フィールドの値と一致しない正規表現パターンを含む理由の内容を定義します。
logsource.k8sevent.filter.13.type.equal文字列Kubernetes イベントのフィルター フィールドに指定された値と等しいタイプのコンテンツを定義します。
logsource.k8sevent.filter.14.type.notequal文字列タイプの内容が、Kubernetes イベントのフィルター フィールドに指定された値と等しくないことを定義します。
logsource.k8sevent.filter.15.type.contain文字列Kubernetes イベントのフィルター フィールドに値を持つタイプのコンテンツを定義します。
logsource.k8sevent.filter.16.type.notcontain文字列Kubernetes イベントのフィルター フィールドに値を含まないタイプのコンテンツを定義します。
logsource.k8sevent.filter.17.type.regexmatch文字列Kubernetes イベントのフィルター フィールドの値と一致する正規表現パターンを含む型のコンテンツを定義します。
logsource.k8sevent.filter.18.type.regexnotmatch文字列Kubernetes イベントのフィルター フィールドの値と一致しない正規表現パターンを含む型のコンテンツを定義します。
logsource.k8spodlog.filter.1.message.equal文字列Kubernetes ポッド ログのフィルター フィールドに指定された値と等しいメッセージの内容を定義します。
logsource.k8spodlog.filter.2.message.notequal文字列メッセージの内容が、Kubernetes ポッド ログのフィルター フィールドに指定された値と等しくないことを定義します。
logsource.k8spodlog.filter.3.message.contain文字列Kubernetes ポッド ログのフィルター フィールドに値を持つメッセージの内容を定義します。
logsource.k8spodlog.filter.4.message.notcontain文字列Kubernetes ポッド ログのフィルター フィールドの値を含まないメッセージの内容を定義します。


Helm チャートの構成

プロパティ説明
lmlogs.k8sevent.enable = trueポッド、デプロイメント、サービス、ノードなどからLMログにイベントを送信します。 falseの場合、イベントを無視します。
lmlogs.k8spodlog.enable = trueポッドログをLMログに送信します。 falseの場合、ポッドからのログを無視します。

トラブルシューティング

Kubernetes ログ

  1. 数分経っても LM ポータルに Kubernetes ログが表示されない場合は、リソース マッピングに問題がある可能性があります。 Kubernetes のリソース マッピングは次のように処理されます。 Fluentdプラグイン.
  2. マッピングが正しい場合は、ログ ファイルのパスがマウントされていることを確認します。 ログ ファイルのパスがマウントされていない場合は、 /k8s-helm-charts/lm-logs/templates/deamonset.yaml ファイル パスとボリュームを追加します。

    たとえば、マウントするパスが /mnt/ephemeral/docker/containers/で、次の編集を行います。
  • ファイル パスを追加します。
name: ephemeraldockercontainers
  mountPath: /mnt/ephemeral/docker/containers/
  readOnly: true
  • ボリュームの下に追加:
name: ephemeraldockercontainers
  hostPath:
    path: /mnt/ephemeral/docker/containers/

Kubernetes ポッドのログ

ポッド ログの収集と転送を有効にしているが、LM ログでポッド ログを受信して​​いない場合は、コレクタを再起動し、ポーリング間隔を 3 ~ 5 分に増やします。

記事上で