メインコンテンツまでスキップ
Sumo Logic Japanese

VMware ULM のログとメトリクスの収集

このページでは、VMware ULM でデータを収集するようにシステムを設定する方法、コレクタをインストールする方法、およびログとメトリクスを収集する方法を説明します。

VMware ULM 用 Sumo Logic アプリケーションは、VMware のクラウド コンピューティング仮想化プラットフォームからログとメトリクスを収集し、事前定義されたダッシュボードにデータを表示します。アプリケーションにより、vCenter、ESXi ホスト、および VM メトリクスとイベントをモニタリングできます。

このページでは、VMware のログとメトリクスを収集する手順を説明します。リンクをクリックして、トピックに移動してください。

ステップ 1: データを収集するためのサーバ、ホスト、または VM のセットアップ

次の 2 つの方法のいずれかを使用して、VMware ULM アプリケーションのデータを収集するようにサーバをセットアップできます。このセクションでは、次の両方の手順を説明します。 

  • Sumo Logic VM テンプレートを使用して、Sumo Logic スクリプトが事前にインストールおよび設定されている、事前設定済みの VM を作成します。ログとイベントを収集するための Sumo Logic VM は、vSphere SDK for Python (pyvmomi) および Sumo Logic スクリプトを含むアプライアンス (Ubuntu 仮想マシン) です。
  • vCenter Server に、または vCenter API へのアクセスが可能な他のホストに、イベントおよびメトリクスを収集するための Sumo Logic スクリプトをインストールします。

データを収集するための Sumo Logic VM のセットアップ

このセクションでは、VMware のデータを収集するために必要なスクリプトが事前にインストールおよび設定されている Sumo Logic VM をセットアップするプロセスを順を追って説明します。

スクリプトが事前にインストールされている Sumo Logic VM をセットアップするには、次の手順を実行します。
  1. このリンクから VM テンプレート (.zip ファイル) をダウンロードします。
  2. [File (ファイル)] > [Deploy Template (テンプレートのデプロイ)] を選択します。
  3. 資格情報 sumoadmin/sumoadmin を使用してログインします。
  4. スクリプトの PATH を設定するには、手順 6 まで進みます。

vCenter Server、別のホスト、または VM への Sumo Logic スクリプトのインストール

このセクションでは、イベントおよびメトリクスを収集するための Sumo Logic スクリプトを vCenter Server または vCenter API にアクセスできる他のホストにインストールするプロセスを順を追って説明します。最後に、vCenter Server、ホスト、VM 上のいずれであれ、スクリプトを実行するようにパスを設定する手順を説明します。

Sumo Logic スクリプトをインストールして設定するには、次の手順を実行します。
  1. サーバ、ホスト、または VM 上で、VMware 用 Sumo Logic スクリプトの Sumo Logic スクリプトを格納するディレクトリを作成します。ディレクトリには /var/log/vmware といった名前を付けることをお勧めします。

  2. sumo-vsphere-ulm.zip から Sumo Logic VMware スクリプトをダウンロードし、先ほど作成したディレクトリに格納します。

  3. python バージョン 3.6 以降をインストールします。

  4. pyvmomi 6.7.1: pip install pyvmomi==6.7.1 をインストールします。

  5. Sumo Logic VMware スクリプトを実行するユーザ アカウントに、sumo-vsphere-ulm.zip ファイルが展開されるディレクトリに対する完全な読み取り/書き込み/実行権限があることを確認します。
     

  6. cron_vcenter_events.sh スクリプトを編集して、スクリプトが存在する絶対パスを反映するように SCRIPT_PATH 変数を変更します。
     

ステップ 2: コレクタのダウンロードとインストール

インストール済みコレクタとは、ソースからログとメトリクスを受け取り、データを暗号化して圧縮した状態で Sumo サービスに送信する Java エージェントです。コレクタをインストールまたは再起動すると、コレクタはサービスとして自動的に開始されます。

コレクタをインストールしてログとメトリクスを収集する場合、このリンクでインストール手順を確認してください。

ステップ 3: VMware ULM アプリケーションのログとメトリクスの収集

このセクションでは、VMware ULM 用 Sumo Logic アプリケーションのログとメトリクスを収集するために、vCenter Server、ホスト、または VM をセットアップする方法を説明します。リンクをクリックして、トピックに移動してください。

A.イベント メッセージの収集

イベントは vCenter Server でイベント メッセージをトリガするアクションです。イベント メッセージはログ記録されませんが、代わりに vCenter Server データベースに格納されます。VMware 用 Sumo Logic コレクタは、vSphere python SDK を使用してこれらのメッセージを取得します。

