浏览 1.9k
原文作者:Monica Thorne - F5 技术营销工程师
原文链接:如何借助 Prometheus 和 Grafana 实现 NGINX Plus 可视化
原文来源:NGINX 中文官网
NGINX 唯一中文官方社区 ,尽在 nginx.org.cn
您可以通过 NGINX Plus 的仪表盘实时跟踪这些重要指标,NGINX Plus 还可以将指标反馈给第三方监控工具,从而让您通过性能可视化获得更多洞察力。
Prometheus-njs 模块可轻松为 Prometheus 和 Grafana 提供 NGINX Plus 的指标。
它使用 NGINX JavaScript 模块 (NJS) 和 NGINX Plus API 将指标从 NGINX Plus 导出到 Prometheus 服务器。
本文的主要内容包括:
注:
这些指令需要使用 NGINX Plus API,不适用于 NGINX 开源版。
如要使用 Prometheus、Grafana 和 NGINX Ingress Controller,请点击文末“阅读原文”参阅我们的文档。
点击链接,观看完整课程视频。
在开始演示之前,我们要先满足以下前提条件:
如果您想要使用已有的 NGINX Plus 服务器,则可能需要在之后恢复在演示过程中对配置文件所做的更改。
安装 Prometheus-njs 模块。我们在演示中使用的是 Ubuntu 20.04,以下是相关命令。有关其他操作系统,请点击参阅我们的文档。
$ sudo apt-get install nginx-plus-module-prometheus
使用您喜欢的文本编辑器,打开 /etc/nginx/nginx.conf,并在 http 块外部的顶层上下文中添加以下 load_module 指令。
load_module modules/ngx_http_js_module.so;
# existing top-level directives
http {
#...
}
增加用于存储子请求响应体的缓冲区大小(默认大小为 4KB 或 8KB,具体取决于平台)。这可以防止出现 too big subrequest response这一错误(NGINX 错误日志中可查)。
在 http 块中添加以下 subrequest_output_buffer_size 指令。
http {
#...
subrequest_output_buffer_size 32k;
}
保存 nginx.conf,并运行以下命令,验证 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将目录更改为 conf.d,并列出文件。
$ cd conf.d
$ ls
default.conf
default.conf 文件定义了一个监听端口 80 的虚拟服务器。Prometheus 的虚拟服务器需要监听该端口,因此请删除 default.conf 。
$ sudo rm default.conf
使用您想用的文本编辑器,创建一个名为 prometheus.conf 的新文件,其中包含以下内容。
js_import /usr/share/nginx-plus-module-prometheus/prometheus.js;
server {
location = /metrics {
js_content prometheus.metrics;
}
location /api {
api;
}
}js_import 指令指定了 NGINX JavaScript 代码的位置,该代码将 NGINX Plus API 生成的指标转换为 Prometheus 要求的格式。(无需为 Prometheus-njs 添加 load_module 指令。)
第一个 location 块支持访问 Prometheus 格式的指标。第二个 location 块启用了 NGINX Plus API,后者生成原始指标并将其暴露给 Prometheus。
注:
在生产环境中,我们强烈建议限制访问 NGINX Plus API(如我们的文档所述)。
有关 Prometheus-njs 模块的更多信息,请点击文末“阅读原文”参阅我们的文档。
保存 prometheus.conf,检查第 4 步中的语法是否正确,然后运行以下命令启动 NGINX Plus。
$ sudo nginx
在 /etc/prometheus 目录中创建一个名为 prometheus.yml 的 YAML 格式的新配置文件,其中包含以下内容(基于 Prometheus 网站的默认配置文件)。
如图所示,需要更改的是在目标字段中添加 NGINX Plus 服务器的 IP 地址和端口。
global:
scrape_interval: 15s
external_labels:
monitor: 'codelab-monitor'
scrape_configs:
- job_name: 'prometheus'
scrape_interval: 5s
static_configs:
- targets: ['NGINX_Plus_IP_address:80']有关 Prometheus 配置的详细信息(包括可以在配置文件中添加的更多选项),请参阅 Prometheus 文档。
保存 prometheus.yml,然后运行以下命令。它从 Docker Hub 中拉取 Prometheus 并将其暴露在端口 9090 上。
$ sudo docker run --network="host" -d -p 9090:9090 -v ~/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
在浏览器中,导航到新 Prometheus 服务器的 IP 地址和端口。通过一个类似以下截图的页面可以确认服务器正在工作。

验证 Prometheus 是否正在访问 NGINX Plus 指标信息流。点击窗口右上角执行 (Execute) 按钮左侧的球体图标,将会出现一个指标列表,见下。

运行以下命令,从 Docker Hub 中拉取 Grafana 并将其暴露在端口 3000 上:
[terminal]$ sudo docker run -d -p 3000:3000 grafana/grafana有关其他安装方法,请参阅 Grafana 文档。
在浏览器中,导航到新 Grafana 服务器的 IP 地址和端口。Grafana 登录页面确认服务器正在工作。

在电子邮件或用户名和密码字段中输入 admin 登录 Grafana。我们强烈建议按照提示设置新的安全密码,但出于时间关系,我们在演示中跳过了这一步。
在打开的 Grafana 主页上,按照 Grafana 文档中的说明将 Prometheus 注册为数据源。该视频演示了 Grafana GUI 中的步骤。
注:
在 Grafana 指令的第 5 步中,输入 Prometheus 服务器的 IP 地址(和端口 9090),而不是显示的 URL 示例 (http://localhost:9090)。

在 Grafana 指令的第 7 步,点击 Save & test(保存并测试)按钮,带有复选标记的绿色框和 Data source is working(数据源正在工作)消息表明 Grafana 已成功连接到 Prometheus 服务器。

Prometheus 适用于只查看一个指标,而 Grafana 支持在一个图形上轻松查看一系列指标。
Grafana 图形的构建方法

以下信息简要描述了各项指标的意义:
5. 从列表中选择一个指标(在本演示中,我们选择的是 nginxplus_connections_active)。
要选择另一个指标,点击 + 查询 (+ Query) 按钮并在新的指标浏览器 (Metrics browser) >字段中选择另一个指标(在本演示中,我们选择的是 nginxplus_connections_idle)。
6. 点击页面上半部分图形上方的“刷新”(两个箭头形成的一个圆圈)图标,结果将开始出现在图形上。

NGINX 唯一中文官方社区 ,尽在 nginx.org.cn
更多 NGINX 相关的技术干货、互动问答、系列课程、活动资源: 开源社区官网 | 微信公众号

按点赞数排序
按时间排序
微信公众号
加入微信群