このページは、collectors-values.yaml の高度なレイアウトを使用するログコレクタ展開にのみ適用されます。 

ログコレクタを構成するには、Kubernetes および App Service Monitoring の展開に使用したのと同じ値の YAML ファイルにログ固有の設定を追加します。通常、このファイルには collectors-values.yaml という名前が付けられています。見つからない場合は、「失われた値 YAML ファイルを回復する」を参照してください。

次の手順では、ほとんどのオプション設定を省略しています。すべての設定、有効な値などの完全な説明については、次の手順を実行する前に「ログコレクタ設定:高度な YAML レイアウト」をプレビューしてください。

global で必要なパラメータを設定する

  1. Cisco Cloud Observability で、クラスタの名前を取得します。

    1. [Observe ] ページで、クラスタを選択します。
    2. [Properties] パネルで、クラスタの名前をコピーし、テキストファイルに保存します。
  2. global で、clusterName をクラスタの名前に設定します。この名前は、Cisco Cloud Observability にあるクラスタの名前と一致する必要があります。

    global:
      clusterName: <cluster-name>
    YML

appdynamics-cloud-k8s-monitoring.install で必要なパラメータを設定する

appdynamics-cloud-k8s-monitoring.install で、logCollectortrue に設定します。

install:
  ...   
  logCollector: true
YML

appdynamics-cloud-k8s-monitoring.logCollectorConfig を作成する

collectors-values.yamlappdynamics-cloud-k8s-monitoring.logCollectorConfig キーがない場合は、ログコレクタ設定:高度な YAML レイアウト のサンプルからコピーして貼り付けます。

appdynamics-cloud-k8s-monitoring.logCollectorConfig.filebeatYaml.filebeat.autodiscover で必要なパラメータを設定する

  1. クラスタ上の任意のコンテナからログを収集するためのデフォルト条件が必要な場合:
    1. hints.default_config.enabledtrue に設定します。
    2. hints.default_config のパラメータをデフォルトのログ収集条件に設定します。上書きする値のみを指定する必要があります。つまり、任意のパラメータのデフォルト値を使用する場合は、それを省略します。
  2. appdynamics-cloud-k8s-monitoring.logCollectorConfig.filebeatYaml.filebeat.autodiscover.providers.type.templates で、ログを生成する 1 つのコンテナにパラメータを設定します。
    1. condition で、ログコレクタがログを収集するためにこのコンテナが一致する必要がある条件を指定します。サポートされている条件のリストについては、「Filebeat: Conditions」を参照してください。これらの条件で指定できるフィールドのリストについては、「Filebeat: Autodiscover: Generic fields」を参照してください。
      たとえば、コンテナの名前を条件として使用するには次のようになります。

      filebeat.autodiscover:
        providers:
          - type: kubernetes
            ...
            templates:
              - condition:
                  equals:
                    kubernetes.container.name: log-generator-logback
      YML
    2. config で、paths をこのコンテナのログファイルへの glob パス名に設定します。
      例: 

      filebeat.autodiscover:
        providers:
          - type: kubernetes
            ...
            templates:
              - condition:
                  ...
                config:
                  - type: filestream
                    ...
                    paths:
                      - /var/log/containers/${data.kubernetes.pod.name}*${data.kubernetes.container.id}.log
      YML
    3. config.type で、このコンテナからの複数行のログメッセージを適切に解析するには、multiline.patternmultiline.negate、および multiline.match を正しい値に設定します。「Manage multiline messages」を参照してください。たとえば、日付またはタイムスタンプで始まる複数行のログ メッセージの場合:

      filebeat.autodiscover:
        providers:
          - type: kubernetes
            ...
            templates:
              - condition:
                  ...
                config:
                  - type: filestream
                    ...
                    multiline.pattern: '^\d{4}-\d{2}-\d{2}'
                    multiline.negate: true
                    multiline.match: after
      YML

      JSON ログの場合、複数行の設定は次のようになります。

      filebeat.autodiscover:
        providers:
          - type: kubernetes
            ...
            templates:
              - condition:
                  ...
                config:
                  - type: filestream
                    ...
                    multiline.pattern: '^{'
                    multiline.negate: true
                    multiline.match: after
      YML
    4. fields で、<custom-key><custom-value> を、このコンテナからのすべてのログメッセージに注入する追加のキーと値のペアに設定します。
      例: 

      config:
        - type: filestream
          ...
          fields:
            <custom-key>: <custom-value>
      YML
    5. ブロック内、およびそのブロック内で、パーサー タイプに設定し、このパーサー タイプのメッセージに一致する正規表現に設定します。config.type.processors, add an - add_fieldstarget_message_parserfields.typefields.pattern
      例:

      config:
        - type: filestream
          ...
          processors:
          ...
            - add_fields:
                target: _message_parser
                fields:
                  type: log4j
                  pattern: "%d{yyyy-MM-dd'T'HH:mm:ss} %p %C{1.} [%t] %m%n"
      YML
    6. ブロック内で、そのブロック内で、たとえば、に設定します。config.type.processors, add an - add_fieldstargetappdfields.log.format"<log-namespace>:<log-description>"."logs:email_logs" その他の例については、ログコレクタ設定:高度な YAML レイアウトを参照してください。指定しない場合、この構成を通じて取り込まれたログ メッセージに含まれる機密データをマスクすることはできません。appd.log.format機密データのマスキング」を参照してください。 

      次に例を示します。

      config:
        - type: filestream
          ...
          processors:
          ...
            - add_fields:
                target: appd
                fields:
                  log.format: logs:email_logs
      YML



    7. では、これらの行をそのまま追加し、欠落している場合はこの順序で追加します。config.type.processors.copy_fields この copy_fields ブロックにより、ログ コレクターはログ メッセージをワークロード エンティティに関連付けることができます。次に例を示します。

      config:
        - type: filestream
          ...
          processors:
          ...
          processors:
           - copy_fields:
               ...
           - copy_fields:
               fields:
                 - from: "kubernetes.deployment.name"
                   to: "kubernetes.workload.name"
                 - from: "kubernetes.daemonset.name"
                   to: "kubernetes.workload.name"
                 - from: "kubernetes.statefulset.name"
                   to: "kubernetes.workload.name"
                 - from: "kubernetes.replicaset.name"
                   to: "kubernetes.workload.name"
                 - from: "kubernetes.cronjob.name"
                   to: "kubernetes.workload.name"
                 - from: "kubernetes.job.name"
                   to: "kubernetes.workload.name"
               fail_on_error: false
               ignore_missing: true 
      YML
  3. ログコレクタがこのポッドまたは別のポッドの他のコンテナからログを収集するようにする場合は、condition ブロックを複製し、追加の各コンテナに対して前の手順を繰り返します。ログコレクタがそのコンテナのログの場所にアクセスできる限り、ログ生成コンテナが実行されているポッドはどれでもかまいません。 

