DOCS
インテグレーションガイド / Monit

Monit

本記事は米国PagerDuty社のサイトで公開されているインテグレーションガイドをそのまま日本語に翻訳したものです。日本語環境での動作を保証するわけではありません。原文はこちらを参照してください。

Monitは、Unixのシステムとサービスを管理および監視するための小さなオープンソースプログラムです。Monitは、インストールや設定が比較的容易で、しかも 先進的なユーザーなら柔軟に使えます。Monitは一般的な電子メールとAPIの両方の統合を介してPagerDutyと統合することができますが、このガイドではAPIの使用について説明します。電子メールの統合については、FAQの下で説明します。統合に関する問題が発生した場合は、お気軽にお問い合わせください 。support@pagerduty.com

PagerDutyでの設定

  1. ConfigurationメニューからServicesを選択します。

  2. Serviceスページで:インテグレーションのために新しいサービスを作成する場合は、+Add New Serviceをクリックします。既存のサービスに統合を追加する場合は、統合を追加するサービスの名前をクリックします。 その後、Integrationsタブをクリックし、+ New Integrationボタンをクリックします。 RS-Add-New-Service-13

  3. Integration Typeメニューから追加したいアプリケーションを選択し、Integration Nameを入力します。新たにサービスを作成する場合は、General Settingsで、サービスのNameを入力します。次に、Incident Settingsで、新しいサービスのEscalation Policy (エスカレーションポリシー)、Notification Urgency(通知の緊急度)、Incident Behavior<(インシデントの動作)を指定します。

  4. Add ServiceまたはAdd Integrationボタンをクリックして、インテグレーションを保存します。するとサービスのIntegrationsページにリダイレクトされます。 RS-Integration-Settings-11

  5. 新しいインテグレーションのIntegration Keyをコピーします RS_Updates__API_Services-1024x146-8

Monitでの設定

PagerDuty Python libraryのインストール

サーバ上のターミナルを開き、pip install pagerduty コマンドを実行してPython libraryを自動的にダウンロードしてインストールします。

PagerDuty-Monitスクリプトのインストール

  1. ターミナルを開き、システム全体のmonit構成のある場所(通常は ‘/etc/monit/’)または実行するユーザーのホームディレクトリに移動します

  2. 以下のコマンドのスクリプトをダウンロードしてください wget https://raw.githubusercontent.com/pinterest/pagerduty-monit/master/pagerduty-trigger wget https://raw.githubusercontent.com/pinterest/pagerduty-monit/master/pagerduty-resolve

  3. 両方のスクリプトを編集して、PAGERDUTY_SERVICE_KEY変数のコメントを解除し、以前のService API Key設定します。 4-etc_monit_pagerduty-300x112

  4. 両方のスクリプトが実行可能であることを確認してください: chmod + x pagerduty-trigger; chmod + x pagerduty-resolve

  5. `exec” / etc / monit / pagerduty-trigger nginx “をMonitチェックスタンザにアクションとして追加してください。 例:

check process crond with pidfile /var/run/crond.pid
    if does not exist for 3 cycles
        then exec "/etc/monit/pagerduty-trigger crond"
    else if succeeded for 3 cycles
        then exec "/etc/monit/pagerduty-resolve crond" 
  1. Monitをリスタートまたはリロードしてください: /etc/init.d/monit restart /etc/init.d/monit restart monit monit reload

インテグレーションのテスト: 監視対象に何を指定したかと、イベントにMonitがどう反応するように設定したかによっては、単にそのサービスをオフにするとインシデントをトリガーすることができます。上記の設定例では、サービスが3回連続してダウンした場合、 /etc/init.d/crond stopがインシデントをトリガーします。

よくある質問

  1. 複数のPagerDutyサービスを使用するようにMonitを設定できますか?

    できます。それぞれの名前とサービスキーが異なる ‘pagerduty-trigger’と ‘pagerduty-resolve’ファイルの別のコピーが必要です。 そこから、正しいスクリプトを実行するように、チェックスタンザを変更してください。

  2. Monitで何かが解決された場合、PagerDutyにも自動的に解決されますか?

    はい! Monitで解決されたイシューはPagerDutyを更新しますが、PagerDutyで問題を解決してもMonitでは修正されません。

  3. 代わりに電子メールのインテグレーションを使用したいと思うのですが、どう設定すればよいですか?

    Monitでメールサーバーを使うための構成設定は、ここにあります。電子メールを送信するには、EximやSendmailなどのメールサーバーをインストールする必要があります。

  4. MonitからPagerDutyアラートを受け取れていません。インシデントを手動でトリガーすると”/usr/local/bin/pagerduty:Is a directory”というエラーが表示されるのはなぜですか?

    PagerDuty Pythonライブラリがシステム上の別の場所に、例えば/usr/bin/pagerdutyにインストールされた可能性があります。which pagerdutyというコマンドを実行することで正しいパスを判断できます。 which-pagerduty-300x64 pagerduty-triggerとpagerduty-resolveファイルで単純に検索置換を実行して、 /usr/local/bin/pagerdutyをシステム上のPagerDuty Pythonライブラリの場所に書き換えてください。