つまり、elfstatsの使用を開始する前に、正規表現を使用してWebサーバーによって処理された要求を記述する必要があります。 その後、プログラムはアクセスログを定期的に解析し、記述された各テンプレートのリクエスト数と応答時間の分布を含むレポートファイルを生成します。 さらに、このレポートはMuninを使用して処理され、対応するグラフの形式で表示されます。 したがって、elfstatsをインストールして構成することにより、Webサーバーレベルでアプリケーションの動作とユーザーの動作の変化を簡単に追跡できます。
現在、Webサーバーを監視するためのさまざまなツールが多数あります。 しかし、それらの最も人気のあるものを分析した後、リクエストに関する詳細データを(ほぼ)リアルタイムで追跡し、すべての情報を1か所に表示し、会社に既に存在する監視インフラストラクチャに簡単に統合できるユーティリティは見つかりませんでした。 ソリューションの作業を開始する前に、APIリクエストを分析するために、2つの部分(データアグリゲーターとMuninプラグイン)からの古くて本質的にサポートされていないスクリプトを使用しました。 それらにはいくつかの深刻な問題がありました:ソースコードを変更せずに多かれ少なかれ柔軟な構成が不可能である、機能が不十分であり、バグがあります。 ログからの情報を解析および表示するタスクが膝に書かれたスクリプトによって解決されたのは私たちだけではなかったと思います。
単一の式で記述されたAPIグループへのリクエストの数を表示する
また、新しいソリューションの基礎として2つのコンポーネントのアプローチを採用しました。 ログから統計を収集するために、定期的な間隔で実行され、前回の起動以降に生成されたデータを分析するデーモンが作成されました。 収集された情報はレポートファイルに書き込まれ、Muninプラグインまたはその他のリアルタイムの視覚的な監視ツールで使用できます。 すべてのデータ処理タスクはデーモンに割り当てられているため、プラグインは非常にシンプルで非常に迅速に機能します。これは、数十のノードから順番にゆっくりと悲しい統計を収集する中央サーバーMuninにとって非常に重要です。 さらに、プラグインには短いレポートファイルを解析して値をmunin-nodeに返すことを除いて、実際にはロジックが含まれていないため、他の監視ユーティリティ用に簡単に書き換えることができます。 悪魔に触れる必要はありません。
プログラムの現在のバージョンは、次の機能をサポートしています。
- Apacheログ形式の解析。 サーバーの構成方法に関係なく、デーモンは生成されたログの形式を正しく解析します。 これを行うには、Apache構成行をデーモン設定ファイルにコピーするだけです。
- 1つのプロセスから1台のマシン上の複数の異なるログファイルを操作します。
- さまざまなローテーションオプション(所定の場所でのローテーションまたは名前に一時的なテンプレートを使用した新しいファイルの作成)をサポートする、以前のファイルの読み取りと解析。
- 正規表現を使用した、解析および無視されたクエリの柔軟なカスタマイズ。
- ターゲットマシン上の時間に対してシフトされたエントリを持つログファイルのサポート。
- 同様の要求をグループにグループ化して、システムの構成と制御を簡素化します。
API呼び出しの1つの応答時間分布
elfstatsを使用すると、次のデータを監視できます。
- ログ内のリクエストの総数。
- 説明された各グループのリクエスト数(および個別に遅いリクエストの数)。
- 各グループの応答時間の分布-最小、最大、平均、任意のパーセンタイル。
- リターンコードの配布-一般に、サーバーおよび要求の各グループごとに。
- 指定されたパターンの(異なる)一致の数。
- デーモンを監視し、構成をデバッグするための解析済み、欠落、およびエラーのあるエントリの数。
このデータを表示するには、PyMuninフレームワークに基づいて記述されたMuninの6つの異なるプラグインが使用されます。 プラグインはデーモンとは別に配布され、互いに独立しており、必要に応じてオンとオフを切り替えることができます。
リターンコード監視
デーモンとプラグインのコードはPython 2.6で書かれており、将来バージョン3.xのサポートが可能になります。 バイナリアセンブリは、Linux RedHat 6でコンパイルされたrpmパッケージの形式で利用できます。他のオペレーティングシステムで作業するには、ソースコードからデーモンとプラグインを収集する必要があります。 RHEL6を搭載したマシンへのelfstatsのインストールを簡素化するために、RPMは、必要なすべての依存関係を含むPython用のプリインストール仮想環境でサポートされています。 デーモンのソースコードはMITライセンスの下で公開されており、プラグインはPyMuninフレームワークの必要に応じてGPLv3の下で配布されます。 Puppetマニフェストは、サーバーでのelfstatsの初期展開とアップグレードに使用されます。 すべてのサーバーで異なる必要なタスクの構成ファイルを変更します。 リポジトリにはまだマニフェストがありません。それらは少し後に追加されます。
私が書いたプログラムは非常に機能的で柔軟であることが判明したようです。 数か月間、かなり多数のサーバーを監視するために使用されており、問題なく動作しています。 elfstatsを使用してサーバーを制御したい場合は喜んで、コメントとトラッカーでこのユーティリティの操作に関する質問に喜んでお答えします。