Zabbixを使用してSphinxインデックスの応答時間を監視する簡単な方法

挑戦する



たとえば、Zabbix監視サービスが既に構成され、会社全体に配布されており、Sphinx検索エンジンも使用しています。 彼はすぐに探していますが、インデックスのコンテキストでパフォーマンスをライブで監視するための組み込みツールはありません。 たとえば、多くの検索エンジンがあり、システムリソースの消費量を特定の各インデックスと相関させて、それらをサーバー間で分散する方法を理解し、どのコレクションが希望よりも長く応答し始めるかを確認し、これが相関するかどうかを理解したい場合、ユーザーの負荷などを増やします。



ソリューション設計



Sphinxは、わずかなパフォーマンスの損失とログサイズのわずかな増加で、リクエストごとのリソース消費に関するより詳細な情報を表示する機能を提供します。 これを行うには、searchdプロセスをsearchd --iostats --cpustatsパラメーターで開始し、バージョン2.0.1-beta以降では、searchdをquery_log_format = sphinxql構成で実行して完全なログを表示する必要があります。 この場合、ログ行は次のようになります。



/* Sun Jun 8 16:05:00.098 2014 conn 531 real 0.01 wall 0.06 found 1 */ SELECT tmstmp FROM index ORDER BY tmstmp desc LIMIT 0,1; /* ios=0 kb=0.0 ioms=0.0 cpums=0.6 */
      
      







どこで

conn-最初からのリクエストのシリアル番号

real-すべてのコアからのリクエストに費やされた合計時間

wall-クライアントの合計応答時間

found-見つかったレコードの数

ios-I / O操作の数

kb-読み取りインデックスファイルの量

ioms-要求に応じてiowait時間

cpums-リクエストごとのユーザーCPU時間



1.)Sphinxによるパラメーターの削除:

メインプロセスの最も透過的で安全なオプションは、テキストログに対して単純なtail -Fを実行し、それを整列させる

2.)Zabbixのフェンスパラメータ:

jmx、snmp、zabbixトラップを考慮することができるオプションの中で-jmxの場合は各検索サーバーでjvmをさらに上げる必要があり、snmpの場合はMIB要素の独自のツリーを処理する必要があり、zabbixトラップは残ります-www.zabbix.com/documentation/2.0/manual/config / items / itemtypes / trapper-zabbix_senderプログラムを使用して直接zabbixにデータを送信できるようにするもの-エージェントのインストールが必要ですが、Zabbixモニタリングが既にある場合は、おそらく既にインストールされています。

3.)実装ツールに課されるパフォーマンスの制限はありません— Pythonは少なくともLinuxサーバーにプリインストールされています—実装として選択します



解決策



ソリューションのソースコードはここからダウンロードできます: github.com/kuptservol/SphinxLogMonitor-ソリューションは、テールサブプロセスを起動し、query.logから1行ずつ受け取り、指定された正規表現<log_parse_pattern>に従って解析し、Zabbixにデータを送信するpythonプロセスです、特定の期間<time_aggregation_period_sec>にわたってインジケーターの算術平均を計算することにより、データを集計できます。



1.)zabbix-agentがインストールされていない場合は、インストールする必要があります:



-tar -xzvf zabbix-xxxtar.gz

-cd zabbix-xxx

-./configure --enable-agent --prefix = / usr / local / zabbix

-インストールする



2.)次に、Zabbixの検索サーバーでホストを起動し、監視される各ログパラメーターにキーを指定して、Zabbixトラッパータイプのアイテムを作成します



3.)zabbix_conf.iniでzabbixサーバー[ZabbixServer]のアドレスを設定します。これは、行からプルされたログパラメーターの、zabbixキー[ZabbixKeyLogFieldMapping]で作成されたものへのマッピングです。



4.)startSphinxLogMonitor.sh、stopSphinxLogMonitor.shは、デーモンをバックグラウンドで起動し、Pythonプロセスとテールサブプロセスを正しく停止できるようになります。



-shを実行可能にするchmod + x startSphinxLogMonitor.sh

-chmod + x stopSphinxLogMonitor.sh



5.)開始するには:./startSphinxLogMonitor.sh <query.logへのパス> <zabbix_conf.iniへのパス> <ログへのパス>

停止するには:./stopSphinxLogMonitor.sh



All Articles