appdynamics-cloud-k8s-monitoring.logCollectorConfig.filebeatYaml.processors で必要なパラメータを設定する

  1. add_cloud_metadata および add_kubernetes_metadata プロセッサを追加します(まだない場合)。これらのプロセッサは必須です。これにより、Cisco Cloud Observabilityログメッセージを適切なエンティティに関連付けるため、ログコレクタは Kubernetes 属性 k8s.cluster.namek8s.namespace.namek8s.workload.namek8s.pod.namek8s.deployment.name(展開の場合)、および k8s.statefulset.name(StatefulSet の場合)を送信できます。 

    これらの名前は予約済みです。これらのプロセッサの名前は変更しないでください。

    この正確なコードブロックをそのまま追加します。

    processors:
      - add_cloud_metadata: ~
      - add_kubernetes_metadata:
          in_cluster: true
          host: ${NODE_NAME}
          matchers:
            - logs_path:
                logs_path: "/var/log/containers/"
    YML
  2. で、次の行が欠落している場合は、それらを追加します。rename これらの行により、ログメッセージを適切なエンティティに関連付けるために、ログコレクタはこれらの属性を Cisco Cloud Observability に送信できます。  

    これらの名前は予約済みです。これらの属性の名前は変更しないでください。

    processors:
      ...
      - rename:
          fields:
            - from: "kubernetes.namespace"
              to: "kubernetes.namespace.name"
            - from: "kubernetes"
              to: "k8s"
            - from: k8s.annotations.appdynamics.lca/filebeat.parser
              to: "_message_parser"
            - from: "cloud.instance.id"
              to: "host.id"
          ignore_missing: true
          fail_on_error: false
    YML
  3. 次の行が欠落している場合は、それらを追加しますが、クラスターの名前に置き換え、クラスターの ID に置き換えます。 <cluster-name><cluster-id> クラスタの名前は、Cisco Cloud Observability に表示されているクラスタの名前と一致する必要があります。kubectl get ns kube-system -o json  コマンドを実行して、クラスタ ID を取得できます。

    processors:
      ...
      - add_fields:
          target: k8s
          fields:
            cluster.name: <cluster-name>
      - add_fields:
          target: k8s
          fields:
            cluster.id: <cluster-id>
    YML
  4. 次の行が欠落している場合は、そのまま追加します。

    processors:
      ...
      - add_fields:
          target: source
          fields:
            name: log-agent
      - add_fields:
          target: telemetry
          fields:
            sdk.name: log-agent
    YML
  5. 次の行が欠落している場合は、それらを追加しますが、クラスターの ID に置き換えます。<cluster-ID>and retain the colon suffix  

    processors:
      ...
      - script:
          lang: javascript
          source: >
            function process(event) {
              var podUID = event.Get("k8s.pod.uid");
              if (podUID) {
                event.Put("internal.container.encapsulating_object_id", "<cluster-ID>:" + podUID);
              }
              return event;
            }
    YML
  6. drop_fields で、ドロップする他のフィールドを追加します。既存のドロップされたフィールドは削除しないでください。

    processors:
      ...
      - drop_fields:
          fields: ["agent", "stream", "ecs", "input", "orchestrator", "k8s.annotations.appdynamics", "k8s.labels", "k8s.node.labels", "cloud"]
    YML

     

