Download PDF
Download page ログコレクタ設定:高度な YAML レイアウト.
ログコレクタ設定:高度な YAML レイアウト
このページでは、ログコレクタの collectors-values.yaml
でカスタマイズできるさまざまな設定について説明します。
このページは、collectors
-values.yaml
の高度なレイアウトを使用するログコレクタ展開にのみ適用されます。ログコレクタの詳細設定について説明しています。collectors
-values.yaml
が 2022 年 6 月以降に利用可能な簡略化された YAML レイアウトの場合は、「AppDynamics Log Collector Settings」を参照してください。
ログコレクタは、appdynamics-cloud-k8s-monitoring.logCollectorConfig.filebeatYaml
全体を文字列として Filebeat に送信します。appdynamics-cloud-k8s-monitoring.logCollectorConfig
.filebeatYaml
には、次の 7 つのトップレベルキーがあります。
logCollectorConfig:
filebeatYaml: |-
filebeat.autodiscover: ...
processors: ...
output.otlploggrpc: ...
filebeat.registry: ...
path.data: ...
logging: ...
monitoring: ...
このページでは、これらのキーと logCollectorPod
にあるキーについて説明します。
appdynamics-cloud-k8s-monitoring.logCollectorPod.env
appdynamics-cloud-k8s-monitoring.logCollectorPod.env
セクションでは、ログコレクタのオペレーティングシステム固有のイメージの場所を指定できます。
パラメータ | 説明 | ||||
---|---|---|---|---|---|
| 環境変数のセクション。 | ||||
| |||||
| Linux のログコレクタイメージの場所。 例:
YML
| ||||
| |||||
| Windows のログコレクタイメージの場所。 例:
YML
|
appdynamics-cloud-k8s-monitoring.logCollectorConfig.os
複数のオペレーティングシステムにログコレクタイメージを展開する必要がある場合は、appdynamics-cloud-k8s-monitoring.logCollectorConfig.os
でイメージの URL を指定します。
パラメータ | 説明 | ||||
---|---|---|---|---|---|
| このポッドを展開するオペレーティングシステムの配列。有効な値: 例:
YML
|
appdynamics-cloud-k8s-monitoring.logCollectorConfig.env
appdynamics-cloud-k8s-monitoring.logCollectorConfig.env
セクションを使用して、オペレーティングシステム固有のオーバーライドを指定します。
パラメータ | 説明 | ||||
---|---|---|---|---|---|
| OS 固有のオーバーライド設定を指定します。 | ||||
| |||||
filebeatYaml | シンタックスが 例:
YML
|
appdynamics-cloud-k8s-monitoring.logCollectorConfig.filebeatYaml.filebeat.autodiscover
このセクションは、Kubernetes® コンテナの検出とファイルログ入力用です。
パラメータ | 説明 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||
| クラスタ上の任意のコンテナからログを収集するためのデフォルト(「フォールバック」)条件を指定します。これにより、より迅速なセットアップが可能になります。有効な値:
YML
| ||||||||||
templates | 特定のログソース、タイプ、およびパターンのすべての設定を含む condition ブロックが含まれます。複数の条件ブロックを作成するには、templates を複製します。 | ||||||||||
| ログコレクタによってログを収集するために、アプリケーションが一致する必要がある条件。サポートされている条件のリストについては、「Filebeat: Conditions」を参照してください。条件に使用できるフィールドのリストについては、「Filebeat: Autodiscover: Generic fields」を参照してください。 条件は、次の 3 項目のリストです。
条件リストは、次の 3 項目の複数の順序をサポートします。 Filebeat order:
YML
例:
YML
Boolean logical operator (and, or, not):
YML
例:
YML
Nested conditions: 例:
YML
YML
| ||||||||||
config | |||||||||||
| |||||||||||
id | デフォルト値(fsid-${data.kubernetes.pod.name}-${data.kubernetes.container.id} )のままにします。 | ||||||||||
close_removed | デフォルト値(false )のままにします。 | ||||||||||
| デフォルト値(false )のままにします。 | ||||||||||
paths | ログファイルの完全パス名の glob パターン。1 つ以上のポッド内の複数のコンテナからログを収集する場合は、この glob パターンを変更するか、別の行に追加のパス名を追加します。 デフォルト値:
YML
例:
YML
| ||||||||||
| パーサーブロックのシンタックス:
YML
複数行のログ メッセージのパターンを指定する場合は、
YML
それ以外の場合は、次を使用します。
YML
| ||||||||||
| https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-input-filestream.html#_container を参照してください。 | ||||||||||
stream | 指定されたストリーム( | ||||||||||
format | ログの解析時に指定された形式( | ||||||||||
- multiline | メッセージが複数行にまたがる場合は、このブロックのすべてのパラメータを指定して、複数行のログメッセージの開始位置と終了位置を特定する必要があります。「Manage multiline messages」を参照してください。 YYYY-MM-DD 形式の日付またはタイムスタンプで始まる log4j、logback、または grok ログの例:
YML
JSON ログの例:
YML
| ||||||||||
type | デフォルト値(pattern )のままにします。 | ||||||||||
pattern | :複数行メッセージのパターン。これは、RE2 シンタックスの正規表現である必要があります。引用符で囲む必要があります。 | ||||||||||
match | :複数行メッセージの否定を有効または無効にします。デフォルト:false 。 | ||||||||||
negate | :複数行の分割の位置。デフォルト:after 。multiline.pattern を指定する場合は、multiline.match も指定する必要があります。 | ||||||||||
| デフォルト値(true )のままにします。 | ||||||||||
processors | |||||||||||
- copy_fields | 変更しないでください。
YML
| ||||||||||
| この 変更しないでください。
YML
| ||||||||||
| |||||||||||
| Required. ログの「名前空間」とソースの論理グループを指定します。機密データのマスキングルールは、このパラメータの値に一致する範囲にのみ適用されます。このパラメータを指定しない場合、この構成で取り込まれたログメッセージに含まれる機密データをマスクすることはできません。詳細については、機密データのマスキングを参照してください。 シンタックス:
共通取り込みサービス(CIS)エンドポイントからの Kubernetes ログの例:
YML
| ||||||||||
| このコンテナからの単一行ログのログタイプと単一行メッセージのパターン。 ロギング構成ファイル(通常は
Log4j ログの例:
YML
Logback ログの例:
YML
タイムスタンプログの例: この例では、
例:
YML
JSON ログの例: 「JSON ログの詳細設定」を参照してください。少なくとも、
YML
Grok ログの例: Grok ログの詳細設定を参照してください。
YML
| ||||||||||
| 複数のパーサーを適用します。 縮小するには、Code Beautify などのツールを使用します。二重エスケープするには、JSON formatter などのツールを使用します。
YML
縮小して二重エスケープする前の例:
YML
縮小して二重エスケープした後の例:
YML
| ||||||||||
| 各 Grok ログメッセージにサブパーサーを適用します。サブパーサーは、Grok ログメッセージのさまざまな部分からより多くのフィールドを抽出するのに役立ちます。たとえば、Grok パーサーを使用してフィールドを抽出して名前を付けた後、その名前付きフィールドを JSON パーサーで解析できます。 この設定は、
縮小するには、Code Beautify などのツールを使用します。二重エスケープするには、JSON formatter などのツールを使用します。
YML
縮小して二重エスケープする前の例:
YML
縮小して二重エスケープした後の例:
YML
|
appdynamics-cloud-k8s-monitoring.logCollectorConfig.filebeatYaml.processors
このセクションは、プロセッサの定義と構成用です。Filebeat については、「Filter and enhance data with processors」を参照してください。
パラメータ | 説明 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
| 変更しないでください。 | ||||||||||
- add_kubernetes_metadata: | 変更しないでください。 | ||||||||||
- rename: | 変更しないでください。
YML
| ||||||||||
- add_fields: | |||||||||||
| クラスタの名前。Cisco Cloud Observability に表示されているクラスタ名と一致する必要があります。 例:
YML
| ||||||||||
target: k8s fields: cluster.id | クラスタの ID。次のコマンドを実行して、クラスタ ID を取得できます。
BASH
例:
YML
| ||||||||||
- add_fields: | |||||||||||
| 変更しないでください。 例:
YML
| ||||||||||
- add_fields: | |||||||||||
| 変更しないでください。
YML
| ||||||||||
| 変更しないでください。
YML
| ||||||||||
- drop_fields: | |||||||||||
fields: <list> ignore_missing: <true_or_false> | Cisco Cloud Observability にエクスポートしないフィールドのリスト。 例:
YML
|
appdynamics-cloud-k8s-monitoring.logCollectorConfig.filebeatYaml.output.otlploggrpc RENAMED
このセクションは、gRPC または HTTP のいずれかを介して OpenTelemetry Line Protocol(OTLP)ログデータモデルを使用して、OTLP レシーバに直接 Filebeat ログの OTLP 出力を構成します。
パラメータ | 説明 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
| 変更しないでください。
YML
| ||||||||||
hosts | OTLP 受信側エンドポイント。デフォルトは | ||||||||||
ssl.enabled | OTLP レシーバへの Filebeat ログのエクスポートで SSL 通信を有効または無効にします。ここで SSL を有効または無効にしても、 例:
YML
| ||||||||||
ssl.certificate_authorities | ルート CA 証明書のリスト。 Linux の例:
YML
Windows の例:
YML
| ||||||||||
ssl.certificate | SSL クライアント認証の証明書のフルパス名。 Linux の例:
YML
Windows の例:
YML
| ||||||||||
ssl.key | プライベートクライアント証明書の SSL キーのフルパス名。 Linux の例:
YML
Windows の例:
YML
| ||||||||||
protocol | エクスポートに使用するプロトコル。有効な値:http 、grpc 。デフォルト:grpc 。 | ||||||||||
| |||||||||||
wait_for_ready | 壊れた接続または到達不能なサーバーで RPC が試行されたときに実行するアクションを構成します。有効な値: false で接続が TRANSIENT_FAILURE 状態の場合、RPC はすぐに失敗します。それ以外の場合、RPC クライアントは、接続が使用可能になるまで(または呼び出しがキャンセルされるかタイムアウトになるまで)呼び出しをブロックし、一時的なエラーが原因で失敗した場合は呼び出しを再試行します。 protocol が grpc の場合は、データがワイヤに書き込まれた場合、サーバーがデータを処理しなかったことを示さない限り、再試行は行われません。「gRPC Wait for Ready Semantics」を参照してください。 | ||||||||||
| 単一のバッチで一緒に送信されるログレコードの数。これにより、パフォーマンスが向上します。デフォルトおよび強く推奨される値: 1000 。 ベストプラクティスは、 | ||||||||||
| パブリッシュされる OTLP ログパケット(バッチに存在するすべてのログレコードを含む)のバイト数が Strongly recommended value:
| ||||||||||
|
要約ログの例:
CODE
|
appdynamics-cloud-k8s-monitoring.logCollectorConfig.filebeatYaml.filebeat.registry
このセクションには、filebeat.registry.path
と filebeat.registry.file_permissions
の 2 つのキーがあります。
パラメータ | 説明 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
| Filebeat レジストリファイル名。変更しないでください。 例:
YML
| ||||||||||
filebeat.registry.file_permissions | Filebeat レジストリファイルの権限。変更しないでください。 例:
YML
|
appdynamics-cloud-k8s-monitoring.logCollectorConfig.filebeatYaml.path.data
このセクションでは、Filebeat がレジストリファイルを検索する場所を構成します。「Configure project paths」を参照してください。
パラメータ | 説明 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
| Filebeat レジストリのマウント場所。この場所は固定されていて、更新するべきではありませんが、この設定が 以下のコードスニペットは、追加する場所を正確に理解できるように、隣接する行のコンテキストに新しい行を示しています。 Linux の例:
YML
Windows の例:
YML
|
appdynamics-cloud-k8s-monitoring.logCollectorConfig.filebeatYaml.logging
このセクションでは、Filebeat アクティビティをログに記録するようにログコレクタを構成します。
パラメータ | 説明 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
| ロギングレベル。有効な値: | ||||||||||
to_files | ファイルへの Filebeat ログの書き込みを有効または無効にします。有効な値:true 、false 。デフォルト:false 。 | ||||||||||
files | |||||||||||
path | ログファイルへのパス。デフォルトでは60000。 /opt/appdynamics/logcollector-agent/log | ||||||||||
name | ログファイルのプレフィックス。デフォルトでは60000。 lca-log | ||||||||||
keepfiles | Filebeat ロギングが有効になっている場合に保持するログファイルの数。デフォルト: | ||||||||||
permissions | ログファイルに対するファイル権限。デフォルトでは60000。 0640 | ||||||||||
selectors | 一致するコンポーネントのみにロギングを制限するセレクタ(フィルタ)。有効な値: | ||||||||||
metrics | |||||||||||
enabled | メトリックのロギングを有効または無効にします。有効な値:true 、false 。デフォルト:false 。true の場合は、logging.files.enabled が true の場合にログコレクタはメトリックをログファイルに書き込み、logging.files.enabled が false の場合にコンソールに書き込みます。 | ||||||||||
period | メトリック収集の頻度。有効な値:0-99s 、0-99m 。デフォルト:30s (30 秒)。logging.metrics.enabled が false の場合は無視されます。 |
appdynamics-cloud-k8s-monitoring.logCollectorConfig.filebeatYaml.monitoring
このセクションは、メトリックをログに記録するようにログコレクタを構成するためのものです。
パラメータ | 説明 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
| ログコレクタメトリックのバックエンドへのエクスポートを有効または無効にします。デフォルト: | ||||||||||
| このセクションには、gRPC または HTTP API のいずれかを介して、OTLP メトリックデータモデルを使用して、ログコレクタ独自のメトリックを OTLP レシーバに直接エクスポートするための設定が含まれています。 | ||||||||||
endpoint | OTLP 受信側エンドポイント。デフォルトは | ||||||||||
protocol | エクスポートに使用するプロトコル。有効な値:http 、grpc 。デフォルト:grpc 。 | ||||||||||
collect_period | 内部収集期間。デフォルト:10s 。 | ||||||||||
report_period | OTLP バックエンドへのレポート期間。デフォルト:60s 。 | ||||||||||
resource_attrs | メトリックパケットに追加されるリソース属性のリスト。デフォルト:なし(空のリスト)。 例:
YML
| ||||||||||
k8s.cluster.name | クラスタ名。 例:
YML
| ||||||||||
k8s.pod.name: "${POD_NAME}" | ポッド名。変更しないでください。 例:
YML
| ||||||||||
metrics | キャプチャするメトリックのリスト。このリストが空の場合、ログコレクタはすべてのメトリックをキャプチャします。このパラメータを省略すると、ログコレクタは、例のデフォルトのメトリックリストをキャプチャします。 例:
YML
| ||||||||||
retry | メトリックバックエンドへのエクスポートが失敗したときに使用されるメトリックエクスポータの再試行設定。 | ||||||||||
enabled | 失敗したバッチの再試行を有効または無効にします。有効な値:true 、false 。デフォルト:false 。 | ||||||||||
initial_interval | 最初の失敗後、再試行する前に待機する時間。単位サフィックス付きの int64 として指定します。たとえば、500ms のようになります。 | ||||||||||
max_interval | 連続する失敗間の最大待機時間。単位サフィックス付きの int64 として指定します。たとえば、500ms のようになります。この値に達すると、連続した再試行間の遅延は常にこの値になります。 | ||||||||||
max_elapsed_time | リクエストまたはバッチの送信にかかった最大時間(再試行を含む)。この値に達すると、データは破棄されます。 | ||||||||||
ssl.enabled | OTLP レシーバへの Filebeat メトリックのエクスポートで SSL 通信を有効または無効にします。ここで SSL を有効または無効にしても、 |
設定例
global:
clusterName: <ClusterName>
appdynamics-otel-collector:
clientId: <client-id>
clientSecret: <client-secret>
endpoint: <endpoint>
tokenUrl: <token-url>
spec:
image: <image-url>
imagePullPolicy: IfNotPresent
config:
exporters:
logging:
loglevel: debug
appdynamics-cloud-k8s-monitoring:
install:
logCollector: true
defaultInfraCollectors: false
clustermon: false
clustermonPod:
image: <image-url>
nodeSelector:
kubernetes.io/os: linux
inframonPod:
image: <image-url>
nodeSelector:
kubernetes.io/os: linux
logCollectorPod:
imagePullPolicy: IfNotPresent
logCollectorConfig:
filebeatYaml: |-
filebeat.autodiscover:
providers:
- type: kubernetes
node: ${NODE_NAME}
labels.dedot: false
annotations.dedot: false
hints.enabled: true
hints.default_config.enabled: false
templates:
- condition:
equals:
kubernetes.container.name: log-generator-logback
config:
- type: filestream
id: fsid-${data.kubernetes.pod.name}-${data.kubernetes.container.id}
close_removed: false
clean_removed: false
paths:
- /var/log/containers/${data.kubernetes.pod.name}*${data.kubernetes.container.id}.log
parsers:
- container:
stream: all
format: auto
- multiline:
type: pattern
pattern: "^[0-9]{4}"
negate: true
match: after
prospector.scanner.symlinks: true
processors:
- add_fields:
target: appd
fields:
log.format: logs:logback_logs
- add_fields:
target: _message_parser
fields:
type: logback
pattern: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"
processors:
- add_cloud_metadata: ~
- add_kubernetes_metadata:
in_cluster: true
host: ${NODE_NAME}
matchers:
- logs_path:
logs_path: "/var/log/containers/"
- 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
- 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
- add_fields:
target: k8s
fields:
cluster.name: <ClusterName>
- add_fields:
target: k8s
fields:
cluster.id: <ClusterId>
- add_fields:
target: source
fields:
name: log-agent
- add_fields:
target: telemetry
fields:
sdk.name: log-agent
- add_fields:
target: os
fields:
type: linux
- script:
lang: javascript
source: >
function process(event) {
var podUID = event.Get("k8s.pod.uid");
if (podUID) {
event.Put("internal.container.encapsulating_object_id", "<ClusterId>:" + podUID);
}
return event;
}
- drop_fields:
fields: ["agent", "stream", "ecs", "input", "orchestrator", "k8s.annotations.appdynamics", "k8s.labels", "k8s.node.labels", "cloud"]
ignore_missing: true
output.otlploggrpc:
include_resources:
- k8s
- source
- host
- container
- log
- telemetry
- internal
- os
hosts: ["${APPD_OTELCOL_GRPC_RECEIVER_HOST}:14317"]
worker: 1
max_bytes: 1e+06
ssl.enabled: false
wait_for_ready: true
batch_size: 1000
summary_debug_logs_interval: 10s
filebeat.registry.path: registry1
filebeat.registry.file_permissions: 0640
path.data: /opt/appdynamics/logcollector-agent/data
logging:
level: info
to_files: false
files:
path: /opt/appdynamics/logcollector-agent/log
name: lca-log
keepfiles: 5
permissions: 0640
selectors: []
metrics:
enabled: false
period: 30s
monitoring:
enabled: true
otlpmetric:
endpoint: ${APPD_OTELCOL_GRPC_RECEIVER_HOST}:${APPD_OTELCOL_GRPC_RECEIVER_PORT}
protocol: grpc
collect_period: 30s
report_period:
resource_attrs:
k8s.cluster.name: "<ClusterName>"
k8s.cluster.id: "<ClusterId>"
k8s.pod.name: "${POD_NAME}"
k8s.pod.uid: "${POD_UID}"
service.instance.id: "${POD_UID}"
service.version: "23.4.0-567"
source.name: "log-agent"
service.namespace: "log-agent"
service.name: "log-collector-agent"
metrics:
- beat.memstats.memory_alloc
- filebeat.events.active
- filebeat.harvester.running
- filebeat.harvester.skipped
- filebeat.input.log.files.truncated
- libbeat.output.read.errors
- libbeat.output.write.bytes
- libbeat.output.write.errors
- system.load.norm.5
- system.load.norm.15
- libbeat.pipeline.events.filtered
retry:
enabled: true
initial_interval: 1s
max_interval: 1m
max_elapsed_time: 5m
ssl.enabled: false
global:
clusterName: <ClusterName>
appdynamics-otel-collector:
clientId: <client-id>
clientSecret: <client-secret>
endpoint: <endpoint>
tokenUrl: <token-url>
spec:
image: <image-url>
imagePullPolicy: IfNotPresent
config:
exporters:
logging:
loglevel: debug
appdynamics-cloud-k8s-monitoring:
install:
logCollector: true
defaultInfraCollectors: false
clustermon: false
clustermonPod:
image: <image-url>
nodeSelector:
kubernetes.io/os: linux
inframonPod:
image: <image-url>
nodeSelector:
kubernetes.io/os: linux
logCollectorPod:
imagePullPolicy: IfNotPresent
env:
linux:
image: <image-url>
logCollectorConfig:
os: [linux]
env:
linux:
filebeatYaml: |-
filebeat.autodiscover:
providers:
- type: kubernetes
node: ${NODE_NAME}
labels.dedot: false
annotations.dedot: false
hints.enabled: true
hints.default_config.enabled: false
templates:
- condition:
equals:
kubernetes.container.name: log-generator-logback
config:
- type: filestream
id: fsid-${data.kubernetes.pod.name}-${data.kubernetes.container.id}
close_removed: false
clean_removed: false
paths:
- /var/log/containers/${data.kubernetes.pod.name}*${data.kubernetes.container.id}.log
parsers:
- container:
stream: all
format: auto
- multiline:
type: pattern
pattern: "^[0-9]{4}"
negate: true
match: after
prospector.scanner.symlinks: true
processors:
- add_fields:
target: appd
fields:
log.format: logs:logback_logs
- add_fields:
target: _message_parser
fields:
type: logback
pattern: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"
processors:
- add_cloud_metadata: ~
- add_kubernetes_metadata:
in_cluster: true
host: ${NODE_NAME}
matchers:
- logs_path:
logs_path: "/var/log/containers/"
- 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
- 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
- add_fields:
target: k8s
fields:
cluster.name: <ClusterName>
- add_fields:
target: k8s
fields:
cluster.id: <ClusterId>
- add_fields:
target: source
fields:
name: log-agent
- add_fields:
target: telemetry
fields:
sdk.name: log-agent
- add_fields:
target: os
fields:
type: linux
- script:
lang: javascript
source: >
function process(event) {
var podUID = event.Get("k8s.pod.uid");
if (podUID) {
event.Put("internal.container.encapsulating_object_id", "<ClusterId>:" + podUID);
}
return event;
}
- drop_fields:
fields: ["agent", "stream", "ecs", "input", "orchestrator", "k8s.annotations.appdynamics", "k8s.labels", "k8s.node.labels", "cloud"]
ignore_missing: true
output.otlploggrpc:
include_resources:
- k8s
- source
- host
- container
- log
- telemetry
- internal
- os
hosts: ["${APPD_OTELCOL_GRPC_RECEIVER_HOST}:14317"]
worker: 1
max_bytes: 1e+06
ssl.enabled: false
wait_for_ready: true
batch_size: 1000
summary_debug_logs_interval: 10s
filebeat.registry.path: registry1
filebeat.registry.file_permissions: 0640
path.data: /opt/appdynamics/logcollector-agent/data
logging:
level: info
to_files: false
files:
path: /opt/appdynamics/logcollector-agent/log
name: lca-log
keepfiles: 5
permissions: 0640
selectors: []
metrics:
enabled: false
period: 30s
monitoring:
enabled: true
otlpmetric:
endpoint: ${APPD_OTELCOL_GRPC_RECEIVER_HOST}:${APPD_OTELCOL_GRPC_RECEIVER_PORT}
protocol: grpc
collect_period: 30s
report_period:
resource_attrs:
k8s.cluster.name: "<ClusterName>"
k8s.cluster.id: "<ClusterId>"
k8s.pod.name: "${POD_NAME}"
k8s.pod.uid: "${POD_UID}"
service.instance.id: "${POD_UID}"
service.version: "23.4.0-567"
source.name: "log-agent"
service.namespace: "log-agent"
service.name: "log-collector-agent"
metrics:
- beat.memstats.memory_alloc
- filebeat.events.active
- filebeat.harvester.running
- filebeat.harvester.skipped
- filebeat.input.log.files.truncated
- libbeat.output.read.errors
- libbeat.output.write.bytes
- libbeat.output.write.errors
- system.load.norm.5
- system.load.norm.15
- libbeat.pipeline.events.filtered
retry:
enabled: true
initial_interval: 1s
max_interval: 1m
max_elapsed_time: 5m
ssl.enabled: false
global:
clusterName: <ClusterName>
appdynamics-otel-collector:
clientId: <client-id>
clientSecret: <client-secret>
endpoint: <endpoint>
tokenUrl: <token-url>
spec:
image: <image-url>
imagePullPolicy: IfNotPresent
config:
exporters:
logging:
loglevel: debug
appdynamics-cloud-k8s-monitoring:
install:
logCollector: true
defaultInfraCollectors: false
clustermon: false
clustermonPod:
image: <image-url>
nodeSelector:
kubernetes.io/os: linux
inframonPod:
image: <image-url>
nodeSelector:
kubernetes.io/os: linux
logCollectorPod:
imagePullPolicy: IfNotPresent
env:
windows:
image: <image-url>
logCollectorConfig:
os: [windows]
env:
windows:
filebeatYaml: |-
filebeat.autodiscover:
providers:
- type: kubernetes
node: ${NODE_NAME}
labels.dedot: false
annotations.dedot: false
hints.enabled: true
hints.default_config.enabled: false
templates:
- condition:
equals:
kubernetes.container.name: log-generator-logback
config:
- type: filestream
id: fsid-${data.kubernetes.pod.name}-${data.kubernetes.container.id}
close_removed: false
clean_removed: false
paths:
- C:/var/log/containers/${data.kubernetes.pod.name}*${data.kubernetes.container.id}.log
parsers:
- container:
stream: all
format: auto
- multiline:
type: pattern
pattern: "^[0-9]{4}"
negate: true
match: after
prospector.scanner.symlinks: true
processors:
- add_fields:
target: appd
fields:
log.format: logs:logback_logs
- add_fields:
target: _message_parser
fields:
type: logback
pattern: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"
processors:
- add_cloud_metadata: ~
- add_kubernetes_metadata:
in_cluster: true
host: ${NODE_NAME}
matchers:
- logs_path:
logs_path: "C:/ProgramData/docker/containers/"
- 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
- 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
- add_fields:
target: k8s
fields:
cluster.name: <ClusterName>
- add_fields:
target: k8s
fields:
cluster.id: <ClusterId>
- add_fields:
target: source
fields:
name: log-agent
- add_fields:
target: telemetry
fields:
sdk.name: log-agent
- add_fields:
target: os
fields:
type: windows
- script:
lang: javascript
source: >
function process(event) {
var podUID = event.Get("k8s.pod.uid");
if (podUID) {
event.Put("internal.container.encapsulating_object_id", "<ClusterId>:" + podUID);
}
return event;
}
- drop_fields:
fields: ["agent", "stream", "ecs", "input", "orchestrator", "k8s.annotations.appdynamics", "k8s.labels", "k8s.node.labels", "cloud"]
ignore_missing: true
output.otlploggrpc:
include_resources:
- k8s
- source
- host
- container
- log
- telemetry
- internal
- os
hosts: ["${APPD_OTELCOL_GRPC_RECEIVER_HOST}:14317"]
worker: 1
max_bytes: 1e+06
ssl.enabled: false
wait_for_ready: true
batch_size: 1000
summary_debug_logs_interval: 10s
filebeat.registry.path: registry1
filebeat.registry.file_permissions: 0640
path.data: C:/ProgramData/filebeat/data
logging:
level: info
to_files: false
files:
path: C:/ProgramData/filebeat/log
name: lca-log
keepfiles: 5
permissions: 0640
selectors: []
metrics:
enabled: false
period: 30s
monitoring:
enabled: true
otlpmetric:
endpoint: ${APPD_OTELCOL_GRPC_RECEIVER_HOST}:${APPD_OTELCOL_GRPC_RECEIVER_PORT}
protocol: grpc
collect_period: 30s
report_period:
resource_attrs:
k8s.cluster.name: "<ClusterName>"
k8s.cluster.id: "<ClusterId>"
k8s.pod.name: "${POD_NAME}"
k8s.pod.uid: "${POD_UID}"
service.instance.id: "${POD_UID}"
service.version: "23.4.0-567"
source.name: "log-agent"
service.namespace: "log-agent"
service.name: "log-collector-agent"
metrics:
- beat.memstats.memory_alloc
- filebeat.events.active
- filebeat.harvester.running
- filebeat.harvester.skipped
- filebeat.input.log.files.truncated
- libbeat.output.read.errors
- libbeat.output.write.bytes
- libbeat.output.write.errors
- system.load.norm.5
- system.load.norm.15
- libbeat.pipeline.events.filtered
retry:
enabled: true
initial_interval: 1s
max_interval: 1m
max_elapsed_time: 5m
ssl.enabled: false
global:
clusterName: <ClusterName>
appdynamics-otel-collector:
clientId: <client-id>
clientSecret: <client-secret>
endpoint: <endpoint>
tokenUrl: <token-url>
spec:
image: <image-url>
imagePullPolicy: IfNotPresent
config:
exporters:
logging:
loglevel: debug
appdynamics-cloud-k8s-monitoring:
install:
logCollector: true
defaultInfraCollectors: false
clustermon: false
clustermonPod:
image: <image-url>
nodeSelector:
kubernetes.io/os: linux
inframonPod:
image: <image-url>
nodeSelector:
kubernetes.io/os: linux
logCollectorPod:
imagePullPolicy: IfNotPresent
env:
windows:
image: <image-url>
linux:
image: <image-url>
logCollectorConfig:
os: [linux, windows]
env:
linux:
filebeatYaml: |-
filebeat.autodiscover:
providers:
- type: kubernetes
node: ${NODE_NAME}
labels.dedot: false
annotations.dedot: false
hints.enabled: true
hints.default_config.enabled: false
templates:
- condition:
equals:
kubernetes.container.name: log-generator-logback
config:
- type: filestream
id: fsid-${data.kubernetes.pod.name}-${data.kubernetes.container.id}
close_removed: false
clean_removed: false
paths:
- /var/log/containers/${data.kubernetes.pod.name}*${data.kubernetes.container.id}.log
parsers:
- container:
stream: all
format: auto
- multiline:
type: pattern
pattern: "^[0-9]{4}"
negate: true
match: after
prospector.scanner.symlinks: true
processors:
- add_fields:
target: appd
fields:
log.format: logs:logback_logs
- add_fields:
target: _message_parser
fields:
type: logback
pattern: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"
processors:
- add_cloud_metadata: ~
- add_kubernetes_metadata:
in_cluster: true
host: ${NODE_NAME}
matchers:
- logs_path:
logs_path: "/var/log/containers/"
- 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
- 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
- add_fields:
target: k8s
fields:
cluster.name: <ClusterName>
- add_fields:
target: k8s
fields:
cluster.id: <ClusterId>
- add_fields:
target: source
fields:
name: log-agent
- add_fields:
target: telemetry
fields:
sdk.name: log-agent
- add_fields:
target: os
fields:
type: linux
- script:
lang: javascript
source: >
function process(event) {
var podUID = event.Get("k8s.pod.uid");
if (podUID) {
event.Put("internal.container.encapsulating_object_id", "<ClusterId>:" + podUID);
}
return event;
}
- drop_fields:
fields: ["agent", "stream", "ecs", "input", "orchestrator", "k8s.annotations.appdynamics", "k8s.labels", "k8s.node.labels", "cloud"]
ignore_missing: true
output.otlploggrpc:
include_resources:
- k8s
- source
- host
- container
- log
- telemetry
- internal
- os
hosts: ["${APPD_OTELCOL_GRPC_RECEIVER_HOST}:14317"]
worker: 1
max_bytes: 1e+06
ssl.enabled: false
wait_for_ready: true
batch_size: 1000
summary_debug_logs_interval: 10s
filebeat.registry.path: registry1
filebeat.registry.file_permissions: 0640
path.data: /opt/appdynamics/logcollector-agent/data
logging:
level: info
to_files: false
files:
path: /opt/appdynamics/logcollector-agent/log
name: lca-log
keepfiles: 5
permissions: 0640
selectors: []
metrics:
enabled: false
period: 30s
monitoring:
enabled: true
otlpmetric:
endpoint: ${APPD_OTELCOL_GRPC_RECEIVER_HOST}:${APPD_OTELCOL_GRPC_RECEIVER_PORT}
protocol: grpc
collect_period: 30s
report_period:
resource_attrs:
k8s.cluster.name: "<ClusterName>"
k8s.cluster.id: "<ClusterId>"
k8s.pod.name: "${POD_NAME}"
k8s.pod.uid: "${POD_UID}"
service.instance.id: "${POD_UID}"
service.version: "23.4.0-567"
source.name: "log-agent"
service.namespace: "log-agent"
service.name: "log-collector-agent"
metrics:
- beat.memstats.memory_alloc
- filebeat.events.active
- filebeat.harvester.running
- filebeat.harvester.skipped
- filebeat.input.log.files.truncated
- libbeat.output.read.errors
- libbeat.output.write.bytes
- libbeat.output.write.errors
- system.load.norm.5
- system.load.norm.15
- libbeat.pipeline.events.filtered
retry:
enabled: true
initial_interval: 1s
max_interval: 1m
max_elapsed_time: 5m
ssl.enabled: false
windows:
filebeatYaml: |-
filebeat.autodiscover:
providers:
- type: kubernetes
node: ${NODE_NAME}
labels.dedot: false
annotations.dedot: false
hints.enabled: true
hints.default_config.enabled: false
templates:
- condition:
equals:
kubernetes.container.name: log-generator-logback
config:
- type: filestream
id: fsid-${data.kubernetes.pod.name}-${data.kubernetes.container.id}
close_removed: false
clean_removed: false
paths:
- C:/var/log/containers/${data.kubernetes.pod.name}*${data.kubernetes.container.id}.log
parsers:
- container:
stream: all
format: auto
- multiline:
type: pattern
pattern: "^[0-9]{4}"
negate: true
match: after
prospector.scanner.symlinks: true
processors:
- add_fields:
target: appd
fields:
log.format: logs:logback_logs
- add_fields:
target: _message_parser
fields:
type: logback
pattern: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"
processors:
- add_cloud_metadata: ~
- add_kubernetes_metadata:
in_cluster: true
host: ${NODE_NAME}
matchers:
- logs_path:
logs_path: "C:/ProgramData/docker/containers/"
- 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
- 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
- add_fields:
target: k8s
fields:
cluster.name: <ClusterName>
- add_fields:
target: k8s
fields:
cluster.id: <ClusterId>
- add_fields:
target: source
fields:
name: log-agent
- add_fields:
target: telemetry
fields:
sdk.name: log-agent
- add_fields:
target: os
fields:
type: windows
- script:
lang: javascript
source: >
function process(event) {
var podUID = event.Get("k8s.pod.uid");
if (podUID) {
event.Put("internal.container.encapsulating_object_id", "<ClusterId>:" + podUID);
}
return event;
}
- drop_fields:
fields: ["agent", "stream", "ecs", "input", "orchestrator", "k8s.annotations.appdynamics", "k8s.labels", "k8s.node.labels", "cloud"]
ignore_missing: true
output.otlploggrpc:
include_resources:
- k8s
- source
- host
- container
- log
- telemetry
- internal
- os
hosts: ["${APPD_OTELCOL_GRPC_RECEIVER_HOST}:14317"]
worker: 1
max_bytes: 1e+06
ssl.enabled: false
wait_for_ready: true
batch_size: 1000
summary_debug_logs_interval: 10s
filebeat.registry.path: registry1
filebeat.registry.file_permissions: 0640
path.data: C:/ProgramData/filebeat/data
logging:
level: info
to_files: false
files:
path: C:/ProgramData/filebeat/log
name: lca-log
keepfiles: 5
permissions: 0640
selectors: []
metrics:
enabled: false
period: 30s
monitoring:
enabled: true
otlpmetric:
endpoint: ${APPD_OTELCOL_GRPC_RECEIVER_HOST}:${APPD_OTELCOL_GRPC_RECEIVER_PORT}
protocol: grpc
collect_period: 30s
report_period:
resource_attrs:
k8s.cluster.name: "<ClusterName>"
k8s.cluster.id: "<ClusterId>"
k8s.pod.name: "${POD_NAME}"
k8s.pod.uid: "${POD_UID}"
service.instance.id: "${POD_UID}"
service.version: "23.4.0-567"
source.name: "log-agent"
service.namespace: "log-agent"
service.name: "log-collector-agent"
metrics:
- beat.memstats.memory_alloc
- filebeat.events.active
- filebeat.harvester.running
- filebeat.harvester.skipped
- filebeat.input.log.files.truncated
- libbeat.output.read.errors
- libbeat.output.write.bytes
- libbeat.output.write.errors
- system.load.norm.5
- system.load.norm.15
- libbeat.pipeline.events.filtered
retry:
enabled: true
initial_interval: 1s
max_interval: 1m
max_elapsed_time: 5m
ssl.enabled: false
env
設定は必要ありません。
global:
clusterName: sample-cluster
appdynamics-otel-collector:
clientId: <client-id>
clientSecret: <client-secret>
endpoint: <endpoint>
tokenUrl: <token-url>
spec:
image: <image-url>
imagePullPolicy: IfNotPresent
config:
exporters:
logging:
loglevel: debug
appdynamics-cloud-k8s-monitoring:
install:
logCollector: true
defaultInfraCollectors: false
clustermon: false
clustermonPod:
image: <image-url>
nodeSelector:
kubernetes.io/os: linux
inframonPod:
image: <image-url>
nodeSelector:
kubernetes.io/os: linux
logCollectorPod:
imagePullPolicy: IfNotPresent
env:
linux:
image: <image-url>
windows:
image: <image-url>
logCollectorConfig:
os: [linux,windows]
filebeatYaml: |-
filebeat.autodiscover:
providers:
- type: kubernetes
node: ${NODE_NAME}
labels.dedot: false
annotations.dedot: false
hints.enabled: true
hints.default_config.enabled: false
templates:
- condition:
equals:
kubernetes.container.name: log-generator-logback
config:
- type: container
close_removed: false
paths:
- /var/log/containers/${data.kubernetes.pod.name}*${data.kubernetes.container.id}.log
multiline.pattern: '^[[:space:]]+(at|\.{3})[[:space:]]+\b|^Caused by:'
multiline.negate: false
multiline.match: after
processors:
- copy_fields:
fields:
- from: kubernetes.pod.name
to: fields.k8s.pod.name
fail_on_error: false
ignore_missing: true
- copy_fields:
fields:
- from: kubernetes.deployment.name
to: fields.k8s.workload.name
fail_on_error: false
ignore_missing: true
- add_fields:
target: _message_parser
fields:
type: logback
pattern: "%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level %m %n"
processors:
- add_cloud_metadata: ~
- add_kubernetes_metadata:
in_cluster: true
host: ${NODE_NAME}
matchers:
- logs_path:
logs_path: "/var/log/containers/"
- 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
- add_fields:
target: k8s
fields:
cluster.name: sample-cluster
- add_fields:
target: source
fields:
name: log-agent
- add_fields:
target: telemetry
fields:
sdk.name: log-agent
- script:
lang: javascript
source: >
function process(event) {
var podUID = event.Get("k8s.pod.uid");
if (podUID) {
event.Put("internal.container.encapsulating_object_id", "sample-cluster:" + podUID);
}
return event;
}
- drop_fields:
fields: ["agent", "stream", "ecs", "input", "orchestrator", "k8s.annotations.appdynamics", "k8s.labels", "k8s.node.labels", "cloud"]
ignore_missing: true
output.otlploggrpc:
include_resources:
- k8s
- source
- host
- container
- log
- telemetry
- internal
- os
hosts: ["${APPD_OTELCOL_GRPC_RECEIVER_HOST}:${APPD_OTELCOL_GRPC_RECEIVER_PORT}"]
worker: 1
max_bytes:
#hosts: ["otel-collector-local-service.appdynamics.svc.cluster.local:8080"]
ssl.enabled: false
protocol: grpc
wait_for_ready: true
batch_size: 100
summary_debug_logs_interval: 10s
filebeat.registry.path: registry1
filebeat.registry.file_permissions: 0640
path.data: /opt/appdynamics/logcollector-agent/data
logging:
level: debug
to_files: false
files:
path: /opt/appdynamics/logcollector-agent/log
name: lca-log
keepfiles: 5
permissions: 0640
selectors: []
metrics:
enabled: false
period: 30s
filebeat.autodiscover:
providers:
- type: kubernetes
node: ${NODE_NAME}
labels.dedot: false
annotations.dedot: false
hints.enabled: true
hints.default_config.enabled: false
templates:
- condition:
equals:
kubernetes.container.name: log-generator-logback
config:
type: filestream
id: fsid-${data.kubernetes.pod.name}-${data.kubernetes.container.id}
close_removed: false
clean_removed: false
paths:
- /var/log/containers/${data.kubernetes.pod.name}*${data.kubernetes.container.id}.log
parsers:
- container:
stream: all
format: auto
- multiline:
type: pattern:
pattern: '^\d{4}-\d{2}-\d{2}'
match: after
negate: true
prospector.scanner.symlinks: true
processors:
- copy_fields:
fields:
- from: kubernetes.pod.name
to: fields.k8s.pod.name
fail_on_error: false
ignore_missing: true
- copy_fields:
fields:
- from: kubernetes.deployment.name
to: fields.k8s.workload.name
fail_on_error: false
ignore_missing: true
- add_fields:
target: _message_parser
fields:
type: logback
pattern: "%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level %m %n"
processors:
- add_cloud_metadata: ~
- add_kubernetes_metadata:
in_cluster: true
host: ${NODE_NAME}
matchers:
- logs_path:
logs_path: "/var/log/containers/"
- 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
- add_fields:
target: k8s
fields:
cluster.name: sample-cluster
- add_fields:
target: source
fields:
name: log-agent
- add_fields:
target: telemetry
fields:
sdk.name: log-agent
- script:
lang: javascript
source: >
function process(event) {
var podUID = event.Get("k8s.pod.uid");
if (podUID) {
event.Put("internal.container.encapsulating_object_id", "sample-cluster:" + podUID);
}
return event;
}
- drop_fields:
fields: ["agent", "stream", "ecs", "input", "orchestrator", "k8s.annotations.appdynamics", "k8s.labels", "k8s.node.labels", "cloud"]
ignore_missing: true
output.otlplog:
include_resources:
- k8s
- source
- host
- container
- log
- telemetry
- internal
hosts: ["${APPD_OTELCOL_GRPC_RECEIVER_HOST}:14317"]
worker: 1
max_bytes:
#hosts: ["otel-collector-local-service.appdynamics.svc.cluster.local:8080"]
ssl.enabled: false
protocol: grpc
grpc_config:
wait_for_ready: true
batch_size: 1000
summary_debug_logs_interval: 10s
filebeat.registry.path: registry1
filebeat.registry.file_permissions: 0640
path.data: /opt/appdynamics/logcollector-agent/data
logging:
level: debug
to_files: false
files:
path: /opt/appdynamics/logcollector-agent/log
name: lca-log
keepfiles: 5
permissions: 0640
selectors: [otlplog,monitoring.otlpmetric,]
metrics:
enabled: false
period: 30s
monitoring:
enabled: true
otlpmetric:
endpoint: ${APPD_OTELCOL_GRPC_RECEIVER_HOST}:${APPD_OTELCOL_GRPC_RECEIVER_PORT}
protocol: grpc
collect_period:
report_period: 20s
resource_attrs:
k8s.cluster.name: "sample-cluster"
k8s.pod.name: "${POD_NAME}"
metrics:
- beat.memstats.memory_alloc
- filebeat.events.active
- filebeat.harvester.running
- filebeat.harvester.skipped
- filebeat.input.log.files.truncated
- libbeat.output.read.errors
- libbeat.output.write.bytes
- libbeat.output.write.errors
- system.load.norm.5
- system.load.norm.15
ssl.enabled: false
filebeat.autodiscover:
providers:
- type: kubernetes
node: ${NODE_NAME}
labels.dedot: false
annotations.dedot: false
hints.enabled: true
hints.default_config:
enabled: true
type: container
close_removed: false
paths:
- /var/log/containers/${data.kubernetes.pod.name}*${data.kubernetes.container.id}.log
multiline.pattern: ... # user provided
multiline.negate: ... # user provided
multiline.match: ... # user provided
processors:
- copy_fields:
fields:
- from: kubernetes.pod.name
to: fields.k8s.pod.name
fail_on_error: false
ignore_missing: true
- copy_fields:
fields:
- from: kubernetes.deployment.name
to: fields.k8s.workload.name
fail_on_error: false
ignore_missing: true
- add_fields:
target: _message_parser
fields:
... # user provided, based on the particular message parser used
templates:
...
processors:
...
output.otlp:
...
filebeat.registry.path: registry1
filebeat.registry.file_permissions: 0640
path.data: /opt/appdynamics/logcollector-agent/data
logging:
...
monitoring:
...
filebeat.autodiscover:
providers:
- type: kubernetes
node: ${NODE_NAME}
labels.dedot: false
annotations.dedot: false
hints.enabled: true
hints.default_config.enabled: false
templates:
- condition:
equals:
kubernetes.container.name: log-generator-logback
config:
- type: container
close_removed: false
paths:
- /var/log/containers/${data.kubernetes.pod.name}*${data.kubernetes.container.id}.log
multiline.pattern: ''
multiline.negate: false
multiline.match: after
processors:
- copy_fields:
fields:
- from: kubernetes.pod.name
to: fields.k8s.pod.name
fail_on_error: false
ignore_missing: true
- copy_fields:
fields:
- from: kubernetes.deployment.name
to: fields.k8s.workload.name
fail_on_error: false
ignore_missing: true
- add_fields:
target: _message_parser
fields:
type: logback
pattern: "%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level %m %n"
processors:
- add_cloud_metadata: ~
- add_kubernetes_metadata:
in_cluster: true
host: ${NODE_NAME}
matchers:
- logs_path:
logs_path: "/var/log/containers/"
- 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
- add_fields:
target: k8s
fields:
cluster.name: sampleCluster
- add_fields:
target: source
fields:
name: log-agent
- add_fields:
target: telemetry
fields:
sdk.name: log-agent
- script:
lang: javascript
source: >
function process(event) {
var podUID = event.Get("k8s.pod.uid");
if (podUID) {
event.Put("internal.container.encapsulating_object_id", "sampleCluster:" + podUID);
}
return event;
}
- drop_fields:
fields: ["agent", "stream", "ecs", "input", "orchestrator", "k8s.annotations.appdynamics", "k8s.labels", "k8s.node.labels", "cloud"]
ignore_missing: true
output.otlplog:
include_resources:
- k8s
- source
- host
- container
- log
- telemetry
- internal
hosts: ["${APPD_OTELCOL_GRPC_RECEIVER_HOST}:${APPD_OTELCOL_GRPC_RECEIVER_PORT}"]
#hosts: ["otel-collector-local-service.appdynamics.svc.cluster.local:8080"]
ssl.enabled: false
protocol: grpc
grpc_config:
wait_for_ready: true
batch_publish: true
batch_size: 1000
logmax: 100
ticktime: 1
enableDebugTimer: true
filebeat.registry.path: registry1
filebeat.registry.file_permissions: 0640
path.data: /opt/appdynamics/logcollector-agent/data
logging:
level: debug
to_files: false
files:
path: /opt/appdynamics/logcollector-agent/log
name: lca-log
keepfiles: 5
permissions: 0640
selectors: []
metrics:
enabled: false
period: 30s
monitoring:
enabled: true
otlp:
endpoint: "${APPD_OTELCOL_GRPC_RECEIVER_HOST}:${APPD_OTELCOL_GRPC_RECEIVER_PORT}"
protocol: grpc
collect_period:
report_period:
resource_attrs:
k8s.cluster.name: "sampleCluster"
k8s.pod.name: "${POD_NAME}"
metrics:
- beat.memstats.memory_alloc
- filebeat.events.active
- filebeat.harvester.running
- filebeat.harvester.skipped
- filebeat.input.log.files.truncated
- libbeat.output.read.errors
- libbeat.output.write.bytes
- libbeat.output.write.errors
- system.load.norm.5
- system.load.norm.15
ssl.enabled: false
filebeat.autodiscover:
providers:
- type: kubernetes
node: ${NODE_NAME}
labels.dedot: false
annotations.dedot: false
hints.enabled: true
hints.default_config.enabled: false
templates:
- condition:
equals:
kubernetes.container.name: log-generator-logback
config:
- type: container
close_removed: false
paths:
- /var/log/containers/${data.kubernetes.pod.name}*${data.kubernetes.container.id}.log
multiline.pattern: ''
multiline.negate: false
multiline.match: after
processors:
- copy_fields:
fields:
- from: kubernetes.pod.name
to: fields.k8s.pod.name
fail_on_error: false
ignore_missing: true
- copy_fields:
fields:
- from: kubernetes.deployment.name
to: fields.k8s.workload.name
fail_on_error: false
ignore_missing: true
- add_fields:
target: _message_parser
fields:
type: logback
pattern: "%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level %m %n"
processors:
- add_cloud_metadata: ~
- add_kubernetes_metadata:
in_cluster: true
host: ${NODE_NAME}
matchers:
- logs_path:
logs_path: "/var/log/containers/"
- 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
- add_fields:
target: k8s
fields:
cluster.name: sample-cluster
- add_fields:
target: source
fields:
name: log-agent
- add_fields:
target: telemetry
fields:
sdk.name: log-agent
- script:
lang: javascript
source: >
function process(event) {
var podUID = event.Get("k8s.pod.uid");
if (podUID) {
event.Put("internal.container.encapsulating_object_id", "sample-cluster:" + podUID);
}
return event;
}
- drop_fields:
fields: ["agent", "stream", "ecs", "input", "orchestrator", "k8s.annotations.appdynamics", "k8s.labels", "k8s.node.labels", "cloud"]
ignore_missing: true
output.otlplog:
codec.otlp:
resources:
- k8s
- source
- host
- container
- log
- telemetry
- internal
hosts: ["${APPD_OTELCOL_GRPC_RECEIVER_HOST}:${APPD_OTELCOL_GRPC_RECEIVER_PORT}"]
#hosts: ["otel-collector-local-service.appdynamics.svc.cluster.local:8080"]
ssl.enabled: false
protocol: grpc
grpc_config:
wait_for_ready: true
batch_publish: true
batch_size: 100
logmax: 100
ticktime: 1
enableDebugTimer: true
filebeat.registry.path: registry1
filebeat.registry.file_permissions: 0640
path.data: /opt/appdynamics/logcollector-agent/data
logging:
level: debug
to_files: false
files:
path: /opt/appdynamics/logcollector-agent/log
name: lca-log
keepfiles: 5
permissions: 0640
selectors: []
metrics:
enabled: false
period: 30s
monitoring:
enabled: true
otlp:
endpoint: "${APPD_OTELCOL_GRPC_RECEIVER_HOST}:${APPD_OTELCOL_GRPC_RECEIVER_PORT}"
protocol: grpc
collect_period:
report_period:
resource_attrs:
k8s.cluster.name: "sample-cluster"
k8s.pod.name: "${POD_NAME}"
metrics:
- beat.memstats.memory_alloc
- filebeat.events.active
- filebeat.harvester.running
- filebeat.harvester.skipped
- filebeat.input.log.files.truncated
- libbeat.output.read.errors
- libbeat.output.write.bytes
- libbeat.output.write.errors
- system.load.norm.5
- system.load.norm.15
ssl.enabled: false
OpenTelemetry™ と Kubernetes®(該当する場合)は、The Linux Foundation® の商標です。