nginx-集成prometheus监控(k8s)
一. 方案选型:
对于nginx 的监控 ,是可以和prometheus 集成的。 实现的方案有两种,分别是基于第三封模块的nginx-vts-exporter 和官方维护的 nginx-exporter。 其中官方维护的分为社区版本和plus版本。社区版本的指标比较少,而plus版是收费的,故: 如果是生产环境而非plus版本,建议采用
nginx-vts-exporter方式。 如只是需要监控基础指标(存活,活跃数量等),采用nginx-exporter即可。
二.部署方式:
1. 采用nginx-exporter:
配置nginx指标暴露接口:
server {listen 80 default_server;server_name _;location /nginx_status {stub_status on;access_log off;allow 172.0.0.0/8;}location / {deny all;}
}
验证:
部署exporter:
可以选择docker 方式,也可以选择独立程序,这里选择采用docker 部署在k8s。
# Source: prometheus-nginx-exporter/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-exporternamespace: monitoringlabels:app.kubernetes.io/name: nginx-exporter
spec:replicas: 1selector:matchLabels:app.kubernetes.io/name: nginx-exportertemplate:metadata:labels:app.kubernetes.io/name: nginx-exporterspec:serviceAccountName: defaultsecurityContext:{}containers:- name: nginx-exportersecurityContext:{}image: "nginx/nginx-prometheus-exporter:1.4.2"imagePullPolicy: IfNotPresentargs:- "--nginx.scrape-uri=http://172.31.40.117/nginx_status"env:ports:- containerPort: 9113livenessProbe:httpGet:path: /port: 9113readinessProbe:httpGet:path: /port: 9113---svc
apiVersion: v1
kind: Service
metadata:name: nginx-exporternamespace: monitoringlabels:app.kubernetes.io/name: nginx-exporter
spec:type: ClusterIPports:- port: 9113targetPort: 9113protocol: TCPname: nginx-exporterselector:app.kubernetes.io/name: nginx-exporter
配置采集器:
可查看指标:
2. 采用nginx-vts-exporter方式部署:
需要先确定nginx 支持vts 模块。如果没有需要编译安装:
nginx -V 2>&1 | grep -o 'vhost_traffic_status'
编译安装方式:
#下载模块源码(https://github.com/vozlt/nginx-module-vts),重新编译 Nginx 并添加模块./configure --add-module=/path/to/nginx-module-vts
配置nginx启用vts模块:
http {vhost_traffic_status_zone;vhost_traffic_status_filter_by_host on; server {listen 80;server_name localhost;location /status {vhost_traffic_status_display;vhost_traffic_status_display_format json;}}server {listen 80;server_name example.com;}
}
部署nginx-vts-exporter:
wget https://github.com/hnlq715/nginx-vts-exporter/releases/download/v0.10.8/nginx-vts-exporter-0.10.8.linux-amd64.tar.gz
tar -zxvf nginx-vts-exporter-0.10.8.linux-amd64.tar.gz
mv nginx-vts-exporter-0.10.8.linux-amd64 /usr/local/nginx-vts-exporter#启动exporter
/usr/local/nginx-vts-exporter/nginx-vts-exporter \-nginx.scrape_uri=http://127.0.0.1/status/format/json \-web.listen-address=:9913
配置prometheus , 参考nginx-exporter
三. 和grafana 集成:
可通过开源dashbaord 配置导入:
--------------------------------------------------------------------------------------------
深耕运维行业多年,擅长运维体系建设,方案落地。欢迎交流!
V: ywjw996
《 运维经纬 》