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

Sensu

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

Sensuは、サーバー、サービス、アプリケーションの健全性とビジネスKPIのためのオープンソースの監視フレームワークです。 Sensuは、AWS EC2インスタンスなどのクラウド内のシステムを監視するために設計されたもので、あらかじめ設定で指定しなくても各システムを検出するように設計されています。

このガイドでは、Sensu CoreとPagerDutyをインテグレートするプロセスについて説明します。インテグレートを完了する際に問題が発生した場合は、当社までご連絡ください。(訳注:米国PagerDutyサイトのメールアドレス [email protected] がリンクされています。)

注:このガイドの手順はSensuの無料版であるSensu Core用です。 エンタープライズ版にはPagerDutyの統合機能が組み込まれています。PagerDutyは正式にHeavy Waterによってサポートされていますので、Sensu Enterpriseを使用している場合は、「Sensu Enterprise Integration Guide」(訳注:米国PagerDutyサイトの英語のページが表示されます)を参照してください。

執筆時点では、CentOS 5はSensu Core統合ではサポートされていません。

PagerDutyでの設定

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

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

  3. Integration TypeメニューからSensuを選択し、Integration Nameにインテグレーション名を入力します。インテグレーションのための新しいサービスを作成する場合は、General Settingsで、新しいサービスのNameを入力します。次に、Incident Settingsで、新しいサービスのEscalation PolicyNotification Urgency、およびIncident Behaviorを指定します。

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

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

Sensuサーバーでの設定

このガイドは、Ubuntu 16.04とAmazon Linux 2016.09と、Sensu 0.20.2-1と0.26.5-2の組み合わせテストして作られました。他のオペレーティングシステムやSensuバージョンではパスなどが異なる場合があります。紹介しているコマンドすべては、 root ユーザーで実行することを前提としています。

  1. PagerDuty Agentをインストールします。このエージェントはSensuからイベントを受信し、キューを使ってPagerDutyに送信し、問題のトラブルシューティングに役立つログを提供し、接続に失敗した場合(Sensuノードが一時的に接続を失った場合)にアラートを自動的に再試行します。

  2. PagerDutyハンドラ設定をSensuインストレーションのconf.dディレクトリに保存します。

    wget -O /etc/sensu/conf.d/pagerduty_handler.json     https://raw.githubusercontent.com/PagerDuty/pdagent-   integrations/master/conf.d/sensu_pagerduty_handler.json
    
    
  3. 上記の手順5で取得した統合鍵を持つように構成ファイルを変更します。

    /etc/sensu/conf.d/pagerduty_handler.json
            {
            "handlers": {
            "pagerduty": {
            "type": "pipe",
            "command": "/usr/share/pdagent-integrations/bin/pd-sensu -k YOUR-INTEGRATION-     KEY-HERE"
          }
        }
      }
    
  4. PagerDutyをデフォルトのハンドラにしたい場合は、つまり特定のハンドラが定義されていないチェックに対し警告があったときにPagerDutyへ通知させるには、デフォルトのハンドラ設定ファイルを開き、ハンドラのセットに pagerduty を追加します。

    /etc/sensu/conf.d/default_handler.json
      {
      "handlers": {
      "default": {
      "type": "set",
      "handlers": [
      "pagerduty"
      ]
    }
     }
    }
    

    PagerDutyをデフォルトのハンドラにしたくない場合は、PagerDutyに警告を送信するように設 定する必要があります。PagerDutyに警告を送信する各チェックの設定ファイルを開き、 pagerduty をチェックのハンドラに追加します。

    /etc/sensu/conf.d/YOUR-CHECK.json
     {
     "checks": {
    "YOUR-CHECK-NAME": {
    "command": "YOUR-CHECK-COMMAND",
    "subscribers": [
    "YOUR-SUBSCRIBERS"
    ],
    "interval": YOUR-INTERVAL,
    "handlers": ["default", "pagerduty"]
    }
    }
    }
    
  5. Sensuを再起動して、設定の変更を有効にします。 service sensu-server restart; service sensu-client restart

インテグレーションの動作確認

  1. SensuガイドChecks Getting Started (訳注:Sensuの英文ページに飛びます)で概説されているように、cronサービスを監視する標準チェックを作成します。上記の手順2で概説したようにPagerDutyをデフォルトのハンドラにした場合は、あなたのチェックは次のようになります:

    /etc/sensu/conf.d/check_cron.json
    {
      "checks": {
      "cron": {
      "command": "/etc/sensu/plugins/check-process.rb -p cron",
      "subscribers": [
      "test"
      ],
      "interval": 60,
      "handlers": "default"
      }
    }
    }
    

    PagerDutyをデフォルトのハンドラにしなかった場合、次のように handlerspagerduty を指定する必要があります:

    "handlers": ["default", "pagerduty"]
    
  2. 設定変更が有効になるようにSensuを再起動します。service sensu-server restart

  3. Sensuが動作していて、作成したcronチェックがOKであり、トリガされたアラートは他にないことを確認してください。ダッシュボードは次のようになります。

  4. Cronサービスを停止してみます:service cron stop

  5. Sensuでアラートが表示されてから60秒以内に、PagerDuty側に、トリガされた新しいインシデントが表示されます。 sensu_core_verify-05a-300x89

よくある質問

  1. Sensu Coreを複数のPagerDutyサービスと一緒に動作させるように設定できますか?

    はい。 次のように、複数のハンドラを作成することでこれを行うことができます。

    1. ハンドラごとに新しい名前(pagerduty1、pagerduty2など)を選択してつけます。

    2. pagerduty1_handler.json、pagerduty2_handler.jsonなどのように、名前の異なるコピーを作成します。

    3. 各ファイルで:

      • “pagerduty”を新しい別名に変更する
      • インテグレーションキーを、PagerDutyでハンドラーが使用されるサービスの個別のインテグレーションキーに変更します。
    4. 様々な異なるチェックのために、下記のように、チェックごとに別個のPagerDutyハンドラを使用するように、その名前で指定します

    /etc/sensu/conf.d/YOUR-CHECK.json
    {
      "checks": {
        "YOUR-CHECK-NAME": {
          "command": "YOUR-CHECK-COMMAND",
          "subscribers": [
          "YOUR-SUBSCRIBERS"
          ],
          "interval": YOUR-INTERVAL,
          "handlers": ["default", "pagerduty1"]
        }
      }
    }