DatadogでApache、Apacheログを見れるようにしてみた

作業概要

前回はサーバにエージェントインストールし、CPUやらメモリやら基本的な監視はできるようになりました。
なので次はログ監視をしようと思いました。
ログのみでなくApache自体の監視(/server-status?autoで入手できるデータの監視)もできると気づいたのでそちらもついでにやりました。
今回やった作業をApache Integrationを有効にする、とかいうらしいです。

作業記録~Apache Integrationの有効化~

・SElinux(一時)無効
setenforce 0

・デフォルトで無効になっているログ監視を有効にする
cp -ai /etc/datadog-agent/datadog.yaml /etc/datadog-agent/datadog.yaml.0
vi /etc/datadog-agent/datadog.yaml
-----
(追記)
logs_enabled: true
-----

・apache.d/conf.yamlの設定
cp -ai /etc/datadog-agent/conf.d/apache.d/conf.yaml.example  /etc/datadog-agent/conf.d/apache.d/conf.yaml
vi /etc/datadog-agent/conf.d/apache.d/conf.yaml
-----
(追記)
logs:
  - type: file
    path: /var/log/httpd/access_log
    source: apache
    sourcecategory: http_web_access
    service: myservice

  - type: file
    path: /var/log/httpd/error_log
    source: apache
    sourcecategory: http_web_access
    service: myservice
-----

・「server-status」ハンドラーの指定
cp -ai /etc/httpd/conf/httpd.conf  /etc/httpd/conf/httpd.conf.0
vi /etc/httpd/conf/httpd.conf
<Location /server-status>
SetHandler server-status
Require local
</Location>

・ログの権限変更
chmod -R 755 /var/log/httpd

systemctl restart httpd
systemctl restart datadog-agent

これでログ取れるようになりました。

メモ~苦戦・迷った箇所~

予想外に苦戦したので時間かかった箇所や迷った箇所をメモしておきます。

①Apacheのログファイル名が違う
Apacheデフォルトだと/var/log/httpd/access_logなのです。
しかしdatadog公式ドキュメントのサンプルをそのままコピペすると/var/log/apache2/access.log とドットなんですよね・・・。
datadog-agent status コマンドで Status: Error: file /var/log/httpd/access_log does not exist と出ていて気付きました。
②ログ権限
/var/log/httpdを755にしておかないとdatadog-agentが読めないようです。

でのRequireですが、Allで開けなくて大丈夫。
localからとってこれればよいのでRequire local。

さくらVPSの場合

firewalldやパケットフィルタもお忘れなく。

firewall-cmd --zone=public --add-service=http --permanent
systemctl restart firewalld
firewall-cmd --list-all