ログ収集のトラブルシューティングガイド

dd-agent でログコレクターから新しいログを Datadog に送信する際に、よく障害となる問題がいくつかあります。新しいログを Datadog に送信する際に問題が発生した場合は、このページに挙げられたトラブルシューティングをお役立てください。それでも問題が解決しない場合は、 Datadog サポートまでお問い合わせください。

Agent を再起動します。

datadog-agent のコンフィギュレーションに加えられた変更は、Agent を再起動した後に反映されます。

ポート 10516 のアウトバウンドトラフィックがブロックされる

Datadog Agent は、ポート 10516 を使って TCP で Datadog にログを送信します。この接続が使用できない場合、ログは送信に失敗し、それを示すエラーが agent.log ファイルに記録されます。

OpenSSL、GnuTLS、または他の SSL/TLS クライアントを使用して、接続を手動でテストすることができます。OpenSSL の場合は、以下のコマンドを実行します。

openssl s_client -connect intake.logs.datadoghq.com:10516

GnuTLS の場合、以下のコマンドを実行します。

gnutls-cli intake.logs.datadoghq.com:10516

さらに、次のようなログを送信します。

<API_KEY> これはテストメッセージです
  • ポート 10516 を開くことを選択できない場合は、datadog.yaml に次の設定を追加して、Datadog Agent がログを転送するよう構成することができます。
logs_config:
  force_use_http: true

詳細については、HTTPS ログ転送セクションをご参照ください。

Agent のステータスをチェック

Agent のステータスコマンドをチェックすることが、問題の解決に役立つことがあります。

新しいログが書き込まれていない

Datadog Agent は、ログの収集 (ログの追跡またはリスニング) を開始して以降に書き込まれたログのみを収集します。ログ収集が適切にセットアップされているかどうかを確認する場合は、まず新しいログが書き込まれていることを確認してください。

ログファイル追跡のアクセス許可の問題

Datadog Agent は、ルートとして実行されません (一般的なベストプラクティスとして、ルートとして実行することは推奨されません)。カスタムログやインテグレーション用のログファイルを追跡するように Agent を構成する場合、Agent のユーザーがログファイルへの正しいアクセス権を持っていることを確認するために、特別な注意を払う必要があります。

オペレーティングシステムごとのデフォルトの Agent ユーザー:

オペレーティングシステムデフォルトの Agent ユーザー
Linuxdatadog-agent
MacOSdatadog-agent
Windowsddagentuser

Agent に正しい権限がない場合、Agent のステータスを確認すると、以下のエラーメッセージのいずれかが表示される場合があります。

  • The file does not exist. (ファイルが存在しません。)
  • Access is denied. (アクセスが拒否されました。)
  • Could not find any file matching pattern <path/to/filename>, check that all its subdirectories are executable. (パターン <path/to/filename> に一致するファイルが見つかりませんでした。そのサブディレクトリがすべて実行可能かどうか確認してください。)

エラーを修正するには、Datadog Agent ユーザーにログファイルおよびサブディレクトリへの読み取りおよび実行権限を与えます。

  1. ファイルアクセス許可の詳細情報を取得するには、namei コマンドを実行します。

    > namei -m /path/to/log/file
    

    次の例では、Agent ユーザーは application ディレクトリに対する execute 権限、または error.log ファイルに対する読み取り権限を持っていません。

    > namei -m /var/log/application/error.log
    > f: /var/log/application/
    drwxr-xr-x /
    drwxr-xr-x var
    drwxrwxr-x log
    drw-r--r-- application
    -rw-r----- error.log
    
  2. ログフォルダとその子フォルダを読み取り可能にします。

    sudo chmod o+rx /path/to/logs
    

