Nginx添加Prometheus監(jiān)控模塊nginx-lua-prometheus
Nginx添加Prometheus監(jiān)控模塊nginx-lua-prometheus前言 nginx-lua-prometheus是為專為nginx設計的Prometheus監(jiān)控腳本,使用lua開發(fā),所以需要nginx支持lua插件運行,關(guān)于如何讓nginx支持lua這里就不說了,
Nginx添加Prometheus監(jiān)控模塊nginx-lua-prometheus前言 nginx-lua-prometheus是為專為nginx設計的Prometheus監(jiān)控腳本,使用lua開發(fā),所以需要nginx支持lua插件運行,關(guān)于如何讓nginx支持lua這里就不說了,
nginx-lua-prometheus是為專為nginx設計的Prometheus監(jiān)控腳本,使用lua開發(fā),所以需要nginx支持lua插件運行,關(guān)于如何讓nginx支持lua這里就不說了,網(wǎng)上很容易搜到教程。
nginx-lua-prometheus目前網(wǎng)絡上我見過兩個版本,一個比較新的,一個比較古老的,比較新的嘗試后發(fā)現(xiàn)存在不兼容問題,我的nginx版本是1.14,后來使用了比較老的版本,不過功能相似。
github地址:https://github.com/jialj/nginx-lua-prometheus
1.在server模塊下面添加下面的代碼
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | lua_shared_dict prometheus_metrics 10M; lua_package_path "你的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"}) ??metric_requests_uri = prometheus:counter( ????????????????"nginx_http_requests_uri_total", "Number of HTTP requests_uri", {"host","uri", "status", "method"}) '; 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}) ??metric_requests_uri:inc(1, {ngx.var.server_name,ngx.var.document_uri, ngx.var.status, ngx.var.request_method}) '; |
上面的metric_requests_uri模塊是官方例子中沒有的,是我自己添加的,取的是uri的訪問記錄,nginx中document_uri是不包含參數(shù)的,具體的參數(shù)都可以自行修改。
2.新建metrics對外導出監(jiān)控數(shù)據(jù)
新建虛擬主機,端口自定義,添加下面的模塊
1 2 3 4 5 6 7 8 | location /metrics { ????content_by_lua_block { ??????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() ????} } |
保存,重載nginx配置,訪問metrics目錄,可以看到監(jiān)控數(shù)據(jù)
gafana上用的圖是 462,因為uri是自己加的,需要添加下面的查詢語句
1 | sum(irate(nginx_http_requests_total{role=~"$role",host!="127.0.0.1"}[30s])) |
版權(quán)所有:深圳市網(wǎng)商在線科技有限公司
友情鏈接: