New Relic Azure統合設定の基本概念と設定手順

Azure環境でNew Relicによる監視を始めたい方に向けて、基本概念から実際の設定手順までを分かりやすく解説します。AWSと異なるAzure特有の認証方式や管理方法を理解しながら、効果的な監視環境を構築していきましょう。

なぜAzure統合が必要なのか

Azure環境では、監視対象が複数のレイヤーに分散しており、それぞれ異なる管理ツールで監視されることが一般的です。

New RelicのAzure統合により、これらの分散した監視情報を統一ダッシュボードで一元管理できます。

Infrastructure AgentはAzure VM上で動作し、ホストレベルの詳細なメトリクスを収集します。一方、Azure統合はAzure Monitor APIを通じてAzureマネージドサービスのメトリクスを収集します.

1. Azure Monitor との統合

Infrastructure Agentによる監視

  • Azure VMのCPU、メモリ、ディスク使用率
  • 実行中のプロセスとサービスの状態
  • ネットワークトラフィックの詳細
  • カスタムメトリクスとログファイル

Azure統合による監視

  • SQL Databaseのパフォーマンスメトリクス
  • App Serviceのレスポンスタイムとエラー率
  • Application Gatewayの接続数とレイテンシ
  • Storage Accountのトランザクション数
  • Key Vaultのアクセスパターン

2. サービスプリンシパルによる安全な認証

AzureはAWSとは異なり、サービスプリンシパルという仕組みで外部サービスからの安全なアクセスを管理します。これにより、きめ細かな権限制御が可能です。

3. リソースグループベースの管理

Azureのリソースグループ構造を活かした効率的な監視範囲の設定が可能になります。

基本的なセットアップの流れ

ステップ1: サービスプリンシパルの作成

なぜサービスプリンシパルが必要なのか

サービスプリンシパルは、Azureにおけるアプリケーション用のIDです。New RelicがAzureリソースに安全にアクセスするために必要な認証情報を提供します。

Azure Portalでの設定手順

  1. Azure Active Directoryにアクセス

    • Azure Portal → Azure Active Directory → アプリの登録
  2. 新規アプリケーションの登録

    • 「新規登録」をクリック
    • 名前: NewRelic-Infrastructure-App
    • サポートされているアカウントの種類: この組織ディレクトリのみ
  3. クライアントシークレットの作成

    • 登録したアプリ → 証明書とシークレット → 新しいクライアント シークレット
    • 説明: NewRelic Integration Secret
    • 有効期限: 24か月(推奨)
  4. 必要な情報の記録

    以下の情報を記録してください:

項目確認場所用途
Application (Client) IDアプリの概要ページNew Relic統合設定で使用
Directory (Tenant) IDアプリの概要ページテナント識別
Client Secret証明書とシークレット認証用秘密鍵
Subscription IDサブスクリプションページ課金・管理単位

権限の付与

  1. サブスクリプションレベルでの権限設定
    • Azure Portal → サブスクリプション → アクセス制御 (IAM)
    • ロールの割り当てを追加
    • ロール: Reader
    • アクセスの割り当て先: 作成したサービスプリンシパル

ステップ2: Azure VMでのInfrastructure Agent設定

基本的なインストール方法

AzureではVirtual MachineにVM拡張機能を使用してAgentをインストールする方法が効率的です。

Ubuntu/Debian系の場合

bash
# New Relicリポジトリの追加
curl -fsSL https://download.newrelic.com/infrastructure_agent/gpg/newrelic-infra.gpg | sudo apt-key add -
echo "deb https://download.newrelic.com/infrastructure_agent/linux/apt $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/newrelic-infra.list

# パッケージ情報の更新とインストール
sudo apt-get update
sudo apt-get install newrelic-infra -y

基本設定ファイル

yaml
# /etc/newrelic-infra.yml
license_key: YOUR_LICENSE_KEY
display_name: "azure-production-vm-01"

# Azure環境固有の設定
custom_attributes:
  environment: production
  cloud_provider: azure
  resource_group: production-rg

Azure VM Extension を使用した自動インストール

Azure VM拡張機能を使用してInfrastructure Agentを自動インストールします。

bash
# Linux VM へのインストール
az vm extension set \
  --resource-group "myResourceGroup" \
  --vm-name "myVM" \
  --name "CustomScript" \
  --publisher "Microsoft.Azure.Extensions" \
  --settings '{
    "fileUris": ["https://raw.githubusercontent.com/your-repo/newrelic-install.sh"],
    "commandToExecute": "bash newrelic-install.sh YOUR_LICENSE_KEY"
  }'

カスタムスクリプトでのインストール

Azure VM起動時に実行するインストールスクリプトです。

bash
#!/bin/bash
# newrelic-install.sh - Azure VM用インストールスクリプト

NEW_RELIC_LICENSE_KEY="$1"

