はじめに

運用現場の作業を安全かつ効率的に自動化する PagerDuty Runbook Automation(以下、RBA)Amazon EC2 の連携チュートリアル。いよいよ今回が全3回シリーズの最終回となります!

これまでに、RBA の Runner 構築と、External ID を用いたセキュアな IAM 連携(認証設定)が完了しています。
今回は総仕上げとして、AWS 環境にある Amazon EC2 インスタンスを RBA の「ノード」として動的に読み込み、実際に「メモリ使用率を確認する」という実践的なジョブを作成・テストしてみましょう。

【Step 1】Node Source の追加(Amazon EC2 の読み込み)

RBA が AWS 環境を操作できるようになりましたが、今のままでは「どのサーバーを操作していいか」を RBA が把握していません。そこで、AWS プラグインを利用して Amazon EC2 インスタンスの情報を動的に取得する「Node Source」を設定します。

  1. RBA コンソールで対象のプロジェクトを開き、左メニューの Project Settings から Edit Nodes をクリックします。
    Edit Nodesメニューの選択
  2. Sources タブを開き、Add a new Node Source をクリックします。
    Add a new Node Sourceのクリック
  3. プラグイン一覧から AWS EC2 Resources を選択します。
    AWS EC2 Resourcesプラグインの選択
  4. 以下の項目を設定します。
    • Runner Selector: Local Runner(または第1回で作成した Runner のタグ)を指定します。
      Runner Selectorの指定
    • Region: 対象の Amazon EC2 が存在するリージョン(例:ap-northeast-1)を入力します。
    • Only Running Instances: チェックを入れます(起動中のインスタンスのみを対象にするため)。
    • その他の項目はデフォルトのままで問題ありません。
  5. 画面下部の Save ボタンをクリックして保存します。
    Node Source設定の保存

設定完了後、左メニューの Nodes をクリックします。フィルタを All Nodes に変更し、対象の Amazon EC2 インスタンスが一覧に表示されていれば、連携(ディスカバリ)は完璧に成功しています!

💡 参考:公式ドキュメント(Amazon EC2 Node Source の設定)
Amazon EC2 Node Source | Rundeck Docs

【Step 2】初めてのジョブ作成(メモリ使用率の確認)

対象のサーバーが認識できたので、いよいよ運用自動化の最小単位である「ジョブ」を作成します。
今回は、インシデント対応時の一次切り分けなどでよく使われる「メモリ消費量の上位5プロセスを取得するコマンド」をジョブとして定義してみましょう。

左メニューの ジョブ をクリックし、画面右上の new Job を選択して以下の通り設定します。

新規ジョブの作成画面へ

1. Details(詳細)タブ

  • Job Name: Check-Memory
  • Description: メモリ使用率

Detailsタブの入力

2. Workflow(ワークフロー)タブ

Add a step をクリックし、Node Steps の中から Command を選択します。

Commandステップの追加

  • Command: 以下の Linux コマンドを入力します。
    ps -eo pmem,pid,cmd | sort -k 1 -nr | head -5
  • Step Label: メモリ使用率
    コマンドとStep Labelの入力

入力が完了したら、ステップを保存(Save)します。

3. Nodes(ノード)タブ

このジョブをどのサーバーに対して実行するかを指定します。

  • Execute locally から Dispatch to Nodes に変更します。
  • Node Filter: 対象のノード名(例:.*test1.*)やタグを入力して、対象サーバーを絞り込みます。
  • マッチしたノード(Matched Nodes)に、先ほど読み込んだ Amazon EC2 が表示されることを確認します。
    Node Filterでの対象サーバー絞り込み

すべての入力が完了したら、画面左下の 保存 をクリックしてジョブを保存します。

【Step 3】ジョブの実行と結果確認

作成したジョブを実行して、動作検証を行います。

  1. 保存したジョブの画面から、今すぐジョブを実行 をクリックします。
  2. ジョブが開始されると、実行ログの画面に遷移します。
  3. Log Output タブを開き、Amazon EC2 上で実行されたコマンドの結果(メモリを消費している上位5つのプロセス)が表示され、ステータスが Succeeded になれば大成功です!
    ジョブ実行ステータス(Succeeded)

    Log Outputによるメモリ使用率の実行結果

エンジニアが直接サーバーに SSH ログインしてコマンドを叩くことなく、RBA のコンソールから(裏側では AWS Systems Manager を経由して)安全にサーバーの状態を確認することができました。

アイレットエンジニアの視点:なぜこのコマンドをジョブ化したのか?

今回ジョブに設定した ps -eo pmem,pid,cmd | sort -k 1 -nr | head -5 というコマンドは、メモリ使用率(pmem)でプロセスを降順にソートし、上位5件を抽出するものです。

例えば、システムのメモリアラートが発報された際、エンジニアは急いでサーバーにログインし、「今、何がメモリを食っているのか?」を調査します。しかし、この一次調査の手順を RBA でジョブ化しておけば、誰でも(あるいは PagerDuty からの自動実行で)ワンクリックで状況を把握できるようになります。

本番環境へのアクセス権限を広く付与しなくても、安全にトラブルシューティングの初動を行えるようになるのが、RBA を導入する最大のメリットの一つです。

おわりに:自動化による運用改善とアイレットの支援サービス

全3回にわたって、PagerDuty Runbook Automation と Amazon EC2 の連携手順をゼロから解説してきました。

今回のブログ連載では、PagerDuty Runbook Automation を活用したシステム運用の自動化基盤の作り方をご紹介しました。手動運用が抱える属人化やヒューマンエラーといった課題を解決し、より効率的で信頼性の高いシステム運用体制を構築するために、ぜひ本ツールの導入をご検討ください。

弊社アイレットでは、現在インシデント対応を「PagerDuty」と自社システム「AMS」を組み合わせて自動化・効率化しております。その実践的な知見やノウハウを活かし、お客様のシステム運用の「内製化支援サービス」等も行っております。

「運用を自動化したいが、どこから手を付ければいいか分からない」「自社の環境に合わせた最適な自動化フローを構築したい」といったお悩みがございましたら、ぜひアイレットへお気軽にご相談ください!

本連載が、皆様の現場における「運用自動化の第一歩」を後押しするヒントになれば幸いです。
全3回、最後までお読みいただき誠にありがとうございました!