GNU/Linux >> Linux の 問題 >  >> Cent OS

NginxAmplifyをCentOS8/ RHEL 8にインストールして、LEMPパフォーマンスを監視します

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

ファイルを保存して閉じます。


Cent OS
  1. CentOS 7 /RHEL7にNginxを使用してphpMyAdminをインストールする方法

  2. CentOS 7 / RHEL 7にLinux、Nginx、MariaDB、PHP(LEMPスタック)をインストールする方法

  3. CentOS 7 に LEMP スタックをインストールする方法

  1. CentOS 7にLEMPスタック(Nginx、MySQL、PHP v7)をインストールする方法

  2. CentOS7でNetdataを使用してNginxを監視する方法

  3. RHEL 8 /CentOS8にPuppetをインストールする方法

  1. CentOS7にNginxAmplifyAgentをインストールする方法

  2. CentOS 7 /RHEL7にNginxをインストールします

  3. CentOS 7 /RHEL7にNginxを使用してWordPressをインストールする