💻
apmとnginxインテグレーションをamazon linux 2023×arm(graviton3)環境で動かす
前提
こちらの続きです。
apmとnginxインテグレーションはtar archiveを使用することで導入できました。
導入作業
apm(php)
-
ログイン > サイドバー > AddData > ApplicationMonitoring > 対象言語 > On a host (tar archive)
を選択する- ※パッケージマネージャーやAnsibleGalaxyを使用するとインストールに失敗します
- アプリ名など必要な項目を入力し、自動生成されるコマンドを実行する
下記実行コマンド例
curl -s -O https://download.newrelic.com/php_agent/release/newrelic-php5-10.15.0.4-linux.tar.gz
gzip -dc newrelic-php5-10.15.0.4-linux.tar.gz | tar xf -
cd newrelic-php5-10.15.0.4-linux
sudo NR_INSTALL_USE_CP_NOT_LN=1 NR_INSTALL_SILENT=true NR_INSTALL_KEY=${your_licence_key} ./newrelic-install install
# installして作成されたnewrelic.iniファイルの修正
sudo find /etc /opt/etc /usr/local/etc -type f -name newrelic.ini -exec sed -i -e "s/REPLACE_WITH_REAL_KEY/${your_licence_key}/" -e "s/newrelic.appname[[:space:]]=[[:space:]].*/newrelic.appname = \"${your_app_name}\"/" {} \; 2>/dev/null
sudo service php-fpm restart
少し待つとAPMとBrowserMonitoringでデータが連携されていることを確認できました
nginxインテグレーション
1. tarballリポジトリからnginx/arm環境のリソースを探す
- インストールする
- ※こちらはnewrelicのGUI上でtar archiveから取得するコマンドができません
実行コマンド例
# ※作業時点のarm環境で使用可能な最新バージョンを指定しています
curl -s -O https://download.newrelic.com/infrastructure_agent/binaries/linux/arm64/nri-nginx_linux_3.4.1_arm64.tar.gz
gzip -dc nri-nginx_linux_3.4.1_arm64.tar.gz | tar xf -
- 解凍したフォルダ内の
./var/db/newrelic-infra/newrelic-integrations/bin/nri-nginx
を/var/db/newrelic-infra/newrelic-integrations/bin/nri-nginx
に移動する
実行コマンド例
# ※ルートディレクトリで作業している場合は対応不要です
mv ./var/db/newrelic-infra/newrelic-integrations/bin/nri-nginx /var/db/newrelic-infra/newrelic-integrations/bin/nri-nginx
- newrelicの設定ファイルを作成/編集
/etc/newrelic-infra/integrations.d/nginx-config.yml
integrations:
- name: nri-nginx
env:
METRICS: "true"
STATUS_URL: http://127.0.0.1/status
STATUS_MODULE: discover
REMOTE_MONITORING: true
interval: 30s
labels:
env: your_app_env
- name: nri-nginx
env:
INVENTORY: "true"
CONFIG_PATH: /etc/nginx/nginx.conf
REMOTE_MONITORING: true
STATUS_URL: http://127.0.0.1/status
interval: 60s
labels:
env: your_app_env
inventory_source: config/nginx
/var/db/newrelic-infra/newrelic-integrations/nginx-definition.yml
name: com.newrelic.nginx
description: Reports status and metrics for NGINX server
protocol_version: 3
os: linux
commands:
metrics:
command:
- ./bin/nri-nginx
- -metrics
interval: 30
inventory:
command:
- ./bin/nri-nginx
- -inventory
prefix: config/nginx
interval: 60
- nginxのstatus確認用のエンドポイントを用意
/etc/nginx/nginx.conf
location /status {
access_log off;
allow 127.0.0.1;
deny all;
stub_status on; #ここが有効になっているとステータスが取得できる
}
- newrelic-infraエージェントを再起動
sudo sytemctl restart newrelic-infra
サイドバー > AllEntities > On Host > NGINX servers
にアクセスし、server:インスタンスID:ポート番号
で表示されていることが確認できれば導入完了です。
最後に
なんとか動くことは確認できました。
AnsibleでIaC化するのが大変なのでGalaxyだけで対応できる日が待ち遠しい!!
Discussion