一. 方案选型:
对于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-exporter
namespace: monitoring
labels:
app.kubernetes.io/name: nginx-exporter
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: nginx-exporter
template:
metadata:
labels:
app.kubernetes.io/name: nginx-exporter
spec:
serviceAccountName: default
securityContext:
{}
containers:
- name: nginx-exporter
securityContext:
{}
image: "nginx/nginx-prometheus-exporter:1.4.2"
imagePullPolicy: IfNotPresent
args:
- "--nginx.scrape-uri=http://172.31.40.117/nginx_status"
env:
ports:
- containerPort: 9113
livenessProbe:
httpGet:
path: /
port: 9113
readinessProbe:
httpGet:
path: /
port: 9113
---svc
apiVersion: v1
kind: Service
metadata:
name: nginx-exporter
namespace: monitoring
labels:
app.kubernetes.io/name: nginx-exporter
spec:
type: ClusterIP
ports:
- port: 9113
targetPort: 9113
protocol: TCP
name: nginx-exporter
selector:
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
《 运维经纬 》