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

Source: https://habr.com/ru/post/J226983/


All Articles