Python スクリプトを使用して OpenStack Overcloud の問題を発見する

Python スクリプトを使用して OpenStack Overcloud の問題を発見する

[[314897]]

LogTool は、オーバークラウド ノードの問題の根本原因を見つけるのに役立つ Python スクリプトのセットです。

OpenStack は、オーバークラウド ノードとアンダークラウド ホスト上に多数のログ ファイルを保存および管理します。したがって、特に問題の原因がわからない場合は、OSP ログ ファイルを使用して発生した問題のトラブルシューティングを行うことは簡単ではありません。

このような状況であれば、LogTool を使用すると作業がずっと楽になります。これにより、手動で問題のトラブルシューティングを行うために必要な時間と労力を節約できます。 LogTool は、あいまい文字列マッチング アルゴリズムに基づいており、過去に発生したすべての固有のエラーと警告情報を提供します。ログのタイムスタンプに基づいて、特定の期間 (10 分前、1 時間前、1 日前など) のこの情報をエクスポートできます。

LogTool は Python スクリプトのセットであり、そのメイン モジュールPyTool.pyはアンダークラウド ホスト上で実行されます。特定の操作モードでは、オーバークラウド ログからエラーや警告情報をエクスポートするなど、オーバークラウド ノード上で直接実行される他のスクリプトが使用されます。

LogTool は Python 2 と Python 3 の両方をサポートしています。必要に応じて作業ディレクトリを変更できます: LogTool_Python2 または LogTool_Python3。

仕組み

1. オーバークラウドログからエラーと警告をエクスポートする

このモードは、オーバークラウド ノードから過去に発生したエラー警告を抽出するために使用されます。ユーザーは、エラーまたは警告メッセージを抽出するために使用する開始時間とデバッグ レベルを指定するよう求められます。たとえば、過去 10 分以内に問題が発生した場合は、その期間のエラー メッセージと警告メッセージのみを抽出できます。

この操作モードでは、結果ファイルを含む各オーバークラウド ノードのディレクトリが生成されます。結果として得られるファイルは、オーバークラウド ノードからのダウンロードにかかる時間を短縮するために圧縮された単純なテキスト ファイル ( *.gz ) です。圧縮ファイルを通常のテキスト ファイルに変換するには、 zcatまたは同様のツールを使用できます。また、Vi の一部のバージョンと Emacs の最近のバージョンでは、圧縮されたデータの読み取りがサポートされています。生成されたファイルはセクションに分割され、下部に目次が含まれます。

LogTool は、標準と非標準の 2 種類のログ ファイルをすぐに検出できます。標準ファイルでは、各ログ行には、タイムスタンプ、デバッグ レベル、情報などの既知の定義済み構造があります。非標準ファイルでは、ログの構造は不明です。たとえば、第三者のログなどが考えられます。目次では、各セクションの「名前 -> 行番号」を見つけることができます。例:

  • 生データ - 標準 OSP ログから抽出されたエラー/警告メッセージ:このセクションには、変更や修正を加えずに抽出されたすべてのエラー/警告メッセージが含まれます。これらのメッセージは、LogTool がファジー マッチング分析に使用する生データです。
  • 統計 - 各標準 OSP ログのエラー/警告の数:このセクションでは、各標準ログ ファイルのエラーと警告の数を確認できます。この情報は、問題の根本原因をトラブルシューティングするための潜在的なコンポーネントを理解するのに役立ちます。
  • 統計 - 標準 OSP ログ ファイルごとの一意のメッセージ:このセクションでは、指定されたタイムスタンプ内の一意のエラー メッセージと警告メッセージが提供されます。それぞれの固有のエラーまたは警告の詳細については、生データ セクションで同じメッセージを探してください。
  • 統計 - いつでも非標準ログ ファイルごとに一意のメッセージ:このセクションには、非標準ログ ファイル内の一意のメッセージが含まれます。残念ながら、LogTool はこれらのログ ファイルを標準のログ ファイルと同じ方法で処理することはできません。したがって、「特定の時間」のログ情報を抽出すると、その情報は無視され、過去に作成されたすべての固有のエラー/警告メッセージが表示されます。まず、結果ファイルの下部にある目次までスクロールして、そのセクションを確認します。目次の行インデックスを使用して、関連するセクションにジャンプします。行 3、4、5 の情報が最も重要です。

2. オーバークラウドノードからすべてのログをダウンロードする

すべてのオーバークラウド ノードからのログは圧縮され、アンダークラウド ホストのローカル ディレクトリにダウンロードされます。

3. すべてのオーバークラウドログで文字列を検索する

このパターンは、すべての Overcloud ログでユーザーが指定した文字列を「grep」(検索) します。たとえば、「VM の作成」の失敗したリクエスト ID など、特定のリクエストのすべてのログ メッセージを表示したい場合があります。

4. オーバークラウドの現在のCPU、RAM、ディスク使用量を確認する

このモードでは、各オーバークラウド ノードの現在の CPU、RAM、ディスク情報が表示されます。

5. ユーザースクリプトを実行する

このモードでは、ユーザーはオーバークラウド ノード上で独自のスクリプトを実行できます。たとえば、オーバークラウドのデプロイメントが失敗した場合、問題を解決するには各コントローラー ノードで同じプロセスを実行する必要があります。このパターンを使用して、「回避策」スクリプトを実装し、コントローラー上で実行できます。

6. 指定されたタイムスタンプで関連するログのみをダウンロードする

このモードでは、オーバークラウド上の「指定されたタイムスタンプ」の「最終変更時刻」を持つログのみがダウンロードされます。たとえば、エラーが 10 分前に発生した場合、古いログ ファイルは無関係であるため、ダウンロードする必要はありません。また、一部のバグ報告ツールでは大きなファイルを添付できない (または添付すべきではない) ため、このモードはバグ報告を書くときに役立つ場合があります。

7. アンダークラウドログからエラーと警告情報をエクスポートする

これは上記のモード 1 と同じです。

8. オーバークラウド上の異常なDockerを確認する

このモードは、ノード上の不健全な Docker を検索するために使用されます。

9. OSPログをダウンロードし、LogToolをローカルで実行する

このモードでは、Jenkins またはログ ストレージ ( cougar11.scl.lab.tlv.redhat.comなど) から OSP ログをダウンロードし、ローカルで分析できます。

10. アンダークラウドでのデプロイメントログの分析

このパターンは、オーバークラウドまたはアンダークラウドのデプロイメント中に何が問題だったかを理解するのに役立ちます。たとえば、 overcloud_deploy.shスクリプトでは、 --logオプションを使用するとデプロイメント ログが生成されます。このようなログの問題点は、ログが「わかりにくく」、何が問題なのか理解しにくいことです。特に、詳細度がvv以上に設定されている場合は、ログ内のデータが読みにくくなります。このモードでは、失敗したすべてのタスクに関する詳細な情報が提供されます。

11. Gerrit (Zuul) の失敗ログを分析する

このモードは、Gerrit (Zuul) ログ ファイルを分析するために使用されます。リモート Gerrit ゲート (HTTP ダウンロード) からすべてのファイルを自動的にダウンロードし、ローカルで分析します。

インストール

LogTool は GitHub で入手できます。次のコマンドを使用して、アンダークラウド ホストにクローンを作成します。

  1. git clone https : //github.com/zahlabut/LogTool.git

このツールは、いくつかの外部 Python モジュールも使用します。

パラミコ

SSH モジュールは通常、Undercloud にデフォルトでインストールされます。インストールされていることを確認するには、次のコマンドを使用します。

  1. ls - a / usr / lib / python2 . 7 / site - packages | grep paramiko

モジュールをインストールする必要がある場合は、アンダークラウドで次のコマンドを実行します。

  1. sudo easy_install pip
  2. sudo pip install paramiko == 2.1 . 1

美しいスープ

この HTML パーサー モジュールは、ログ ファイルをダウンロードするために HTTP が使用されるモードでのみ使用されます。これは、Artifacts HTML ページを解析して、その中のすべてのリンクを取得するために使用されます。 BeautifulSoup をインストールするには、次のコマンドを入力します。

  1. pip install beautifulsoup4

次のコマンドを実行して、requirements.txt ファイルを使用して必要なすべてのモジュールをインストールすることもできます。

  1. pip install - r requirements . txt

構成

必要なすべてのパラメータは、 PyTool.pyスクリプトで直接設定されます。デフォルト値は次のとおりです。

  1. overcloud_logs_dir = '/var/log/containers'
  2. overcloud_ssh_user = 'heat-admin'
  3. overcloud_ssh_key = '/home/stack/.ssh/id_rsa'
  4. undercloud_logs_dir = '/var/log/containers'
  5. source_rc_file_path = '/home/stack/'

使用法

このツールはインタラクティブなので、起動するには次のように入力するだけです。

  1. cd LogTool
  2. python PyTool . py

LogTool のトラブルシューティング

実行時にError.logRuntime.logの 2 つのログ ファイルが作成されます。報告する問題の説明には、両方を含めてください。

制限

LogTool は、最大 500 MB のファイルを処理するようにハードコードされています。

LogTool_Python3 スクリプト

github.com/zahlabut/LogTool から入手してください。

<<:  ハイブリッド クラウドは長期的な UC 展開オプションですか?

>>:  傍観者から CTO へ: Cloud Foundry Foundation での 5 年間

推薦する

toshost - 5 ドル/ストレージ 大容量ハードディスク VPS/2g メモリ/300g ハードディスク/アトランタ

toshost は英国に登録されているホスティング会社です。主な事業は「仮想ホスティング、VPS、専...

O2Oは外食産業の衰退傾向に対する解決策ではない

近年、O2Oという言葉はますます一般的になり、IT関連の情報欄だけでなく、一部の総合ニュースページで...

360、Xiaomi、WeChat、Oasisの運営とプロモーション戦略を解体

本日ご紹介するのは、360、Xiaomi、WeChat、Oasis の製品運用戦略です。製品運用で理...

ウェブサイトのインクルージョンを改善するための4つの要件

有能なSEO担当者は、業界に参入した初日から「急がば回れ」という真実を理解する必要があります。ウェブ...

Dockerコンテナの実際の使用例5つ

Docker は、あらゆるアプリケーション用の軽量で移植可能な自己完結型コンテナを簡単に作成できるオ...

ウェブサイトのページコンテンツの類似性が高い理由と解決策

一般的に、ウェブサイト構築時に重複コンテンツを避けることは困難ですが、重複コンテンツは検索エンジンに...

360度動画から見る動画マーケティングの道

動画サイトの今後の発展展望は?360の総合検索エンジンと同時に立ち上げられた360 Videoはその...

ウェブサイトレイアウトの全プロセス: 完璧なウェブサイトレイアウトデザインを作成するための 20 ステップ

ニューヨークの広告代理店 B-Reel のディレクター Claudio Guglieri 氏が、We...

新人になるときに注意すべきこと

今日は、SEO 初心者から SEO エキスパートに素早く変身する方法を皆さんにお伝えし、間違った方法...

Kubernetes、Docker Swarm、Amazon ECS 間のコンテナ戦争

[51CTO.com クイック翻訳] コンテナ技術の原型は 1970 年代後半に始まりましたが、コン...

ローカルウェブサイトが検討すべき3つの問題:コアバリュー、効率性、集金

この記事は紹興サンシャインネットワークのウェイ・ジン氏が寧浙ネットワークに寄稿したもので、彼はその中...

データ仮想化のさまざまな形式を理解する方法

データ仮想化は企業に多くのメリットをもたらします。たとえば、ビッグデータのセキュリティと整合性から、...

theqhost - 4 ドル / 2g メモリ / 50g SSD / 2T トラフィック / 4 つのデータセンター

theqhostは年に設立され、1年以上VPSを運営しています。平凡なタイプです。検索したところ、現...

ウェブサイトの最適化: ウェブサイトが含まれていないのはなぜですか?

ウェブサイトの最適化プロセスにおけるインクルージョンは、初心者にとってもベテランにとっても常に非常に...