Datadog Agent使ってAzure VMのOSログを監視
Datadogを利用したログ監視設定をやってみます。
Datadog Agentを使う事によりAzure VMをはじめとしてOSのログをDatadogに転送し監視する事が出来ます。
-
-
-
- Datadog Agentを使ってOSのログをDatadogへ転送
- Datadog側でログ監視設定
-
-
Datadog Agentはログ転送をするだけで、実際の監視設定はDatadog側での設定になります。
今回はまずDatadog Agentを使ったCent OS 7とWindows Server 2019のOSログをDatadogへ転送設定をやってみました。
AzureからDatadogへのログ転送については診断設定(Azure Event Hub)経由でも可能です。その設定についてはこちらになります。
Agentを使うかEvent Hubを使うかの違いはAzure VMのOSログ等IaaSはDatadog Agentを使い、Application Gateway等のPaaSは(Azure Event Hub)経由という感じになります。
Cent OS 7でDatadogAgent経由で/var/log/messagesを送信
Cent OSにDatadog Agentをインストール
まず最初にOSにDatadog Agentを導入します。導入方法についてはこちらを参考に実施願います。
Datadog Agentでログ転送する為に必要な設定ファイルは2つ
次にDatadog Agentでログ転送を許可する設定を行います。
Datadog Agentでログ転送させるのに必要な設定は2つになります。
-
-
- datadog.yaml:Datadog Agentがログ転送許可設定
- 設定ファイルの場所は/etc/datadog-agent/datadog.yaml
- API Key、転送先URL、転送の許可を指定します。
- conf.yaml:転送するログの内容を設定
- 設定ファイルの場所は/etc/datadog-agent/conf.d/サービス名.d/conf.yaml
- 転送するログのパスやファイル名等を指定します。
- datadog.yaml:Datadog Agentがログ転送許可設定
-
datadog.yamlを設定
Datadog Agentではデフォルトログ転送無効になっているのでこれを有効化します。
datadog.yamlの設定箇所は1か所(1行)だけです。先頭にあるコメントアウト(#)を除きfalesからTrueに変更します。これでログ転送が有効化されます。
# logs_enabled: false(修正前)→logs_enabled: true
※logs_enabled: trueの行頭にスペースが入っているとエラーになります。ご注意ください。
[root@test-vm ~]# vi /etc/datadog-agent/datadog.yaml 【修正前】 570 ################################## 571 ## Log collection Configuration ## 【修正後】 570 ################################## 571 ## Log collection Configuration ## |
※行番号は環境やVerによって前後する可能性がありますので参考程度で。
conf.yamlを作成
今回は/var/log/messagesを転送してみます。
最初に転送するログ(Source)のディレクトリを作成します。場所は/etc/datadog-agent/conf.d/配下に作成します。
まず最初にこの下にサービス名.d/というディレクトリを新規作成します。なお、デフォルトでかなりのアプリが準備されていますので、利用できる場合はこちらを利用します。
今回はmessages.dというディレクトリを作成しています。Datadog Agentはdd-agentユーザーで動作します。ですのでディレクトリ作成と共にdd-agentユーザに権限を付与しています。
[root@test-vm ~]# install -m 755 -o dd-agent -g dd-agent -d /etc/datadog-agent/conf.d/messages.d |
lsコマンドで確認するとディレクトリが作成されている事が確認出来ます。
[root@test-vm ~]# ls -al /etc/datadog-agent/conf.d/ |grep messages.d |
次にconf.yamlを作成します。作成場所は/etc/datadog-agent/conf.d/サービス名.d/conf.yamlになります。
[root@test-vm ~]# vi /etc/datadog-agent/conf.d/messages.d/conf.yaml |
追記内容は下記の通りになります。Pathで取得するログを指定します。service、sourceはDatadog側で表示される区分になります。(Confファイル内でスペースが入ってないとエラーになったりするケースがあります。この場合適時スペースを調節してみて下さい。)
#Log section – type: file |
/var/log配下の権限設定とLog(messages)へのアクセス権を付与
datadog agentはdd-agentユーザーで動作します。dd-agentは/var/log配下へアクセス権限がない為エラーになります。権限付与設定を行います。権限付与はディレクトリに対するアクセス権とファイルに対するアクセス権を付与します。
まずディレクトリに対するアクセス権を付与します。今回はsetfaclコマンドを使ってdd-agentユーザーに/var/logに対するrx(読み取りと実行)権限を付与します。
[root@test-vm ~]# setfacl -m u:dd-agent:rx /var/log/ |
次にlogrotate.dを使ってログの権限を変更します。
これは、ログ自体(今回の場合はmesssages)にアクセス権限付与をする為になります。デフォルトではrootにしか権限がない為dd-agentへの読み取り権限を付与します。今回は権限を600から644に変更する事で対応しています。
messsagesの設定はlogrotate.d配下のsystemに記載がありますので、こちらを編集します。
[root@test-vm ~]# vi /etc/logrotate.d/system |
追記内容は下記の通りになります。オレンジ色の3行を追加しています。(daily,rotate部分は権限設定と直接関係しませんが翌日の状況を確認したかったので追加しています。)
/var/log/cron |
今回は動作確認用としてmessagesに読み取り権限付与します。
[root@test-vm ~]# chmod 644 /var/log/messages |
これで設定変更は終了です。rsyslogのサービス再起動をして設定を反映します。
[root@test-vm ~]# systemctl restart rsyslog.service |
Datadog Agentを再起動して動作確認
Datadog Agentを再起動してステータスを確認します。
まずはDatadog Agentを再起動します。
[root@test-vm ~]# systemctl restart datadog-agent |
次にDatadog Agentでステータスを確認します。
[root@test-vm ~]# datadog-agent status |
datadog-agent statusコマンドでログの収集状況が確認出来ます。Log Agentの項目を見るとmessagesが取得出来ている事が確認出来ます。
========== <途中省略> messages |
またDatadogのポータル上でもLogsのSearchで確認すると以下の通りLogが収集されている事が確認出来ます。
MonitorsのLogを利用する事でログ監視設定が出来ます。
Windows 2019のイベントログをDatadogへ送信
設定はWindowsでもCent OSと同じ流れになります。
Windows OSにDatadog Agentをインストール
まず最初にOSにDatadog Agentを導入します。導入方法についてはこちらを参考に実施願います。
Datadog Agentでログ転送する為に必要な設定ファイルは2つ
Windowsでも同様にDatadog Agentでログ転送を許可する設定を行います。
Datadog Agentでログ転送させるのに必要な設定は2つになります。Windowsの場合はC:\ProgramData\Datadogになります。なおProgramDataのディレクトリ自体が隠しファイルになる為、Windowsで隠しファイルを表示設定する必要があります。(エクスプローラーで表示メニューを開くと隠しファイルという項目があるのでチェックを入れます。)
-
-
- datadog.yaml:Datadog Agentがログ転送許可設定
- 設定ファイルの場所はC:\ProgramData\Datadog\datadog.yaml
- API Key、転送先URL、転送の許可を指定します。
- conf.yaml:転送するログの内容を設定
- 設定ファイルの場所はC:\ProgramData\Datadog\conf.d\サービス名.d\conf.yaml
- 転送するイベントログ名等を指定します。
- datadog.yaml:Datadog Agentがログ転送許可設定
-
datadog.yamlを設定
Datadog Agentではデフォルトログ転送無効になっているのでこれを有効化します。
datadog.yamlの設定箇所は1か所(1行)だけです。falesからTrueに変更します。これでログ転送が有効化されます。
logs_enabled: false(修正前)→logs_enabled: true 修正後
【設定対象ファイル】 【修正前】 【修正前】 |
※行番号は環境やVerによって前後する可能性がありますので参考程度で。
conf.yamlを作成
今回イベントログでSecurityのイベントを転送してみます。
イベントログのディレクトリはデフォルトであります。場所はC:\ProgramData\Datadog\conf.d\win32_event_log.d配下になります。
デフォルトでconf.yaml.exampleがありますが、今回はconf.yamlを新規作成します。(同じ場所に作成します。)
conf.yamlの設定内容は下記のようにしています。動作確認を行いたかったのでログのレベル等は指定していません。
init_config: |
C:\ProgramData\Datadog\conf.d\win32_event_log.d\conf.yamlが作成されている事を確認したら、次はDatadog Agentの再起動を行い動作確認します。
Datadog Agentを再起動して動作確認
Datadog Agentを再起動してステータスを確認します。
まずはDatadog Agentを再起動します。Datadog AgentはC:\Program Files\Datadog\Datadog Agent\embedded配下にagent.exeとして存在しています。
C:\>cd “C:\Program Files\Datadog\Datadog Agent\embedded" C:\Program Files\Datadog\Datadog Agent\embedded>agent.exe restart-service |
次にDatadog Agentでステータスを確認します。
C:\Program Files\Datadog\Datadog Agent\embedded>agent.exe status |
Log Agentの項目を見るとEvent Logが取得出来ている事が確認出来ます。
========== <途中省略> win32_event_log |
またDatadogのポータル上でもLogsのSearchを確認すると以下の通りLogが収集されている事が確認出来ます。
MonitorsのLogを利用する事でログ監視設定が出来ます。