Top image of technical blog article regarding New Relic SSM Distributor

はじめに

New Relic をご利用いただくにあたり、インフラストラクチャエージェントはホストの稼働状況を監視するための基礎的なコンポーネントとして位置付けられています。インフラストラクチャエージェントを導入することで、CPU、メモリ、ディスク、プロセスといったホストリソースの利用状況やログ、ホストのメタデータなどのテレメトリーデータを収集し、New Relic に連携することが可能になります。インフラストラクチャエージェントを導入することは New Relic でのオブザーバビリティを実現するための第一歩ではありますが、クラウド環境などの大規模な環境において複数のホストにパッケージを一律で配布・管理するためには、効率的なデプロイの仕組みが必要になります。

New Relic は、AWS Systems Manager Distributor (SSM Distributor)の仕組みを利用して、Systems Manager で管理されるホストに遠隔でインフラストラクチャエージェントパッケージを配布する環境を提供しています。SSM Distributor は、Systems Manager のマネージドノードにソフトウェアパッケージを配布するための仕組みです。New Relic の SSM Distributor は公式のサードパーティパッケージとして AWS 環境に登録されているため、利用者が自前でインストーラーや配布スクリプトを用意することなく、AWS コンソールや API 経由で即座に複数のホストにインフラストラクチャエージェントを導入可能です。

SSM Distributor を利用するメリットは以下の通りです。

  • SSH / RDP のポート開放・鍵管理が不要
    • SSM Agent と AWS Systems Manager のセキュアな通信経路を利用するため、インバウンドポート(22 や 3389 など)を開ける必要がありません。セキュリティガバナンスを保ったままエージェントを展開できます。
  • 大規模フリートへの一括配布・スケール対応
    • タグ(例: Environment: Production)やリソースグループ、リージョン単位でターゲットを指定し、複数の EC2 インスタンスへ一括でエージェントを展開できます。
  • ライフサイクル管理と運用の自動化
    • 一度きりのインストール(Run Command)だけでなく、State Manager を活用した定期スケジュール実行(例: 毎週日曜日に最新バージョンへ自動更新)や、新規起動インスタンスへの自動セットアップも容易です。
  • AWS ネイティブな運用との親和性
    • AWS マネージメントコンソールだけでなく、AWS CLI、Terraform、AWS CloudFormation などの IaC ツールとも簡単に統合できます。

本ブログ記事では、入門者の方に向けて、AWS マネージメントコンソールから SSH 不要で New Relic Infrastructure エージェントを一括導入する手順を解説します。

導入前の準備(前提条件)

導入を進める前に、以下の環境が整っているか確認します。

AWS 側の前提条件

  • 対象の EC2 インスタンスに SSM Agent がインストール・起動していること
    • Amazon Linux 2023 や Windows Server などの一般的な公式 AMI には標準でプリインストールされています。
  • SystemsManager を実行する IAM ロールの設定
    • 「EC2 インスタンスに Systems Manager の操作を許可する IAM ポリシーを含むロールがインスタンスプロファイルとしてアタッチする」あるいは「Systems Manger のデフォルトのホスト管理設定において、適切な権限が付与されたデフォルトの IAM ロールを設定する」のいずれかでご対応ください。
  • SSM エンドポイントおよび New Relic へのアウトバウンド通信
    • インターネットゲートウェイ、NAT ゲートウェイ、または AWS Systems Manager 用の VPC エンドポイント(プライベート環境の場合)を経由して、各種 SSM エンドポイントおよび New Relic のコレクターエンドポイントへの通信が可能である必要があります。

New Relic 側の前提条件

  • New Relic アカウント
  • New Relic ライセンスキー
    • New Relic コンソールの右上のユーザーアイコンから API keys 画面を開き、キータイプが INGEST - LICENSE のキーを手元に控えておきます。

SSM Distributor によるエージェント導入手順

それでは、AWS マネージメントコンソールから実際にエージェントを導入していきます。