if [ -z "$NEW_RELIC_LICENSE_KEY" ]; then
    echo "Usage: $0 <NEW_RELIC_LICENSE_KEY>"
    exit 1
fi

# Azure メタデータ取得
AZURE_METADATA_URL="http://169.254.169.254/metadata/instance?api-version=2021-02-01"
METADATA=$(curl -s -H "Metadata:true" "$AZURE_METADATA_URL")

VM_NAME=$(echo $METADATA | jq -r '.compute.name')
RESOURCE_GROUP=$(echo $METADATA | jq -r '.compute.resourceGroupName')
SUBSCRIPTION_ID=$(echo $METADATA | jq -r '.compute.subscriptionId')
LOCATION=$(echo $METADATA | jq -r '.compute.location')
VM_SIZE=$(echo $METADATA | jq -r '.compute.vmSize')

# OS判定とパッケージ管理
if [ -f /etc/redhat-release ]; then
    # RHEL/CentOS
    curl -o /etc/yum.repos.d/newrelic-infra.repo \
         https://download.newrelic.com/infrastructure_agent/linux/yum/el/7/x86_64/newrelic-infra.repo
    yum -q makecache -y --disablerepo='*' --enablerepo='newrelic-infra'
    yum install newrelic-infra -y
elif [ -f /etc/debian_version ]; then
    # Ubuntu/Debian
    curl -fsSL https://download.newrelic.com/infrastructure_agent/gpg/newrelic-infra.gpg | apt-key add -
    echo "deb https://download.newrelic.com/infrastructure_agent/linux/apt $(lsb_release -cs) main" | \
         tee /etc/apt/sources.list.d/newrelic-infra.list
    apt-get update
    apt-get install newrelic-infra -y
fi

# 設定ファイル作成
cat > /etc/newrelic-infra.yml << EOF
license_key: ${NEW_RELIC_LICENSE_KEY}
display_name: ${VM_NAME}
verbose: 0

# カスタム属性(タグ)の設定
custom_attributes:
  environment: production
  azure_subscription_id: ${SUBSCRIPTION_ID}
  azure_resource_group: ${RESOURCE_GROUP}
  azure_location: ${LOCATION}
  azure_vm_size: ${VM_SIZE}
  deployment_method: vm_extension

# ログ設定
log:
  level: info
  file: /var/log/newrelic-infra/newrelic-infra.log
EOF

# サービス開始
systemctl enable newrelic-infra
systemctl start newrelic-infra

echo "New Relic Infrastructure Agent installation completed"

ARMテンプレートによる自動デプロイ(参考)

Azure VMにInfrastructure Agentを自動インストールする場合は、ARMテンプレートを使用できます。詳細なテンプレートは公式ドキュメントを参照してください。

基本的な構成要素:

  • VMエクステンション(Custom Script Extension)
  • ネットワークセキュリティグループ
  • Agent自動インストールスクリプト

Azure統合の設定

Azure統合の仕組み

Azure統合は、New RelicがあなたのAzureサブスクリプションのサービスプリンシパルを使用して、Azure Monitor APIからメトリクスを定期的に収集する仕組みです。

New RelicでのAzure統合有効化

New Relicダッシュボードから簡単に設定できます:

  1. New Relicダッシュボードでの設定

    • Infrastructure > Azure > Add Azure accountをクリック
    • 設定方法を選択(推奨: Automated)
  2. サービスプリンシパルの作成(Azure Portal)

    • Azure Active Directory > App registrations > New registration
    • アプリケーション名: "NewRelic-Integration"
    • Certificates & secrets > New client secret
    • Client IDとSecretをメモする
  3. ロールの割り当て

    • Subscriptions > Access control (IAM) > Add role assignment
    • Role: Reader
    • 作成したサービスプリンシパルを指定

Infrastructure as Code(IaC)による自動化

TerraformやARMテンプレート、PowerShellを使用して、Azure統合の設定を自動化できます。詳細な実装例はGitHubリポジトリを参照してください。

主要な設定項目:

  • Tenant IDとSubscription ID
  • Application ID(Client ID)とClient Secret
  • メトリクス収集間隔(デフォルト: 5分)
  • リソースグループのフィルタリング

Azure Monitorとの高度な連携

Log Analytics Workspaceとの統合

Azure Monitor LogsをNew Relicに転送するには、Azure FunctionやLogic Appsを使用します:

  1. Azure Functionの作成

    • Functions > Create Function App
    • Runtime: Node.jsまたはPython
    • HTTP Triggerで関数を作成
  2. Log Analyticsのエクスポート設定

    • Log Analytics Workspace > Data Export
    • エクスポート先としてAzure FunctionのHTTPエンドポイントを指定
  3. データ変換処理

    • Azure Monitorのログ形式をNew Relic形式に変換
    • 必要なメタデータを付与
    • New Relic Logs APIへ送信

