Nginx

第三方模块nginx_module_vts最新版已经支持Prometheus metrics格式数据,重新编译Nginx加入模块即可。

编译安装

1.准备编译环境

  • 环境依赖:wget、gcc、automake、autoconf、libtool、make

  • 编译依赖:pcre、pcre-devel、zlib、zlib-devel、openssl、openssl-devel、libxslt-devel、gd-devel、perl-devel、perl-ExtUtils-Embed、geoip-devel、gperftools

# 安装
yum install -y wget gcc automake autoconf libtool \
make pcre pcre-devel zlib zlib-devel openssl openssl-devel \
libxslt-devel gd-devel perl-devel perl-ExtUtils-Embed \
geoip-devel gperftools

2.新增Nginx用户、用户组

useradd参数

  • -M:不要自动简历用户的登入目录

  • -g:指定用户所属的群组,也可以跟GID

  • -s:指定用户登入后所使用的shell,默认为/bin/bash

groupadd nginx
useradd -M -g nginx -s /sbin/nologin nginx

3.编译安装

下载Nginx源码

下载nginx-module-vts源码

编译安装

4.配置nginx.conf

需要做两点修改:

  • 修改运行用户

  • 添加配置文件目录

这时候可以来测试配置

但有可能会报错

我们手动来创建文件夹,因为有可能上一层文件夹也不存在,所以需要加-p参数

然后再来测试配置文件,配置通过

在检查的时候也许会遇到这样的问题

这是因为在nginx 1.15版本之后更改了配置文件的规则,以前是这么写的:

现在需要这么写:

5.配置Nginx为Systemd服务

6.配置nginx-module-vts

因为刚刚我们已经在nginx.conf配置文件中include了一个文件夹,而且是在http下,所以只需要建立如下配置文件即可。 实际在配置中,有时候会出现配置无法生效的情况,配置在/etc/nginx/nginx.conf即可。

测试后重新载入配置即可。

访问http://ip/status/format/prometheus即可获得Prometheus数据。 如果防火墙没有放行,可能还需要执行如下程序:

7.更改Job metrics path

官方文档中,对于默认的metrics path说明可以重写:Configuration | Prometheus 所以只需要在Prometheus的yaml配置文件中,新增参数修改默认配置即可。 而且默认为80端口也可省略。

因为我们采用80端口采集数据,所以防火墙不需新建端口,直接重启Prometheus使配置生效。

Last updated

Was this helpful?