Step 1: AWS Systems Manager の Distributor を開く

  • AWS マネージメントコンソールにログインし、AWS Systems Manager を開きます。
  • 左側のナビゲーションペインから ディストリビューター (Distributor) を選択します。

Step 2: サードパーティパッケージを選択する

  • 「パッケージ」一覧の サードパーティー (Third party) タブをクリックします。
  • パッケージ一覧から New-Relic-infrastructure-monitoring-agent を選択します。

Step 3: インストールモードの選択

画面右上のアクションから、用途に応じて以下のいずれかを選択します。

  • 1 回限りのインストール (One-time installation):

    • 既存の対象インスタンスへ今すぐインストールしたい場合に選択します(裏側で AWS Systems Manager Run Command が呼び出されます)。
  • スケジュールへのインストール (Install on a schedule):

    • 定期的なバージョン更新や、Auto Scaling グループ等で後から追加されるノードにも自動適用したい場合に選択します(AWS Systems Manager State Manager が関連付けを作成します)。

※ 今回は入門として「1 回限りのインストール」を例に進めます。

Step 4: パラメータの設定

「コマンドのパラメータ」セクションで、以下の設定を行います。

  • Action(アクション): Install を選択します。
  • Installation Type(インストールタイプ):
    • In-place update: 既存のプロセスを極力止めずにパッケージを更新します。
    • Uninstall and reinstall: 完全にアンインストールしてから再インストールします。
  • Name(パッケージ名): New-Relic-infrastructure-monitoring-agent(自動入力されていることを確認)。
  • Version(バージョン): 空欄のままで問題ありません(空欄の場合、最新安定版が自動選択されます)。
  • Additional Arguments(追加の引数):
    • 以下の JSON 形式で、事前に控えた New Relic のライセンスキーを指定します。
{
  "SSM_NR_LICENSE_KEY": "YOUR_NEWRELIC_LICENSE_KEY"
}

(※ YOUR_NEWRELIC_LICENSE_KEY の部分を実際のライセンスキーに置き換えてください)

Step 5: ターゲットの指定と実行

  • ターゲット (Targets) セクションで、エージェントを導入する EC2 インスタンスを指定します。
    • タグの指定: Environment: Production などのタグで一括指定
    • インスタンスの手動選択: 検証用に特定の 1〜2 台を選択したい場合など
    • リソースグループ: リソースグループをあらかじめ作成している場合
  • その他の設定(出力オプションで S3 や CloudWatch Logs へのログ保存など)を確認します。
  • 画面下部の 実行 (Run) をクリックします。

実行後、コマンドのステータス画面に遷移します。全体のステータスが 成功 (Success) になれば、対象インスタンスへのエージェントインストールとサービスの起動が完了です。

監視データの確認(New Relic コンソール)

インストールが完了したら、New Relic にデータが届いているか確認します。

  • New Relic にログインします。
  • 左メニューから Infrastructure > Hosts を選択します。
  • 先ほど導入した EC2 インスタンスのホスト名が一覧に表示されていることを確認します。
  • 対象ホストをクリックすると、システムメトリクスがリアルタイムに可視化されていることを確認します

Tips

本項目では、注意するべき点や考慮点をご紹介します。

Tips 1: 設定ファイル(newrelic-infra.yml)の上書き挙動に注意

SSM Distributor を実行すると、対象サーバーの /etc/newrelic-infra.yml(Windows の場合は C:\Program Files\New Relic\newrelic-infra\newrelic-infra.yml)が自動生成されます。

もし既存のインスタンスで手動設定したカスタム属性(custom_attributes)やプロキシ設定、ログ転送設定などを記述していた場合、SSM Distributor の実行によってファイルが上書きされ、ライセンスキーのみの初期設定に戻ってしまうことがあります。既存環境への配布を行う際は、事前に対象ファイルの設定内容を確認・バックアップしておくことをおすすめします。