: これらの権限は、ログローテーション構成で正しく設定されていることを確認してください。そうしないと、次のログローテーション時に、Datadog Agent の読み取り権限が失われる可能性があります。Agent がファイルへの読み取りアクセス権を持つように、ログローテーション構成で権限を 644 として設定します。

  1. ファイルの権限についてのより詳しい情報を得るには、ログフォルダ上で icacls コマンドを使用します。

    icacls path/to/logs/file /t
    

    /t フラグは、ファイルとサブフォルダに対して再帰的にコマンドを実行します。

    以下の例では、test ディレクトリとその子ディレクトリは ddagentuser からはアクセスできないようになっています。

    PS C:\Users\Administrator> icacls C:\test\ /t
    C:\test\ NT AUTHORITY\SYSTEM:(OI)(CI)(F)
           BUILTIN\Administrators:(OI)(CI)(F)
           CREATOR OWNER:(OI)(CI)(IO)(F)
    
    C:\test\file.log NT AUTHORITY\SYSTEM:(F)
           BUILTIN\Administrators:(F)
    
    C:\test\file2.log NT AUTHORITY\SYSTEM:(F)
           BUILTIN\Administrators:(F)
    
  2. icacls コマンドを使用して、ddagentuser に必要な権限を与えます (引用符を含めてください)。

    icacls "path\to\folder" /grant "ddagentuser:(OI)(CI)(RX)" /t
    

    アプリケーションがログローテーションを使用する場合、(OI)(CI) の継承権は、今後ディレクトリに作成されるログファイルが親フォルダの権限を継承することを確実にします。

  3. もう一度 icacls を実行して、ddagentuser が正しい権限を持っていることを確認します。

    icacls path/to/logs/file /t
    

    以下の例では、ファイルの権限に ddagentuser が記載されています。

    PS C:\Users\Administrator> icacls C:\test\ /t
    C:\test\ EC2-ABCD\ddagentuser:(OI)(CI)(RX)
           NT AUTHORITY\SYSTEM:(OI)(CI)(F)
           BUILTIN\Administrators:(OI)(CI)(F)
           CREATOR OWNER:(OI)(CI)(IO)(F)
    
    C:\test\file.log NT AUTHORITY\SYSTEM:(F)
                   BUILTIN\Administrators:(F)
                   EC2-ABCD\ddagentuser:(RX)
    
    C:\test\file2.log NT AUTHORITY\SYSTEM:(F)
                   BUILTIN\Administrators:(F)
                   EC2-ABCD\ddagentuser:(RX)
    Successfully processed 3 files; Failed processing 0 files
    
  4. Agent サービスを再起動し、ステータスを確認し、問題が解決しているかどうかを確認します。

    & "$env:ProgramFiles\Datadog\Datadog Agent\bin\agent.exe" restart-service
    & "$env:ProgramFiles\Datadog\Datadog Agent\bin\agent.exe" status
    
  1. ファイルの ACL 権限を取得します。

    PS C:\Users\Administrator> get-acl C:\app\logs | fl
    
    Path   : Microsoft.PowerShell.Core\FileSystem::C:\app\logs
    Owner  : BUILTIN\Administrators
    Group  : EC2-ABCD\None
    Access : NT AUTHORITY\SYSTEM Allow  FullControl
             BUILTIN\Administrators Allow  FullControl
    ...
    

    この例では、application ディレクトリは Agent によって実行可能ではありません。

  2. この PowerShell スクリプトを実行し、ddagentuser に読み取り権限と実行権限を与えます。

    $acl = Get-Acl <path\to\logs\folder>
    $AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("ddagentuser","ReadAndExecute","Allow")
    $acl.SetAccessRule($AccessRule)
    $acl | Set-Acl <path\to\logs\folder>
    
  3. ファイルの ACL 権限を再度取得し、ddagentuser が正しい権限を持っているかどうかを確認します。

    PS C:\Users\Administrator> get-acl C:\app\logs | fl
    Path   : Microsoft.PowerShell.Core\FileSystem::C:\app\logs
    Owner  : BUILTIN\Administrators
    Group  : EC2-ABCD\None
    Access : EC2-ABCD\ddagentuser Allow  ReadAndExecute, Synchronize
             NT AUTHORITY\SYSTEM Allow  FullControl
             BUILTIN\Administrators Allow  FullControl
    ...
    
  4. Agent サービスを再起動し、ステータスを確認し、問題が解決しているかどうかを確認します。

    & "$env:ProgramFiles\Datadog\Datadog Agent\bin\agent.exe" restart-service
    & "$env:ProgramFiles\Datadog\Datadog Agent\bin\agent.exe" status
    

アクセス許可の問題と Journald

Journald からログを収集する場合は、Journald インテグレーションで説明されているように、Datadog Agent ユーザーが systemd グループに追加されている必要があります。

: ファイルアクセス許可が正しくなければ、Journald は空のペイロードを送信します。そのため、この場合は、明示的なエラーメッセージを表示および送信することはできません。

構成上の問題

以下に挙げる一般的な構成上の問題は、datadog-agent セットアップで何重にもチェックすることをお勧めします。

  1. datadog.yamlapi_key が定義されているかをチェックします。

  2. datadog.yamllogs_enabled: true が設定されているかをチェックします。

  3. デフォルトでは、Agent はログを収集しません。Agent の conf.d/ ディレクトリに、logs セクションと適切な値が含まれた .yaml ファイルが少なくとも 1 つあることを確認します。

  4. 構成ファイルで何らかの .yaml パースエラーが発生することがあります。YAML には細かな注意が必要なため、疑わしい場合は、YAML 検証ツールを使用してください。

Agent ログ内のエラーのチェック

問題について記述されたエラーがログに含まれている場合があります。次のコマンドを実行して、このようなエラーをチェックします。

sudo grep -i error /var/log/datadog/agent.log

Docker 環境

Docker ログ収集のトラブルシューティングガイドをご参照ください

サーバーレス環境

Lambda ログ収集のトラブルシューティングガイドをご参照ください

予期せぬログの欠落

Datadog Live Tail にログが表示されるか確認します。

Live Tail に表示される場合は、インデックス構成ページで、ログと一致する 除外フィルターがないか確認してください。 Live Tail に表示されない場合、タイムスタンプが 18 時間以上過去のものであれば、ドロップされた可能性があります。datadog.estimated_usage.logs.drop_count メトリクスで、どの servicesource が影響を受けているかを確認できます。

ログの切り捨て

1MB を超えるログは切り捨てられます。どの servicesource が影響を受けているかは datadog.estimated_usage.logs.truncated_countdatadog.estimated_usage.logs.truncated_bytes メトリクスで確認できます。

その他の参考資料