使用 Netdata 监控你的 LEMP 服务器

2025-06-10

使用 Netdata 监控你的 LEMP 服务器

Netdata是一款高度优化的开源监控代理,可安装在您的所有系统上:物理服务器、虚拟服务器、容器,甚至物联网 (IoT)。
它能够实时洞察其运行系统上发生的一切。其设计理念是不会干扰系统的核心功能。
它既可以独立运行,也可以集成到现有的监控工具中,例如 Prometheus、Graphite、Kafka 等。

在本教程中,您将学习如何安装 Netdata 以及如何配置它来监控 Linux、Nginx、MySQL 和 PHP。

安装 Netdata

有几种方法可以根据您的系统或环境安装 Netdata
。 最佳且推荐的方法是使用
其自动单行安装直接从源代码安装,这是默认设置:

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

Enter fullscreen mode Exit fullscreen mode

自动安装程序将安装任何所需的系统包并直接在您的系统上编译 Netdata。

您可以通过访问在浏览器上查看您的 Netdata 仪表板http://SERVER_IP:19999

安装 Nginx

Nginx 是一个 HTTP 和反向代理服务器、邮件代理服务器以及通用 TCP/UDP 代理服务器,用于托管各种规模的网站和应用程序。它是 Apache 的热门替代方案,以其对内存资源的低影响、高可扩展性以及模块化、事件驱动的架构而闻名,该架构可提供安全、可预测的性能。

根据您的操作系统,有几种安装Nginx 的方法。如果您需要一些软件包中没有的特殊功能,您也可以从源代码构建 Nginx。

如果您需要某些软件包和端口未提供的特殊功能,则可以从源文件编译 Nginx。但是,对于本教程而言,Nginx 捆绑了 Netdata 读取指标所需的功能。

要安装适用于 Ubuntu 的预构建 Nginx 包,请运行以下命令:

apt install nginx
Enter fullscreen mode Exit fullscreen mode

Ubuntu 的预构建 Nginx 包可能无法更新到最新的稳定版本 Nginx。

要在 Ubuntu 上安装最新稳定版本的 Nginx:

安装必备软件包并为稳定的 Nginx 软件包设置 apt 存储库:

sudo apt install curl gnupg2 ca-certificates lsb-release
Enter fullscreen mode Exit fullscreen mode
echo "deb http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list
Enter fullscreen mode Exit fullscreen mode

接下来,导入官方 Nginx 签名密钥,以便 apt 可以验证包的真实性:

curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo apt-key add -
Enter fullscreen mode Exit fullscreen mode

验证您是否拥有正确的密钥:

sudo apt-key fingerprint ABF5BD827BD9BF62
Enter fullscreen mode Exit fullscreen mode

输出应包含完整的指纹573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62,如下所示:

pub   rsa2048 2011-08-19 [SC] [expires: 2024-06-14]
      573B FD6B 3D8F BC64 1079  A6AB ABF5 BD82 7BD9 BF62
uid   [ unknown] nginx signing key <signing-key@nginx.com>
Enter fullscreen mode Exit fullscreen mode

使用以下命令更新 apt 存储库并安装 Nginx:

sudo apt update
sudo apt install nginx
Enter fullscreen mode Exit fullscreen mode

安装 MySQL

MySQL 是一个开源关系数据库管理系统。

还有几种方法可以针对您的操作系统安装 MySQL 。

MySQL APT 存储库提供用于在 Ubuntu 上安装和管理 MySQL 服务器、客户端和其他组件的 deb 包。

运行以下命令来启用存储库。

wget http://repo.mysql.com/mysql-apt-config_0.8.13-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.13-1_all.deb
Enter fullscreen mode Exit fullscreen mode

在安装 MySQL apt 配置包期间,您可以选择 MySQL 版本(8.0 或 5.7)安装在您的系统上。

更新apt并安装 MySQL

sudo apt update 
sudo apt install mysql-server
Enter fullscreen mode Exit fullscreen mode

作为一项安全措施,您可以通过运行以下命令进一步保护您的 MySQL 安装:

sudo mysql_secure_installation
Enter fullscreen mode Exit fullscreen mode

安装 PHP

PHP是一种开源通用脚本语言,特别适合 Web 开发。

与 Nginx 一样,有几种方法可以根据您的操作系统安装 PHP 。

一个快速而简单的方法是运行:

apt install php-fpm php-mysql php-cli

Enter fullscreen mode Exit fullscreen mode

在本教程中,您将使用适用于 Ubuntu 的最新稳定版本的 PHP。

首先启用 Ondrej PHP 存储库:

sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
Enter fullscreen mode Exit fullscreen mode

更新 apt 并安装必要的 PHP 包

