Download PDF
Download page ログコレクタの構成:高度な YAML レイアウト.
ログコレクタの構成:高度な YAML レイアウト
このページは、collectors-values.yaml
の高度なレイアウトを使用するログコレクタ展開にのみ適用されます。
ログコレクタを構成するには、Kubernetes および App Service Monitoring の展開に使用したのと同じ値の YAML ファイルにログ固有の設定を追加します。通常、このファイルには collectors-values
.yaml
という名前が付けられています。見つからない場合は、「失われた値 YAML ファイルを回復する」を参照してください。
次の手順では、ほとんどのオプション設定を省略しています。すべての設定、有効な値などの完全な説明については、次の手順を実行する前に「ログコレクタ設定:高度な YAML レイアウト」をプレビューしてください。
global
で必要なパラメータを設定する
Cisco Cloud Observability で、クラスタの名前を取得します。
- [Observe ] ページで、クラスタを選択します。
- [Properties] パネルで、クラスタの名前をコピーし、テキストファイルに保存します。
global
で、clusterName
をクラスタの名前に設定します。この名前は、Cisco Cloud Observability にあるクラスタの名前と一致する必要があります。global: clusterName: <cluster-name>
YML
appdynamics-cloud-k8s-monitoring.install
で必要なパラメータを設定する
appdynamics-cloud-k8s-monitoring.install
で、logCollector
を true
に設定します。
install:
...
logCollector: true
appdynamics-cloud-k8s-monitoring.logCollectorConfig を作成する
collectors-values.yaml
に appdynamics-cloud-k8s-monitoring.logCollectorConfig
キーがない場合は、ログコレクタ設定:高度な YAML レイアウト のサンプルからコピーして貼り付けます。
appdynamics-cloud-k8s-monitoring.logCollectorConfig.filebeatYaml.filebeat.autodiscover で必要なパラメータを設定する
- クラスタ上の任意のコンテナからログを収集するためのデフォルト条件が必要な場合:
hints.default_config.enabled
をtrue
に設定します。hints.default_config
のパラメータをデフォルトのログ収集条件に設定します。上書きする値のみを指定する必要があります。つまり、任意のパラメータのデフォルト値を使用する場合は、それを省略します。
appdynamics-cloud-k8s-monitoring.logCollectorConfig.filebeatYaml.filebeat.autodiscover
.providers.type.templates
で、ログを生成する 1 つのコンテナにパラメータを設定します。condition
で、ログコレクタがログを収集するためにこのコンテナが一致する必要がある条件を指定します。サポートされている条件のリストについては、「Filebeat: Conditions」を参照してください。これらの条件で指定できるフィールドのリストについては、「Filebeat: Autodiscover: Generic fields」を参照してください。
たとえば、コンテナの名前を条件として使用するには次のようになります。filebeat.autodiscover: providers: - type: kubernetes ... templates: - condition: equals: kubernetes.container.name: log-generator-logback
YMLconfig
で、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
YMLconfig.type
で、このコンテナからの複数行のログメッセージを適切に解析するには、multiline.pattern
、multiline.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
YMLJSON ログの場合、複数行の設定は次のようになります。
filebeat.autodiscover: providers: - type: kubernetes ... templates: - condition: ... config: - type: filestream ... multiline.pattern: '^{' multiline.negate: true multiline.match: after
YMLfields
で、<custom-key>
と<custom-value>
を、このコンテナからのすべてのログメッセージに注入する追加のキーと値のペアに設定します。
例:config: - type: filestream ... fields: <custom-key>: <custom-value>
YMLブロック内、およびそのブロック内で、パーサー タイプに設定し、このパーサー タイプのメッセージに一致する正規表現に設定します。
config.type.processors, add an - add_fields
target
_message_parser
fields.type
fields.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ブロック内で、そのブロック内で、たとえば、に設定します。
config.type.processors, add an - add_fields
target
appd
fields.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では、これらの行をそのまま追加し、欠落している場合はこの順序で追加します。
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
- ログコレクタがこのポッドまたは別のポッドの他のコンテナからログを収集するようにする場合は、
condition
ブロックを複製し、追加の各コンテナに対して前の手順を繰り返します。ログコレクタがそのコンテナのログの場所にアクセスできる限り、ログ生成コンテナが実行されているポッドはどれでもかまいません。
appdynamics-cloud-k8s-monitoring.logCollectorConfig.filebeatYaml.processors で必要なパラメータを設定する
add_cloud_metadata
およびadd_kubernetes_metadata
プロセッサを追加します(まだない場合)。これらのプロセッサは必須です。これにより、Cisco Cloud Observabilityログメッセージを適切なエンティティに関連付けるため、ログコレクタは Kubernetes 属性k8s.cluster.name
、k8s.namespace.name
、k8s.workload.name
、k8s.pod.name
、k8s.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で、次の行が欠落している場合は、それらを追加します。
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次の行が欠落している場合は、それらを追加しますが、クラスターの名前に置き換え、クラスターの 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次の行が欠落している場合は、そのまま追加します。
processors: ... - add_fields: target: source fields: name: log-agent - add_fields: target: telemetry fields: sdk.name: log-agent
YML次の行が欠落している場合は、それらを追加しますが、クラスターの ID に置き換えます。
<cluster-ID>
and retain the colon suffixprocessors: ... - 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; }
YMLdrop_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 のオプション パラメータを設定します。
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ログ コレクターのパフォーマンスを向上させる必要がある場合は、次の値に増やします。
batch_size
1000
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
Windows コンテナにログコレクタを展開する場合
コンテナが実行しているオペレーティング システムのリストに設定します。
appdynamics-cloud-k8s-monitoring.logCollectorConfig.os
ログ コレクターは、次のいずれかまたは両方をサポートします。linux, windows,
logCollectorConfig: os: [windows,linux]
YML(オプション) オペレーティング システムごとに異なるブロックが必要な場合は、 で次の手順を実行します。
filebeatYaml
appdynamics-cloud-k8s-monitoring.logCollectorConfig
env.linux
およびenv.windows
セクションを追加します。
例:logCollectorConfig: os: [linux,windows] env: linux: windows:
YMLブロックを および セクションに移動し、必要に応じて変更します。
filebeatYaml
env.linux
env.windows
例を参照してください。 ログコレクタ設定:高度な YAML レイアウト
たとえば、logCollectorConfig: os: [linux,windows] env: linux: filebeatYaml: |- ... windows: filebeatYaml: |- ...
YML
(オプション) で、オペレーティング システムごとに異なる Log Collector イメージを指定します。
appdynamics-cloud-k8s-monitoring.logCollectorPod
logCollectorPod: imagePullPolicy: IfNotPresent env: linux: image: <image-url> windows: image: <image-url>
YML
クラスタに変更を適用する
OpenTelemetry™ と Kubernetes®(該当する場合)は、The Linux Foundation® の商標です。