Help us understand the problem. What is going on with this article?

NextcloudをモニタリングしてNew Relic APMのexternal serviceを理解する。

目的

OSSのクラウドストレージソフト、Nextcloudをモニタリング対象にして
New Relic APMのexternal serviceがどのように見えるか確認していきます。
NextcloudはバックエンドストレージとしてS3を利用したり、機能追加にGithubを利用するLAMP構成のアプリケーションのため、

New Relic APMのPHPエージェントと外部サービスとの関係を理解する参考になります。

nextcloud構築

インスタンス作成

UserDataを入力してAmazon Linux 2 でインスタンスを作成します。

userdata
#!/bin/bash
#環境変数
dbname=nextcloud #DB名
dbuser=nextadmin #DBユーザ名
dbpassword=nextpass #DBパスワード

#パッケージインストール
yum update -y
amazon-linux-extras install epel redis4.0 lamp-mariadb10.2-php7.2 -y
yum install  httpd mariadb mariadb-server php-gd php-mbstring php-intl php-pecl-apcu php-mysqlnd php-pecl-redis php-opcache php-imagick php-zip php-dom -y
yum update -y

#mariadb起動
systemctl start mariadb.service

#MySql root ランダムパスワード生成
vMySQLRootPasswd="$(cat /dev/urandom | tr -dc '[:alnum:]' | head -c 16 | tee -a /home/ec2-user/.mysql.secrets)"

#MySql_secure_installation
mysql -u root --password= -e "
    UPDATE mysql.user SET Password=PASSWORD('${vMySQLRootPasswd}') WHERE User='root';
    DELETE FROM mysql.user WHERE User='';
    DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
    DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
    FLUSH PRIVILEGES;"

#DB初期設定
echo [mysql] >> /home/ec2-user/my.cnf 
echo host = localhost >> /home/ec2-user/my.cnf
echo user = root >> /home/ec2-user/my.cnf
dbrootpass() {
cat /home/ec2-user/.mysql.secrets
}
dbrootpass=`dbrootpass`
echo password = ${dbrootpass} >> /home/ec2-user/my.cnf
echo "create database ${dbname} character set utf8 collate utf8_bin; grant all privileges on ${dbname}.* to ${dbuser}@localhost identified by '${dbpassword}';" > /tmp/create.sql
mysql --defaults-extra-file=/home/ec2-user/my.cnf < /tmp/create.sql


#自動起動設定
systemctl enable httpd.service
systemctl enable mariadb.service
systemctl enable redis.service

reboot

nextcloudインストール

nextcloudパッケージをインストールします。

$ wget https://download.nextcloud.com/server/releases/nextcloud-17.0.0.zip
$ unzip nextcloud-17.0.0.zip
$ sudo mv nextcloud /var/www/html/
$ sudo chown apache.apache /var/www/html/nextcloud/ -R

初期設定

http:///nextcloudにアクセスして初期設定を行います。
2019-12-09_00h26_05.png

管理者ユーザを作成し
環境変数で設定したDB情報を入力します。

DB情報
dbname=nextcloud #DB名
dbuser=nextadmin #DBユーザ名
dbpassword=nextpass #DBパスワード

New relic インストール

new relic apm インストール

New relic APMの画面でadd more から言語を選択するとインストール手順が表示されます。
2019-12-09_00h32_47.png

new_relic_apm_php_install
$ sudo rpm -Uvh http://yum.newrelic.com/pub/newrelic/el5/x86_64/newrelic-repo-5-3.noarch.rpm
$ sudo yum install newrelic-php5
$ sudo newrelic-install install
New Relic PHP Agent Installation (interactive mode)
===================================================

   Enter New Relic license key (or leave blank):<ライセンスキーを入力>

$ sudo vi /etc/php.d/newrelic.ini
以下の内容を編集
newrelic.appname = "nextcloud" #アプリケーション名
newrelic.distributed_tracing_enabled = true #分散トレーシング有効

設定が終わったら一度再起動します。

nextcloudのパフォーマンス収集が開始されます。
2019-12-09_00h54_13.png

nextcloudの外部連携

S3連携

S3と連携するために+アプリからExternal Storage Supportを有効化します。
2019-12-09_00h55_34.png
2019-12-09_00h56_20.png
2019-12-09_00h56_42.png

設定-管理-外部ストレージを選択し、S3バケットを選択します。
バケット名、リージョン、アクセスキー、シークレットアクセスキー情報を入力して接続します。
2019-12-09_01h07_18.png

その他のサービスの追加

カンバンボードやカレンダーなども追加してみます。

New Relic APMでの可視化

S3アクセスや、nextcloudのアプリケーションサービスインストールは Web external として表示されます。
2019-12-09_01h15_24.png

外部サービスの詳細はExternal Serviceで確認できます。
NextcloudやS3、githubにアクセスしていることが確認出来ます。
2019-12-09_01h15_43.png

サービスマップでも同じように表示されます。
2019-12-09_01h25_26.png

外部サービスの可視化

自分で開発したサービスはもちろん、OSSなどから導入したサービスでもNew Relicで可視化することによって、動作に必要な依存関係にある外部サービスの確認やそのパフォーマンスの確認が出来るようになります。

外部サービスとの依存関係が把握出来れば、例えば追加機能のインストールが出来ない場合にOSSの相性を疑うのかあるいは外部サービスのダウンを疑うのか

問題切り分けが的確に行えるようになります。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away