ロードテストの自動化:Jmeter + TeamCity + Grafana





画像: Flickr



Habréのブログでは、会社でのDevOps文化の構築について引き続き話します。たとえば、SaltStackシステムを使用して解決するタスクを説明した最新のトピックの1つです。 今日は、別の興味深いトピック-いくつかの既成ツールを使用した負荷テストの自動化についてお話します。



前と同じように



負荷テストが実行されたサーバーを監視する必要がありました-プロセッサパフォーマンス、メモリ、オペレーティングシステムなどのメトリックを収集するため また、データベース、バス、およびキューのステータスを監視する必要があり、ログを操作する必要がある場合もありました。 これらすべてのタスクは、当社が開発したPythonスクリプトによって解決され、情報はSQLiteデータベースに保存され、レポートはCSVファイルを使用して生成されました。



以下に図を示します。







このアプローチの短所:





新しい束



最終的に、私たちは自分の自転車を放棄し、他の人の労働力を活用することにしました。 その結果、いくつかのツールの新しい束が生まれました。



データ保存



InfluxDB製品は、データストレージシステムとして使用されました。 これは、時系列(パフォーマンスメトリック、分析、イベント)を格納するために設計された数少ないDBMSの1つです。 オンザフライでデータを集約でき、システムはSQLに似た構文を使用するため、使いやすいです。 他の利点から:





測定にInfluxDBを使用する例を考えてみましょう。 時間間隔でタイプXマシンの温度を測定する必要があるとします。



これにはパラメーターがあります。





タグは集約とフィルタリングに使用され、データはストレージのフィールドに格納されます-それらはインデックス付けされず、「測定+タグ+タイムスタンプ」の組み合わせに対して1つの値のみが格納され、時間精度(s、ms、ms、ns)が設定されます。 データの保存期間は、クリーニングポリシーによって決まります。



測定は次のようになります。



temperature, machine-unit42,type=assembly internal=32, external=100 1434055562000000035
      
      





簡単に作成、転送でき、大量のリソースを必要としません。



モニタリング



監視の手段として、Zabbixを使用することにしました。 WindowsおよびLinuxホストでクロスプラットフォームエージェントを使用します。 パッシブチェックとアクティブチェックの両方が使用されます。 アクティブなチェックを通じて、閉じたネットワークのホストからメトリックが収集されます。 さらに、ESXiを搭載したホスト上の仮想マシンに対して自動検出機能を積極的に使用しました。



分析



オープンソースのgrafanaプロジェクトは、データ分析のツールとして使用され、ダッシュボードの作成、グラフ作成、クエリおよびダッシュボードのテンプレート作成に最適です。 システムは、異なるデータソース(同じInfluxDB、Zabbix、Elasticsearchなど)のクエリを作成できます。 一般に、この製品は非常に便利です。キャプションとプレイリストを作成し、ダッシュボードで検索し、データをエクスポートおよびインポートできます。



まあ、あなたはあなたの目を出血させないインターフェースに言及せずにはいられません(hello、Zabbix)。







最終構成



システムの要素を検討した後、最終的にすべてがどのように連携するかについて説明します。



重要なオペレーティングシステムとハードウェアのすべてのメトリックは、Zabbixと、アップグレードされたPythonコレクタースクリプトを使用して監視されます。 スクリプトによって収集されたメトリックはInfluxDBに保存され、情報はGrafanaに表示されます。







自動化



インフラストラクチャを準備したら、テストの自動化の問題を取り上げました。 このために、Apache JMeter製品が使用されました。 目的は次のとおりです。





実装の途中で、いくつかの問題を解決する必要がありました。





ここにそれらを解決するために行ったことがあります:





TeamCityでテストタスクを起動するためのインターフェイスは次のとおりです。







Jmeterには、InfluxDBにデータを送信するための組み込みプラグイン(バックエンドリスナー)があります







結論:仕組み



現時点では、負荷テストのプロセスはTeamCityでのタスクの起動です。起動時に必要なパラメーターを選択するだけです。 さらに、UIの操作に関する統計は、既製の対話型グラフの形式ですぐに表示されます。 更新されたスクリプトは、TeamCityのGitを介して自動的に取得されます。



PS SaltStackを使用した当社の経験に関するストーリーは、2016年秋にモスクワで開催されたDevOpsミーティングの一部として発表されました。



ビデオ:







スライド:







リンクには、イベント中に提示された16のレポートのプレゼンテーションが表示されます。 このトピック発表の最後に、すべてのプレゼンテーションとビデオプレゼンテーションがテーブルに追加されます。



作成者 :Ivan Ostanin、Sergey Tikhonov



All Articles