Prometheus 监控 Nginx

9次阅读

共计 2310 个字符,预计需要花费 6 分钟才能阅读完成。

前言
Nginx 官网有介绍各种监控方案,以前我们常用 stub_status 和 Log 日志来实现 Nginx 监控。本文主要介绍基于 Prometheus 的 2 种监控方案 nginx-lua-prometheus 和 nginx-vts-exporter,在真实的生产环境中你可能需要研究和选择哪种方法才是适合你的,F5 收购 Nginx 后的未来让我们一起拭目以待。
Prometheus 监控 Nginx
更新历史
2019 年 03 月 25 日 – 初稿
阅读原文 – https://wsgzao.github.io/post…
扩展阅读
Monitoring NGINX – https://www.nginx.com/blog/mo…

Nginx 监控
官网介绍的监控方案 – https://www.nginx.com/blog/mo…
Prometheus 集成的 HTTP exporter 方案 – https://prometheus.io/docs/in…
聊聊 Nginx 的监控 – https://zhuanlan.zhihu.com/p/…
使用 rpmbuild 制作 Nginx 的 RPM 包 – https://wsgzao.github.io/post…
Prometheus 监控 Nginx
nginx-lua-prometheus
Nginx 需要添加 Lua 扩展
https://github.com/knyar/ngin…
# 下载 redis_exporter
https://github.com/knyar/nginx-lua-prometheus/releases
wget https://github.com/knyar/nginx-lua-prometheus/archive/0.20181120.tar.gz
tar xf 0.20181120.tar.gz
cd nginx-lua-prometheus-0.20181120

# 创建 prometheus.lua 目录
mkdir -p /etc/nginx/lua/
cp prometheus.lua /etc/nginx/lua/

# 编辑 nginx 配置文件修改,注意修改 lua_package_path “/etc/nginx/lua/prometheus.lua”;
vim /etc/nginx/nginx.conf

lua_shared_dict prometheus_metrics 10M;
lua_package_path “/etc/nginx/lua/prometheus.lua”;
init_by_lua ‘
prometheus = require(“prometheus”).init(“prometheus_metrics”)
metric_requests = prometheus:counter(
“nginx_http_requests_total”, “Number of HTTP requests”, {“host”, “status”})
metric_latency = prometheus:histogram(
“nginx_http_request_duration_seconds”, “HTTP request latency”, {“host”})
metric_connections = prometheus:gauge(
“nginx_http_connections”, “Number of HTTP connections”, {“state”})
‘;
log_by_lua ‘
metric_requests:inc(1, {ngx.var.server_name, ngx.var.status})
metric_latency:observe(tonumber(ngx.var.request_time), {ngx.var.server_name})
‘;

# 创建 nginx-lua-prometheus
vim /etc/nginx/sites-available/nginx-lua-prometheus

server {
listen 9145;
location /metrics {
content_by_lua ‘
metric_connections:set(ngx.var.connections_reading, {“reading”})
metric_connections:set(ngx.var.connections_waiting, {“waiting”})
metric_connections:set(ngx.var.connections_writing, {“writing”})
prometheus:collect()
‘;
}
}

# 创建软链接
cd /etc/nginx/sites-enabled/
ln -s ../sites-available/prometheus

# 测试 Nginx 语法并 reload 测试 metrics
nginx -t
nginx -s reload
curl http://127.0.0.1:9145/metrics

# iptables rule for Prometheus Nginx
-A INPUT -s xxx -p tcp –dport 9145 -j ACCEPT

nginx-vts-exporter
https://github.com/hnlq715/ng…
对方正在输入中
Grafana
nginx-lua-prometheus
https://grafana.com/dashboard…
nginx-vts-exporter
https://grafana.com/dashboard…
参考文献
https://prometheus.io/docs/in…

正文完
 0