監視ツール · 10 min read · Nov 30, 2025

Rocky Linux 8にNetdata監視ツールをインストールし、サービスを監視する方法

Netdataは、Linuxベースのオペレーティングシステム用のオープンソースの監視システムです。美しく詳細なダッシュボードを使用して、リアルタイムのパフォーマンスと監視を提供します。サーバー、CPU、メモリ使用量、システムプロセス、ディスク使用量、IPv4およびIPv6ネットワーク、システムファイアウォール、Nginx、MySQL、MongoDB、Redis、ElasticSearch、PostgreSQL、PHP-FPMなどのアプリケーションを監視するための数百のツールを提供します。他の監視ツール(Prometheus、Graphite、Kafka、Grafanaなど)と統合されています。

このチュートリアルでは、Rocky Linux 8サーバー上でNetdataツールを使用してさまざまなサービスをインストールし、監視する方法を学びます。LEMPスタックとDockerエンジンのメトリクスを追跡するためにNetdataを使用します。

前提条件

  • Rocky Linux 8を実行しているサーバー。
  • sudo権限を持つ非rootユーザー。
  • サーバーを指す完全修飾ドメイン名(FQDN)netdata.example.com
  • 通知を受け取るためのSlackアカウントとワークスペース。
  • Amazon SESやMailgunなどのメールサービスを持つSMTPアカウント。
  • SELinuxを無効にします。

ステップ1 - ファイアウォールの設定

最初のステップはファイアウォールを設定することです。Rocky LinuxはFirewalldファイアウォールを使用します。ファイアウォールの状態を確認します。

$ sudo firewall-cmd --state
running

ファイアウォールは異なるゾーンで動作し、パブリックゾーンがデフォルトで使用されます。ファイアウォールでアクティブなすべてのサービスとポートをリストします。

$ sudo firewall-cmd --permanent --list-services

次の出力が表示されるはずです。

cockpit dhcpv6-client ssh

HTTPおよびHTTPSポートを許可します。

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

ファイアウォールの状態を再確認します。

$ sudo firewall-cmd --permanent --list-services

同様の出力が表示されるはずです。

cockpit dhcpv6-client http https ssh

変更を有効にするためにファイアウォールを再読み込みします。

$ sudo firewall-cmd --reload

ステップ2 - NetDataのインストール

Netdataは、任意のLinuxディストリビューションで動作するインストーラスクリプトを提供します。次のコマンドを実行してインストーラスクリプトをダウンロードして実行します。

