本教程适用于以下操作系统版本
- AlmaLinux 9
- AlmaLinux 8
本页内容
- 前提条件
- 配置软件仓库
- 下载并安装 Netdata
- 配置 Netdata
- 将 Nginx 安装为反向代理 安装 Nginx 添加 Server Block 配置 开放 HTTP 和 HTTPS 端口
- 使用 SSL/TLS 证书保护 Netdata
- 示例:使用 Netdata 监控 Nginx 启用 Nginx stub_status 启用用于监控 Nginx 的 Netdata 插件
- 总结
- 安装 Nginx
- 添加 Server Block 配置
- 开放 HTTP 和 HTTPS 端口
- 启用 Nginx stub_status
- 启用用于监控 Nginx 的 Netdata 插件
使用 Netdata 收集系统指标并监控你的应用程序。Netdata 是一款开源、可扩展且实时的监控系统,适用于服务器、容器和应用程序。
Netdata 可以从多种操作系统(如 Linux、Unix、Windows 和 macOS)收集指标。此外,它还支持 Docker 和 Kubernetes 等容器化技术。
按照本指南,在 AlmaLinux 9 服务器上将 Netdata 与 Nginx 反向代理一起安装。
前提条件
在开始之前,请确保你具备以下条件:
- 一台 AlmaLinux 9 服务器。
- 具有管理员权限的非 root 用户。
- SELinux 处于 permissive(宽容)模式。
配置软件仓库
在开始安装之前,你需要添加并启用一些用于 Netdata 的软件仓库。你将添加 EPEL 和 Netdata 仓库,然后在你的 AlmaLinux 服务器上启用 RHEL crb(Code Ready Build)仓库。
首先,运行以下命令安装 dnf-plugins-core 软件包。
sudo dnf install dnf-plugins-core -y
现在,运行以下命令在你的系统上添加 EPEL 仓库并启用 CRB 仓库。当提示时输入 y 以继续。
sudo dnf install epel-release
sudo dnf config-manager --set-enabled crb

接下来,运行以下命令将 Netdata 仓库添加到你的系统。在本例中,你将使用 Netdata 2.2 仓库。
sudo rpm -ivh https://repo.netdata.cloud/repos/stable/el/9/x86_64/netdata-repo-2-2.noarch.rpm

完成后,使用以下命令检查 AlmaLinux 机器上可用的软件仓库。
sudo dnf repolist
你应该收到的输出如下所示:

下载并安装 Netdata
既然已经配置好软件仓库,我们开始安装 Netdata。
在本例中,你将安装 Netdata 以及用于监控系统与应用程序的附加插件。
执行以下 dnf 命令安装 Netdata。输入 y 以接受 GPG 密钥并继续安装,然后等待安装完成。
你可能不需要所有这些 Netdata 插件,请务必根据你的需求调整软件包安装。
sudo dnf install netdata netdata-plugin-{apps,chartsd,cups,ebpf,go,pythond,perf,freeipmi,slabinfo,systemd-journal}

安装完 Netdata 后,运行以下命令启动并启用 netdata 服务。
sudo systemctl start netdata
sudo systemctl enable netdata
然后,通过执行以下命令验证 netdata 服务。
sudo systemctl status netdata
如果安装成功,netdata 服务应处于 active(running)状态,如下所示:

