Supported OS Linux Windows Mac OS

インテグレーションバージョン1.1.0

概要

Bind 9 は、完全で高い移植性を備えた Domain Name System (DNS) プロトコルの実装です。Bind 9 のネームサーバー (named) は、権威サーバー、再帰的リゾルバー、DNS フォワーダー、またはこれらすべてを同時に実行することができます。

このインテグレーションは、Query、Query Errors、Network、Lame Servers、Notify、Security といったログタイプに対してリッチな情報付加と可視化を提供します。これは、DNS リクエストパターンや DNS 通信の詳細なインサイト、適切なサーバー設定や DNS 攻撃の監視を支援し、あらかじめ用意されたダッシュボードによって堅牢で信頼性の高い DNS 環境を実現します。加えて、このインテグレーションにはあらかじめ用意された検知ルールも含まれています。また、Bind 9 の統計情報をメトリクスとして収集し、必要に応じて可視化に利用できます。

セットアップ

インストール

Bind 9 インテグレーションをインストールするには、以下の Agent のインストールコマンドと手順を実行してください。詳細については Integration Management ドキュメントをご覧ください。

: このステップは Agent のバージョンが 7.58.0 以上の場合は不要です。

Linux コマンド

sudo -u dd-agent -- datadog-agent integration install datadog-bind9==1.1.0

ログ収集

ファイルモニタリング

  1. Bind 9 を実行しているデバイスにログインします。

  2. named.conf ファイルを開き、logging の設定を追加します。

    logging {
     channel <example_channel> {
          file "/folder_path/file_name.log" versions <unlimited | <integer>> size <size> suffix <increment | timestamp>;
          print-time (yes | local | iso8601 | iso8601-utc);
          print-category yes;
          print-severity yes;
     };
     category <example-category> { <example_channel>; };
    }
    

    : print-time の推奨値は iso8601-utc です。Datadog はすべてのログがデフォルトで UTC タイムゾーンであることを想定しているためです。Bind 9 のログのタイムゾーンが UTC でない場合は、別のタイムゾーンを使用する手順に必ず従ってください。また、Bind 9 で定義されているカテゴリーも参照してください。

    例: ロギングチャネル

    logging {
     channel default_log {
          file "/var/log/named/query.log" versions 3 size 10m;
          print-time iso8601-utc;
          print-category yes;
          print-severity yes;
     };
       category default { default_log; };
    }
    
  3. ファイルを保存して終了します。

  4. サービスを再起動します。

    service named restart
    

Syslog

  1. Bind 9 を実行しているデバイスにログインします。

  2. named.conf ファイルを開き、logging の設定を追加します。

    logging {
     channel <example_channel> {
          syslog <syslog_facility>;
          severity (critical | error | warning | notice | info | debug [level ] | dynamic);
          print-time (yes | local | iso8601 | iso8601-utc);
          print-category yes;
          print-severity yes;
     };
     category <example-category> { <example_channel>; };
    }
    

    : print-time の推奨値は iso8601-utc です。Datadog はすべてのログがデフォルトで UTC タイムゾーンであることを想定しているためです。Bind 9 のログのタイムゾーンが UTC でない場合は、別のタイムゾーンを使用する手順に必ず従ってください。また、Bind 9 で定義されているカテゴリーも参照してください。

    例: ロギングチャネル

    logging {
     channel default_log {
          syslog local3;
          print-time iso8601-utc;
          print-category yes;
          print-severity yes;
     };
       category default { default_log; };
    }
    
  3. ファイルを保存して終了します。

  4. syslog/rsyslog の設定を編集し、Bind 9 で選択した facility を使用して Datadog にログを送るようにします。

    <syslog_facility>.* @@<DATADOG_AGENT_IP_ADDRESS>:<PORT>
    
  5. 以下のサービスを再起動します。

    service syslog/rsyslog restart
    service named restart
    

: Bind 9 アプリケーションのチャンネルで print-categoryprint-severityyes に設定されていることを確認してください。

構成

メトリクスの収集

  1. Agent の構成ディレクトリのルートにある conf.d/ フォルダ内の bind9.d/conf.yaml ファイルを編集し、Bind 9 のメトリクスを収集するように設定します。サンプル bind9.d/conf.yaml を参照し、利用可能なすべての構成オプションを確認してください。

    init_config:
    
    instances:
      - url: "<BIND_9_STATS_URL>"
    
  2. Agent を再起動します

