使用 Netdata 监控你的 LEMP 服务器
Netdata是一款高度优化的开源监控代理,可安装在您的所有系统上:物理服务器、虚拟服务器、容器,甚至物联网 (IoT)。
它能够实时洞察其运行系统上发生的一切。其设计理念是不会干扰系统的核心功能。
它既可以独立运行,也可以集成到现有的监控工具中,例如 Prometheus、Graphite、Kafka 等。
在本教程中,您将学习如何安装 Netdata 以及如何配置它来监控 Linux、Nginx、MySQL 和 PHP。
安装 Netdata
有几种方法可以根据您的系统或环境安装 Netdata
。 最佳且推荐的方法是使用
其自动单行安装直接从源代码安装,这是默认设置:
bash <(curl -Ss https://my-netdata.io/kickstart.sh)
自动安装程序将安装任何所需的系统包并直接在您的系统上编译 Netdata。
您可以通过访问在浏览器上查看您的 Netdata 仪表板http://SERVER_IP:19999
。
安装 Nginx
Nginx 是一个 HTTP 和反向代理服务器、邮件代理服务器以及通用 TCP/UDP 代理服务器,用于托管各种规模的网站和应用程序。它是 Apache 的热门替代方案,以其对内存资源的低影响、高可扩展性以及模块化、事件驱动的架构而闻名,该架构可提供安全、可预测的性能。
根据您的操作系统,有几种安装Nginx 的方法。如果您需要一些软件包中没有的特殊功能,您也可以从源代码构建 Nginx。
如果您需要某些软件包和端口未提供的特殊功能,则可以从源文件编译 Nginx。但是,对于本教程而言,Nginx 捆绑了 Netdata 读取指标所需的功能。
要安装适用于 Ubuntu 的预构建 Nginx 包,请运行以下命令:
apt install nginx
Ubuntu 的预构建 Nginx 包可能无法更新到最新的稳定版本 Nginx。
要在 Ubuntu 上安装最新稳定版本的 Nginx:
安装必备软件包并为稳定的 Nginx 软件包设置 apt 存储库:
sudo apt install curl gnupg2 ca-certificates lsb-release
echo "deb http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
接下来,导入官方 Nginx 签名密钥,以便 apt 可以验证包的真实性:
curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo apt-key add -
验证您是否拥有正确的密钥:
sudo apt-key fingerprint ABF5BD827BD9BF62
输出应包含完整的指纹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>
使用以下命令更新 apt 存储库并安装 Nginx:
sudo apt update
sudo apt install nginx
安装 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
在安装 MySQL apt 配置包期间,您可以选择 MySQL 版本(8.0 或 5.7)安装在您的系统上。
更新apt
并安装 MySQL
sudo apt update
sudo apt install mysql-server
作为一项安全措施,您可以通过运行以下命令进一步保护您的 MySQL 安装:
sudo mysql_secure_installation
安装 PHP
PHP是一种开源通用脚本语言,特别适合 Web 开发。
与 Nginx 一样,有几种方法可以根据您的操作系统安装 PHP 。
一个快速而简单的方法是运行:
apt install php-fpm php-mysql php-cli
在本教程中,您将使用适用于 Ubuntu 的最新稳定版本的 PHP。
首先启用 Ondrej PHP 存储库:
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
更新 apt 并安装必要的 PHP 包
sudo apt update
sudo apt install php-fpm php-mysql php-cli
您现在可以在配置文件中编辑 Nginx 服务器块,以便 Nginx 可以处理 PHP 文件:
server {
# . . . your other code
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
}
}
重新启动Nginx服务,使新配置生效:
sudo systemctl restart nginx
准备好 LEMP 堆栈后,让我们继续配置 Netdata 以从 Nginx、MySQL 和 PHP 读取指标。
Netdata 配置
首次安装或重新启动 Netdata 时,它会自动检测可用的数据源,例如 Nginx、PHP、MySQL、Redis 等。
现在您必须重新启动 Netdata 服务,以便它可以自动检测和收集指标。
service netdata restart
注意:如果 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
将此位置块添加到您的 Nginx 配置文件:
location /stub_status {
stub_status;
}
您可以通过以下命令编辑 Netdata 的 Nginx 模块的配置文件,将 Netdata 配置为监控本地 Nginx 服务器以外的许多远程 Nginx 服务器:
/etc/netdata/edit-config python.d/nginx.conf
确保ngx_http_stub_status_module
您要监控的所有服务器都处于活动状态。
在文件底部附近,您将看到以下未注释的内容,如果您想添加更多服务器,它可以作为您的指南。
localhost:
name: "local"
url: "http://localhost/stub_status"
remote1:
name: "local"
url: "http://[REMOTE_IP_ADDRESS]/stub_status"
Netdata + MySQL
与 Nginx 一样,如果您满足已安装并运行 python 库MySQLdb的要求,Netdata 可以自动检测 MySQL(或其替代品 - MariaDB)。
您还需要一个netdata
连接到本地主机上的 MySQL 服务器的本地用户。该用户将能够收集 MySQL 统计信息,但无法更改任何数据或影响 MySQL 操作。
要创建此用户,请运行以下命令:
create user 'netdata'@'localhost';
grant usage on *.* to 'netdata'@'localhost';
flush privileges;
虽然有了 MySQL 服务器上所需的 Python 库和netdata
用户,您就可以在 Netdata 仪表板上看到图表,但是您可以通过以下命令编辑 Netdata 的 MySQL 模块的配置文件来监控其他满足要求的远程 MySQL 服务器:
/etc/netdata/edit-config python.d/mysql.conf
# Other content of the config file appear here
...
remote:
user : 'netdata'
host : 'example.org'
port : 3306 # or any port which MySQL can be accessed
仪表板上的 MySQL 图表应如下所示:
Netdata + PHP
php-fpm
如果启用了状态页面,并且可以通过 Web 服务器访问状态页面,Netdata 将自动检测并监控一个或多个 PHP-FPM 实例。
运行以下代码来查看或编辑php-fpm
模块配置:
/etc/netdata/edit-config python.d/phpfpm.conf
文件内容:
update_every : 3
priority : 90100
local:
url : 'http://localhost/status'
PHP-FPM 图表应出现在您的 Netdata 仪表板上,如下所示:
结论
您可以设置 Netdata 来监控任意数量的服务,甚至是 Hadoop 和 Kubernetes 集群。
但是,每次尝试添加新服务或配置时,请不要忘记重新启动 Netdata。
鏂囩珷鏉ユ簮锛�https://dev.to/prhomhyse/monitor-your-lemp-server-with-netdata-4ofh