share facebook facebook twitter menu hatena pocket slack

2018.04.16 MON

Datadog Logs(パブリックベータ) ログ収集設定

WRITTEN BY 大住 孝之

Datadog logs(パブリックベータ) を試してみる の続きで、 Datadog でのログ管理機能(パブリックベータ版)での検証履歴です。

Datadog logs(パブリックベータ) を試してみる - vague memory
Datadog でのログ管理機能(パブリックベータ版)が発表されました。 Introducing logs in Datadog Datadog Agent もメジャーバージョンアップとなり、色々と変わるようなので正式リリース前に触れてみます。 ベータではありますが、現行環境へすんなり導入できるかと...

htnosm.hatenablog.com

今回はログを送信する側での除外、置換、複数行を確認します。

目次

ログ収集設定

基本的な設定値

 # 必須
  - type: 入力タイプ (tcp/udp/file)
    # 入力タイプにより port/path のいずれか
    #port: tcp/udpの場合、ポート指定
    path: file の場合、対象ログファイルのフルパス
    service: 所有サービス名
    source: インテグレーション名、カスタムログの場合は任意文字列(カスタムメトリクス名に合わせるのが推奨との記載有り)
  # オプション
    sourcecategory: 絞り込み用オプション
    tags: タグ付け(カンマ区切り)

ログのタグには、収集対象のホストに付与されているタグも自動的に付与されます。

インテグレーションのログ収集設定

Datadog コンソール上で、設定方法と設定ファイルの例が参照できます。

  • [Logs]->[Docs]

もしくは、Datadog Agent インストールした際に作成される各exampleにも記載があります。

  • /etc/datadog-agent/conf.d/apache.d/conf.yaml.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も同様

ワイルドカードでの収集は割愛。 送信イメージは掴めた気がします。

元記事はこちら

Datadog Logs(パブリックベータ) ログ収集設定

大住 孝之

構築運用担当。 個性的な面々の中で無個性という個性を打ち出していこうと画策中。

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。