まえがき
私たちの組織は、すばらしい(私の意見ですが、間違っているかもしれません)製品をメールサーバーとして使用しています-Communigate Pro (CGP)。 昔は、オペレーティングシステムを監視するための通常のCommunigate + logwatchツールを使用して、サーバーの動作が監視されていました。 これらのツールにZabbixが追加されました。 Zabbixエージェントを使用してオペレーティングシステムのすべての主要な側面を監視し、SNMPリクエストを使用してCGPからの統計を監視します。 これらのメソッドは、ほぼすべての必要なシステムパラメーターをカバーしています。 しかし、単に追跡できないいくつかの特性があります。 特に、私たちにとって、特定のドメインおよび/または特定のホストへのキュー内のメッセージ数などの特性は非常に重要です。 CGP管理インターフェイスにはこれらのキューを監視する機能がありますが、すべての情報を1か所で監視したいと思います。 それで、これは私たちとどのように行われますか。
キューステータスを表示するためのユーティリティ
CGPには、PerlおよびJavaでこのAPIを操作するための、十分に文書化されたAPI +ライブラリがあります。 また、豊富な機能の中でも、ホストまたはドメインへのCommunigateモジュールのキュー内のメッセージ数を確認できる機能があります。
GETMESSAGEQUEUEINFO moduleName QUEUE queueName
この関数は、モジュール名とキュー名の2つの引数を入力として受け取ります。
- モジュールの名前。 CGPにはいくつかのモジュールがありますが、特にSMTPモジュールに興味があります。
- キューの名前。 ドメインまたはホスト名と一致します。
それに応じて、関数は次のようなキューに関する情報を返します。
- このキュー内のメッセージの総数
- 合計メッセージサイズ
- メッセージの再送信が遅延するまでの時間。
- このキューの最後のエラーに関する簡単な情報(ある場合)。
- キューの状態(待機、配信など)。
この機能を使いやすくするために、小さなユーティリティを作成する必要がありました。 Perlで書かれています。 私はお気に入りのPythonでそれを望んでいましたが、CGP用の公式Pythonライブラリはなく、私自身のPythonライブラリはまだ完成中です。 ユーティリティを機能させるには、CLI.pm pearlモジュールが必要です。これは、CGP APIのドキュメントに記載されています 。 ユーティリティの主な機能は、ヘルプに記載されています。
check_queue [-h hostname] [-p port] -u username -w password [-m module] -q queue [-t | -s [-f]] check_queue -h|--help -h hostname - address of DNS name of the server (Default: localhost) -p port - port for connection (Default: 106) -u username - account on CGatePro with grant 'Can View Queued Messages' -w password - user password -q queue - queue name to check -m module - name of CGP module (Default: SMTP) -t - if use this option then program return just total number of messages in queue -s - if use this options then program return just total size of messages in bytes -f - this option is used just with -s option, if it's set then size will be more readable. --help - print this help --debug - show debug lines
その使用例:
# torwald@torwald-station:~$ ./check_cgp_queue.pl -h myserver.domain.org -u monitor -w password -q another.domain.org Total: 41 Size: 65374728 Delay: 05-05-2014 06:04:28 State: waiting # torwald@torwald-station:~$ ./check_cgp_queue.pl -h myserver.domain.org -u monitor -w password -q another.domain.org -t 41
モニタリングをつなぐ
事前準備
CentOS5およびCentOS6の準備について説明します。
すべての準備は次のとおりです。
- ユーティリティを/ usr / local / binに配置し(拡張機能を「切断」することができます)、このユーティリティを実行するzabbixエージェント(デフォルトでは-zabbix)の権限をユーザーに付与します。
- CLI.pmモジュールは、zabbixに代わって起動されるPerlインタープリターに「見える」場所に配置します。 これは/ usr / local / lib / perl5です。
- CGP管理インターフェイスで、「監視できる」->「キューに入れられたメッセージを表示できる」権限を持つユーザー(たとえば、cgpmon)を作成します。
- zabbixユーザーの下から接続を確認します。
監視エージェントの構成
1.次の設定をエージェント構成ファイルに追加します。
# /etc/zabbix_agentd.conf # UserParameter=cgp.queue.total[*],/usr/local/bin/check_cgp_queue -u cgpmon -w password -q $1 -t # UserParameter=cgp.queue.size[*],/usr/local/bin/check_cgp_queue -u cgpmon -w password -q $1 -s
特に、このパラメーターと「アスタリスク」を使用した構文の詳細については、 ドキュメントを参照してください 。
つまり、このエントリは、監視システムがcgp.queue.total [other.domain.org]キーで要求されたときに、監視システムエージェントが次のコマンドを実行することを意味します。
/usr/local/bin/check_cgp_queue -u cgpmon -w password -q other.domain.org -t
または、言い換えると、角括弧で示されたドメインごとのメッセージ数を受け取ります。
2.エージェントを再起動します。
監視サーバーのセットアップ
3つのドメインのキューのステータスに関心があるとします。
- foo.example.org
- bar.example.org
- tor.example.org
1.監視サーバー上に別のテンプレートを作成します(たとえば、テンプレートCGPキュー)。
2.次のキーを使用してデータ要素を追加します。
# cgp.queue.total[foo.example.org] cgp.queue.total[bar.example.org] cgp.queue.total[tor.example.org] # cgp.queue.size[foo.example.org] cgp.queue.size[bar.example.org] cgp.queue.size[tor.example.org]
3.サーバー上でテンプレートをロールします。
4.不要なキューを無効にします。 たとえば、同じサーバー上にあるドメインのSMTPキューを監視することは意味がありません。 常に空です。
5.トリガーを公開します。
6.観察をオンにします。
ソース
Pro CLIおよびAPIドキュメントの伝達
CGPへの大麦インターフェース
ZabbixのUserParameterの詳細
check_cgp_queueユーティリティのソースコード