クエリ/応答に基づいて統計を作成できるように、クエリログを解析したいDnsmasqサーバーがあります。
Dnsmasqは2つのロギングメカニズムを提供します。
- デフォルトではsyslogに書き込まれます。
- パスが与えられると、指定されたパスにあるファイルに書き込まれます。
dnsmasqがsyslogにログインする場合
dnsmasqが送信した新しい行ごとにsyslogを「監視」するきちんとした方法はありますか?
dnsmasqがファイルにログを記録する場合
fifoはdnsmasqロギングエージェントに適したソリューションですか?
次のように生成されたfifoにはいくつかの問題がありますmkfifo
。
- dnsmasqの死によりリーダープロセスが中断されたくない場合は、FDへの書き込みを維持する別の仮想プロセスが必要です。これは「自動化」に困難を抱えている。
- FIFOロギングを破壊するためにリーダープロセスが終了したくない場合は、すべてを無視する別のダミーリーダープロセスが必要です。
- 私たちは常にFIFOが健康で利用可能な状態に保たれるようにしなければなりません。
- それでもdnsmasqのログが必要な場合は(おそらくそうです)、カスタム
/var/log/dnsmasq.log
ファイルを作成するか、dnsmasqで偽装して何らかの方法でsyslogにログを送信する必要があります。
要するに
基本的なdnsmasqメカニズムを破損したり、複雑さを増やしたりすることなく、新しいDnsmasqクエリ/応答について適切に通知するための最良のアプローチは何ですか?
答え1
直接ロールアウトすることも、以下のようにtail + awkを組み合わせて行うこともできます。ここ。
それ以外の場合は、syslogとfailure2banを一緒に使用して問題を解決できます。複雑さはあまり追加されず、両方のコンポーネントはよく知られており、広く利用可能です。
Syslog は、ファイルへのすべてのリダイレクトと必要なログファイル管理を管理します。シングルユーザーがウェブを閲覧してもたくさんDNSルックアップ。 syslogデーモンはこれを問題なく管理でき、最大ファイルサイズ、特定の頻度でファイルを更新するためのファイルの回転、最大ログファイル数など、直面するすべての実際の問題をカバーします。
Fail2banは通常、ログファイルの内容に基づいてiptables / nftablesにIPを追加するために使用されます。ただし、ファイルを監視してトリガーしたときにスクリプト操作を実行するプラットフォームではうまく機能します。正規表現を使用してログファイルをフィルタリングして関心のあるコンテンツを検索し、正規表現が一致した場合にアクションを実行します。作成したPythonスクリプトを呼び出すなど、必要なすべての操作を実行することができます。また、タイマーが経過した後に操作を実行する機能もあります。これはユースケースに役立つかもしれません。