Nginx Amplifyは、NginxおよびNginxPlusWebサーバーの負荷とパフォーマンスを分析するための無料で柔軟かつ強力な方法です。セットアップと使用は簡単です。 Nginx Amplifyには、MySQL / MariaDB、PHP-FPMプラグインも付属しているため、完全なLEMPスタックアプリケーションを監視できます。 (LEMPはLinux、Nginx、MySQL / MariaDB、PHPの略です。)
Nginx Amplifyは、Nginx Webサーバーの背後にある会社であるNginx、Incによって開発されました。これはSaaSベースのソリューションです。 Nginx Amplifyエージェントをサーバーにインストールすると、メトリックが収集されてSaaSサービスに送信されます。 NginxAmplifyエージェントはオープンソースで軽量です。次のような多くの指標を収集します:
- システムメトリック(CPU、RAM使用量、ネットワークトラフィック、ディスク使用量、ディスクI / O、ディスク遅延など)
- Nginxメトリック(接続、リクエスト、HTTPステータス、応答時間、トラフィックなど)
- MySQL / MariaDBメトリック(接続、クエリの選択、クエリの挿入、クエリの更新、クエリの低速化など)
- PHP-FPMメトリック(接続、接続キュー、低速リクエストなど)
NginxAmplifyもできます
- 静的アナライザーを使用して、Nginx構成を改善します。
- 異常な動作を警告します
CentOS 8 /RHEL8LinuxサーバーへのNginxAmplifyのインストール
Nginx Amplifyエージェントはオープンソースであり、次のLinuxディストリビューションにNginxAmplifyをインストールするために使用できるインストールスクリプトがあります。
- Debian 9、Debian 10、
- Ubuntu 16.04、Ubuntu 18.04
- CentOS / RHEL 6、CentOS / RHEL 7、CentOS / RHEL 8
まず、https://amplify.nginx.com
でアカウントを登録します
あなたのメールアドレスを確認してください。次に、LinuxサーバーにNginxAmplifyAgentをインストールする必要があります。サーバーにSSHで接続し、rootとしてログインします。 Nginx AmplifyのWebサイトには、Nginx Amplifyをインストールするために実行する必要のあるコマンドが用意されているので、これらのコマンドをコピーしてサーバーに実行するだけです。
これらのコマンドはrootとして実行する必要があることに注意してください。
NginxAmplifyにはPython2が必要です。デフォルトのCentOSリポジトリからインストールします。
sudo dnf install python2
インストールスクリプトをダウンロードします。
次に、インストールスクリプトを実行します。 (各Amplifyアカウントには一意のAPIキーがあります。)
インストールすると、エージェントが自動的に起動します。次のコマンドでステータスを確認できます:
systemctl status amplify-agent
サンプル出力:
● amplify-agent.service - NGINX Amplify Agent Loaded: loaded (/usr/lib/systemd/system/amplify-agent.service; enabled; vendor preset: disabled) Active: active (running) since Fri 2020-06-12 02:38:09 EDT; 2min 49s ago Docs: https://amplify.nginx.com/docs/ Process: 13768 ExecStart=/etc/init.d/amplify-agent start (code=exited, status=0/SUCCESS) Main PID: 13820 (amplify-agent) Tasks: 2 (limit: 5059) Memory: 48.0M CGroup: /system.slice/amplify-agent.service └─13820 amplify-agent
ヒント:上記のコマンドがすぐに終了しない場合は、Qを押して端末の制御を取り戻します。
起動時に自動起動を有効にするには、
を実行しますsudo systemctl enable amplify-agent
NginxでのStub_statusの構成
Amplifyエージェントは、すぐに使用できるシステムメトリックを収集できます。 Nginxメトリックを収集するには、Nginxstub_statusを構成する必要があります。構成ファイルを作成します。
sudo nano /etc/nginx/conf.d/stub_status.conf
次のサーバーブロックをhttp {...}
に追加します コンテキスト。
server { listen 127.0.0.1:80; server_name 127.0.0.1; location /nginx_status { stub_status on; allow 127.0.0.1; deny all; } }
ファイルを保存して閉じます。次に、変更を有効にするためにNginxをリロードします。
sudo systemctl reload nginx
これで、AmplifyエージェントはNginxメトリックの収集を開始できます。
カスタムNginxログ形式の作成
Nginx Amplifyエージェントは、Nginxログファイルから情報を収集することもできます。ただし、デフォルトのログ形式では、限られた情報しか提供されません。アプリケーションのパフォーマンスを本当に気にする場合は、カスタムログ形式を作成して、要求時間、アップストリーム応答時間、キャッシュヒットなどを表示する必要があります。
nginx.conf
を開きます ファイル。
sudo nano /etc/nginx/nginx.conf
http {...}
に次の行を追加します コンテキスト、include
の上 ディレクティブ。ここでは、apm
と呼ばれるカスタムNginxログ形式を作成しています (アプリケーションパフォーマンスモニタリング) request_timeに関する情報が含まれています 、 upload_response_time 、 upload_connect_time およびupstream_header_time 。すべてミリ秒の分解能で秒単位で測定されます。
log_format apm '"$time_local" client=$remote_addr ' 'method=$request_method request="$request" ' 'request_length=$request_length ' 'status=$status bytes_sent=$bytes_sent ' 'body_bytes_sent=$body_bytes_sent ' 'referer=$http_referer ' 'user_agent="$http_user_agent" ' 'upstream_addr=$upstream_addr ' 'upstream_status=$upstream_status ' 'request_time=$request_time ' 'upstream_cache_status="$upstream_cache_status" ' 'upstream_response_time=$upstream_response_time ' 'upstream_connect_time=$upstream_connect_time ' 'upstream_header_time=$upstream_header_time';
ファイルを保存して閉じます。次に、Nginx仮想ホスト構成ファイルを開きます。たとえば、
sudo nano /etc/nginx/conf.d/linuxbabe.com.conf
server {...}
コンテキストで、次の2行を追加して、アクセスログとエラーログを有効にします。アクセスログはapm
を使用しています フォーマットとエラーログはwarn
を使用します ログレベル。
access_log /var/log/nginx/linuxbabe.com.access.log apm; error_log /var/log/nginx/linuxbabe.com.error.log warn;
ファイルを保存して閉じます。次に、Nginxをリロードします。
sudo systemctl reload nginx
これで、Amplifyグラフで、アップストリームの応答時間とその他のパフォーマンス関連のメトリックを確認できます。良好なアップストリーム応答時間は0.5秒未満です。そうでなければ、あなたの訪問者はあなたのウェブサイトが遅いと感じるかもしれません。サーバーを調整してアップストリームの応答時間を0.2秒未満にすることができれば、Webサイトは非常にスッキリします。
AmplifyエージェントがNginxメトリックを報告していない場合は、AmplifyエージェントがNginxワーカープロセスと同じユーザーとして実行されていることを確認してください。 Amplify Agentログ(/var/log/amplify-agent/agent.log
)を確認することもできます 。
Nginxアクセスログで自分のIPアドレスを除外する方法
場合によっては、アクティビティによってNginxメトリックが歪むことがあります。これを回避するために、アクセスログで自分のIPアドレスを除外できます。まず、http
に次の行を追加します Nginx構成ファイルのコンテキスト。 12.34.56.78を独自のIPアドレスに置き換えます。 HTTPリクエストが自分のIPアドレスからのものである場合、Nginxは$log_ip
の値を設定します 0
への変数 。
map $remote_addr $log_ip { "12.34.56.78" 0; default 1; }
次に、access_log
を変更します 次のようなディレクティブ。
access_log /var/log/nginx/linuxbabe.com.access.log apm if=$log_ip;
ファイルを保存して閉じます。次に、nginx構成にテキストを送信してリロードします。
sudo nginx -t sudo systemctl reload nginx
MariaDB/MySQLデータベースサーバーを監視する方法
まず、MariaDB / MySQLでユーザーを作成して、メトリックを収集する必要があります。 MariaDB/MySQLモニターにログインします。
mysql -u root -p
Amplifyエージェントの新しいユーザーを作成します。 your_password
を置き換えます ご希望のパスワードで。 (MariaDB / MySQLのrootパスワードとは異なるパスワードを選択することをお勧めします。)
create user 'amplify-agent'@'localhost' identified by 'your_password';
MariaDB/MySQLサーバーを終了します。
exit;
次に、Amplify構成ファイルでAmplify MariaDB/MySQLプラグインを有効にする必要があります。
sudo nano /etc/amplify-agent/agent.conf
[extensions]
内 セクションでは、mysqlプラグインがデフォルトで無効になっていることがわかります。
[extensions] phpfpm = True mysql = False
False
を変更する True
に このプラグインを有効にします。
[extensions] phpfpm = True mysql = True
次に、[mysql]
で セクションで、次の行を見つけます。
unix_socket = /var/run/mysqld/mysqld.sock password = amplify-agent
CentOSのMariaDBパッケージは、/var/lib/mysql/mysql.sock
をリッスンします Unixソケットなので、unix_socket
の値を変更します に
unix_socket = /var/lib/mysql/mysql.sock
次に、デフォルトのパスワードをamplify-agent
に設定したパスワードに置き換えます。 ユーザー。ファイルを保存して閉じます。次に、変更を有効にするためにAmplifyエージェントを再起動します。
sudo systemctl restart amplify-agent
これで、AmplifyエージェントはMariaDB/MySQLメトリックの収集を開始します。 (数分待つ必要があるかもしれません。)
MariaDB SlowQueryLogを有効にする方法
遅いクエリログは、どのクエリが応答を返すのに長い時間がかかっているかを示します。これは、MariaDBのパフォーマンスを最適化するための重要なツールです。 MariaDBの低速クエリログを有効にするには、サーバー構成ファイルを編集します。
sudo nano /etc/my.cnf.d/mariadb-server.cnf
[mysqld]
に次の行を追加します セクション。
slow_query_log = 1 slow_query_log_file = /var/log/mariadb/mariadb-slow.log long_query_time = 1 log_slow_rate_limit = 1000 log_slow_verbosity = query_plan log-queries-not-using-indexes
long_query_time
を設定しました 低い数値1秒に。 0.5秒などの小さい値を指定することもできます。ファイルを保存して閉じます。変更を有効にするには、MariaDBを再起動します。
sudo systemctl restart mariadb
これで、NginxAmplifyはグラフに遅いクエリを表示できるようになりました。
PHP-FPMを監視する方法
AmplifyエージェントのPHP-FPMプラグインはデフォルトで有効になっていますが、メトリックを収集するにはPHP-FPMステータスを有効にする必要があります。 PHP-FPMプール構成ファイルを編集します。
sudo nano /etc/php-fpm.d/www.conf
次の行を見つけてセミコロンを削除し、PHP-FPMステータスを有効にします。
;pm.status_path = /status
次の行に示すように、PHPスローログはデフォルトで有効になっています。
slowlog = /var/log/php-fpm/www-slow.log
次に、次の行を見つけます。
;request_slowlog_timeout = 0
セミコロンを削除し、タイムアウト秒を1秒のように設定します。
request_slowlog_timeout = 1s
ファイルを保存して閉じます。 PHP-FPMログ用のディレクトリを作成します。
sudo mkdir -p /var/log/php-fpm/
変更を有効にするには、PHP-FPMを再起動します。
sudo systemctl restart php-fpm
これで、Amplifyエージェントは低速リクエストログを含むPHP-FPMメトリックの収集を開始します。
Amplifyの概要ページ
概要ページで、システムの全体的なアプリケーションヘルススコアと5つの主要なメトリックを確認できます。
- リクエストの総数
- HTTP5xxエラー
- リクエスト時間(この指標を表示するには、前述のようにカスタムログ形式を作成する必要があります。)
- Nginxが使用する帯域幅
- CPU使用率
アプリケーションヘルススコアは、HTTP5xxエラーの数の影響を受けます。 HTTP 5xxエラーがない場合、スコアは100%になります。
グラフ
グラフページでは、事前定義されたシステム、Nginx、MariaDB / MySQL、およびPHP-FPMメトリックを確認できます。
NginxAmplifyダッシュボード
Amplifyダッシュボードを使用すると、カスタムグラフやチャートを作成し、それらを1つのページにグループ化できます。たとえば、パフォーマンスに関連するすべてのグラフを1つのページにまとめたり、特定のURLのすべての指標を表示したりできます。
Nginx FastCGIキャッシュを構成している場合は、ダッシュボードでNginxキャッシュヒット率とキャッシュ有効期限のグラフを作成することもできます。
アナライザー
アナライザーの便利なツールの1つは、静的分析です。 Amplifyは、Nginx構成ファイルを解析し、パフォーマンス、セキュリティ、および信頼性に関する推奨事項を作成できます。これを使用して、間違いを特定し、構成を改善できます。
ご覧のとおり、Nginxサーバーには5つの警告があるので、[開く]リンクをクリックして、Nginx構成を調整する方法を確認します。
調整後、数分待つと警告が消えます。
アラート
デフォルトでは、Amplifyエージェントが機能しなくなった場合、アラートが電子メールアドレスに送信されます。アラートページでは、サーバーにさまざまなアラートを設定できます。たとえば、過去2分間にアップストリームの応答時間が1秒を超えた場合に、メールを送信するようにAmplifyに指示できます。
サーバーのRAMが不足すると、MySQL/MariaDBプロセスが停止する可能性があります。以下のように、MySQL/MariaDBの稼働時間を監視するアラートルールを作成できます。過去2分間の稼働時間が120秒未満の場合は、メール通知を送信します。
Amplifyエージェントが動作を停止します
多くの場合、Amplifyエージェントが不明な理由でパフォーマンスメトリックの送信を停止していることがわかりました。この問題を解決するために、Amplify-agentを1日1回再起動するCronジョブを作成します。
sudo crontab -e
crontabファイルに次の行を追加します。
@daily systemctl restart amplify-agent
ファイルを保存して閉じます。