2020年7月22日水曜日

英語版WindowsなのにSplunkに取り込んだイベントログが日本語に

ことのはじまり

タイトルの通りで、Windows 2016で英語版使っているはずなのにSplunkにとりこんだイベントが日本語でとりこまれます、と問い合わせを受けて調査をしていました。
結論からいうとUIロケールとシステムロケールで言語設定が違っていたというものなので、そのあたり詳しい方は読んで頂く必要はありません。

どういうことだったのか?

「イベントビューワーでみると英語なのに、Splunkで見ると日本語です」ということでした。そんなことあるわけないでしょ、と思いながらも実機を確認したら本当でした。(※画像は再現環境)


何が原因だったのか?

WindowsはUIロケールとシステムロケールが別れています。特に深いことを考えずにインストーラーからSplunkをインストールすると、Splunkは、Local Systemで実行されます。そのため、Splunkが取得するイベントはシステムロケールに依存します。

対して、イベントビューワーはログオンしているアカウントのロケールに依存するため、たとえAdministratorで開いたイベントビューワーが英語で表示されているとしても、Splunkが読み込む言語とは関係ありません。
確認したポイントはリージョン設定の管理タブのところです。
今回、事象が発生したWindows 2016ではCurrent userのところとWelcome screen のところとで内容が異なっていました。
Welcome screenがシステムロケールとなんの関係があるか疑問に思うかもしれませんが、下部のチェックボックスを見ると、"Welcome screen and system account"となっていて、ここをチェックするとCurrent Userの設定が、Welcome screenにコピーされます。見た目はWelcome screenですが、ここにはsystem account (Local System含む)が含まれるようです。非常に分かりづらいです。
ちなみに、この設定をして"OK"をクリックすると、もう再起動するかキャンセルするかの選択しかないので、事前に設定しておいて、いつの日か再起動するタイミングで反映できればいいや的な対応はできませんでした。

結果

Windows 2016の再起動後に、無事に英語で取り込まれるようになりました。


そもそもなぜ、このような設定になっていたかは不明ですが、おそらく英語版Windowsに日本語パックをインストールしてがちゃがちゃやってしまったのだろうなと推測しています。今回、MSから転職してきた同寮のおかげでサクッと解決しましたが、自分ひとりだったらとりあえず日本語パックをアンインストールしていただろうな、と思いました。Windowsは難しいですね。手伝ってくれた同寮には感謝の気持ちでいっぱいです。

最後に大事なところですが、日本語で取り込まれることで何が問題かというところですが、日本語で取り込んでしまうとフィールド名も日本語になってしまいます。Splunkでフィールド名を日本語にしてしまうと動くことは動くのですが、サポート外となります。あまり意識されない部分なので注意が必要です。