Datadog logs(パブリックベータ) を試してみる の続きで、 Datadog でのログ管理機能(パブリックベータ版)での検証履歴です。
今回はログを送信する側での除外、置換、複数行を確認します。
目次
ログ収集設定
基本的な設定値
# 必須 - type: 入力タイプ (tcp/udp/file) # 入力タイプにより port/path のいずれか #port: tcp/udpの場合、ポート指定 path: file の場合、対象ログファイルのフルパス service: 所有サービス名 source: インテグレーション名、カスタムログの場合は任意文字列(カスタムメトリクス名に合わせるのが推奨との記載有り) # オプション sourcecategory: 絞り込み用オプション tags: タグ付け(カンマ区切り)
ログのタグには、収集対象のホストに付与されているタグも自動的に付与されます。
インテグレーションのログ収集設定
Datadog コンソール上で、設定方法と設定ファイルの例が参照できます。
- [Logs]->[Docs]
もしくは、Datadog Agent インストールした際に作成される各exampleにも記載があります。
未サポートのログ収集設定
Datadog コンソール上で、今後実装予定のインテグレーションが参照できます。
- [Logs]->[Docs]->[Server]->[Other] 等
インテグレーション追加のリクエストを送る事もできるようです。
Advanced log collection functions (収集ルール)
log_processing_rules ディレクティブでDatadogへ転送するログの詳細設定を行います。
以下、各ruleの利用例です。ログファイルは dd-agent ユーザでの読み込みが行える状態にしてあります。
exclude_at_match
除外設定です。パターンに一致するログの送信を行いません。 debug,info レベルのログは送信しない等で利用できます。
- /var/log/messages から ansible を含む行を除外する例
logs: - type: file path: /var/log/messages service: syslog source: os sourcecategory: system tags: log_type:file,rule_type:exclude_at_match log_processing_rules: - type: exclude_at_match name: exclude_ansible ## Regexp can be anything pattern: \sansible.*:\s
送受信例
- ログ例
Mar 28 hh:mm:ss ip-xxx-xxx-xxx-xxx ansible-setup: Invoked with filter=* gather_subset=['all'] fact_path=/etc/ansible/facts.d gather_timeout=10
- Datadog 側
- 除外されるため表示されない
include_at_match
ログ抽出設定です。
exclude_at_matchの逆で、パターンに一致するログのみを送信します。
例は mask_sequences の項へ記載します。
mask_sequences
パターンに一致する文字列のマスクを行います。
- /var/log/maillog から
stat=
を含む行のみを抽出、メールアドレスをマスクする例
logs: - type: file path: /var/log/maillog service: maillog source: os sourcecategory: system tags: log_type:file,rule_type:include_at_match,rule_type:mask_sequences log_processing_rules: - type: include_at_match name: include_maillog_stat ## Regexp can be anything pattern: \sstat=.*?\s - type: mask_sequences name: mask_mailaddress replace_placeholder: " to=[mask_mailaddress], " ##One pattern that contains capture groups pattern: \sto=.*?,\s
送受信例
- ログ例
Mar 28 hh:mm:ss ip-xxx-xxx-xxx-xxx sendmail[24023]: xxxxxxxx024023: to=root, ctladdr=root (0/0), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=31183, relay=[127.0.0.1] [127.0.0.1], dsn=4.0.0, stat=Deferred: Connection refused by [127.0.0.1]
- Datadog 側
multi_line
複数行を1行のログに集約します。
- jenkins.log を送信する例
- 今後実装予定のようですが、Jenkinsのログ収集は現時点ではサポートされていません。
logs: - type: file path: /var/log/jenkins/jenkins.log service: jenkins source: java sourcecategory: sourcecode tags: log_type:file,rule_type:multi_line #For multiline logs, if they start with a timestamp with format yyyy-mm-dd uncomment the below processing rule log_processing_rules: - type: multi_line pattern: \w{3}\s(0?[1-9]|[1-3][0-9]),\s\d{4} name: new_log_start_with_date
送受信例
- ログ例
Mar 28, 2018 4:53:51 PM hudson.model.AsyncPeriodicWork$1 run INFO: Started Fingerprint cleanup
- Datadog 側
StackTraceも同様
ワイルドカードでの収集は割愛。 送信イメージは掴めた気がします。