Splunk で Nutanix と Files の syslog を受け取ってみる
Splunk でもうちょっと専門的なことにチャレンジしてみます
Nutanixクラスタのログを受信して可視化を行ってみたいと思います
Prism Central には syslogサーバーの設定項目があるのですが、Prism Elementには設定する箇所が見当たりません
まずは Nutanix のシスログってどうやってどばすの?ってのをググってみますと、昨年の Nutanix Advent Calendar 2019の記事が見つかります
(苦い思い出が蘇ります)
Nutanix Syslogをサーバに出力してみる - Qiita
こちらを参考に Nutanix CVM に rsyslog の設定を仕込みたいと思います
(本家はこちらのドキュメントになります)
<イメージ図>
【Splunk やってみたシリーズ】
・Splunk を Kubernetes と Karbon Platform Service で動かしてみる
・Splunkで syslog 受信してみる CentOS編
・Splunk で システムログを受信してみる Windows編
・Splunk で Nutanix と Files のシスログ受け取ってみる ←今ココ
・Splunk で Nutanix Flowログ確認
==環境=======
CentOS 8
Docker 19.03.13
Splunk Enterprise 8.1.0
AOS 5.15
AHV 20170830.395
============
Splunk 環境の起動
まずは、検証用の Splunk 環境を Dockerコンテナ で起動します
今まで使ってきたポートに今回は UDP で port 10514 を追加して受け取ってみます
docker run -p 8000:8000 -p 10514:10514/udp -p 30514:30514 -p 8089:8089 -p 9997:9997 -e SPLUNK_PASSWORD=password -e SPLUNK_START_ARGS=--accept-license -it splunk/splunk:latest
CVM の rsyslog 設定
現状Nutanixクラスタのシスログ設定は、Prism Element の GUI では提供されていませんので、CVMに ssh接続して CLI にて設定してやる必要があります
実際に飛ばすログは、CVM に ssh接続し ~/data/logs をみてますと
Nutanix のいろいろなサービスごとのログが溜まっています
トラブルシューティングなどで一番お世話になったのは、genesis.out ですかね
では、この genesis のログを送信する設定を例に設定していきます
nCLIコマンドモード
CVM に ssh接続 して ncli モードへ入ります
$ ncli <ncli>
「tab」ボタンでコマンドの一覧が確認できます
この中の rsyslog-config を使います
syslogサーバ登録
syslogサーバとして、Splunkマシンを登録
<ncli> rsyslog-config add-server name=splunk-server ip-address=192.168.199.11 port=10514 network-protocol=UDP relp-enabled=false Name : test-splunk IP Address : 192.168.199.11 Port : 10514 Protocol : UDP Relp Enabled : false
送信ログを選択
送信ログの種類は、moduleとして指定します
module の種類は
CASSANDRA, CEREBRO, CURATOR, GENESIS, PRISM, STARGATE, SYSLOG_MODULE, ZOOKEEPER, UHURA, LAZAN, API_AUDIT, AUDIT, CALM, EPSILON, ACROPOLIS, MINERVA_CVM, FLOW
ログレベルは
DEBUG, INFO, NOTICE, WARNING, ERROR, CRITICAL, ALERT, EMERGENCY
<ncli> rsyslog-config add-module server-name=splunk-server module-name=GENESIS level=info include-monitor-logs=false RSyslog Servers : test-splunk Module Name : GENESIS Log Level : INFO Include Monitor Logs : false
設定内容を確認
<ncli> rsyslog-config ls-servers Name : test-splunk IP Address : 192.16.199.11 Port : 10514 Protocol : UDP Relp Enabled : false Module Name : ACROPOLIS Log Level : ERROR Include Monitor Logs : false Module Name : GENESIS Log Level : INFO Include Monitor Logs : false Module Name : CASSANDRA Log Level : INFO Include Monitor Logs : false
基本的な設定は以上です
これで Splunk に向かってログが送信開始されます
もし、一時的に rsyslog-config の OFF/ONする場合は
<ncli> rsyslog-config set-status enable=false <ncli> rsyslog-config set-status enable=true
Splunk受信設定
Splunk Enterprise で ローカル入力「UDP:10514」の受信設定を行います
ソースタイプはどれが良いんだろう、、、とりあえず普通にsyslog で
サーチで受信内容を確認、INFOレベルで取得しているので、大量のログが確認できると思います
実用レベルだと、ERRORでよいのかな?
Nutanix Files Audit ログも受信してみる
Nutanix の Native NAS 機能の Files には、無償で使える Files Analytics がついてきます
主な機能はこんなのがついてます
・ファイルサーバ内のデータ分析・可視化
・ディレクトリ、ファイルのアクセス履歴
・監査ログを取得
・異常検知
無料で使える割にいろいろ揃っています、が
ただ、ログが遡れるのは1年までなんですよね。。。惜しい
特に監査ログは、アーカイブして数年の保存しておきたかったりします
今のところエクスポートする機能も見当たらないので、外部への送信と保管を Splunk で受信してみます
<イメージ図>
FSVM REST API画面に接続
https://<FSVMのIP>:9440/api/nutanix/v3/api_explorer/index.html
上部のここにREST API アクセスユーザ記入して「Explore」をクリックしておきます
(クリックしても変化は無いです)
Partner Server の設定
送信先の Partner Server として、Splunkサーバーを設定します
partner_server の POST を選択し
body に Partner Server 登録の設定情報を入力
{ "spec": { "description": "partner_server_description", "resources": { "usage_type": "NOTIFICATION", "server_info": { "address": { "ip": "192.168.199.11", # SplunkのIP "port": 30514 # TCP送信ポート }, "server_type": "PRIMARY" }, "vendor_name": "syslog" }, "name": "test-splunk" # Splunkの名前 }, "api_version": "3.0", "metadata": { "kind": "partner_server" } }
入力後「Try it out!」
Response Code 202ならOK
Partner Server のUUID確認
Partner Serverの一覧を取得して、登録したサーバのUUIDを取得
{ "kind": "partner_server", "offset": 0, "length": 10 }
Response Body で UUIDを確認
送信ログ内容の設定
Splunk サーバーのUUID で notification_policy を作成
{ "spec": { "name": "notification_policy", "resources": { "partner_server_reference_list": [ { "kind": "partner_server", "uuid": "6719ec81-5aee-4314-bafe-xxxxxxxxxxx" # Partner ServerのUUID } ], "file_operation_list": [ "FILE_CREATE", "FILE_DELETE", "FILE_READ", "FILE_WRITE", "FILE_OPEN", "FILE_CLOSE", "DIRECTORY_CREATE", "DIRECTORY_DELETE", "RENAME", "SETATTR", "SYMLINK_CREATE", "LINK_CREATE", "SECURITY" ], "protocol_type_list": [ "SMB" ], "all_mount_targets": true } }, "api_version": "3.0", "metadata": { "kind": "notification_policy" } }
これで、FSVM側の設定は完了です