バックアップを取得するためのアプローチの一例として、SSM Run Command の AWS-RunShellScript / AWS-RunPowerShellScript などを利用し、S3 などへ設定ファイルをバックアップするシェルスクリプトを実行する方法があります。

Linux 向けバックアップスクリプト例

#!/bin/bash
set -e

# --- 変数設定 ---
S3_BUCKET="YOUR_S3_BUCKET_NAME"  # S3バケット名
CONF_PATH="/etc/newrelic-infra.yml" # 対象の設定ファイル

# IMDSv2 からインスタンス ID を取得し、S3 オブジェクトキーにインスタンス ID を指定
TOKEN=$(curl -s -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600")
INSTANCE_ID=$(curl -s -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/instance-id/)
S3_TARGET_URI="s3://${S3_BUCKET}/backups/${INSTANCE_ID}/newrelic-infra.yml"

echo "=== エージェントインストール前のバックアップを開始します (Instance: ${INSTANCE_ID}) ==="

if [ -f "$CONF_PATH" ]; then
    aws s3 cp "$CONF_PATH" "$S3_TARGET_URI"
    echo "バックアップ成功: ${S3_TARGET_URI}"
else
    echo "エラー: 設定ファイル ${CONF_PATH} が見つかりません。処理を中断します。"
    exit 1
fi

設定ファイルの退避先として、EC2 インスタンスのローカルファイルシステム内に一時複製を作ることも有効ですが、S3 に保存しておくことで、Auto Scaling などで EC2 インスタンス自体を再作成・破棄せざるを得ない場合でも、設定ファイルを安全に永続化・再利用できるメリットがあります。設定ファイルの退避先については、要件に合わせてご検討ください。

Tips 2: ライセンスキー管理のセキュリティ向上

マネージメントコンソールの「Additional Arguments」に平文でライセンスキーを入力することに抵抗がある場合は、AWS Systems Manager Parameter Store や AWS Secrets Manager と連携した配布の自動化(CLI や Terraform 経由)をご検討ください。ただし、SSM のパラメータ参照機能({{ssm:パラメータ名}})は、セキュリティ強度が高い SecureString(暗号化文字列)タイプのパラメータの直接展開に対応していません。より安全にライセンスキーを管理したい場合は、AWS CLI(aws ssm get-parameter --with-decryption)などを呼び出して動的にキーを復号し、CI/CD パイプライン経由で動的にパラメータを注入する構成を構築することをおすすめします。

Parameter Store や Secrets Manager でのパラメータの取り扱いについては AWS の公式ドキュメントをご参照ください。

Tips 3: インストールに失敗した場合のトラブルシューティング

もし Run Command のステータスが「失敗 (Failed)」になってしまった場合は、以下の順で切り分けを行います。

  • Run Command の詳細ログを確認する:
    • コンソールの実行履歴から対象インスタンスを選択し、「出力の表示」から stdout および stderr を確認します。パッケージダウンロードの失敗なのか、キーの形式エラーなのかが記載されています。
  • IAM ロールと SSM 接続の確認:
    • そもそもコマンドが届いていない場合は、EC2 インスタンスがSSM フリートマネージャーのマネージドノード一覧でオンラインになっているか確認してください。CloudTrail のイベント履歴を参照し、SendCommand API 実行後の動作を確認することも有効です。
  • エージェントのローカルログの確認:
    • OS 上のログファイルの確認:
      • Linux: /var/log/messages や journalctl -u newrelic-infra
      • Windows: イベントビューアーの Application ログ

まとめ

今回は、AWS Systems Manager Distributor を使って New Relic Infrastructure エージェントをリモートで複数マネージドノードに一括で導入する手順をご紹介しました。SSM Distributor を利用することで、AWS Systems Manager のメリットを活かしたパッケージ管理を行うことができます。例えば、State Manager を利用してパッケージを最新版に維持しつつづける、といった運用が可能になります。特に、一定規模以上の環境にインフラストラクチャエージェントを導入する際には SSM Distributor の利用もご検討ください。