appdynamics-cloud-k8s-monitoring.logCollectorConfig.filebeatYaml.output.otlploggrpc のオプション パラメータを設定します。

  1. SSL が必要な場合は、SSL 設定を指定します。 
    例: 

    output.otlploggrpc:
     ...
     ssl.enabled: true
     ssl.certificate_authorities: ["/opt/appdynamics/certs/ca/ca.pem"]
     ssl.certificate: "/opt/appdynamics/certs/client/client.pem"
     ssl.key: "/opt/appdynamics/certs/client/client-key.pem" 
    YML
  2. ログ コレクターのパフォーマンスを向上させる必要がある場合は、次の値に増やします。 batch_size1000

    output.otlploggrpc:
      ...
      batch_size: 1000
    YML

appdynamics-cloud-k8s-monitoring.logCollectorConfig.filebeatYaml.path.data で必要なパラメータを設定する

path.data/opt/appdynamics/logcollector-agent/data に設定します。これにより、ログコレクタは、再起動時にすでに収集されたログを収集できなくなります。 

path.data: /opt/appdynamics/logcollector-agent/data
YML

Windows コンテナにログコレクタを展開する場合

  1. コンテナが実行しているオペレーティング システムのリストに設定します。appdynamics-cloud-k8s-monitoring.logCollectorConfig.os ログ コレクターは、次のいずれかまたは両方をサポートします。 linux, windows,

      logCollectorConfig:
        os: [windows,linux]
    YML
  2. (オプション) オペレーティング システムごとに異なるブロックが必要な場合は、 で次の手順を実行します。 filebeatYamlappdynamics-cloud-k8s-monitoring.logCollectorConfig

    1. env.linux および env.windows セクションを追加します。
      例: 

        logCollectorConfig:
          os: [linux,windows]
          env:
            linux:
            windows:
      YML
    2. ブロックを および セクションに移動し、必要に応じて変更します。filebeatYamlenv.linuxenv.windows 例を参照してください。 ログコレクタ設定:高度な YAML レイアウト
      たとえば、

        logCollectorConfig:
          os: [linux,windows]
          env:
            linux:
              filebeatYaml: |-
                ...
            windows:
              filebeatYaml: |-
                ...
      YML
  3. (オプション) で、オペレーティング システムごとに異なる Log Collector イメージを指定します。 appdynamics-cloud-k8s-monitoring.logCollectorPod

       logCollectorPod:
        imagePullPolicy: IfNotPresent
        env:
          linux:
            image: <image-url>
          windows:
            image: <image-url>
    YML

クラスタに変更を適用する

  1. YAML Lint などの YAML バリデータで collectors-values.yaml を検証します。
  2. 変更をクラスタに適用するには、「ログコレクタの展開」の「展開」手順に進みます。

OpenTelemetry™ と Kubernetes®(該当する場合)は、The Linux Foundation® の商標です。