今更ながら、初めて Windows へ DatadogAgent をインストールしました。
Linux との違いを中心にメモ。
基本的には公式ドキュメント一読でほぼ事足ります。
目次
インストール
環境
Agent version
5.17.2
Platform
Windows-10-10.0.15063
Python version
2.7.12, 64bit
以下デフォルトインストールです。
- [Integrations] -> [Agent]
- [Download the Datadog Agent installer] のリンクよりインストーラ(ddagent-cli-latest.msi)をダウンロード
- インストーラの実行

起動/停止
Datadog Agent Manager
GUIで各種操作を行えるツールです。
- Setting・・・Datadog.conf、各種インテグレーションファイルの編集
- Log and Status・・・Agent Status、各種ログの参照
- Actions・・・Agent起動・停止、サポートケース起票(Flare)

各種インテグレーションファイルの編集は、[Save] しただけでは有効化されないため、[Enable] を押下して有効化する必要があります。
Service
Windowsサービスからも起動/停止が可能です。

各種ディレクトリ
インストールディレクトリ
C:\PROGRAM FILES\DATADOG\DATADOG AGENT ├─agent ├─bin ├─dist ├─embedded └─LICENSES
設定ファイル・ログ
Datadog Agent Manager を使用せずに直接参照・編集も可能です。
因みに、Datadog Agent Manager の [Enable/Disable] は conf.d 配下の 〜.yaml をリネームしています。
C:\PROGRAMDATA\DATADOG
│ datadog.conf # Datadog Agent の設定ファイル
├─checks.d # カスタムチェックファイル
├─conf.d # Integrations の設定ファイル
└─logs # 各種ログファイル
collector.log
dogstatsd.log
forwarder.log
service.log
Event Viewer Integration
WindowsイベントログをDatadogへ連携するインテグレーションが用意されています。
type でエラーレベルでの絞り込みができるようになっていますが、 マルチバイト(というかマルチロケーション)非対応で、 日本語環境では動作しません。 以下のように元のインテグレーションファイルを編集して、カスタムチェックを作成して回避しました。
- win32_event_log_ja(差分)
--- win32_event_log.py
+++ win32_event_log_ja.py
@@ -1,3 +1,12 @@
+#!/usr/bin/python
+# -*- coding: cp932 -*-
+'''
+日本語環境用イベントログ監視
+'''
+import sys
+reload(sys)
+sys.setdefaultencoding('cp932')
+
# (C) Datadog, Inc. 2010-2016
# All rights reserved
# Licensed under Simplified BSD License (see LICENSE)
@@ -87,6 +96,19 @@
if ltypes:
query['Type'] = []
for ltype in ltypes:
+ if ltype == 'Critical':
+ ltype = '重大'
+ elif ltype == 'Error':
+ ltype = 'エラー'
+ elif ltype == 'Warning':
+ ltype = '警告'
+ elif ltype == 'Information':
+ ltype = '情報'
+ elif ltype == 'Audit Success':
+ ltype = '成功の監査'
+ elif ltype == 'Audit Failure':
+ ltype = '失敗の監査'
+
query['Type'].append(('=', ltype))
if source_names:
query['SourceName'] = []
@@ -223,9 +245,11 @@
def _alert_type(self):
event_type = self.event['Type']
# Convert to a Datadog alert type
- if event_type == 'Warning':
+ if event_type == '警告':
return 'warning'
- elif event_type == 'Error':
+ elif event_type == '重大':
+ return 'error'
+ elif event_type == 'エラー':
return 'error'
return 'info'
win32_event_log_ja.py を checks.d、win32_event_log_ja.yaml(中身はwin32_event_log.yamlと同じ) を conf.d に格納して使用します。

WindowsでのカスタムCheckのテスト
日本語ドキュメントには shell.exe を使用するように記載がありますが、agent version 5.12 以上の場合の確認方法は下記になります。
(現時点で日本語ドキュメントには旧バージョンの確認方法しか記載がありません。)
<INSTALL_DIR>/embedded/python.exe <INSTALL_DIR>agent/agent.py check <CHECK_NAME>
今回インテグレーションは Event Viewer のみ導入しましたが、他にもロケール問題が出る物があるのかもしれません。
(イベントログのエラーレベル位、Windows側が英語で出力すれば良いのではと思いますが)
Datadog公式でマルチロケール対応が成されることを期待します。