如何在 Rocky Linux 8 上使用 Netdata 监控工具安装和监控服务
在此页
- 先决条件
- 第 1 步 - 配置防火墙
- 第 2 步 - 安装 NetData
- 第 3 步 - 安装 SSL
- 第 4 步 - 安装和配置 Nginx
- 第 5 步 - 访问和使用 Netdata 仪表板
- 第 6 步 - 配置网络数据
- 配置 NetData 内存使用
- 关闭遥测
- 长期存储
- 降低收集频率
- 监控 Nginx 日志
- 配置PHP
- 将 PHP 设置添加到 Nginx
Netdata 是用于基于 Linux 的操作系统的开源监控系统。它使用漂亮而详细的仪表板提供实时性能和监控。它提供了数百种工具来监控服务器、CPU、内存使用情况、系统进程、磁盘使用情况、IPv4 和 IPv6 网络、系统防火墙以及 Nginx、MySQL、MongoDB、Redis、ElasticSearch、PostgreSQL、PHP-FPM 等应用程序。它与其他监控工具集成,如 Prometheus、Graphite、Kafka、Grafana 等。
在本教程中,您将学习在 Rocky Linux 8 服务器上使用 Netdata Tool 安装和监控各种服务。我们将使用 Netdata 来跟踪 LEMP 堆栈和 Docker 引擎的指标。
先决条件
- 一台运行 Rocky Linux 8 的服务器。
- 具有 sudo 权限的非根用户。
- 一个完全限定的域名 (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 权限。输入
Y
以确认添加 Netdata 存储库并将其安装在您的服务器上。Netdata 安装程序会自动启用并启动该服务。检查服务的状态。
$ sudo systemctl status netdata ? netdata.service - Real time performance monitoring 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 用于其仪表板,如以下输出所示。 Netdata 使用端口 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
要使用 Lets 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 -d netdata.example.com
上述命令会将证书下载到服务器上的
/etc/letsencrypt/live/netdata.example.com
目录。生成 Diffie-Hellman 组证书。
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
为 Lets Encrypt 自动更新创建一个挑战网站根目录。
$ sudo mkdir -p /var/lib/letsencrypt
创建 Cron 作业以更新 SSL。它将每天运行以检查证书并在需要时更新证书。为此,首先,创建文件
/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 仪表板
您应该能够通过 URL
https://netdata.example.com
访问 Netdata。第一次访问它时,系统会提示您输入 HTTP 身份验证详细信息。您将获得以下仪表板。
选中记住我的选择框并单击按钮稍后,停留在代理仪表板以关闭弹出窗口。
您可以随时使用仪表板上的“播放”按钮暂停、停止和启动监控。
您可以通过单击右侧栏中的选项来访问各种仪表板。单击 UTC 按钮并选择正确的时区以进行更改。
第 6 步 - 配置网络数据
Netdata 将其主要配置存储在
/etc/netdata/netdata.conf
文件中。您可以通过在浏览器中访问 URLhttps://netdata.example.com/netdata.conf
来查看这些设置。该文件分为多个部分,例如 [global]、[web]、[registry] 等。默认配置足以让我们开始。 Netdata 使用两种类型的插件收集数据:
<开始>
- 内部插件是用 C 语言编写的,并在
netdata
守护进程中作为线程运行。 - 外部插件使用多种语言编写,包括 Python、Go 等,并由
netdata
守护程序生成为长期运行的独立进程。它们使用pipes
与 Netdata 守护程序通信。
配置 NetData 内存使用
NetDatas RAM 的使用取决于您希望在记录的图表数据丢失之前保留的时间。
- 3600 秒或 1 小时的图表数据保留使用 15 MB 的 RAM。
- 7200 秒或 2 小时的图表数据保留使用 30 MB 的 RAM。
- 14400 秒或 4 小时的图表数据保留使用 60 MB 的 RAM。
每次将图表数据保留时间加倍,RAM 要求也会加倍。这些 RAM 要求基于股票仪表板使用的图表数量。添加更多图表和应用程序将改变这些估计。
打开网络数据配置文件。
$ sudo nano /etc/netdata/netdata.conf
在 [global]
部分下输入行 history=14400
。
[global]
..
history = 14400
..
通过按 Ctrl + X 并在出现提示时输入 Y 来保存文件。
关闭遥测
默认情况下,Netdata 使用产品分析平台 Posthog 收集匿名使用信息。每次启动或停止 Netdata 守护程序时,Netdata 都会使用匿名统计脚本收集以下系统信息并将其发送给自己。
- 网络数据版本
- 操作系统名称、版本、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 进程每秒收集大约 2000 个指标,这意味着默认配置将在 RAM 和磁盘上存储大约两天的指标。
要存储更多指标,您有以下两种选择:
<开始>
我们将只讨论本教程中的第一个选项。对于第二个选项,你应该参考 Netdatas 官方文档。
配置 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 磁盘空间
决定了磁盘使用量。默认情况下,Netdata 使用 32 MB 的 RAM 和 256 MB 的磁盘空间。您可以取消注释这些值并根据您的喜好更改这两个值中的任何一个。
您可以使用 Netdatas 存储指标计算器来确定您需要多少 RAM 和磁盘空间。
降低收集频率
您可以通过增加指标收集之间的时间来优化 Netdatas 性能。默认情况下,Netdata 每秒收集一次指标。
要更改它,请打开 Netdata 配置文件进行编辑。
$ sudo nano /etc/netdata/netdata.conf
在 [global]
部分下输入以下行。这会将频率增加到 5 秒。
[global]
...
update every = 5
通过按 Ctrl + X 并在出现提示时输入 Y 来保存文件。
第 7 步 - 配置 Slack 通知
第一步是创建一个 Slack 应用程序并将其连接到工作区中的特定通道以配置 Slack 通知。
访问 Slack API 页面并单击“创建应用程序”按钮开始创建应用程序。

单击 From Scratch 链接以创建应用程序。

为您的应用选择一个名称,然后选择您希望您的应用出现的工作区。如果您不想将您的应用程序与现有工作区相关联,您可以创建另一个并返回到此步骤。

通过选择左侧栏中“功能”菜单下的选项打开传入 Webhook 页面,然后激活 Webhook。

单击页面底部的 Add New Webhook to Workspace 按钮,然后选择您的工作区和通知的目标通道。

单击允许按钮继续。返回 Incoming Webhooks 页面并复制 Webhook URL。

返回终端,切换到/etc/netdata
目录。
$ cd /etc/netdata
Netdata 提供了一个edit-config
脚本来编辑和创建Netdata 配置文件。运行以下文件以使用系统默认编辑器创建和打开文件 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 键退出编辑,输入 😡 并按回车键保存文件并退出编辑器。
如果您的编辑器是 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.<location>.amazonaws.com
from
auth on
user <yoursesusername>
password <yoursespassword>
# 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:
# " ..."
# the email address sending email notifications
# the default is the system user netdata runs as (usually: netdata)
# The following formats are supported:
# EMAIL_SENDER=""
# EMAIL_SENDER="User Name <>"
# EMAIL_SENDER="'User Name' <>"
# EMAIL_SENDER="\"User Name\" <>"
EMAIL_SENDER="Server Admin <>"
# enable/disable sending emails
SEND_EMAIL="YES"
# if a role recipient is not configured, an email will be send to:
DEFAULT_RECIPIENT_EMAIL=""
# 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 应用程序,您应该会收到以下警报。

您还应该收到三封有关测试警告的电子邮件。

第 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% 之间时,将发出严重警告。
重新启动网络数据服务。
$ sudo systemctl restart netdata
让我们通过安装 Stress 应用程序来测试设置。
$ sudo dnf install stress
运行以下命令来增加服务器的 CPU 使用率。
$ stress --cpu 2
让命令运行 5-10 分钟,您将收到 High CPU usage 消息。收到这些消息后,返回终端并按 Ctrl + Z 退出命令。
停止服务后,您将在 Slack 上收到 CPU 恢复通知。

第 10 步 - 配置 Nginx 监控
使用 Netdata 的最常监控的应用程序之一是服务器和 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。如果您从操作系统存储库安装 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
重新启动网络数据服务。
$ sudo systemctl restart netdata
您应该在 Netdata 仪表板中看到 Nginx 连接详细信息。

监控 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 仪表板以查看您的日志文件数据。

第 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
重新启动网络数据服务。
$ sudo systemctl restart netdata
MariaDB/MySQL 仪表板应该开始出现在 Netdata 仪表板中。

第 12 步 - 配置 PHP-FPM 监控
您可以使用 Netdata 监控一个或多个 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。启用 Remis 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: @/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
将 PHP 设置添加到 Nginx
打开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
重新启动网络数据服务。
$ sudo systemctl restart netdata
重新加载 Netdata 仪表板,您应该会看到 PHP-FPM 统计信息。

第 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 统计信息。

您将在仪表板上看到另一个名为 Prometheus Metrics
的条目,因为 metrics 选项是为 Prometheus 仪表板创建的。

下一步是监控 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
加载仪表板,您应该能够看到容器统计信息。

结论
我们关于在 Rocky Linux 服务器上安装和使用 Netdata 监控系统监控各种应用程序(如 Nginx、MySQL、PHP-FPM 和 Docker)的教程到此结束。如果您有任何问题,请在下面的评论中发表。