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

SaltStack

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

SaltStackは、構成管理からサーバー自動化、監視サービスまで、幅広い機能とリモート実行を組み合わせた先進のシステム管理フレームワークです。

このドキュメントでは、SaltStackのリモート実行および構成管理ツールをPagerDutyとともに使えるように構成する方法について、詳しく説明します。SaltStack自体のより詳細なウォークスルーは、ここでご覧ください。

PagerDutyでの設定

SaltStack用のすべてのPagerDuty PlugInsには、pagerdutyサブドメインとapi_key、および統合を設定する必要があります。

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

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

  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-300x109

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

  6. Configurationメニューから、 API Accessを選択します。 apiaccess-0-1-300x97

  7. APIアクセスページで、+Create New API Key ボタンをクリックします。 apiaccess-1-1-300x47

  8. ポップアップするダイアログで、キーのDescriptionを入力し、API versionを選択するよう求められます。キーをRead-onlyとして作成するオプションもあります。このボックスをチェックしないままに置くと、フルアクセスキーが作成されます。 int3__API_Keys_-_PagerDuty-300x168

バージョンに関する注記:API v2.0は、新しいインテグレーションがPagerDutyと簡単に通信できるように設計されています。既存のPagerDutyのインテグレーションには、API v1.0キーが必要です。 使用するAPIバージョンについて質問がある場合は、[email protected] までご連絡ください。

  1. オプションを入力し終わったら、Create Key をクリックします 。

  2. Create Keyをクリックすると、キーを表示したダイアログが表示され、前の手順で記入したオプションが確認されます。このステップの後ではキーにアクセスできなくなりますので、今すぐ必要なアプリケーションにこのキーをコピーしてください。以前に作成したキーを失くしてしまい再びアクセスする必要がある場合は、キーを削除して新しいキーを作成する必要があります。 キーを正常にコピーした後、 Closeをクリックします。 api__2_-1-300x235

SaltStackでの設定:

Saltの2014.7.0リリースでは、PagerDutyはネイティブサポートされており、追加のプラグインは必要ありません。ただし、SaltはPagerDutyモジュールを使用続けるように構成する必要があります。 現在はMinion側の機能だけがサポートされています。

Minion構成ファイル

  1. 上記の手順を含め、 /etc/salt/minionファイルを編集します。 あなたのPagerDutyアカウントがhttp://myaccount.pagerduty.com/ と上記の設定を使用するように設定されていることを仮定し、設定スタンザは次のようになります:
      my-pagerduty-config:
           pagerduty.subdomain: myaccount
       pagerduty.api_key: K42pPqY75U1Qr7e9
    

ピラー構成

PagerDutyは、Saltのピラーシステムから設定することもできます。

  1. 上記の手順を含め、 /srv/pillar/pagerduty.slsファイルを作成します。 あなたのPagerDutyアカウントがhttp://myaccount.pagerduty.com/と上記の設定を使用するように設定されていると仮定し、設定スタンザは次のようになります:
    my-pagerduty-config:
          pagerduty.subdomain: myaccount
          pagerduty.api_key: K42pPqY75U1Qr7e
    
  2. /srv/pillar/top.slsファイルを編集して、PagerDuty設定に必要なミニオンを合わせます。すべてのミニオンがPagerDutyを使用するようになると、次のようになります。
    base:
            ‘*’:
                 - pagerduty
    
    

Salt’s Event ReactorでPagerDutyの使用

PagerDutyは実行モジュールとして使用できます。つまり、SaltのEvent Reactorシステムからも使用できます。 このガイドには、基本event実行モジュールの使用例があります。リアクターシステムの詳細については、 http://docs.saltstack.com/en/latest/topics/reactor/ を参照してください。

  1. master上の/etc/salt/masterファイルを編集します。 まだ存在しない場合は、reactorというセクションを追加します。 このセクションでは、使用するカスタムタグの名前と、使用されるリアクターファイルの場所を追加します。

    reactor:
          - ‘my/custom/tag’:
              - /srv/reactor/my-custom.sls
    
  2. リアクターファイルを/srv/reactor/my-custom.slsで作成します。このファイルは、PagerDutyのインシデントをトリガーするために、alertminionというミニオンを指示します。 service_keyは、上記のintegration key と同じ意味であることを注意してください。

    new_custom_alert:
          cmd.pagerduty.create_event:
              - tgt: alertminion
              - kwarg:
              description: “Custom alert from {{ data[‘name’] }}”
              details: This is a custom alert
              service_key: 8eb116b11626346239365c9651e
           profile: my-pagerduty-config
    
  3. リアクター構成を有効するためにSaltのmasterサービスをリスタートしてください。

    # On systems still using the legacy SysV init
    service salt-master restart
    
    # On systems using systemd
    systemctl restart salt-master
    
  4. masterから、ミニオンにSalt’s Event Busでイベントを発動するよう指示します。

    salt myminion event.fire_master '{"data":"my event data"}' 'my/custom/tag'
    
    

SaltステートでPagerDutyの使用

状態実行中にインシデントを作成することもできます。次の例は、ステートツリーが今は存在しないことを示します。Saltステートの詳細については、http://docs.saltstack.com/en/latest/topics/tutorials/index.html#states でご覧ください。

  1. 全てのミニオンがload averageを監視するステートのファイルを/srv/salt/top.slsに作成します。

     base:
        ‘*’:
            - loadavg
    
  2. load averageの監視を実行する/src/salt/loadavg.sls SLSファイルを作成します。 load averageが指定された範囲外になると、PagerDutyでインシデントがトリガーされます。

     check_load:
      status.loadavg:
        - maximum: 1.2
        - minimum: 0.05
        - onfail:
        - pagerduty: loadavg_trigger
    
     loadavg_trigger:
       pagerduty.create_event:
         - name: ‘Bad Load Average’
         - details: ‘Load average is outside desired range’
         - service_key: 8eb116b11626346239365c9651e
         - profile: my-pagerduty-config
    
  3. 各ミニオンに対してステータス表示ランを実行します。これはload averageをチェックし、必要に応じてインシデントをトリガーします。

    salt myminion state.highstate
    
    

その他のPagerDuty機能

その他の機能は、PagerDuty実行モジュールを通じて使用することもできます。 これらの機能を使用するには、PagerDuty用に少なくとも1つのミニオンを設定する必要があります。 Saltの現在のリリースでは、インシデントと現在のサービスの一覧表示がサポートされています。

サービスの一覧表示

返された他の情報に加えて、この機能はインシデントをトリガーするために使用できるインテグレーションキーを返します。設定されたミニオンを使用して、masterからコールするには次のようにします:

salt myminion pagerduty.list_services my-pagerduty-config

インシデントの一覧表示

この機能は、オープン、確認、解決を含む、アカウントに関連付けられているすべてのインシデントを返します。設定されたミニオンを使用して、masterからコールするには次のようにします:

salt myminion pagerduty.list_incidents my-pagerduty-config