- モバイルオペレータが提供するe-mail2smsゲートウェイ。 この方法は信頼性が低く、すべてのオペレーターがこのサービスを利用できるわけではありません。
- 監視サーバーにネジ止めされた鉄の電話を使用してください。 最も信頼性が高く、難しい方法。
- SMSサービス経由でメッセージを送信するためにtholdを教えます。
3番目の方法を選択しました。 これにはいくつかの理由があります。 まず、監視サーバーは「遠く」にあり、ハードウェア電話を接続する物理的な能力がありません。 第二に、私のビジネスの分野の1つはSMSサービスです。 したがって、 cactiを使用するためのサービスを拡張することは興味深いです。 この方法は、100%の作業能力を必要とする人には適さないとすぐに言わなければなりません。 監視サーバーでインターネット接続が失われた場合、メッセージを受信しないことは明らかです。 しかし、満足している人にとっては、99%が良い方法です。 それでは始めましょう。
最初に、 cactiとtholdモジュールをインストールして構成する必要があります。 cactiの構成はこの記事のトピックではないため、すべてが構成され機能していると考えています。 cacti コンソールの設定->設定->しきい値に移動し、 アラートをテキストとして送信にチェックマークを付けます。メッセージにHTMLコードは必要ありません。
![画像](https://habrastorage.org/getpro/habr/post_images/13f/a4c/fdd/13fa4cfdd96070e8949f65c81cfd9ce9.png)
次に、SMSサービスvesms.ruに有効なアカウントが必要です 。 そうでない場合は、登録します。 サービスを使用するためにPHPクラスをダウンロードした後。 VESMS.class.phpファイルを解凍し、 tholdモジュールがあるフォルダーに配置します。通常は/ usr / local / share / cacti / plugins / tholdです。
次に、ファイル/ usr / local / share / cacti / plugins / thold /thold_functions.phpのコードを編集します。 文字列関数thold_mail($ to、$ from、$ subject、$ message、$ filename、$ headers = ''){
この関数のコードにSMSの作業を追加する必要があります。 コードは最初は次のようになります
... function thold_mail($to, $from, $subject, $message, $filename, $headers = '') { global $config; thold_debug('Preparing to send email'); include_once($config['base_path'] . '/plugins/settings/include/mailer.php'); include_once($config['base_path'] . '/plugins/thold/setup.php'); $subject = trim($subject); $message = str_replace('<SUBJECT>', $subject, $message); ...
に変更
... function thold_mail($to, $from, $subject, $message, $filename, $headers = '') { global $config; thold_debug('Preparing to send email'); include_once($config['base_path'] . '/plugins/settings/include/mailer.php'); include_once($config['base_path'] . '/plugins/thold/setup.php'); require_once($config['base_path'] . '/plugins/thold/VESMS.class.php'); $subject = trim($subject); $message = str_replace('<SUBJECT>', $subject, $message); $user = 'USERNAME'; //API ( ) $key = 'APIKEY'; //API , http://client.vesms.ru/settings/api $sms = new VESMS($user, $key); $recipients='NUMBER'; // $sender='cacti'; // , , $sms->messageSend($recipients, $subject, $sender); ...
以上です。 この構成では、すべての電子メールメッセージがSMSによって複製されます。 電子メールの件名のみが、手紙の本文なしでSMSに届きます。 これで十分です。必要な情報はすべて含まれています。
理想的には、もちろん、より柔軟な設定を備えたSMS用の別のモジュールが必要です。 たぶん、これは手に届くでしょう。 しかし、現在のバージョンでは、すべてが正常に機能し、緊急事態に迅速に対応できます。