prometheus监控nginx的实现

 更新时间:2022年03月21日 08:35:09   作者:张哲溪  
这篇文章主要介绍了prometheus监控nginx的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

简述

监控Nginx主要用到以下三个模块:

  • nginx-module-vts:Nginx virtual host traffic statusmodule,Nginx的监控模块,能够提供JSON格式的数据产出。
  • nginx-vts-exporter:Simple serverthat scrapes Nginx vts stats and exports them via HTTP for Prometheus consumption。主要用于收集Nginx的监控数据,并给Prometheus提供监控接口,默认端口号9913。
  • Prometheus:监控Nginx-vts-exporter提供的Nginx数据,并存储在时序数据库中,可以使用PromQL对时序数据进行查询和聚合。

1.下载nginx-module-vts模块

解压
unzip nginx-module-vts-master.zip
mv nginx-module-vts-master /usr/local/

2.安装nginx

tar zxvf nginx-1.15.7.tar.gz
cd nginx-1.15.7

./configure  --prefix=/usr/local/nginx --with-http_gzip_static_module --with-http_stub_status_module --with-http_ssl_module --with-pcre --with-file-aio --with-http_realip_module --add-module=/usr/local/nginx-module-vts-master

make && make install

修改nginx配置文件,新起一个vhost暴露给server端访问数据:

vim /usr/local/nginx/conf/nginx.conf

server下添加如下:http {
    vhost_traffic_status_zone;  --添加

    ...

    server {

        ...

        location /status {
            vhost_traffic_status_display;  --添加
            vhost_traffic_status_display_format html;  --添加
        }
    }
}

Nginx-module-vts模块介绍:

这是一个Nginx模块,提供对虚拟主机状态信息的访问。它包含当前状态,例如servers, upstreams, caches。这类似于nginx plus的实时活动监视。内置的html和旧版本的演示页面也保持一致。这个模块主要就是来监控nginx虚拟主机状态的。

首先,指令vhost_traffic_status_zone是必需的,如果指令vhost_traffic_status_display被设置,可以通过下方式访问:

/status/format/json

请求/status/format/json将用一个包含当前活动数据的json文档进行响应,以便在实时仪表板和三方监视工具中使用。

/status/format/html

请求/status/format/html将会用一个内置的内置的html仪表板网页进行响应,该仪表盘的内部请求走/status/format/json

/status/format/jsonp

请求/status/format/jsonp将用一个jsonp回调函数进行响应,该函数包含用于实时仪表板和三方监视工具的当前活动数据。

/status/format/prometheus

请求/status/format/prometheus将用包含当前活动数据的prometheus文档来响应。

/status/control

请求/status/control将返回基于查询语句字符串重置或删除区域后的JSON文档。更多可以参考Control.

测试nginx配置文件是否正确:
/usr/local/nginx/sbin/nginx -t

如果正确没问题,启动nginx
启动nginx:
/usr/local/nginx/sbin/nginx

此时访问http://IP地址/status可以看到nginx的状态信息了。

在这里插入图片描述

3.安装nginx-vts-exporter

https://github.com/hnlq715/nginx-vts-exporter/releases/download/v0.9.1/nginx-vts-exporter-0.9.1.linux-amd64.tar.gz
tar -zxvf nginx-vts-exporter-0.9.1.linux-amd64.tar.gz
 mv nginx-vts-exporter-0.9.1.linux-amd64  /usr/local/nginx-vts-exporter
chmod +x /usr/local/nginx-vts-exporter-0.5/bin/nginx-vts-exporter
cd /usr/local/nginx-vts-exporter/bin
通过nginx-vts-exporter二进制文件来执行nginx-vts-exporter程序
nohup ./nginx-vts-exporter  -nginx.scrape_uri http://10.10.xx.xx:80/status/format/json &

#注意:http://10.10.xx.xx/status/format/json这个地方的ip地址是nginx的IP地址
nginx-vts-exporter的监听端口是9913

也可以使用systemctl管理nginx-vts-exporter进程。

[root@localhost nginx-vts-exporter]# vim /usr/lib/systemd/system/nginx_vts_exporter.service 
[Unit]
Description=prometheus_nginx_vts
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/nginx-vts-exporter/nginx-vts-exporter  -nginx.scrape_uri http://10.10.xx.xx:80/status/format/json
Restart=on-failure

