本教程适用于以下操作系统版本

  • 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

在 AlmaLinux 9 上安装 Netdata 实时性能监控

接下来,运行以下命令将 Netdata 仓库添加到你的系统。在本例中,你将使用 Netdata 2.2 仓库。

sudo rpm -ivh https://repo.netdata.cloud/repos/stable/el/9/x86_64/netdata-repo-2-2.noarch.rpm

在 AlmaLinux 9 上安装 Netdata 实时性能监控

完成后,使用以下命令检查 AlmaLinux 机器上可用的软件仓库。

sudo dnf repolist

你应该收到的输出如下所示:

在 AlmaLinux 9 上安装 Netdata 实时性能监控

下载并安装 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}

在 AlmaLinux 9 上安装 Netdata 实时性能监控

安装完 Netdata 后,运行以下命令启动并启用 netdata 服务。

sudo systemctl start netdata
sudo systemctl enable netdata

然后,通过执行以下命令验证 netdata 服务。

sudo systemctl status netdata

如果安装成功,netdata 服务应处于 active(running)状态,如下所示:

在 AlmaLinux 9 上安装 Netdata 实时性能监控

最后,通过以下命令开放 Netdata 默认端口 19999。

在本例中,你将临时开放端口 19999,因为你将把 Nginx 配置为反向代理。我们将在下一节中完成。

sudo firewall-cmd --add-port=19999/tcp

使用你常用的网页浏览器访问你的服务器 IP 地址加端口 19999(例如:http://192.168.5.50:19999 )。

如果一切顺利,你应该会看到如下所示的 Netdata 仪表板。

在 AlmaLinux 9 上安装 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

如果配置成功,你应该会看到以下输出:

在 AlmaLinux 9 上安装 Netdata 实时性能监控

将 Nginx 安装为反向代理

至此,你已在 AlmaLinux 9 服务器上安装了 Netdata。下一步,你将安装并配置 Nginx 作为 Netdata 的反向代理。

此外,你可能还需要一个域名,可以使用子域名或本地域名。

安装 Nginx

首先,使用以下 dnf 命令安装 Nginx。输入 y 以继续安装。

sudo dnf install nginx

在 AlmaLinux 9 上安装 Netdata 实时性能监控

安装 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

在 AlmaLinux 9 上安装 Netdata 实时性能监控

现在运行以下命令验证 Nginx 语法。如果没有错误,你应该会看到输出 ' syntax is ok - test is successful' 。

sudo nginx -t

然后,使用以下命令启动并启用 Nginx。

sudo systemctl start nginx
sudo systemctl enable nginx

在 AlmaLinux 9 上安装 Netdata 实时性能监控

Nginx 启动后,通过执行以下命令进行验证。

sudo systemctl status nginx

如果一切顺利,你应该会收到 active(running) 的输出,这表明 Nginx 正在运行。

在 AlmaLinux 9 上安装 Netdata 实时性能监控

开放 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 服务。如果没有,请重复之前的命令。

在 AlmaLinux 9 上安装 Netdata 实时性能监控

最后,使用你常用的网页浏览器访问你的 Netdata 域名,例如 http://netdata.howtoforge.local。

当提示进行 Nginx 基础认证时,输入你的用户名和密码。

在 AlmaLinux 9 上安装 Netdata 实时性能监控

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

在 AlmaLinux 9 上安装 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

在 AlmaLinux 9 上安装 Netdata 实时性能监控

现在运行以下 curl 命令验证 Nginx stub_status 模块。

curl http://localhost/basic_status

如果配置成功,你应该会看到来自 Nginx 网络服务器的状态信息。

在 AlmaLinux 9 上安装 Netdata 实时性能监控

启用用于监控 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 实时性能监控

总结

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