Application Insights統合

Application InsightsのテレメトリデータをNew Relicに統合する方法:

  1. Continuous Exportの設定

    • Application Insights > Continuous Export
    • Export先としてStorage Accountを指定
    • エクスポートデータ: テレメトリ、イベント、メトリクス
  2. データ処理パイプライン

    • Azure FunctionでStorage Accountを監視
    • 新しいファイルが追加されると自動実行
    • JSONデータをNew Relic形式に変換して送信
  3. 直接API連携

    • Application Insights REST APIからデータを取得
    • 定期的にNew Relic Custom Events APIへ送信

運用とベストプラクティス

タグベースの監視設定

Azureリソースのタグを活用した効率的な監視設定:

  1. Azureリソースのタグ設定

    bash
    # Azure CLIでタグを設定
    az resource tag --tags Environment=production Application=web-app Team=backend \
      --id /subscriptions/{subscription-id}/resourceGroups/{rg-name}/providers/Microsoft.Compute/virtualMachines/{vm-name}
  2. Infrastructure Agentの設定

    • Azure VMのメタデータからタグが自動的に取得される
    • 特別な設定は不要
    • カスタム属性で追加情報を設定可能
  3. New Relicでの活用

    • NRQLクエリでタグフィルタリング
    • アラートポリシーの条件指定
    • ダッシュボードのグルーピング

Azureメタデータの活用

Azure VMでは、インスタンスメタデータサービスからVM固有の情報を自動取得できます:

取得可能な情報用途設定例
VM名display_nameazure-web-01
リソースグループカスタム属性production-rg
リージョンカスタム属性japaneast
VMサイズカスタム属性Standard_B2s

ステップ3: Azure統合の有効化

New Relicコンソールでの設定

  1. 統合セクションにアクセス

    • New Relic One → Infrastructure → Azure
  2. Azureアカウントの接続

    • 「Add Azure account」をクリック
    • 前手順で取得した認証情報を入力:
      • Application ID
      • Client Secret
      • Tenant ID
      • Subscription ID
  3. 監視対象サービスの選択

    初期設定で推奨されるサービス:

サービス監視内容重要度
Virtual MachinesCPU、メモリ、ディスク使用率
SQL Database接続数、DTU使用率
App Serviceレスポンス時間、リクエスト数
Storage Accountトランザクション、可用性

Azure CLIでの自動設定

大量のリソースを管理する場合、Azure CLIでのスクリプト化が効果的です:

bash
# サービスプリンシパルの作成
az ad sp create-for-rbac \
  --name "NewRelic-Infrastructure-SP" \
  --role "Reader" \
  --scopes "/subscriptions/YOUR_SUBSCRIPTION_ID"

コスト最適化の設定

Azure統合のコストを最適化するための推奨設定:

  1. メトリクス収集間隔の調整

    • New Relicダッシュボードで各サービスの収集間隔を設定
    • 重要度の低いサービスは10分または15分間隔に変更
  2. リソースグループのフィルタリング

    • Infrastructure > Azure > Configure
    • 監視対象のリソースグループを特定
    • テスト環境や一時的なリソースを除外
  3. 不要なサービスの無効化

    • 使用していないAzureサービスの統合を無効化
    • 本番環境のみを統合対象にする

ステップ4: 動作確認とダッシュボード活用

正常動作の確認方法

  1. Infrastructure Agentの稼働確認

    • New Relic One → Infrastructure → Hosts
    • Azure VMが一覧に表示されることを確認
  2. Azure統合の確認

    • New Relic One → Infrastructure → Azure
    • 接続済みサブスクリプションが表示されることを確認
    • 各Azureサービスからデータが収集されていることを確認
  3. データフローの確認

Azure特化ダッシュボードの構築

推奨ダッシュボード構成

Azure環境に特化したメトリクスを中心に構成します:

インフラストラクチャ監視:

  • VM CPU使用率(Azure Monitor + Agent)
  • SQL Database DTU使用率
  • App Service応答時間
  • Storage Account可用性

アプリケーション監視:

  • Application Insights連携データ
  • カスタムメトリクス
  • ログ統合情報

トラブルシューティング

よくある問題と解決方法

問題考えられる原因解決方法
VMが表示されないサービスプリンシパルの権限不足Readerロールの付与確認
Azureサービスデータが取得できないClient Secretの期限切れ新しいシークレットを生成
データ更新が遅いリージョンの設定問題正しいAzureリージョンを指定

運用時のベストプラクティス

リソースグループ戦略

Azureのリソースグループを活用した効率的な監視管理:

推奨リソースグループ構成

タグ付け戦略

Azureリソースのタグを活用した監視の効率化:

タグキー説明設定例
Environment環境分類Production, Staging, Development
Applicationアプリケーション名WebApp, API, Database
CostCenterコストセンターEngineering, Marketing
Owner担当者・チーム[email protected]