sudo apt update
sudo apt install php-fpm php-mysql php-cli
Enter fullscreen mode Exit fullscreen mode

您现在可以在配置文件中编辑 Nginx 服务器块,以便 Nginx 可以处理 PHP 文件:

server {

    # . . . your other code

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.3-fpm.sock;
    }
}
Enter fullscreen mode Exit fullscreen mode

重新启动Nginx服务,使新配置生效:

sudo systemctl restart nginx
Enter fullscreen mode Exit fullscreen mode

准备好 LEMP 堆栈后,让我们继续配置 Netdata 以从 Nginx、MySQL 和 PHP 读取指标。

Netdata 配置

首次安装或重新启动 Netdata 时,它会自动检测可用的数据源,例如 Nginx、PHP、MySQL、Redis 等。

现在您必须重新启动 Netdata 服务,以便它可以自动检测和收集指标。

service netdata restart
Enter fullscreen mode Exit fullscreen mode

注意:如果 Netdata 在重启后没有收集指标,则您可能没有正确配置源。

Netdata + Nginx

为了让 Netdata 自动检测 Nginx Web 服务器,您需要在 Nginx 配置文件的位置块中启用ngx_http_stub_status_module并传递指令。stub_status

使用以下命令确认所需模块是否启用:

nginx -V 2>&1 | grep -o with-http_stub_status_module
Enter fullscreen mode Exit fullscreen mode

将此位置块添加到您的 Nginx 配置文件:


location /stub_status {
    stub_status;
}
Enter fullscreen mode Exit fullscreen mode

您可以通过以下命令编辑 Netdata 的 Nginx 模块的配置文件,将 Netdata 配置为监控本地 Nginx 服务器以外的许多远程 Nginx 服务器:

/etc/netdata/edit-config python.d/nginx.conf
Enter fullscreen mode Exit fullscreen mode

确保ngx_http_stub_status_module您要监控的所有服务器都处于活动状态。

在文件底部附近,您将看到以下未注释的内容,如果您想添加更多服务器,它可以作为您的指南。

localhost:
  name: "local"
  url: "http://localhost/stub_status"

remote1:
  name: "local"
  url: "http://[REMOTE_IP_ADDRESS]/stub_status"
Enter fullscreen mode Exit fullscreen mode

Nginx 图表在我的 Netdata 仪表板上精美显示:
Nginx 图表

Netdata + MySQL

与 Nginx 一样,如果您满足已安装并运行 python 库MySQLdb的要求,Netdata 可以自动检测 MySQL(或其替代品 - MariaDB)

您还需要一个netdata连接到本地主机上的 MySQL 服务器的本地用户。该用户将能够收集 MySQL 统计信息,但无法更改任何数据或影响 MySQL 操作。

要创建此用户,请运行以下命令:

create user 'netdata'@'localhost'; 
grant usage on *.* to 'netdata'@'localhost'; 
flush privileges; 
Enter fullscreen mode Exit fullscreen mode

虽然有了 MySQL 服务器上所需的 Python 库和netdata用户,您就可以在 Netdata 仪表板上看到图表,但是您可以通过以下命令编辑 Netdata 的 MySQL 模块的配置文件来监控其他满足要求的远程 MySQL 服务器:

/etc/netdata/edit-config python.d/mysql.conf
Enter fullscreen mode Exit fullscreen mode
# Other content of the config file appear here
...


remote:
  user     : 'netdata'
  host     : 'example.org'
  port     : 3306 # or any port which MySQL can be accessed
Enter fullscreen mode Exit fullscreen mode

仪表板上的 MySQL 图表应如下所示:

MySQL 图表

Netdata + PHP

php-fpm如果启用了状态页面,并且可以通过 Web 服务器访问状态页面,Netdata 将自动检测并监控一个或多个 PHP-FPM 实例。

运行以下代码来查看或编辑php-fpm模块配置:

/etc/netdata/edit-config python.d/phpfpm.conf
Enter fullscreen mode Exit fullscreen mode

文件内容:


update_every : 3
priority     : 90100

local:
  url     : 'http://localhost/status'

Enter fullscreen mode Exit fullscreen mode

PHP-FPM 图表应出现在您的 Netdata 仪表板上,如下所示:
PHP-FPM图表

结论

您可以设置 Netdata 来监控任意数量的服务,甚至是 Hadoop 和 Kubernetes 集群。

但是,每次尝试添加新服务或配置时,请不要忘记重新启动 Netdata。

鏂囩珷鏉ユ簮锛�https://dev.to/prhomhyse/monitor-your-lemp-server-with-netdata-4ofh
PREV
利用 Prisma 的零成本类型安全实现高效开发
NEXT
开发人员倦怠:这是真实存在的!