$ bash <(curl -Ss https://my-netdata.io/kickstart.sh)

sudo権限を有効にするためにsudoパスワードを求められます。Netdataリポジトリを追加し、サーバーにインストールすることを確認するためにYを入力します。

Netdataインストーラーは自動的にサービスを有効にし、開始します。サービスの状態を確認します。

$ sudo systemctl status netdata
? netdata.service - リアルタイムパフォーマンス監視
   Loaded: loaded (/usr/lib/systemd/system/netdata.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2022-04-11 12:09:12 UTC; 13s ago
 Main PID: 19443 (netdata)
    Tasks: 32 (limit: 11412)
   Memory: 52.0M
   CGroup: /system.slice/netdata.service
           ??19443 /usr/sbin/netdata -P /var/run/netdata/netdata.pid -D
           ??19448 /usr/sbin/netdata --special-spawn-server
           ??19937 /usr/libexec/netdata/plugins.d/apps.plugin 1
           ??19944 /usr/libexec/netdata/plugins.d/go.d.plugin 1

Apr 11 12:09:12 netdata systemd[1]: Started Real time performance monitoring.
.......

サービスが開始されていない場合や有効になっていない場合は、次のコマンドを使用して有効にできます。

$ sudo systemctl enable netdata --now

次のコマンドを実行して、オープンポートとそれを使用しているプロセスを確認します。

$ sudo ss -plnt

次のような出力が得られるはずです。Netdataはダッシュボード用にポート19999を使用し、他のアプリケーションから統計を受信するためにポート8125を使用します。

State            Recv-Q           Send-Q                     Local Address:Port                      Peer Address:Port           Process
LISTEN           0                128                            127.0.0.1:8125                           0.0.0.0:*               users:(("netdata",pid=22496,fd=29))
LISTEN           0                128                              0.0.0.0:19999                          0.0.0.0:*               users:(("netdata",pid=22496,fd=6))
......
LISTEN           0                128                                [::1]:8125                              [::]:*               users:(("netdata",pid=22496,fd=28))
LISTEN           0                128                                 [::]:19999                             [::]:*               users:(("netdata",pid=22496,fd=7))

ステップ3 - SSLのインストール

Let’s Encryptを使用してSSL証明書をインストールするには、Certbotツールをインストールする必要があります。

まず、EPELリポジトリをダウンロードしてインストールする必要があります。

$ sudo dnf install epel-release

次のコマンドを実行してCertbotをインストールします。

$ sudo dnf install certbot

SSL証明書を生成します。

$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d netdata.example.com

上記のコマンドは、サーバーの/etc/letsencrypt/live/netdata.example.comディレクトリに証明書をダウンロードします。

Diffie-Hellmanグループ証明書を生成します。

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Let’s Encryptの自動更新用にチャレンジウェブルートディレクトリを作成します。

$ sudo mkdir -p /var/lib/letsencrypt

SSLを更新するためのCronジョブを作成します。これは毎日実行され、証明書を確認し、必要に応じて更新します。そのために、最初にファイル/etc/cron.daily/certbot-renewを作成し、編集のために開きます。

$ sudo nano /etc/cron.daily/certbot-renew

次のコードを貼り付けます。

#!/bin/sh
certbot renew --cert-name netdata.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"

ファイルを保存するには、Ctrl + Xを押し、プロンプトが表示されたらYを入力します。

タスクファイルの権限を変更して実行可能にします。

$ sudo chmod +x /etc/cron.daily/certbot-renew

ステップ4 - Nginxのインストールと設定

最新のNginxをインストールします。ファイル/etc/yum.repos.d/nginx.repoを作成し、編集のために開きます。

$ sudo nano /etc/yum.repos.d/nginx.repo

次の行を貼り付けます。

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

ファイルを保存するには、Ctrl + Xを押し、プロンプトが表示されたらYを入力します。

NginxとHTTPDツールをインストールします。

$ sudo dnf install nginx httpd-tools

インストールを確認します。

$ nginx -v
nginx version: nginx/1.20.2

Nginxサービスを有効にし、開始します。

$ sudo systemctl enable nginx --now

ファイル/etc/nginx/conf.d/netdata.confを作成し、編集のために開きます。

$ sudo nano /etc/nginx/conf.d/netdata.conf

次のコードを貼り付けます。

# Define netdata upstream
upstream netdata {
    server 127.0.0.1:19999;
    keepalive 64;
}

# Redirect all non-encrypted to encrypted
server {
    listen 80;
    listen [::]:80;
    server_name netdata.example.com;
    return 301 https://netdata.example.com$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    
    server_name netdata.example.com;

    ssl_certificate     /etc/letsencrypt/live/netdata.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/netdata.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/netdata.example.com/chain.pem;
    ssl_session_timeout 1d;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;
    ssl_prefer_server_ciphers off;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    resolver 1.1.1.1 1.0.0.1 [2606:4700:4700::1111] [2606:4700:4700::1001] 8.8.8.8 8.8.4.4 [2001:4860:4860::8888] [2001:4860:4860::8844] valid=60s;
    resolver_timeout 2s;
    
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;

    access_log /var/log/nginx/netdata.example.com.access.log main;
    error_log  /var/log/nginx/netdata.example.com.error.log;

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
     proxy_pass http://netdata;
     proxy_http_version 1.1;
        proxy_pass_request_headers on;
        proxy_set_header Connection "keep-alive";
        proxy_store off;
        auth_basic "NetData Private Area";
        auth_basic_user_file /etc/nginx/.htpasswd;
    }
}

完了したら、Ctrl + Xを押してファイルを保存し、プロンプトが表示されたらYを入力します。

ファイル/etc/nginx/nginx.confを編集のために開きます。

$ sudo nano /etc/nginx/nginx.conf

次の行をinclude /etc/nginx/conf.d/*.conf;の前に追加します。

server_names_hash_bucket_size  64;

ファイルを保存するには、Ctrl + Xを押し、プロンプトが表示されたらYを入力します。

次のコマンドを実行して、HTTP認証を有効にするためのパスワードファイルを生成します。

$ sudo htpasswd -c /etc/nginx/.htpasswd netadmin
New password: 
Re-type new password: 
Adding password for user netadmin

Nginx設定ファイルの構文を確認します。

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

新しい設定を有効にするためにNginxサービスを再起動します。

$ sudo systemctl restart nginx

ステップ5 - Netdataダッシュボードにアクセスして使用する

https://netdata.example.comのURLを介してNetdataにアクセスできるはずです。初めてアクセスすると、HTTP認証の詳細を求められます。

Netdata HTTP Authentication

次のダッシュボードが表示されます。

Netdata First Time Dashboard

Remember my choiceのチェックボックスをオンにし、ポップアップを閉じるためにLater, stay at the agent dashboardボタンをクリックします。

ダッシュボードのPlayボタンを使用して、監視を一時停止、停止、開始できます。

Netdata Play/Pause Button

右側のサイドバーからオプションをクリックすることで、さまざまなダッシュボードにアクセスできます。UTCボタンをクリックし、正しいタイムゾーンを選択して変更します。

Netdata Timezone Change

ステップ6 - NetDataの設定

Netdataは、主な設定を/etc/netdata/netdata.confファイルに保存します。ブラウザでhttps://netdata.example.com/netdata.confにアクセスすることで、これらの設定を表示できます。

Netdata Configuration File in Browser

ファイルは、[global]、[web]、[registry]などのさまざまなセクションに分かれています。デフォルトの設定で開始するのに十分です。Netdataは、2種類のプラグインを使用してデータを収集します。

  1. internalプラグインはC言語で書かれ、netdataデーモン内でスレッドとして実行されます。
  2. externalプラグインは、Python、Goなどのさまざまな言語で書かれ、netdataデーモンによって長期間実行される独立したプロセスとして生成されます。これらはpipesを使用してNetdataデーモンと通信します。

NetDataメモリ使用量の設定

NetDataのRAM使用量は、記録されたチャートデータを失う前に保持したい時間に基づいて決まります。

  • 3600秒または1時間のチャートデータ保持は15MBのRAMを使用します。
  • 7200秒または2時間のチャートデータ保持は30MBのRAMを使用します。
  • 14400秒または4時間のチャートデータ保持は60MBのRAMを使用します。

チャートデータ保持時間を倍にするたびに、RAMの要件も倍になります。これらのRAM要件は、ストックダッシュボードで使用されているチャートの数に基づいています。より多くのチャートやアプリケーションを追加すると、これらの推定値が変わります。

Netdata設定ファイルを開きます。

$ sudo nano /etc/netdata/netdata.conf

[global]セクションの下にhistory = 14400の行を入力します。

[global]
..
        history = 14400
..

ファイルを保存するには、Ctrl + Xを押し、プロンプトが表示されたらYを入力します。

テレメトリをオフにする

デフォルトでは、Netdataは製品分析プラットフォームであるPosthogを使用して匿名の使用情報を収集します。Netdataデーモンが起動または停止するたびに、Netdataは匿名統計スクリプトを使用して次のシステム情報を収集し、自身に送信します。

  • Netdataバージョン
  • OS名、バージョン、id、id_like
  • カーネル名、バージョン、アーキテクチャ
  • 仮想化技術
  • コンテナ化技術
  • Netdataクライアントの障害に関する追加情報。

幸いなことに、これをオプトアウトすることができます。Netdataディレクトリに.opt-out-from-anonymous-statisticsという空のファイルを作成します。

$ sudo touch /etc/netdata/.opt-out-from-anonymous-statistics

変更を有効にするためにNetdataを再起動します。

$ sudo systemctl restart netdata

長期保存

デフォルトでは、NetdataはシステムのRAMとディスクを使用して履歴データを保存します。デフォルトのNetdataプロセスは、1秒あたり約2000メトリクスを収集します。これは、デフォルトの設定がRAMとディスクに約2日分のメトリクスを保存することを意味します。

より多くのメトリクスを保存するには、次の2つのオプションがあります。

  1. Netdataを構成して、より多くのRAMとディスクスペースを使用する
  2. メトリクスを外部データベースにアーカイブする

このチュートリアルでは、最初のオプションのみを説明します。2番目のオプションについては、Netdataの公式ドキュメントを参照してください。

Netdataを構成して、より多くのRAMとディスクスペースを使用する

ファイル/etc/netdata/netdata.confを編集のために開きます。

$ sudo nano /etc/netdata/netdata.conf

[global]セクションの下に次の行を貼り付けます。

[global]
...
    memory mode = dbengine
    page cache size = 32
    dbengine disk space = 256

ファイルを保存するには、Ctrl + Xを押し、プロンプトが表示されたらYを入力します。

ページキャッシュサイズは使用されるRAMの量を決定し、dbengine disk spaceはディスク使用量を決定します。デフォルトでは、Netdataは32MBのRAMと256MBのディスクスペースを使用します。これらの値をコメント解除して、2つの値のいずれかを好みに応じて変更できます。

Netdataのストレージメトリック計算機を使用して、必要なRAMとディスクスペースの量を決定できます。

収集頻度を減らす

メトリクス収集の間隔を増やすことで、Netdataのパフォーマンスを最適化できます。デフォルトでは、Netdataは毎秒メトリクスを収集します。

それを変更するには、Netdata設定ファイルを編集のために開きます。

$ sudo nano /etc/netdata/netdata.conf

[global]セクションの下に次の行を入力します。これにより、頻度が5秒に増加します。

[global]
...
    update every = 5

ファイルを保存するには、Ctrl + Xを押し、プロンプトが表示されたらYを入力します。

ステップ7 - Slack通知の設定

最初のステップは、Slackアプリケーションを作成し、ワークスペース内の特定のチャンネルに接続してSlack通知を設定することです。

Slack APIページにアクセスし、Create Appボタンをクリックしてアプリケーションの作成を開始します。

Slack API apps

From Scratchリンクをクリックしてアプリを作成します。

Slack Create App Popup

アプリの名前を選択し、アプリを表示したいワークスペースを選択します。既存のワークスペースにアプリを関連付けたくない場合は、別のワークスペースを作成し、このステップに戻ることができます。

Slack App Name Popup

左側のサイドバーのFeaturesメニューからIncoming Webhookページを開き、Webhookを有効にします。

Slack Apps Incoming WebHooks

ページの下部にあるAdd New Webhook to Workspaceボタンをクリックし、ワークスペースと通知の対象チャンネルを選択します。

Add Netdata Slack App to WorkSpace

Allowボタンをクリックして続行します。Incoming Webhooksページに戻り、Webhook URLをコピーします。

Slack Webhook URL

ターミナルに戻り、/etc/netdataディレクトリに移動します。

$ cd /etc/netdata

Netdataは、Netdata設定ファイルを編集および作成するためのedit-configスクリプトを提供します。次のファイルを実行して、システムのデフォルトエディタを使用してhealth_alarm_notify.confファイルを作成および開きます。

$ sudo ./edit-config health_alarm_notify.conf

次のセクションまでスクロールします。

# Enable slack notification
SEND_SLACK="YES"

# Select the slack webhook
SLACK_WEBHOOK_URL="https://hooks.slack.com/services/xxxxxxx"

# Default channel for notification
DEFAULT_RECIPIENT_SLACK="notifications"

変数SEND_SLACKがyesに設定されていることを確認します。コピーしたWebhook URLをSLACK_WEBHOOK_URL変数に貼り付けます。DEFAULT_RECIPIENT_SLACK変数にチャンネル名を入力します。

エディタがVimの場合は、Escapeキーを押して編集を終了し、:xと入力してEnterキーを押してファイルを保存してエディタを終了します。

エディタがNanoの場合は、Ctrl + Xを押してファイルを保存し、プロンプトが表示されたらYを入力します。

変更を適用するためにNetdataを再起動します。

$ sudo systemctl restart netdata

メール通知の設定

Netdataはデフォルトでsendmailを使用してメール通知を送信しますが、メールサーバーの管理は簡単な作業ではありません。NetdataはSMTPをサポートしていませんが、msmtpクライアントというパッケージをインストールできます。これにより、SMTPサーバーにメールを送信できます。

msmtpをインストールします。

$ sudo dnf install msmtp

msmtpの設定ファイルを作成し、開きます。

$ sudo nano /etc/msmtprc

次のコードを貼り付けます。

# Set default values for all following accounts.
defaults

# Use the mail submission port 587 instead of the SMTP port 25.
port 587

# Always use TLS.
tls on

# The SMTP server of your ISP
account ses
host email-smtp..amazonaws.com
from [email protected]
auth on
user 
password 

# Set default account to isp
account default: ses

ファイルを保存するには、Ctrl + Xを押し、プロンプトが表示されたらYを入力します。

/etc/netdata/health_alarm_notify.confファイルを編集のために開きます。

$ sudo nano /etc/netdata/health_alarm_notify.conf

次のセクションまでスクロールし、msmtpへのパスを入力します。

# external commands

# The full path to the sendmail command.
# If empty, the system $PATH will be searched for it.
# If not found, email notifications will be disabled (silently).
sendmail="/usr/bin/msmtp"

次のセクションを見つけて、送信者と受信者の詳細を入力し、メール送信が有効になっていることを確認します。

# email global notification options

# multiple recipients can be given like this:
#              "[email protected] [email protected] ..."

# the email address sending email notifications
# the default is the system user netdata runs as (usually: netdata)
# The following formats are supported:
# EMAIL_SENDER="user@domain"
# EMAIL_SENDER="User Name "
# EMAIL_SENDER="'User Name' "
# EMAIL_SENDER="\"User Name\" "
EMAIL_SENDER="Server Admin <[email protected]>"

# enable/disable sending emails
SEND_EMAIL="YES"

# if a role recipient is not configured, an email will be send to:
DEFAULT_RECIPIENT_EMAIL="[email protected]"
# to receive only critical alarms, set it to "root|critical"

ファイルを保存するには、Ctrl + Xを押し、プロンプトが表示されたらYを入力します。

ステップ8 - 通知チャネルのテスト

Slack通知が機能するかどうかをテストしましょう。

インストール中に作成されたシステムユーザーnetdataとしてログインします。

$ sudo su -s /bin/bash netdata

アラーム通知スクリプトを実行してテスト通知を送信します。

$ /usr/libexec/netdata/plugins.d/alarm-notify.sh test

ユーザーを終了します。

$ exit.

Slackアプリケーションを開くと、次のアラートを受信しているはずです。

Netdata Slack Test Notifications

テスト警告に関する3通のメールも受信するはずです。

Netdata Test Notifications Email

ステップ9 - システム監視の設定

通知を設定してテストしたので、CPU使用量などのシステムの通知を設定してテストしましょう。

次のコマンドを実行してCPU設定ファイルを作成し、開きます。

$ cd /etc/netdata
$ sudo ./edit-config health.d/cpu.conf

10min_cpu_usageの下のwarnおよびcritオプションの値を次のように変更します。

warn: $this > (($status >= $WARNING)  ? (60) : (70))
crit: $this > (($status == $CRITICAL) ? (75) : (85))

ファイルを保存してエディタを終了します。

上記の設定では、CPU使用率が60%から70%の間にある場合に警告が送信され、CPU使用率が75%から85%の間にある場合に重大な警告が送信されます。

Netdataサービスを再起動します。

$ sudo systemctl restart netdata

Stressアプリケーションをインストールして設定をテストしましょう。

$ sudo dnf install stress

サーバーのCPU使用率をスパイクさせるために次のコマンドを実行します。

$ stress --cpu 2

コマンドを5〜10分間実行したままにすると、高いCPU使用率メッセージを受信します。メッセージを受信したら、ターミナルに戻り、Ctrl + Zを押してコマンドを終了します。

サービスを停止すると、CPUが回復したという通知がSlackに送信されます。

Slack CPU Usage Notifications

ステップ10 - Nginx監視の設定

Netdataを使用して最も一般的に監視されるアプリの1つは、サーバーおよびSQLパッケージです。Netdataを使用してNginxサーバーを監視しましょう。

Nginxサーバーの監視を有効にするには、ngx_http_stub_status_moduleを使用する必要があります。通常、Nginxにはプリインストールされています。このモジュールが存在するかどうかを確認できます。

$ nginx -V 2>&1 | grep -o with-http_stub_status_module
with-http_stub_status_module

応答がない場合は、Nginxのインストールがその機能をサポートしていないことを意味します。その場合は、Nginxをコンパイルする必要があります。

Nginxのデフォルト設定ファイル/etc/nginx/conf.d/default.confを編集のために開きます。ファイルの場所は、Nginxを公式リポジトリからインストールしたため異なります。OSのリポジトリからNginxをインストールする場合、ファイルの場所は/etc/nginx/nginx.confになります。

$ sudo nano /etc/nginx/conf.d/default.conf

最後の閉じ中括弧の前に次のコードをサーバーブロック内に入力します。

# Enable module stub_status
location /stub_status {
    stub_status;
    allow 127.0.0.1;        #only allow requests from localhost
    deny all;               #deny all other hosts
}

ファイルを保存するには、Ctrl + Xを押し、プロンプトが表示されたらYを入力します。

Nginx設定を確認します。

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Nginxサーバーを再起動します。

$ sudo systemctl restart nginx

Netdataサービスを再起動します。

$ sudo systemctl restart netdata

NetdataダッシュボードにNginx接続の詳細が表示されるはずです。

Netdata Nginx Connection Details

Nginxログの監視

NetdataはNginxアクセスログも監視できます。それを行うには、Netdataディレクトリに移動します。

$ cd /etc/netdata

アクセスログを監視するための設定ファイルを生成するために次のコマンドを実行します。

$ sudo ./edit-config python.d/web_log.conf

ファイルの下部にスクロールし、次のセクションを見つけます。

# -------------------------------------------
# nginx log on various distros

# debian, arch
nginx_log:
  name: 'nginx'
  path: '/var/log/nginx/access.log'

# gentoo
nginx_log2:
  name: 'nginx_site'
  path: '/var/log/nginx/localhost.access_log'

それぞれのログファイルを監視するためにパスを変更します。監視するホストとそのアクセスログファイルの数に応じて、セクションを追加できます。私たちの設定ファイルは次のようになります。

# -------------------------------------------
# nginx log on various distros

# debian, arch
nginx_log:
  name: 'nginx'
  path: '/var/log/nginx/access.log'

nginx_log2:
  name: 'nginx_site1'
  path: '/var/log/nginx/site1.access_log'

nginx_log3:
  name: 'nginx_site2'
  path: '/var/log/nginx/site2.access_log'

nginx_log4:
  name: 'nginx_site3'
  path: '/var/log/nginx/site3.access_log'

保存してエディタを終了します。

Netdataがログファイルにアクセスするには、ディレクトリへの権限が必要です。デフォルトでは、admシステムグループがログファイルにアクセスする権限を持っています。Netdataにアクセスを許可するには、netdataユーザーをadmグループに追加する必要があります。

$ sudo usermod -aG adm netdata

NginxとNetdataサービスを再起動します。

$ sudo systemctl restart nginx netdata

Netdataダッシュボードを再読み込みして、ログファイルデータを表示します。

Netdata Access Log Dashboard

ステップ11 - MySQL/MariaDB監視の設定

このチュートリアルではMariaDBをインストールします。MySQLサーバーを使用している場合も手順は同じです。

MariaDB 10.6のリポジトリを追加します。

$ sudo nano /etc/yum.repos.d/MariaDB.repo

次のコードを貼り付けます。

# MariaDB 10.6 CentOS repository list - created 2022-04-12 11:12 UTC
# https://mariadb.org/download/
[mariadb]
name = MariaDB
baseurl = https://download.nus.edu.sg/mirror/mariadb/yum/10.6/centos8-amd64
module_hotfixes=1
gpgkey=https://download.nus.edu.sg/mirror/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1

ファイルを保存するには、Ctrl + Xを押し、プロンプトが表示されたらYを入力します。

MariaDBをインストールします。

$ sudo dnf install MariaDB-server

MariaDBサーバーを有効にします。

$ sudo systemctl enable mariadb

MySQLセキュアインストールスクリプトを開始します。MariaDBの場合、ファイル名が異なります。

$ sudo mariadb-secure-installation
....
Enter current password for root (enter for none): (Press Enter)
....
Switch to unix_socket authentication [Y/n] Y (Type Y and Press Enter)
....
Change the root password? [Y/n] Y (Type Y and Press Enter)
New password: 
Re-enter new password: 
Password updated successfully!
....
Remove anonymous users? [Y/n] Y (Type Y and Press Enter)
....
Disallow root login remotely? [Y/n] Y (Type Y and Press Enter)
....
Remove test database and access to it? [Y/n] Y (Type Y and Press Enter)
....
Reload privilege tables now? [Y/n] Y (Type Y and Press Enter)
....
All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

ファイル/etc/my.cnf.d/server.cnfを編集のために開きます。

$ sudo nano /etc/my.cnf.d/server.cnf

ファイル内の[mariadb]セクションを見つけ、次の行を貼り付けてUserstatsプラグインを有効にします。この設定はMariaDBでのみ機能し、MySQLサーバーでは機能しません。

[mariadb]
userstat = 1

ファイルを保存するには、Ctrl + Xを押し、プロンプトが表示されたらYを入力します。

MariaDBサーバーを開始します。

$ sudo systemctl start mariadb

Netdataサービスを再起動します。

$ sudo systemctl restart netdata

MariaDB/MySQLダッシュボードがNetdataダッシュボードに表示されるはずです。

NetData MySQL/MariaDB dashboard

ステップ12 - PHP-FPM監視の設定

Netdataを使用して1つ以上のPHP-FPMインスタンスを監視できます。このチュートリアルでは、PHP 8.0をインストールし、その監視を有効にします。

Remiリポジトリを使用してPHPをインストールします。ステップ3でEPELリポジトリをすでにインストールしています。Remiリポジトリをインストールします。

$ sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm

利用可能なPHPストリームを確認します。

$ dnf module list php -y
Last metadata expiration check: 0:00:12 ago on Fri 03 Dec 2021 09:39:32 AM UTC.
Rocky Linux 8 - AppStream
Name                Stream                 Profiles                                 Summary
php                 7.2 [d]                common [d], devel, minimal               PHP scripting language
php                 7.3                    common [d], devel, minimal               PHP scripting language
php                 7.4                    common [d], devel, minimal               PHP scripting language

Remi's Modular repository for Enterprise Linux 8 - x86_64
Name                Stream                 Profiles                                 Summary
php                 remi-7.2               common [d], devel, minimal               PHP scripting language
php                 remi-7.3               common [d], devel, minimal               PHP scripting language
php                 remi-7.4               common [d], devel, minimal               PHP scripting language
php                 remi-8.0               common [d], devel, minimal               PHP scripting language
php                 remi-8.1               common [d], devel, minimal               PHP scripting language

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

デフォルトのバージョンは7.2です。RemiのPHP 8.0リポジトリを有効にします。

$ sudo dnf module reset php -y
$ sudo dnf module enable php:remi-8.0

次に、Firefly IIIに必要なPHPとその拡張機能をインストールします。phpパッケージには、Firefly IIIが必要とするいくつかの依存関係が含まれているため、必ず含めてください。

$ sudo dnf install php php-fpm php-mbstring php-xml php-curl php-mysqlnd php-zip php-intl php-bcmath php-gd php-ldap php-cli

インストールを確認します。

$ php --version
PHP 8.0.16 (cli) (built: Feb 15 2022 21:34:32) ( NTS gcc x86_64 )
Copyright (c) The PHP Group
Zend Engine v4.0.16, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.16, Copyright (c), by Zend Technologies

PHPの設定

ファイル/etc/php-fpm.d/www.confを開きます。

$ sudo nano /etc/php-fpm.d/www.conf

PHPプロセスのUnixユーザー/グループをnginxに設定する必要があります。ファイル内のuser=www-dataおよびgroup=www-data行を見つけて、nginxに変更します。

...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
...

ファイルを下にスクロールして、;pm.status_path = /statusオプションを見つけます。行の前のセミコロンを削除してコメントを解除します。

; Note: There is a real-time FPM status monitoring sample web page available
;       It's available in: @EXPANDED_DATADIR@/fpm/status.html
;
; Note: The value must start with a leading slash (/). The value can be
;       anything, but it may not be a good idea to use the .php extension or it
;       may conflict with a real PHP file.
; Default Value: not set
pm.status_path = /status

ファイルを保存するには、Ctrl + Xを押し、プロンプトが表示されたらYを入力します。

PHPサービスを有効にして開始します。

$ sudo systemctl enable php-fpm --now

NginxにPHP設定を追加

Nginxのデフォルト設定ファイル/etc/nginx/conf.d/default.confを編集のために開きます。

$ sudo nano /etc/nginx/conf.d/default.conf

最後の閉じ中括弧の前に次のコードをサーバーブロック内に入力します。

# define PHP-FPM monitoring
location ~ ^/(status|ping)$ {
    allow 127.0.0.1;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_pass   unix:/run/php-fpm/.sock; # Depends on the PHP Version and OS Distro
}

ファイルを保存するには、Ctrl + Xを押し、プロンプトが表示されたらYを入力します。

Nginx設定を確認します。

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Nginxサーバーを再起動します。

$ sudo systemctl restart nginx

Netdataサービスを再起動します。

$ sudo systemctl restart netdata

Netdataダッシュボードを再読み込みすると、PHP-FPMの統計が表示されるはずです。

NetData PHP-FPM Stats Dashboard

ステップ13 - Dockerエンジンとコンテナ監視の設定

NetdataはDockerエンジンとDockerコンテナの両方を監視できます。また、これらのコンテナ内で実行されているアプリも監視できますが、このチュートリアルではカバーしません。

まずDockerをインストールしましょう。

$ sudo dnf install yum-utils
$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
$ sudo dnf install docker-ce docker-ce-cli containerd.io

Dockerサービスを有効にして開始します。

$ sudo systemctl enable docker --now

Dockerエンジンを監視するには、Dockerのメトリクス機能を有効にする必要があります。

ファイル/etc/docker/daemon.jsonを編集のために作成し、開きます。

$ sudo nano /etc/docker/daemon.json

次のコードを貼り付けます。

{
  "metrics-addr" : "127.0.0.1:9323",
  "experimental" : true
}

ファイルを保存するには、Ctrl + Xを押し、プロンプトが表示されたらYを入力します。

NetdataとDockerサービスを再起動します。

$ sudo systemctl restart docker netdata

Netdataダッシュボードを再読み込みすると、Dockerの統計が表示されます。

NetData Docker Container Stats

メトリクスオプションがPrometheusダッシュボード用に作成されたため、ダッシュボードにPrometheus Metricsという別のエントリが表示されます。

NetData Docker Container Prometheus Stats

次のステップはDockerコンテナを監視することです。Netdataは、cgroupsと呼ばれる制御グループを使用してDockerコンテナを監視します。制御グループは、プロセスのリソース使用量を制限および追跡するLinuxの機能であり、この場合はコンテナです。NetdataをインストールしたときにDockerコンテナが実行されている場合、それらは自動的に追跡されます。ただし、Netdataをインストールした後にコンテナを実行する場合は、サービスを再起動する必要があります。

テストコンテナを実行します。

$ docker container run -d nginx

コンテナの状態を確認します。

$ docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
938b2cf30927   nginx     "/docker-entrypoint.…"   3 seconds ago   Up 2 seconds   80/tcp    pensive_lovelace

コンテナの名前はtender_murdockです。コンテナがNetdataをインストールした後に開始されたため、サービスを再起動します。

$ sudo systemctl restart netdata

ダッシュボードを読み込み、コンテナの統計が表示されるはずです。

NetData Docker Individual Container Statistics

結論

これで、Rocky Linuxサーバー上でNginx、MySQL、PHP-FPM、およびDockerを監視するためにNetdata監視システムをインストールして使用する方法に関するチュートリアルが終了しました。質問がある場合は、下のコメントに投稿してください。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。