セキュリティ考慮事項

サービスプリンシパルの管理

  1. Client Secretのローテーション

    • 定期的な更新(推奨:6か月ごと)
    • 複数のシークレットを並行運用して無停止更新
  2. 最小権限の原則

    • 必要なリソースグループのみに権限を限定
    • カスタムロール定義の活用

ネットワークセキュリティ

json
{
  "securityRules": [
    {
      "name": "Allow-HTTPS-NewRelic",
      "properties": {
        "protocol": "TCP",
        "sourceAddressPrefix": "*",
        "destinationAddressPrefix": "*",
        "destinationPortRange": "443",
        "access": "Allow",
        "priority": 1000,
        "direction": "Outbound"
      }
    }
  ]
}

高度な活用方法

Application Insights との連携

Azure Application Insightsのテレメトリデータと Infrastructure データを組み合わせた高度な分析:

連携のメリット

  • エンドツーエンドの可視性: ユーザーリクエストからインフラまでの全体像
  • 根本原因分析: アプリケーションエラーとインフラ問題の相関関係
  • 予防的監視: パフォーマンス劣化の早期発見

Azure Functions との自動化

New Relic APIとAzure Functionsを組み合わせた監視自動化:

コスト最適化

Azure統合のコスト効率を向上させるための設定:

最適化のポイント

  • ポーリング間隔の調整: 5分 → 15分(本番環境以外)
  • 不要なメトリクスの無効化: 使用しないAzureサービスの監視停止
  • リージョン限定: アクティブリージョンのみを監視対象に

段階的な導入戦略

フェーズ1: 基盤構築(1週間)

フェーズ2: 運用最適化

  • カスタムダッシュボード: ビジネスKPIと技術メトリクスの統合
  • アラートポリシー: 環境別・重要度別の通知設定
  • チーム連携: Teamsや Slackとの統合

フェーズ3: 高度な活用

  • 予測分析: Machine Learning Insightsの活用
  • 自動化: Azure Automation runbookとの連携
  • コンプライアンス: セキュリティ監査ログとの統合

よくある質問とトラブルシューティング

Q1: サービスプリンシパルが認証エラーになります

考えられる原因と対処法:

  1. Client Secretの期限切れ

    • Azure Portal → アプリの登録 → 証明書とシークレット で有効期限を確認
    • 必要に応じて新しいシークレットを生成
  2. 権限不足

    • サブスクリプション → アクセス制御(IAM)でReaderロールが付与されているか確認

Q2: 特定のAzureサービスのメトリクスが表示されません

チェックポイント:

  1. サービス固有の権限

    • SQL Databaseの場合:SQL DB Contributor ロールが必要な場合あり
    • App Serviceの場合:App Service プランのレベル確認
  2. リージョンの確認

    • 監視対象のAzureサービスとNew Relic設定のリージョンが一致しているか確認

Q3: Infrastructure Agentが Azure メタデータを取得できません

対処法:

bash
# Azureメタデータサービスの接続確認
curl -H "Metadata:true" "http://169.254.169.254/metadata/instance?api-version=2021-02-01"

# ネットワーク設定の確認
sudo netstat -rn | grep 169.254.169.254

プライベートネットワークからの通信

プライベートサブネットのAzure VMでInfrastructure Agentを使用する場合:

  1. NAT GatewayまたはLoad Balancer

    • アウトバウンドインターネット接続を許可
    • New Relicのエンドポイントへの接続を可能にする
  2. プロキシサーバー経由

    • HTTP/HTTPSプロキシを設定
    • Infrastructure Agent設定でプロキシを指定:
    yaml
    proxy: http://your-proxy-server:3128
  3. ネットワークセキュリティグループ設定

    • アウトバウンド: HTTPS (443) を許可
    • インバウンド: 不要(Agentはアウトバウンド接続のみ)

まとめ

New RelicのAzure統合により、複数のツールに分散していたAzure監視を統一できます。特に重要なポイント:

導入の効果

  • サービスプリンシパル認証によるセキュアなアクセス管理
  • リソースグループベースの効率的な監視範囲設定
  • Application Insights連携による包括的なアプリケーション監視

成功のための重要ポイント

  1. 段階的な導入: 小さく始めて徐々に拡張
  2. 適切な権限設計: 最小権限の原則に基づいた設定
  3. 運用チームとの連携: 既存の運用フローとの統合

次のステップ

  1. 基本設定完了後

    • Application Insightsとの連携設定
    • チーム用カスタムダッシュボードの作成
  2. 運用成熟化

    • 自動化スクリプトの導入
    • 予測的アラートの設定
    • コスト最適化の継続的な見直し

関連記事

Azureの特性を活かしたNew Relic統合で、より効率的で安全なクラウド監視を実現しましょう。