Datadogに任意のログを転送する方式について調査しました。
Datadogへのログ転送方式
公式のマニュアルを参照すると、いろいろな方式が用意されていることがわかる。
Datadog Agent経由で送るだけでなく、既存の様々なツール(Rsyslog、Syslog-ng、NXlog、FluentD、Logstash)とも連携できるとのこと。
何が基本かわからないので、まずDatadog Agent経由でのログ転送について調査してみることにした。
Datadog Agent経由でのログ転送
Datadog Agent経由でのログ転送はデフォルトでは無効になっているらしく、まずその有効化が必要とのこと。
そのうえでconf.yamlファイルを作成し、そこに監視したいファイル名を記載する。
Datadog Agentの各種設定ファイル
環境:EC2, AmazonLinux
Datadog Agentの設定ファイルは下記の構造になっていた。
$ pwd
/etc/datadog-agent
$ ls -al
total 168
drwxr-xr-x 7 dd-agent dd-agent 4096 Dec 29 17:01 .
drwxr-xr-x 80 root root 4096 Dec 28 13:24 ..
-rw------- 1 dd-agent dd-agent 64 Dec 28 13:25 auth_token
drwxr-xr-x 2 dd-agent dd-agent 4096 Dec 11 15:20 checks.d
drwxr-xr-x 2 dd-agent dd-agent 4096 Dec 28 13:24 compliance.d
drwxr-xr-x 149 dd-agent dd-agent 4096 Dec 29 16:40 conf.d
-rw-r----- 1 dd-agent dd-agent 64795 Dec 29 16:37 datadog.yaml
-rw-r--r-- 1 dd-agent dd-agent 64745 Dec 11 15:20 datadog.yaml.example
-rw-r--r-- 1 root root 117 Dec 28 13:25 install_info
drwxr-xr-x 2 dd-agent dd-agent 4096 Dec 28 13:24 runtime-security.d
drwxr-xr-x 2 dd-agent dd-agent 4096 Dec 28 13:24 selinux
-r--r----- 1 dd-agent dd-agent 1066 Dec 11 15:20 system-probe.yaml.example
ログ転送を有効化するための設定ファイルは下記。
570 ##################################
571 ## Log collection Configuration ##
572 ##################################
573
574 ## @param logs_enabled - boolean - optional - default: false
575 ## Enable Datadog Agent log collection by setting logs_enabled to true.
576 #
577 # logs_enabled: false
これをtrueに修正して、Agentを再起動。
カスタムログの転送をお試し
今回はどのようなログでも良いので、個人的に好きなエラーコードのログを転送してみる。
下記のログファイルを作成。
2020-12-29 17:07:13.000000 +09:00 ORA-00600: internal error code, arguments: [AAA], [BBB], [CCC], [DDD], [EEE]
2020-12-29 17:07:18.000000 +09:00 ORA-00600: internal error code, arguments: [AAA], [BBB], [CCC], [DDD], [EEE]
下記の設定を追加し、Datadog Agentを再起動。
logs:
- type: file
path: "/var/opt/alert.log"
service: "myoracle"
source: "mydatabase"
再起動後に、ログファイルに、数行ログを追加。
これにより、ログが転送されていることが確認できた。
まとめ
Datadogへのログ転送は非常に簡単であり、また様々な方式が用意されていることがわかった。マニュアルも非常に丁寧に記載されており、各種サービス毎、プラットフォーム毎、バージョン毎に細かく書かれており非常にわかりやすい。
実際に導入を検討する際にも困ることは無さそう。
カスタムログを転送する場合には、そのアプリケーション名やサービス名などDatadog側で分析する際のタグ?を理解し、正しく付与することが必要になりそうであることがわかった。
メモ
ログ転送を行うためにはDatadog Agentが対象のファイルを読み取れる必要がある。
Datadog Agentは「datadog-agentユーザ」で動作しているため、このユーザからアクセス可能な権限とする必要がある。
当然と言えば当然だけど、ハマった。。。
公式のトラブルシューティングガイドに色々と記載されているが、Agentのステータスチェックや、Agentのログなどは非常に参考になった。
Datadogを正式に利用する際には、Agentのログをdatadogに転送したりするのであろうか・・・