最后,通过以下命令开放 Netdata 默认端口 19999。
在本例中,你将临时开放端口 19999,因为你将把 Nginx 配置为反向代理。我们将在下一节中完成。
sudo firewall-cmd --add-port=19999/tcp
使用你常用的网页浏览器访问你的服务器 IP 地址加端口 19999(例如:http://192.168.5.50:19999 )。
如果一切顺利,你应该会看到如下所示的 Netdata 仪表板。

配置 Netdata
安装 Netdata 后,你将配置 Netdata 以 UNIX sock 文件方式运行。这使你能够将 Nginx 配置为 Netdata 的反向代理,你将在下一步中完成。要开始 Netdata 配置,请运行以下命令将 Netdata 配置下载到 /etc/netdata/netdata.conf 。
wget -O /etc/netdata/netdata.conf http://localhost:19999/netdata.conf
切换到 /etc/netdata 目录,并使用以下命令打开默认配置文件 netdata.conf。
cd /etc/netdata
sudo ./edit-config netdata.conf
找到 [web] 部分并取消注释 bind to 选项。然后,将默认的 bind 选项更改为 UNIX socket unix:/var/run/netdata/netdata.sock 。
[web] bind to = unix:/var/run/netdata/netdata.sock
完成后保存并关闭文件。
接下来,执行以下命令重启 Netdata 以应用你的更改。
sudo systemctl restart netdata
此时,Netdata 应该已作为 UNIX socket 在 unix:/var/run/netdata/netdata.sock 上运行。
使用以下 ss 命令验证 Netdata UNIX socket。
ss -pl | grep netdata.sock
如果配置成功,你应该会看到以下输出:

将 Nginx 安装为反向代理
至此,你已在 AlmaLinux 9 服务器上安装了 Netdata。下一步,你将安装并配置 Nginx 作为 Netdata 的反向代理。
此外,你可能还需要一个域名,可以使用子域名或本地域名。
安装 Nginx
首先,使用以下 dnf 命令安装 Nginx。输入 y 以继续安装。
sudo dnf install nginx

安装 Nginx 后,执行以下命令创建 server block 目录 /etc/nginx/server-blocks,并打开 Nginx 配置文件 /etc/nginx/nginx.conf 。
mkdir -p /etc/nginx/server-blocks
sudo nano /etc/nginx/nginx.conf
在 http {...} 部分内,添加以下 include... 选项。
http {
...
include /etc/nginx/server-blocks/*.conf;
}
完成后保存并关闭文件。
添加 Server Block 配置
接下来,使用以下 nano 编辑器命令为 Netdata 反向代理创建新的 Nginx server block /etc/nginx/server-blocks/netdata.conf。
sudo nano /etc/nginx/server-blocks/netdata.conf
插入以下配置,并务必在 server_name 参数中输入你的域名。在本例中,我们将使用域名 netdata.howtoforge.local。
此外,你将通过 auth_basic 模块使用文件 /etc/nginx/.passwords 来保护 Netdata。
upstream backend {
# the Netdata server
server unix:/var/run/netdata/netdata.sock;
keepalive 1024;
}
server {
# nginx listens to this
listen 80;
# the virtual host name of this
server_name netdata.howtoforge.local;
auth_basic "Protected";
auth_basic_user_file /etc/nginx/.passwords;
location / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_pass_request_headers on;
proxy_set_header Connection "keep-alive";
proxy_store off;
}
}
完成后,保存文件并退出编辑器。
现在运行以下命令生成密码文件 /etc/nginx/.passwords 。
请务必将用户 alice 替换为你的用户名。然后,输入你的密码并重复确认。
printf "alice:$(openssl passwd -apr1)" > /etc/nginx/.passwords

现在运行以下命令验证 Nginx 语法。如果没有错误,你应该会看到输出 ' syntax is ok - test is successful' 。
sudo nginx -t
然后,使用以下命令启动并启用 Nginx。
sudo systemctl start nginx
sudo systemctl enable nginx

Nginx 启动后,通过执行以下命令进行验证。
sudo systemctl status nginx
如果一切顺利,你应该会收到 active(running) 的输出,这表明 Nginx 正在运行。

开放 HTTP 和 HTTPS 端口
在你的 AlmaLinux 服务器上开放 HTTP 和 HTTPS 端口,以允许访问你的 Netdata 安装。执行以下命令完成此操作。
sudo firewall-cmd --add-service={http,https} --permanent
sudo firewall-cmd --reload
现在使用以下命令验证 firewalld 规则。
sudo firewall-cmd --list-all
请确保在 firewalld 的 list services 中同时包含 HTTP 和 HTTPS 服务。如果没有,请重复之前的命令。

最后,使用你常用的网页浏览器访问你的 Netdata 域名,例如 http://netdata.howtoforge.local。
当提示进行 Nginx 基础认证时,输入你的用户名和密码。

如果 Nginx 安装成功,你应该会看到如下所示的 Netdata 监控仪表板:

使用 SSL/TLS 证书保护 Netdata
配置 Nginx 后,你将生成 SSL/TLS 证书来保护你的安装。
如果你使用的是本地域名,可以生成自签名(Self-Signed)证书。但如果使用的是真实域名,请使用以下步骤生成 SSL/TLS 证书:
运行以下命令将 Certbot 和 Certbot Nginx 插件安装到你的系统。输入 y 以继续安装。
sudo dnf install certbot python3-certbot-nginx -y
现在运行以下 certbot 命令,从 Letsencrypt 生成 SSL/TLS 证书。运行此命令前,请务必修改域名和电子邮件地址。
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email
[email protected]
-d netdata.howtoforge.local
过程完成后,你的 Netdata 应已通过 HTTPS 得到保护。你已从 Letsencrypt 生成 SSL/TLS 证书,并通过 Certbot Nginx 插件在 Nginx server block 上启用了 HTTPS。
示例:使用 Netdata 监控 Nginx
如果你已按照上述步骤操作,那么你已经完成了以 Nginx 作为反向代理的 Netdata 安装,并配置了 HTTPS。现在你将学习 Netdata 的基本监控。
在本例中,你将通过 Netdata 设置对 Nginx 网络服务器的监控,以便更全面地了解如何监控其他服务与应用程序。
启用 Nginx stub_status
使用以下 nano 编辑器命令创建新配置文件 /etc/nginx/default.d/stub.conf。
sudo nano /etc/nginx/default.d/stub.conf
插入以下配置以启用 Nginx stub_status 模块。这将在 URL /basic_status 下暴露 Nginx stub_status。
location /basic_status {
stub_status;
server_tokens on;
}
完成后保存并关闭文件。
接下来,运行以下命令验证 Nginx 语法。然后,重启 Nginx 使更改生效。
sudo nginx -t
sudo systemctl restart nginx

现在运行以下 curl 命令验证 Nginx stub_status 模块。
curl http://localhost/basic_status
如果配置成功,你应该会看到来自 Nginx 网络服务器的状态信息。

启用用于监控 Nginx 的 Netdata 插件
切换到 /etc/netdata 目录并打开用于监控 Nginx 的插件配置。用于监控 Nginx 的 Netdata 插件是 Go 插件的一部分,访问 Netdata 插件列表可获取更多信息。
cd /etc/netdata
sudo ./edit-config go.d/nginx.conf
确保配置项 url: http://127.0.0.1/stub_status 存在,或者你也可以手动创建。这将告诉 Netdata 通过 URL: http://127.0.0.1/stub_status 监控 Nginx。
jobs: - name: local url: http://127.0.0.1/stub_status
完成后保存并关闭文件。
接下来,运行以下命令重启 Netdata 并应用你的更改。
sudo systemctl restart netdata
现在你可以使用以下命令对 Nginx 网络服务器进行测试或压力测试。ab(即 Apache Benchmark)是 httpd-tools 的一部分,请务必在你的机器上安装它。
ab -n 50000 -c 500 http://localhost/
返回 Netdata 仪表板,点击左侧的 Nginx 菜单。如果配置成功,你应该会看到如下所示的 Nginx 监控详情。

总结
总结一下,你已经在 AlmaLinux 9 服务器上完成了 Netdata 监控方案的安装。你将 Netdata 与 Nginx 反向代理一起安装,并使用 SSL/TLS 证书保护了 Netdata。此外,你还学习了用于监控应用程序的 Netdata 插件的基本用法。接下来,查看可用的 Netdata 列表以监控你的应用程序。