ログ収集

  1. Datadog Agent では、ログ収集はデフォルトで無効になっています。datadog.yaml ファイルで有効にしてください。

    logs_enabled: true
    

ファイルモニタリング

  1. Bind 9 のログを収集するには、以下の構成ブロックを bind9.d/conf.yaml ファイルに追加します。

    利用可能な構成オプションについては、サンプル bind9.d/conf.yaml を参照してください。

    logs:
      - type: file
        path: /var/log/named/*.log
        service: bind9
        source: bind9
    

    : conf.yamlpath 変数は、Bind 9 アプリケーションのチャンネルで構成されている file パラメータと同じパスに変更してください。

  2. Agent を再起動します

Syslog

  1. Bind 9 のログを収集するには、以下の設定ブロックを bind9.d/conf.yaml ファイルに追加します。

    利用可能な設定オプションについては、サンプル bind9.d/conf.yaml を参照してください。

    logs:
      - type: tcp
        port: <PORT>
        service: bind9
        source: bind9
    

    : port の値は、syslog.conf/rsyslog.conf で指定したポート番号と同じである必要があります。

  2. Agent を再起動します

UTC 以外のタイムゾーンを Bind 9 Datadog ログパイプラインで指定する

Datadog はデフォルトで、すべてのログが UTC タイムゾーンであると想定しています。Bind 9 のログのタイムゾーンが UTC でない場合は、Bind 9 の Datadog パイプラインで正しいタイムゾーンを指定してください。

Bind 9 パイプラインでタイムゾーンを変更するには

  1. Datadog の Pipelines ページに移動します。

  2. Filter Pipelines の検索ボックスに「Bind 9」と入力します。

  3. Bind 9 パイプライン上にカーソルを合わせ、clone ボタンをクリックします。Bind 9 パイプラインが編集可能な複製として作成されます。

  4. 次の手順で Grok Parser を編集します。

    • 複製されたパイプラインで「Grok Parser: Parsing Bind 9 common log format」という名前のプロセッサーを探し、パイプラインにカーソルを合わせて Edit ボタンをクリックします。
    • Define parsing rules の下にある
      • 文字列 UTC を、Bind 9 サーバーのタイムゾーンに対応する TZ 識別子に変更します。例として、タイムゾーンが IST の場合は Asia/Calcutta に変更します。
    • update ボタンをクリックします。

検証

Agent のステータスサブコマンドを実行し、Checks セクション内に bind9 が表示されるか確認してください。

互換性

このチェックは、すべての主要プラットフォームと互換性があります。

収集データ

ログ

Bind 9 インテグレーションでは、以下のログタイプを収集します。

イベントタイプ
Query、Query Errors、Lame Servers、Notify、Security

メトリクス

bind9.nsstat_AuthQryRej
(gauge)
Number of Authoritative (non recursive) queries rejected.
Shown as query
bind9.nsstat_DNS64
(gauge)
bind9.nsstat_ExpireOpt
(gauge)
bind9.nsstat_NSIDOpt
(gauge)
bind9.nsstat_OtherOpt
(gauge)
bind9.nsstat_QryAuthAns
(gauge)
Number of queries that resulted in authoritative answer.
Shown as query
bind9.nsstat_QryDropped
(gauge)
Number of recursive queries for which the server discovered an excessive number of existing recursive queries for the same name, type and class and were subsequently dropped.
Shown as query
bind9.nsstat_QryDuplicate
(gauge)
Number of queries for which the server attempted to recurse but discovered an existing query with the same IP address, port, query ID, name, type and class already being processed.
Shown as query
bind9.nsstat_QryFailure
(gauge)
Number of queries that failed for other reason.
Shown as query
bind9.nsstat_QryFORMERR
(gauge)
Number of queries that resulted in FORMERR.
Shown as query
bind9.nsstat_QryNoauthAns
(gauge)
Number of queries that resulted in non authoritative answer.
Shown as query
bind9.nsstat_QryNXDOMAIN
(gauge)
Number of queries that resulted in NXDOMAIN.
Shown as query
bind9.nsstat_QryNXRedir
(gauge)
Number of queries that resulted in NXDOMAIN and were redirected.
Shown as query
bind9.nsstat_QryNXRedirRLookup
(gauge)
Number of queries that resulted in NXDOMAIN and were redirected and resulted in a successful remote lookup.
Shown as query
bind9.nsstat_QryNxrrset
(gauge)
Number of queries that resulted in NOERROR responses with no data
Shown as query
bind9.nsstat_QryRecursion
(gauge)
Number of queries that caused the server to perform recursion in order to find the final answer.
Shown as query
bind9.nsstat_QryReferral
(gauge)
Number of queries that resulted in referral answer.
Shown as query
bind9.nsstat_QrySERVFAIL
(gauge)
Number of queries that resulted in SERVFAIL.
Shown as query
bind9.nsstat_QrySuccess
(gauge)
Number of queries that resulted in a successful answer.
Shown as query
bind9.nsstat_QryTCP
(gauge)
bind9.nsstat_QryUDP
(gauge)
bind9.nsstat_RateDropped
(gauge)
Number of responses dropped by rate limits.
Shown as response
bind9.nsstat_RateSlipped
(gauge)
Number of responses truncated by rate limits
Shown as response
bind9.nsstat_RecQryRej
(gauge)
Number of recursive queries rejected
Shown as query
bind9.nsstat_RecursClients
(gauge)
bind9.nsstat_ReqBadEDNSVer
(gauge)
Number of requests with unsupported EDNS version received.
Shown as request
bind9.nsstat_ReqBadSIG
(gauge)
Number of requests with invalid (TSIG or SIG(0)) signature.
Shown as request
bind9.nsstat_ReqEdns0
(gauge)
Number of requests with EDNS(0) received.
Shown as request
bind9.nsstat_ReqSIG0
(gauge)
Number of requests with SIG(0) received.
Shown as request
bind9.nsstat_ReqTCP
(gauge)
Number of TCP requests received.
Shown as request
bind9.nsstat_ReqTSIG
(gauge)
Number of requests with TSIG received.
Shown as request
bind9.nsstat_Requestv4
(gauge)
Number of IPv4 requests received (this also counts non query requests).
Shown as request
bind9.nsstat_Requestv6
(gauge)
Number of IPv6 requests received (this also counts non query requests).
Shown as request
bind9.nsstat_RespEDNS0
(gauge)
Number of responses with EDNS(0) sent.
Shown as response
bind9.nsstat_Response
(gauge)
Number of Responses sent.
Shown as response
bind9.nsstat_RespSIG0
(gauge)
Number of responses with SIG(0) sent.
Shown as response
bind9.nsstat_RespTSIG
(gauge)
Number of responses with TSIG sent.
Shown as response
bind9.nsstat_RPZRewrites
(gauge)
Number of response policy zone rewrites
bind9.nsstat_SitBadSize
(gauge)
bind9.nsstat_SitBadTime
(gauge)
bind9.nsstat_SitMatch
(gauge)
bind9.nsstat_SitNew
(gauge)
bind9.nsstat_SitNoMatch
(gauge)
bind9.nsstat_SitOpt
(gauge)
bind9.nsstat_TruncatedResp
(gauge)
Number of truncated responses sent.
Shown as response
bind9.nsstat_UpdateBadPrereq
(gauge)
Dynamic updates rejected due to prerequisite failure.
bind9.nsstat_UpdateDone
(gauge)
Dynamic updates completed.
bind9.nsstat_UpdateFail
(gauge)
Dynamic updates failed.
bind9.nsstat_UpdateFwdFail
(gauge)
Dynamic update forward failed.
bind9.nsstat_UpdateRej
(gauge)
Number of dynamic update requests rejected
Shown as request
bind9.nsstat_UpdateReqFwd
(gauge)
Number of update requests forwarded.
Shown as request
bind9.nsstat_UpdateRespFwd
(gauge)
Number of update responses forwarded.
Shown as response
bind9.nsstat_XfrRej
(gauge)
Number of zone transfer requests rejected.
Shown as request
bind9.nsstat_XfrReqDone
(gauge)
Number of requested zone transfers completed.
bind9.opcode_IQUERY
(gauge)
The number of incoming queries
Shown as query
bind9.opcode_NOTIFY
(gauge)
bind9.opcode_QUERY
(gauge)
The number of outgoing queries.
Shown as query
bind9.opcode_RESERVED10
(gauge)
bind9.opcode_RESERVED11
(gauge)
bind9.opcode_RESERVED12
(gauge)
bind9.opcode_RESERVED13
(gauge)
bind9.opcode_RESERVED14
(gauge)
bind9.opcode_RESERVED15
(gauge)
bind9.opcode_RESERVED3
(gauge)
bind9.opcode_RESERVED6
(gauge)
bind9.opcode_RESERVED7
(gauge)
bind9.opcode_RESERVED8
(gauge)
bind9.opcode_RESERVED9
(gauge)
bind9.opcode_STATUS
(gauge)
bind9.opcode_UPDATE
(gauge)
bind9.sockstat_FdwatchBindFail
(gauge)
Number of failures of binding FDWatch sockets.
bind9.sockstat_FDWatchClose
(gauge)
Number of FDWatch sockets closed.
bind9.sockstat_FDwatchConn
(gauge)
Number of FDWatch connections established successfully.
Shown as connection
bind9.sockstat_FDwatchConnFail
(gauge)
Number of failures of FDWatch connecting sockets.
bind9.sockstat_FDwatchRecvErr
(gauge)
Number of errors in FDWatch socket receive operations.
bind9.sockstat_FDwatchSendErr
(gauge)
Number of errors in FDWatch socket send operations.
bind9.sockstat_RawActive
(gauge)
Number of active raw socket.
Shown as connection
bind9.sockstat_RawClose
(gauge)
Number of raw sockets closed.
Shown as connection
bind9.sockstat_RawOpen
(gauge)
Raw sockets opened successfully.
Shown as connection
bind9.sockstat_RawOpenFail
(gauge)
Number of raw sockets with a failure upon opening.
Shown as connection
bind9.sockstat_RawRecvErr
(gauge)
Number of errors in raw socket receive operations.
bind9.sockstat_TCP4Accept
(gauge)
Number of incoming TCP4 connections successfully accepted.
Shown as connection
bind9.sockstat_TCP4AcceptFail
(gauge)
Number of failures of accepting incoming TCP4 connection requests.
bind9.sockstat_TCP4Active
(gauge)
Number of active TCP4 socket.
Shown as connection
bind9.sockstat_TCP4BindFail
(gauge)
Number of failures of binding TCP4 sockets.
bind9.sockstat_TCP4Close
(gauge)
Number of TCP4 sockets closed.
Shown as connection
bind9.sockstat_TCP4Conn
(gauge)
Number of TCP4 connections established successfully.
Shown as connection
bind9.sockstat_TCP4ConnFail
(gauge)
Number of failures of TCP4 connecting sockets.
bind9.sockstat_TCP4Open
(gauge)
Number of TCP4 sockets opened successfully.
Shown as connection
bind9.sockstat_TCP4OpenFail
(gauge)
Number of TCP4 sockets with a failure upon opening.
Shown as connection
bind9.sockstat_TCP4RecvErr
(gauge)
Number of errors in TCP4 socket receive operations.
bind9.sockstat_TCP4SendErr
(gauge)
Number of errors in TCP4 socket send operations.
bind9.sockstat_TCP6Accept
(gauge)
Number of incoming TCP4 connections successfully accepted.
Shown as connection
bind9.sockstat_TCP6AcceptFail
(gauge)
Number of failures of accepting incoming TCP6 connection requests.
bind9.sockstat_TCP6Active
(gauge)
Number of active TCP6 socket.
Shown as connection
bind9.sockstat_TCP6BindFail
(gauge)
Number of failures of binding TCP6 sockets.
bind9.sockstat_TCP6Close
(gauge)
Number of TCP6 sockets closed.
Shown as connection
bind9.sockstat_TCP6Conn
(gauge)
Number of TCP6 connections established successfully.
Shown as connection
bind9.sockstat_TCP6ConnFail
(gauge)
Number of failures of TCP6 connecting sockets.
bind9.sockstat_TCP6Open
(gauge)
Number of TCP6 sockets opened successfully.
Shown as connection
bind9.sockstat_TCP6OpenFail
(gauge)
Number of TCP6 sockets with a failure upon opening.
Shown as connection
bind9.sockstat_TCP6RecvErr
(gauge)
Number of errors in TCP6 socket receive operations.
bind9.sockstat_TCP6SendErr
(gauge)
Number of errors in TCP6 socket send operations.
bind9.sockstat_UDP4Active
(gauge)
Number of active UDP4 socket.
Shown as connection
bind9.sockstat_UDP4BindFail
(gauge)
Number of failures of binding UDP4 sockets.
bind9.sockstat_UDP4Close
(gauge)
Number of UDP4 sockets closed.
Shown as connection
bind9.sockstat_UDP4Conn
(gauge)
Number of UDP4 connections established successfully.
Shown as connection
bind9.sockstat_UDP4ConnFail
(gauge)
Number of failures of UDP4 connecting sockets.
bind9.sockstat_UDP4Open
(gauge)
Number of UDP4 sockets opened successfully.
Shown as connection
bind9.sockstat_UDP4OpenFail
(gauge)
Number of UDP4 sockets with a failure upon opening.
Shown as connection
bind9.sockstat_UDP4RecvErr
(gauge)
Number of errors in UDP4 socket receive operations.
bind9.sockstat_UDP4SendErr
(gauge)
Number of errors in UDP4 socket send operations.
bind9.sockstat_UDP6Active
(gauge)
Number of active UDP6 socket.
Shown as connection
bind9.sockstat_UDP6BindFail
(gauge)
Number of failures of binding UDP6 sockets.
bind9.sockstat_UDP6Close
(gauge)
Number of UDP6 sockets closed.
Shown as connection
bind9.sockstat_UDP6Conn
(gauge)
Number of UDP6 connections established successfully.
Shown as connection
bind9.sockstat_UDP6ConnFail
(gauge)
Number of failures of UDP6 connecting sockets.
bind9.sockstat_UDP6Open
(gauge)
Number of UDP6 sockets opened successfully.
Shown as connection
bind9.sockstat_UDP6OpenFail
(gauge)
Number of UDP6 sockets with a failure upon opening.
Shown as connection
bind9.sockstat_UDP6RecvErr
(gauge)
Number of errors in UDP6 socket receive operations.
bind9.sockstat_UDP6SendErr
(gauge)
Number of errors in UDP6 socket send operations.
bind9.sockstat_UnixAccept
(gauge)
Number of incoming Unix connections successfully accepted.
bind9.sockstat_UnixAcceptFail
(gauge)
Number of failures of accepting incoming Unix connection requests.
bind9.sockstat_UnixActive
(gauge)
Number of active Unix socket.
Shown as connection
bind9.sockstat_UnixBindFail
(gauge)
Number of failures of binding Unix sockets.
bind9.sockstat_UnixClose
(gauge)
Number of Unix sockets closed.
bind9.sockstat_UnixConn
(gauge)
Number of Unix connections established successfully.
bind9.sockstat_UnixConnFail
(gauge)
Number of failures of Unix connecting sockets.
bind9.sockstat_UnixOpen
(gauge)
Number of Unix sockets opened successfully.
bind9.sockstat_UnixOpenFail
(gauge)
Number of Unix sockets with a failure upon opening.
bind9.sockstat_UnixRecvErr
(gauge)
Number of errors in Unix socket receive operations.
bind9.sockstat_UnixSendErr
(gauge)
Number of errors in Unix socket send operations.
bind9.zonestat_AXFRReqv4
(gauge)
IPv4 AXFR requested.
bind9.zonestat_AXFRReqv6
(gauge)
IPv6 AXFR requested.
bind9.zonestat_IXFRReqv4
(gauge)
IPv4 IXFR requested.
bind9.zonestat_IXFRReqv6
(gauge)
IPv6 IXFR requested.
bind9.zonestat_NotifyInv4
(gauge)
IPv4 notifies received.
bind9.zonestat_NotifyInv6
(gauge)
IPv6 notifies received.
bind9.zonestat_NotifyOutv4
(gauge)
IPv4 notifies sent.
bind9.zonestat_NotifyOutv6
(gauge)
IPv6 notifies sent.
bind9.zonestat_NotifyRej
(gauge)
Incoming notifies rejected.
bind9.zonestat_SOAOutv4
(gauge)
Number of IPv4 SOA queries sent.
Shown as query
bind9.zonestat_SOAOutv6
(gauge)
Number of IPv4 SOA queries sent.
Shown as query
bind9.zonestat_XfrFail
(gauge)
Number of zone transfer requests failed.
Shown as request
bind9.zonestat_XfrSuccess
(gauge)
Number of zone transfer requests succeeded.
Shown as request

イベント

Bind 9 チェックにはイベントは含まれません。

サービスチェック

bind9.can_connect
Returns OK If Statistics-channel URL of DNS is present in Instance. Returns CRITICAL If URL Errors occurs.
Statuses: ok, critical

トラブルシューティング

ログファイルを監視している際に Permission denied エラーが表示される場合は、dd-agent ユーザーに対してファイルの読み取り権限を付与してください。

sudo chown -R dd-agent:dd-agent /var/log/named/

追加のサポートが必要な場合は、Datadog サポートへお問い合わせください。