LoginSignup
3
0

More than 3 years have passed since last update.

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

Posted at

目的

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の相性を疑うのかあるいは外部サービスのダウンを疑うのか

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

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0