以前 Datadog Agent Version 6 で日本語環境でのイベントログ取得を確認したのですが、 検証に誤りがありました。
htnosm.hatenablog.com
再度確認した所、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 を利用できます。
- [コントロールパネル] -> [地域] -> [管理] -> [設定のコピー]
ようこそ画面の欄がシステムアカウント設定も含むようです。