[Install]
WantedBy=multi-user.target
[root@localhost nginx-vts-exporter]# systemctl daemon-reload
[root@localhost nginx-vts-exporter]# systemctl enable  nginx_vts_exporter
[root@localhost nginx-vts-exporter]# systemctl start nginx_vts_exporter
[root@localhost nginx-vts-exporter]# systemctl status nginx_vts_exporter
● nginx_vts_exporter.service - prometheus_nginx_vts
   Loaded: loaded (/usr/lib/systemd/system/nginx_vts_exporter.service; disabled; vendor preset: disabled)
   Active: active (running) since Fri xxxx-xx-xx xx:xx:xx EDT; 4 days ago
 Main PID: 90274 (nginx-vts-expor)
   CGroup: /system.slice/nginx_vts_exporter.service
           └─90274 /usr/local/nginx-vts-exporter/nginx-vts-exporter -nginx.scrape_uri http://10.10.xx.xx:80/status/format/json

4.修改prometheus-cfg.yaml文件

添加如下job:

  - job_name: 'nginx'
      scrape_interval: 5s
      static_configs:
      - targets: ['192.168.124.16:9913']

kubectl apply -f prometheus-cfg.yaml

kubectl delete -f prometheus-deploy.yaml

kubectl apply -f prometheus-deploy.yaml

#注意: - targets: [‘10.10.xx.xx:9913’]这个ip地址是nginx-vts-exporter程序所在机器的ip地址

5.在grafana界面导入nginx json文件

在这里插入图片描述

 到此这篇关于prometheus监控nginx的实现的文章就介绍到这了,更多相关prometheus监控nginx内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解读nginx中limit配置参数

    解读nginx中limit配置参数

    这篇文章主要介绍了nginx中limit配置参数的详细作用,希望我们整理的内容能帮助到你,一起学习下吧。
    2018-01-01
  • Nginx使用if指令实现多个proxy_pass方式

    Nginx使用if指令实现多个proxy_pass方式

    这篇文章主要介绍了Nginx使用if指令实现多个proxy_pass方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • Nginx 虚拟主机配置的三种方式(基于域名)

    Nginx 虚拟主机配置的三种方式(基于域名)

    Nginx配置虚拟主机支持3种方式:基于IP的虚拟主机配置,基于端口的虚拟主机配置,基于域名的虚拟主机配置。本文主要介绍了基于域名的实现,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • LNMP 解决Access Denied错误详细介绍

    LNMP 解决Access Denied错误详细介绍

    这篇文章主要介绍了LNMP 解决Access Denied错误详细介绍的相关资料,需要的朋友可以参考下
    2016-10-10
  • 在Nginx服务器下配置StartSSL和SSL的教程

    在Nginx服务器下配置StartSSL和SSL的教程

    这篇文章主要介绍了在Nginx服务器下配置StartSSL和SSL的教程,其中申请证书的步骤确实比较麻烦一些,不过出于安全考虑:p需要的朋友可以参考下
    2015-07-07
  • Nginx同端口部署多个vue以及unapp项目

    Nginx同端口部署多个vue以及unapp项目

    文章详细介绍了如何在同一端口下部署PC端和App端项目,包括Nginx配置、前端打包配置、manifest.json配置以及针对Vue3+vite项目的特殊配置,通过示例项目A和项目B,展示了如何修改Vite配置文件、调整路由配置,并通过Nginx进行关键配置
    2026-01-01
  • Nginx中alias指令的实现

    Nginx中alias指令的实现

    lias指令用于指定一个替换位置,该替换位置会替换掉location块中指定的URl,下面就来介绍一下alias指令,具有一定的参考价值,感兴趣的可以了解一下
    2024-08-08
  • Nginx 根据URL带的参数转发的实现

    Nginx 根据URL带的参数转发的实现

    这篇文章主要介绍了Nginx 根据URL带的参数转发的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Nginx服务器中配置GeoIP模块来拦截指定国家IP

    Nginx服务器中配置GeoIP模块来拦截指定国家IP

    Nginx中自带GeoIP模块可以屏蔽指定IP的请求,只不过默认没有被编译,打开以后我们只要再下载一个IP规则就行,Nginx服务器中配置GeoIP模块来拦截指定国家IP
    2016-06-06
  • nginx配置同一域名同一端口下部署多个vue项目的实现

    nginx配置同一域名同一端口下部署多个vue项目的实现

    本地开发好了多个前端微信网页项目,想部署上线,本文就来介绍一下nginx配置同一域名同一端口下部署多个vue项目的实现,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10

最新评论