お金をかけずにサーバーの勉強をしよう

Windowsサーバーのイベントログを Grafanaで一覧する 4

2023年7月27日

メニューへ戻る

OpenSearchに溜め込んだ Windowsサーバーのイベントログを Grafanaのダッシュボードで見てみる。

Windowsサーバーのイベントログを Grafanaで一覧する 1」でタイトルの企画を実現するための設計について書き、
Windowsサーバーのイベントログを Grafanaで一覧する 2」で Windows Server 2022に fluentbitをインストールしました。
Windowsサーバーのイベントログを Grafanaで一覧する 3」で OpenSearchに溜め込まれた Windowsイベントログを OpenSearch Dashboardsで見てみました。

いよいよ Grafanaの出番になります。

これに先立ち、Windowsイベントログを発生させる Windowsサーバーをもう 2台 ( 2019と 2016) 増やしておきました。
fluent-bitの仕込みは Windows Server 2022でやったのと全く同じです。

また Grafanaは OpenSearchがインストールされている Ubuntu Server 22.04.2に一緒にインストールしました。

Grafanaのインストールについては「Grafanaでカッコイイグラフを作る」に書いていた手順の通りにインストールしています。

2023年7月27日時点での最新版 10.0.3になっています。


結果的にこのような環境になりました。
構成

では Grafanaをイジっていきます。
ダッシュボード構築が面倒臭いので [admin]ユーザーでログインしています。


1.データソース作成

Grafanaには OpenSearchのプラグインはデフォルトでは入っていませんので、先にこれを入れます。

インストールの仕方はこちらに。
OpenSearch

コマンドを使用しますので、Ubuntu Serverでの作業になります。
grafanaのコマンド類は [/usr/share/grafana/bin] ディレクトリにありました。

subro@UbuntuServer2204-1:/usr/share/grafana/bin$ sudo grafana-cli plugins install grafana-opensearch-datasource
✔ Downloaded and extracted grafana-opensearch-datasource v2.8.1 zip successfully to /var/lib/grafana/plugins/grafana-opensearch-datasource

Please restart Grafana after installing or removing plugins. Refer to Grafana documentation for instructions if necessary.

インストールできました。
これでデータソースの選択肢に OpenSearchが入っているはずです。

Grafanaのハンバーガーメニューから、[Connections] - [Data Sources] と選択します。
Grafana データソース作成 1

+ Add new data sourceを押します。
Grafana データソース作成 2

下の方にスクロールしていくと [Logging & document databases] の所にこれがありますので、押します。
Grafana データソース作成 3

OpenSearchへの接続情報を入れます。
黄色枠が変更した部分です。

このうち [Version]は Get Version and saveボタンを押すと OpenSearshから自動的に取ってくるんですが、OpenSearchの [fluentbit]ユーザーだと権限が足りなくて取れませんでした。
仕方なく [Basic Auth Details]には OpenSearchの [admin]ユーザーとそのパスワードを設定して Get Version and saveボタンを押してバージョンを取得ました。
Grafana データソース作成 4

[Basic Auth Details]を OpenSearchの [fluentbit]ユーザーとそのパスワードに変えて、一番下のSave & testボタンを押して完成させました。
Grafana データソース作成 5
Grafana データソース作成 6


2.ダッシュボード作成

ハンバーガーメニューから、[Dashboards] を選択します。
Grafana ダッシュボード作成 1

Newを押して出てくるメニューから [New Dashboard]を選択します。
Grafana ダッシュボード作成 2

+ Add visualizationを押します。
Grafana ダッシュボード作成 3

データソース選択です。
先程作った [Windows Eventlog] を選択します。
Grafana ダッシュボード作成 4

この辺りから絵が大きくなるのはご容赦下さい。
ダッシュボードの性格上そうでないと意味が無いので…。

パネルの種類を変えます。
画面右上にこんな箇所があるはずで、デフォルトは [Time series] になっています。
その右にある下向きのマークをクリックします。
Grafana ダッシュボード作成 5

種類がいっぱいリストアップされますので、[Table] を選択します。
Grafana ダッシュボード作成 6

そうするとパネルがこんな風に変わります。
ちょっとそれっぽくなってきました。
Grafana ダッシュボード作成 7

パネルタイトルを変えます。
画面右上の [Panel options] の左にある右向きのマークをクリックするとこのようになりますので、好きなものを入れます。
パネルには即時反映されるはずです。
Grafana ダッシュボード作成 8

OpenSearchから持ってくるデータを必要なものだけにします。
画面左下にこのような欄があって、ここでデータセットの検索条件を指定できます。
OpenSearchの検索言語を選べるんですが、私は「PPL(パイプ処理言語)」ってやつの方がシックリくるのでそうします。

PPLについてはこちらに。
パイプ処理言語を使用した Amazon OpenSearch Service データのクエリ

[Lucene] というところをクリックするとメニューが出ますので [PPL] を選びます。
Grafana ダッシュボード作成 9

このような画面になるので、検索文字列を入れます。

source=win_eventlog | [win_eventlog]インデックスを対象とする
sort -TimeGenerated | [TimeGenerated]フィールドで逆ソート
fields TimeGenerated, ComputerName, Channel, EventType, EventID, Message 取りたいのはこれらのフィールド

Grafana ダッシュボード作成 10

で、ここで OpenSearchから「権限がない」って怒られます。
OpenSearchの [fluentbit]ユーザーは [win_eventlog]インデックスのオーナーなんですけどね。

調べてみると PPLを使うには当該API利用の権限が別に必要のようですので OpenSearchの権限設定をしにいきます。

OpenSearch Dashboradsに [admin]ユーザーでログインしまして、ハンバーガーメニューから [OpenSearch Plugins] - [Security] と選択します。
OpenSearchのセキュリティ 1

[Roles]を選択します。
OpenSearchのセキュリティ 2

「ppl」で検索すると [ppl_full_access]ロールが表示されますのでクリックします。
OpenSearchのセキュリティ 3

[Mapped users]タブを開き、Manage mappingを押します。
OpenSearchのセキュリティ 4

[Users]のプルダウンメニューで [fluentbit]ユーザーを選択し、Mapを押します。
OpenSearchのセキュリティ 5

ロールのマッピング完了です。
OpenSearchのセキュリティ 6

これで問題が解決しました。
Grafanaに戻ります。

データが取れるようになっています。
Grafana ダッシュボード作成 11

データが取れるようになりましたが、[TimeGenerated]列の表記に「 +0900」と入ってるのが気になるので、綺麗にします。

先程は [Query]タブでしたが、今度は[Transform]タブを開き [Convert field type]を選択します。
Grafana ダッシュボード作成 12

[Field] に [TimeGenerated]を、[as] に [Time] をそれぞれ選択します。
Grafana ダッシュボード作成 13

綺麗な表示になりました。
Grafana ダッシュボード作成 14

次は列の幅を変えていきます。

画面右上のここにある+ Add field overrideを押します。
(その上の欄はすべて閉めています)
Grafana ダッシュボード作成 15

[Fields with name]を選択します。
対象フィールドを名前で指定することができます。
Grafana ダッシュボード作成 16

フィールド名のリストが表示されるので [TimeGenerated]からやります。
Grafana ダッシュボード作成 17

+ Add override propertyを押します。
Grafana ダッシュボード作成 18

色々な値があります。
幅ですから [Column width]を選択します。
Grafana ダッシュボード作成 19

パネルにはダイナミックに反応するので値を変えながら調整しました。
170くらいが丁度良いようです。
しかし入力途中に「20以下にはできません」的なバリデーションエラーが入ってしまって難儀でした。
どうにかならんものでしょうか。
Grafana ダッシュボード作成 20

他の列も同様に調節した結果の絵です。
Grafana ダッシュボード作成 21

折角の設定が無くならない内に保存します。
画面右上にあるSaveを押します。
Grafana ダッシュボード作成 22

Saveを押します。
Grafana ダッシュボード作成 23

エディターからダッシュボードに移ります。
画面左上のパンくずリストから [Windows監視]をクリックします。
Grafana ダッシュボード作成 24

できました〜\(^o^)/
と言っても、もっと色とか欲しいですね。
Grafana ダッシュボード作成 25

Grafanaだけでフィルタリングもできるんですね。
これは [Event Type] が [Error] のやつだけを出すようにしたもの。
便利です。
Grafana ダッシュボード作成 26

これでこのネタは終わりになります。

==========
Grafanaダッシュボードのデザインに長けて無いおかげでどうにも貧相な画面になってしまいましたが、センスのある人ならもっとカッコイイ画面にできると思います。

Grafanaは扱っているデータの内容によって通知をする機能がありますので、ここまで作った仕組みを使えば Windowsイベントログの内容から通知に繋げるシステムを作ることも可能でしょう。

一通りタダで使えるものばかり並べてやりましたが、なかなかどうして、素晴らしいものができあがりました。

なおこの環境を回すのに 30GBくらいメモリを使っています。
そろそろメモリが 32GB Maxの PCだと検証がキツいですねぇ。