以前 Datadog Agent Version 6 で日本語環境でのイベントログ取得を確認したのですが、 検証に誤りがありました。
再度確認した所、Agent Version 5 同様、 マルチバイトでは動作しませんでした。
Event Viewer Integration
WindowsイベントログをDatadogへ連携するインテグレーションが用意されていますが、 現時点では日本語環境ではエラーレベルでの絞り込みが行なえません。
カスタムチェック
version 6でも 5 同様のカスタムチェックを作成することで動作が確認できました。
win32_event_log.py から win32_event_log_ja.py を作成します。
- win32_event_log.py
C:\Program Files\Datadog\Datadog Agent\embedded\Lib\site-packages\datadog_checks\win32_event_log\win32_event_log.py
- win32_event_log_ja(差分) v6対応版
--- win32_event_log.py
+++ win32_event_log_ja.py
@@ -1,3 +1,12 @@
+#!/usr/bin/python
+# -*- coding: cp932 -*-
+'''
+日本語環境用イベントログ監視(v6)
+'''
+import sys
+reload(sys)
+sys.setdefaultencoding('cp932')
+
# (C) Datadog, Inc. 2010-2017
# All rights reserved
# Licensed under Simplified BSD License (see LICENSE)
@@ -96,6 +105,18 @@
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'] = []
@@ -233,9 +255,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 に格納して使用します。
C:\PROGRAMDATA\DATADOG ├─checks.d │ win32_event_log_ja.py ├─conf.d │ ├─win32_event_log_ja.d │ │ conf.yaml
実行結果例

システムアカウントの言語設定
尚、ログインユーザの言語設定が日本語でも、 システムアカウントの言語設定を英語としておけば、 そのまま win32_event_log を利用できます。
- [コントロールパネル] -> [地域] -> [管理] -> [設定のコピー]

ようこそ画面の欄がシステムアカウント設定も含むようです。