List

	CentOS7.3
prometheus-2.2.1.linux-amd64.tar.gz
nginx-module-vts
节点名 IP 软件版本 硬件 网络 说明
Prometheus 192.168.0.106 list 里面都有 2C4G Nat,内网 测试环境
Nginx 192.168.0.107 list 里面都有 2C4G Nat,内网 测试环境

部署Prometheus

部署Promehteus请看我前面写的文章

https://www.cnblogs.com/you-men/p/12839535.html

部署Nginx

三个模块
nginx-module-vts:Nginx virtual host traffic status module,
# Nginx的监控模块,能够提供JSON格式的数据产出。 nginx-vts-exporter:Simple server that scrapes Nginx vts stats and exports them via HTTP for Prometheus consumption。
# 主要用于收集Nginx的监控数据,并给Prometheus提供监控接口,默认端口号9913。 Prometheus:
# 监控Nginx-vts-exporter提供的Nginx数据,并存储在时序数据库中,可以使用PromQL对时序数据进行查询和聚合。
Nginx-module-vts模块编译
# nginx_vts_exporter依赖nginx-module-vts模块,安装此模块无需任何其他依赖。模块与Nginx的版本兼容性如下:

1.11.x (last tested: 1.11.10)
1.10.x (last tested: 1.10.3)
1.8.x (last tested: 1.8.0)
1.6.x (last tested: 1.6.3)
1.4.x (last tested: 1.4.7)
部署nginx-module-vts
# 下载编译模块
git clone git://github.com/vozlt/nginx-module-vts.git # 编译配置
--add-module=/path/to/nginx-module-vts
# 下载官方的软件包并编译进vts模块,例如:
./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_sysguard_module --add-module=nginx-module-vts # 安装Nginx
#!/usr/bin/env bash
version="nginx-1.14.2.tar.gz"
user="nginx"
nginx=${version%.tar*}
path=/usr/local/src/$nginx
echo $path
if ! ping -c2 www.baidu.com &>/dev/null
then
echo "网络不通,无法安装"
exit
fi yum install -y gcc gcc-c++ openssl-devel pcre-devel make zlib-devel wget psmisc
if [ ! -e $version ];then
wget http://nginx.org/download/$version
fi
if ! id $user &>/dev/null
then
useradd $user -M -s /sbin/nologin
fi if [ ! -d /var/tmp/nginx ];then
mkdir -p /var/tmp/nginx/{client,proxy,fastcgi,uwsgi,scgi}
fi
tar xf $version -C /usr/local/src
cd $path
./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --add-module=/usr/local/src/nginx-1.14.0/nginx-module-vts/ && make && make install
配置nginx.conf
http {
vhost_traffic_status_zone;
vhost_traffic_status_filter_by_host on; server {
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}
配置建议

1 . 打开vhost过滤:

vhost_traffic_status_filter_by_host on;

开启此功能,在Nginx配置有多个server_name的情况下,会根据不同的server_name进行流量的统计,否则默认会把流量全部计算到第一个server_name上

2 . 在不想统计流量的server区域禁用vhost_traffic_status,配置示例:

server {
...
vhost_traffic_status off;
...
}

假如nginx没有规范配置server_name或者无需进行监控的server上,那么建议在此vhost上禁用统计监控功能。否则会出现“127.0.0.1”,hostname等的域名监控信息。

查看监控数据

安装完vts模块后,可以通过nginx status接口进行监控数据的查看,比如:http://127.0.0.1/status:

配置Nginx-vts-exporter

exporter会收集nginx性能指标的JSON格式数据,并汇总后暴露监控接口给Prometheus。

它的安装使用很简单,开箱即用

下载软件包
wget -c https://github.com/hnlq715/nginx-vts-exporter/releases/download/v0.9.1/nginx-vts-exporter-0.9.1.linux-amd64.tar.gz
配置运行
tar xvf nginx-vts-exporter-0.9.1.linux-amd64.tar.gz
nginx-vts-exporter-0.9.1.linux-amd64/nginx-vts-exporter -nginx.scrape_timeout 10 -nginx.scrape_uri http://127.0.0.1/status/format/json # 推荐exporter和nginx安装在同一台机器上,如果不在同一台主机,把scrape_uri改为nginx主机的地址。
# nginx_vts_exporter的默认端口号:9913,对外暴露监控接口http://xxx:9913/metrics. # 我们可以访问浏览器 IP:9913

将node exporter配置到prometheus里
# 配置Prometheus,收集node exporter的数据
# 可以看到node exporter启动后也就是暴露了9100端口,并没有把数据传到prometheus,
# 我们还需要在prometheus中配置,让prometheus去pull这个接口的数据。
# 我们去监控主机编辑prometheus.yml文件,修改最后几行,然后重启服务
vim /usr/local/prometheus/prometheus.yml
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'nginx'
static_configs:
- targets: ['192.168.0.107:9913'] # node节点的targets处的IP填写你要监控的node的IP.
systemctl restart prometheus
# 我们登录到Prometheus主机,看下这个节点是不是up状态

Grafana安装

此处我们拿prometheus做例子,虽然说prometheus能展示一些图表,但对比Grafana,那只是过家家,接下来我们在同一个服务器安装Grafana服务,用来展示prometheus收集到的数据

下载并解压安装包
wget https://dl.grafana.com/oss/release/grafana-6.4.2.linux-amd64.tar.gz
tar xvf grafana-6.4.2.linux-amd64.tar.gz -C /usr/local/
ln -s /usr/local/grafana-6.4.2/ /usr/local/grafana
创建grafana用户及数据存放目录
useradd -s /sbin/nologin -M grafana
mkdir /data/grafana
mkdir /data/grafana/plugins
mkdir /data/grafana/provisioning
mkdir /data/grafana/data
mkdir /data/grafana/log
chown -R grafana:grafana /usr/local/grafana/
chown -R grafana:grafana /data/grafana/
修改配置文件
vim /usr/local/grafana/conf/defaults.ini
data = /data/grafana/data
logs = /data/grafana/log
plugins = /data/grafana/plugins
provisioning = /data/grafana/conf/provisioning
把grafana-server添加到systemd中
vim /usr/lib/systemd/system/grafana-server.service
[Unit]
Description=Grafana
After=network.target
[Service]
User=grafana
Group=grafana
Type=notify
ExecStart=/usr/local/grafana/bin/grafana-server -homepath /usr/local/grafana
Restart=on-failure
[Install]
WantedBy=multi-user.target systemctl start grafana-server && systemctl enable graana-server

启动服务,并用web访问http://IP:3000,默认3000端口,admin/admin

添加数据源
# grafana虽然已经安装好了,但是这个时候还没有数据,没办法作图。
# 下面我们把grafana和prometheus关联起来,也就是在grafana中添加添加数据源。
# 在配置页面点击添加数据源,然后选择prometheus,输入prometheus服务的参数即可。

添加nginx模板

05 . Prometheus监控Nginx的更多相关文章

  1. Prometheus 监控 Nginx 流量 (三)

    介绍 基于Openresty和Prometheus.Consul.Grafana设计的,实现了针对域名和Endpoint级别的流量统计,使用Consul做服务发现.KV存储,Grafana做性能图展示 ...

  2. Prometheus监控Nginx

    转载自:https://www.cnblogs.com/you-men/p/13173245.html CentOS7.3 prometheus-2.2.1.linux-amd64.tar.gz ng ...

  3. 用prometheus监控Nginx

    GitHub上官方地址:https://github.com/knyar/nginx-lua-prometheus 告警规则地址:https://awesome-prometheus-alerts.g ...

  4. 基于k8s集群部署prometheus监控ingress nginx

    目录 基于k8s集群部署prometheus监控ingress nginx 1.背景和环境概述 2.修改prometheus配置 3.检查是否生效 4.配置grafana图形 基于k8s集群部署pro ...

  5. openresty(完整版)Lua拦截请求与响应信息日志收集及基于cjson和redis动态路径以及Prometheus监控(转)

    直接上文件 nginx.conf #运行用户和组,缺省为nobody,若改为别的用户和组,则需要先创建用户和组 #user wls81 wls; #开启进程数,一般与CPU核数等同 worker_pr ...

  6. Prometheus监控(二)

    Prometheus监控(二) 数据类型 Counter(计数器类型) Counter类型的指标的工作方式和计数器一样,只增不减(除非系统发生了重置),Counter一般用于累计值. Gauges(仪 ...

  7. 如何利用Prometheus监控你的应用

    Prometheus作为一套完整的开源监控接近方案,因为其诸多强大的特性以及生态的开放性,俨然已经成为了监控领域的事实标准并在全球范围内得到了广泛的部署应用.那么应该如何利用Prometheus对我们 ...

  8. 03 . Prometheus监控容器和HTTP探针应用

    Eeporter是什么及来源? 是什么? 广义上讲所有可以向Prometheus提供监控样本数据的程序都可以被称为一个Exporter.而Exporter的一个实例称为target,如下所示,Prom ...

  9. 如何利用Prometheus监控你的应用(此列子是对于golang sdk进行运用)

    Prometheus作为一套完整的开源监控接近方案,因为其诸多强大的特性以及生态的开放性,俨然已经成为了监控领域的事实标准并在全球范围内得到了广泛的部署应用.那么应该如何利用Prometheus对我们 ...

随机推荐

  1. react中路由不起作用的奇怪现象

    同样的两段Router代码,为什么一段正常,一段不起作用(也没有任何错误log提示) 瞪着眼观察也看不出为什么... 通过选中高亮显示内容相同, 为何就是有一段路由不管用呢? 折腾半天发现... 大小 ...

  2. Netty学习笔记(一) - 简介和组件设计

    在互联网发达的今天,网络已经深入到生活的方方面面,一个高效.性能可靠的网络通信已经成为一个重要的诉求,在Java方面需要寻求一种高性能网络编程的实践. 一.简介 当前JDK(本文使用的JDK 1.8) ...

  3. vc程序设计--图形绘制1

        利用绘图函数创建填充区.Windows通过使用当前画笔画一个图形的边界,然后用当前的刷子填充这个图形来创建-一个填充图形.共有三个填充图形,第一个是用深灰色画刷填充带圆角的矩形,第二个是采用亮 ...

  4. Rocket - debug - TLDebugModule

    https://mp.weixin.qq.com/s/EhUb1z5oiIw6dJ-90ifDJA 简单介绍TLDebugModule中的实现. 1. device device是一个设备描述符,包含 ...

  5. Rocket - config - Parameters

    https://mp.weixin.qq.com/s/uLEr9gAFaMDIXa8S9xJVTw   介绍配置类Parameters及其伴生对象的实现.   参考链接: https://docs.q ...

  6. Linux(六)文件系统

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一.根目录内容 1.概述 Linux系统中只有一个文件系统,以“/”作为根目录,从根目录出发可以找到任何 ...

  7. Java实现 LeetCode 239 滑动窗口最大值

    239. 滑动窗口最大值 给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧.你只可以看到在滑动窗口内的 k 个数字.滑动窗口每次只向右移动一位. 返回滑动窗口中的最 ...

  8. Java实现 LeetCode 204 计数质数

    204. 计数质数 统计所有小于非负整数 n 的质数的数量. 示例: 输入: 10 输出: 4 解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 . class Solutio ...

  9. Java实现 LeetCode 86 分割链表

    86. 分隔链表 给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前. 你应当保留两个分区中每个节点的初始相对位置. 示例: 输入: head = 1 ...

  10. Java实现 LeetCode 58 最后一个单词的长度

    58. 最后一个单词的长度 给定一个仅包含大小写字母和空格 ' ' 的字符串 s,返回其最后一个单词的长度. 如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词. 如果不存在最后一个单词, ...