この手順には、次の作業があります。

  • Syslog ソースの設定 - Sumo Logic Syslog ソースは、Syslog サーバのように動作し、Syslog メッセージを受信する指定ポートをリッスンします。
  • ログの収集の設定 - Sumo Logic スクリプトを格納するディレクトリから python スクリプトを実行してテストします。
コレクタの Syslog ソースを設定するには、次の手順を実行します。
  1. [Manage Data (データの管理)] > [Collection (コレクション)] > [Collection (コレクション)] に移動し、[Add Source (ソースの追加)] をクリックします。
  2. [Syslog] をソース タイプとして選択します。

    VMwareULM_SyslogSource.png
  3. このソースに対して表示する [Name (名前)] を入力します。ソース名メタデータは _sourceName という検索可能なフィールドに格納されます。
  4. [Protocol (プロトコル)] では TCP を選択します。
  5. ソースがリッスンする (ご使用のコレクタに対応した) 正確なポート番号を入力します (1514 など)。
  6. [Source Category (ソース カテゴリ)] には、vcenter_events を使用することをお勧めします。
  7. [Advanced (詳細設定)] で、次のオプションを設定します。
    - [Extract timestamp information from log file entries (ログ ファイル エントリからタイムスタンプ情報を抽出する)] を選択します。
    - [Ignore time zone from log file and instead use (ログ ファイルのタイム ゾーンを無視して、次を使用します)] を選択して、メニューから [UTC] を選択します (以下を参照)。

    VMwareULM_SyslogSource-Advanced.png

  8. [Save (保存)] をクリックします。
ログの収集を設定するには、次の手順を実行します。
  1. Sumo Logic スクリプトのディレクトリに移動し、その場所から次のコマンドを使用して events.py スクリプト (イベントについてのクエリを vCenter Server に対して実行する) を実行します。
python events.py -s [vcenterserver] -u [username] -p [password] -f output.txt
  1. 定期的に任意の間隔で cron_vcenter_events.sh スクリプトを実行する cron ジョブを作成します。

B.パフォーマンス メトリクスの収集

パフォーマンス メトリクスの収集では、スクリプトを使用して vCenter パフォーマンス API を呼び出し、パフォーマンス統計情報を抽出します。 

vCenter Server に関連付けられた ESXi サーバのパフォーマンス データの収集は、複数のスレッドを使用して、各 ESXi サーバから並行してデータを取得することで可能になります。スレッド数は、収集するデータの量と収集頻度に応じて変わります。

スレッド数は、sumo.json config ファイル内の THREADSIZE_POOL プロパティを使用して制御できます。また単一のスレッドによって処理されるオブジェクトの数は、BATCH_MORLIST_SIZE プロパティを使用して制御できます。次はすべての設定プロパティについての説明です。

BATCH_MORLIST_SIZE: デフォルトは 50。パフォーマンス データを取得するために単一スレッドが処理する同時オブジェクト数。THREADSIZE_POOL: デフォルトは 5。スレッド数。SSL_VERIFY: デフォルトは False。SSL を使用する場合は、True に設定。SSL_CAPATH: SSL_VERIFY が True の場合の証明書の絶対パス。
パフォーマンス メトリクスを収集するには、次の手順を実行します。
  1. 手順に従って、ストリーミング メトリクス ソースを設定します。

    VMwareULM_CollectPerformanceMetrics_dialog.png
  2. 必要に応じて、バンドルされている sumo.json プロパティ ファイル内のプロパティを編集します。
  3. Sumo Logic スクリプトのディレクトリに移動し、その場所から次のコマンドを使用して esx_perf_metrics_6_5.py スクリプト (イベントについてのクエリを vCenter Server に対して実行する) を実行します。
python esx_perf_metrics_6_5.py -u [username] -p [password] -s [vcenter server] -t [target server] -to [target port] -cf [config filename]
  1. Sumo Logic でメトリクスがキャプチャされていることを確認します。
  2. バッチとスレッドの設定に問題がない場合は、任意の間隔で定期的に cron_vcenter_metrics.sh スクリプトを実行する cron ジョブを作成します。

C.履歴イベントの収集

デフォルトでは、events.py が初めて呼び出されるとき、過去 24 時間のイベントが収集されます。スクリプトが呼び出されるたびに、最後に読み込まれたイベントのタイムスタンプを .timelog_events ファイルに書き出し、次の呼び出しに備えます。

過去 24 時間より前のイベントを収集するには、cron_vcenter_events.sh の CRON ジョブをセットアップする前に、次のようにスクリプトを実行します。

python events.py --server <vcenter server> --target <syslog host> --targetPort <syslog host port> --bT <time in UTC>

ステップ 4: パスワードの暗号化

スクリプトは、python Fernet 実装を使用して、非対称認証の暗号 (秘密鍵認証) をサポートしています。

暗号化を使用するには、python コマンド ラインから鍵を生成します。

>>> from cryptography.fernet import Fernet >>> print(Fernet.generate_key()) b'xgb8NJ3ZYPJbzX6vWHySZbLd73bKWPsGMKoSnry7hL4='

python コマンド ラインからパスワードを暗号化します。

>>> from cryptography.fernet import Fernet >>> key = b'xgb8NJ3ZYPJbzX6vWHySZbLd73bKWPsGMKoSnry7hL4=' >>> s = Fernet(key) >>> text = s.encrypt(b"secretpassword") >>> print(text) b'gAAAAABb6asvlRfxEj_ZQTKOyrqnGNMbfo_kpxrqv4DCO6TorS4FmKFzrepe0_xtiMT67ZT6OOf5bfrVZXNnUDFNlwPWrpFSfg=='
暗号化されたパスワードと鍵を含めるようにスクリプトを変更します。 

メトリクスの例:

python esx_perf_metrics_6_5.py -u [username] -pK 'xgb8NJ3ZYPJbzX6vWHySZbLd73bKWPsGMKoSnry7hL4=' -p 'gAAAAABb6asvlRfxEj_ZQTKOyrqnGNMbfo_kpxrqv4DCO6TorS4FmKFzrepe0_xtiMT67ZT6OOf5bfrVZXNnUDFNlwPWrpFSfg==' -s 192.168.20.121 -t 127.0.0.1 -to 2003 -cf sumo.json -pE True

イベントの例:

python events.py -s 192.168.20.121 -u [username] -f outfile -pK 'xgb8NJ3ZYPJbzX6vWHySZbLd73bKWPsGMKoSnry7hL4=' -p 'gAAAAABb6asvlRfxEj_ZQTKOyrqnGNMbfo_kpxrqv4DCO6TorS4FmKFzrepe0_xtiMT67ZT6OOf5bfrVZXNnUDFNlwPWrpFSfg==' -pE True

ログ メッセージのサンプル

2018-11-15 17:39:09.569 +0530 ,,, message=Error detected for sumo-win2k8-a-4 on xx1.sumolabs.com in Production1-West: Agent can't send heartbeats.msg size: 612, sendto() returned: Operation not permitted.,,,eventType=<class 'pyVmomi.VmomiSupport.vim.event.GeneralVmErrorEvent'>,,, vm=ubuntu16.04-b-4,,,host=8df.sumolabs.com,,,datacenter=Production3-East,,, computeResource=esx1.sumolabscluster.com,,,key=3553,,,chainId=3269

クエリのサンプル

次のクエリは、[vCenter Errors - Analysis (vCenter エラー - 分析)] ダッシュボードの [vSphere Errors Trend (vSphere エラーの傾向)] パネルからのものです。

_sourceCategory = Labs/VMWare6.5 and ("error" or "fail" or "critical")
| parse "message=*,,," as err_msg
| parse "host=*,,," as esx_host
| parse "eventType=*,,," as event_type
| parse "vm=*,,," as vm nodrop
| parse "computeResource=*,,," as cluster
| where esx_host matches {{esx_host}} and cluster matches {{cluster}} and event_type matches {{event_type}}
| timeslice 1h
| count(err_msg) as err_count by _timeslice
| compare with timeshift 1d 7

トラブルシューティング

  • スクリプトには、ログを生成しタイムスタンプを保持するディレクトリに対する読み取りおよび書き込み権限が必要です。

  • スクリプトで python が使用されるため、python がインストールされている必要があります。

  • スクリプトは、問題発生時に確認できるログを生成します。

  • スクリプトが実行されるたびに、設定された作業ディレクトリにログが生成されます。

  • スクリプトは実行されているものの、コレクタが実行されていない場合は、メトリクスとイベントは失われます。そのような場合、コレクタが再度実行されているときに、.timelog_events ファイルと .timelog_metrics ファイルのタイムスタンプを必要な開始時間に更新します。これにより過去のデータを取得できるようになります。スクリプトが過去のデータを取得した後は、通常の処理が継続されます。

  • この記事は役に立ちましたか?