メインコンテンツへスキップ
  1. Blogs/

ElasticSearchを使ったlog収集3 -vSphere integration-

·2159 文字·
Blog VMware VSphere ElasticSearch
hiroki
著者
hiroki
クラウドを作るお仕事をしてます。
目次
ElasticSearch - 関連記事
3: << この記事 >>

はじめに
#

ElasticSearchの新しいlog収集の仕組みである、Elastic Agentにはさまざまなデータソースからlogを簡単に収集するためのtemplateとしてIntegrationsという機能があります。

今回はvSphere Integrationを使ってみてどこまで実用的なのか触ってみます。

Elastic AgentやIntegrationについては、第1回第2回を参照ください。

1. 検証環境の構築
#

vSphere Integrationを使うには事前にfleet-serverを構築している必要があります。構築方法は第1回を参照ください。

ただし今後fleet-serverにてESXi/vCenterのSyslogを収集できるように、TCPでSyslogを収集する場合は:514、UDPなら:1514を追加しておきます。

# https://github.com/deviantony/docker-elk/blob/629aea49616ae8a4184b5e68da904cb88e69831d/extensions/fleet/fleet-compose.yml#L35C1-L37C27
ports:
  - 8220:8220
  - 514:514 # for TCP
  - 1514:1514 # for UDP
hostname: fleet-server

この理由はESXiのSyslog転送がfirewallにて:514:1514しか許可されていないためです。参考サイト

$ esxcli network firewall ruleset rule list -r syslog
Ruleset  Direction  Protocol  Port Type  Port Begin  Port End
-------  ---------  --------  ---------  ----------  --------
syslog   Outbound   UDP       Dst               514       514
syslog   Outbound   TCP       Dst               514       514
syslog   Outbound   TCP       Dst              1514      1514

2. vSphere Integrationの設定
#

fleet-serverがdeploy + kibanaに登録できたら、vSphere Integrationを利用することができます。

1. vSphere Integrationの追加

kibanaでvSphereと検索しIntegrationを追加します。

alt text

2. vSphere Integrateionの設定(log編)

Collect logs from vSphere via TCP/UDPがESXi/vCenterのログを収集する設定です。

parameter 説明 設定値
TCP host to listen on どのIP(eth)でlogを受信するか とりあえず0.0.0.0で全てのethで受付する
TCP port to listen on どのportでlogを受信するか
(default:9525)
TCPなら514
UDPなら1514に変えておきます。
Preserve original event parse前のmessageを保持するか お好きに

alt text

3 vSphere Integrateionの設定(metrics編)

Collect vSphere metricsを有効にすると、vCenterからVMやESXiの性能情報を取得できます。

parameter 説明 設定値
Hosts 収集先vCenter https://<vCenterのIP>/sdk
Username ログインユーザー 権限絞ったユーザーを設定するのが理想
Password ログインパスワード
Don’t verify certificate chain vCenterの証明書を検証を無効化 基本オレオレ証明書なのでONに

alt text

4. fleet-serverに追加

新しくElastic Agentを構築するのが手間なので、今回はfleet-serverをAgentとして流用します。 従ってExisting hostsからFleet Server Policyを選択します。

alt text

新しくAgentを構築したい場合は、第2回を参考ください。

3. vCenterのmetrics確認
#

Integrationを使うと自動でDashboardが作成されるので、[Metrics VSphere] Hosts Overview[Metrics VSphere] VMs overview等で取得したデータを確認することができます。

alt text

もしデータが取得できていない場合は、「fleet → Agents → fleet-server(Host) → Integrations → Metrics」からlogを使って原因調査ができます。
alt text

4. vCenterでsyslogの送付設定
#

vCenterのVAMI:5480でアクセスすることで、Syslogの送付先を設定することができます。

alt text

VAMIからSyslogの送付先を先ほど設定したElastic Agent(今回はfleet-server)を選べばOK。 テストメッセージを送信していれば、以下文字列がlogから確認できます。

This is a diagnostic syslog test message from vCenter Server.

alt text

またlogはdatastream形式で保存されるので、data_stream.dataset : "vsphere.log"等でvsphereのlogに絞り込めたり、process.nameで`収集したlogの種類(vpxd等)が自動でfield付けられているのが便利な点です。

alt text

5. ESXiでSyslogの送付設定
#

vSphere IntegrationはESXiのSyslog収集もできます。

1. ESXiのfirewallでSyslogを許可する。

esxcli network firewall ruleset set --ruleset-id=syslog --enabled=true
esxcli network firewall refresh
esxcli network firewall ruleset list | grep syslog

2. Syslogの設定を追加

# TCPの例
esxcli system syslog config set --loghost=tcp://<Elastic AgentのIP>:514
esxcli system syslog reload
esxcli system syslog config get | grep Remote

3. 実際にlog取得ができているか確認する

以下のようなQueryを実行することで、ESXiのログが取得できているか確認できます。

data_stream.dataset : "vsphere.log" and host.name : <ESXiのhost名>

alt text

おわりに
#

試してみたけど実用性は微妙そう。。。

logの収集が簡単にできるのは非常に便利だが、本番環境レベルで使うにはElastic AgentとData streamsの仕組みを理解しlogのIndexやfieldの構造を知らないと難しい。 更に今までのBeatsと比べてElastic Agent由来のfieldが過剰に増えるので、通常のSyslogよりもデータ容量が大きくなっているはず。

metricsは収集データが少ないので集めてもしょうがない感じ。

結局vSphere単体ライセンスがなくなって、VCFに移行した結果「VMware Aria」が使えるようになったのでそちらに任せるのが良さそう。

ElasticSearch - 関連記事
3: << この記事 >>

Related

pyvmomiで自動化7 -HoLを使った検証環境の用意-
·1189 文字
Blog VMware VSphere Pyvmomi Python
pyvmomiで自動化6 -便利なツール群-
·1898 文字
Blog VMware VSphere Pyvmomi Python
pyvmomiで自動化4 -VMに命令実行-
·1587 文字
Blog VMware VSphere Pyvmomi Python