1289 lines
34 KiB
YAML
1289 lines
34 KiB
YAML
ingress-nginx:
|
|
|
|
controller:
|
|
name: controller
|
|
image:
|
|
chroot: false
|
|
registry: registry.k8s.io
|
|
image: ingress-nginx/controller
|
|
pullPolicy: Always
|
|
runAsUser: 101
|
|
allowPrivilegeEscalation: true
|
|
|
|
containerName: controller
|
|
containerPort:
|
|
http: 80
|
|
https: 443
|
|
|
|
livenessProbe:
|
|
httpGet:
|
|
path: "/healthz"
|
|
port: 10254
|
|
scheme: HTTP
|
|
initialDelaySeconds: 10
|
|
periodSeconds: 10
|
|
timeoutSeconds: 1
|
|
successThreshold: 1
|
|
failureThreshold: 5
|
|
readinessProbe:
|
|
httpGet:
|
|
path: "/healthz"
|
|
port: 10254
|
|
scheme: HTTP
|
|
initialDelaySeconds: 10
|
|
periodSeconds: 10
|
|
timeoutSeconds: 1
|
|
successThreshold: 1
|
|
failureThreshold: 3
|
|
|
|
healthCheckPath: "/healthz"
|
|
healthCheckHost: ""
|
|
podAnnotations:
|
|
prometheus.io/scrape: true
|
|
prometheus.io/port: 10254
|
|
prometheus.io/scheme: http
|
|
|
|
replicaCount: 3
|
|
|
|
minAvailable: 3
|
|
|
|
metrics:
|
|
enabled: true
|
|
serviceMonitor:
|
|
enabled: true
|
|
namespace: kube-prometheus-stack
|
|
additionalLabels:
|
|
release: kube-prometheus
|
|
|
|
resources:
|
|
limits:
|
|
memory: 256Mi
|
|
requests:
|
|
cpu: 200m
|
|
memory: 256Mi
|
|
|
|
service:
|
|
enabled: true
|
|
appProtocol: true
|
|
annotations: {}
|
|
labels: {}
|
|
externalIPs: []
|
|
|
|
loadBalancerIP: ""
|
|
loadBalancerSourceRanges: []
|
|
|
|
enableHttp: true
|
|
enableHttps: true
|
|
|
|
ports:
|
|
http: 80
|
|
https: 443
|
|
|
|
targetPorts:
|
|
http: http
|
|
https: https
|
|
|
|
type: LoadBalancer
|
|
|
|
external:
|
|
enabled: true
|
|
externalTrafficPolicy: "Local"
|
|
|
|
patch:
|
|
enabled: true
|
|
image:
|
|
registry: registry.k8s.io
|
|
image: ingress-nginx/kube-webhook-certgen
|
|
pullPolicy: Always
|
|
runAsUser: 2000
|
|
fsGroup: 2000
|
|
|
|
lifecycle:
|
|
preStop:
|
|
exec:
|
|
command:
|
|
- /wait-shutdown
|
|
|
|
priorityClassName: ""
|
|
|
|
revisionHistoryLimit: 1
|
|
|
|
rbac:
|
|
create: true
|
|
scope: false
|
|
|
|
serviceAccount:
|
|
create: true
|
|
name: ""
|
|
automountServiceAccountToken: true
|
|
annotations: {}
|
|
|
|
configmap:
|
|
__inputs:
|
|
- name: DS_PROMETHEUS
|
|
label: Prometheus
|
|
description: ""
|
|
type: datasource
|
|
pluginId: prometheus
|
|
pluginName: Prometheus
|
|
__requires:
|
|
- type: grafana
|
|
id: grafana
|
|
name: Grafana
|
|
version: 5.2.1
|
|
- type: datasource
|
|
id: prometheus
|
|
name: Prometheus
|
|
version: 5.0.0
|
|
- type: panel
|
|
id: singlestat
|
|
name: Singlestat
|
|
version: 5.0.0
|
|
annotations:
|
|
list:
|
|
- builtIn: 1
|
|
datasource: -- Grafana --
|
|
enable: true
|
|
hide: true
|
|
iconColor: rgba(0, 211, 255, 1)
|
|
name: Annotations & Alerts
|
|
type: dashboard
|
|
- datasource: ${DS_PROMETHEUS}
|
|
enable: true
|
|
expr: sum(changes(nginx_ingress_controller_config_last_reload_successful_timestamp_seconds{instance!="unknown",controller_class=~"$controller_class",namespace=~"$namespace"}[30s])) by (controller_class)
|
|
hide: false
|
|
iconColor: rgba(255, 96, 96, 1)
|
|
limit: 100
|
|
name: Config Reloads
|
|
showIn: 0
|
|
step: 30s
|
|
tagKeys: controller_class
|
|
tags: []
|
|
titleFormat: Config Reloaded
|
|
type: tags
|
|
editable: true
|
|
gnetId: 9614
|
|
graphTooltip: 0
|
|
iteration: 1534359654832
|
|
links: []
|
|
panels:
|
|
- cacheTimeout: null
|
|
colorBackground: false
|
|
colorValue: false
|
|
colors:
|
|
- rgba(245, 54, 54, 0.9)
|
|
- rgba(237, 129, 40, 0.89)
|
|
- rgba(50, 172, 45, 0.97)
|
|
datasource: ${DS_PROMETHEUS}
|
|
format: ops
|
|
gauge:
|
|
maxValue: 100
|
|
minValue: 0
|
|
show: false
|
|
thresholdLabels: false
|
|
thresholdMarkers: true
|
|
gridPos:
|
|
h: 3
|
|
w: 6
|
|
x: 0
|
|
"y": 0
|
|
id: 20
|
|
interval: null
|
|
links: []
|
|
mappingType: 1
|
|
mappingTypes:
|
|
- name: value to text
|
|
value: 1
|
|
- name: range to text
|
|
value: 2
|
|
maxDataPoints: 100
|
|
nullPointMode: connected
|
|
nullText: null
|
|
postfix: ""
|
|
postfixFontSize: 50%
|
|
prefix: ""
|
|
prefixFontSize: 50%
|
|
rangeMaps:
|
|
- from: "null"
|
|
text: N/A
|
|
to: "null"
|
|
sparkline:
|
|
fillColor: rgba(31, 118, 189, 0.18)
|
|
full: true
|
|
lineColor: rgb(31, 120, 193)
|
|
show: true
|
|
tableColumn: ""
|
|
targets:
|
|
- expr: round(sum(irate(nginx_ingress_controller_requests{controller_pod=~"$controller",controller_class=~"$controller_class",namespace=~"$namespace"}[2m])), 0.001)
|
|
format: time_series
|
|
intervalFactor: 1
|
|
refId: A
|
|
step: 4
|
|
thresholds: ""
|
|
title: Controller Request Volume
|
|
transparent: false
|
|
type: singlestat
|
|
valueFontSize: 80%
|
|
valueMaps:
|
|
- op: =
|
|
text: N/A
|
|
value: "null"
|
|
valueName: avg
|
|
- cacheTimeout: null
|
|
colorBackground: false
|
|
colorValue: false
|
|
colors:
|
|
- rgba(245, 54, 54, 0.9)
|
|
- rgba(237, 129, 40, 0.89)
|
|
- rgba(50, 172, 45, 0.97)
|
|
datasource: ${DS_PROMETHEUS}
|
|
format: none
|
|
gauge:
|
|
maxValue: 100
|
|
minValue: 0
|
|
show: false
|
|
thresholdLabels: false
|
|
thresholdMarkers: true
|
|
gridPos:
|
|
h: 3
|
|
w: 6
|
|
x: 6
|
|
"y": 0
|
|
id: 82
|
|
interval: null
|
|
links: []
|
|
mappingType: 1
|
|
mappingTypes:
|
|
- name: value to text
|
|
value: 1
|
|
- name: range to text
|
|
value: 2
|
|
maxDataPoints: 100
|
|
nullPointMode: connected
|
|
nullText: null
|
|
postfix: ""
|
|
postfixFontSize: 50%
|
|
prefix: ""
|
|
prefixFontSize: 50%
|
|
rangeMaps:
|
|
- from: "null"
|
|
text: N/A
|
|
to: "null"
|
|
sparkline:
|
|
fillColor: rgba(31, 118, 189, 0.18)
|
|
full: true
|
|
lineColor: rgb(31, 120, 193)
|
|
show: true
|
|
tableColumn: ""
|
|
targets:
|
|
- expr: sum(avg_over_time(nginx_ingress_controller_nginx_process_connections{controller_pod=~"$controller",controller_class=~"$controller_class",controller_namespace=~"$namespace"}[2m]))
|
|
format: time_series
|
|
instant: false
|
|
intervalFactor: 1
|
|
refId: A
|
|
step: 4
|
|
thresholds: ""
|
|
title: Controller Connections
|
|
transparent: false
|
|
type: singlestat
|
|
valueFontSize: 80%
|
|
valueMaps:
|
|
- op: =
|
|
text: N/A
|
|
value: "null"
|
|
valueName: avg
|
|
- cacheTimeout: null
|
|
colorBackground: false
|
|
colorValue: false
|
|
colors:
|
|
- rgba(245, 54, 54, 0.9)
|
|
- rgba(237, 129, 40, 0.89)
|
|
- rgba(50, 172, 45, 0.97)
|
|
datasource: ${DS_PROMETHEUS}
|
|
format: percentunit
|
|
gauge:
|
|
maxValue: 100
|
|
minValue: 80
|
|
show: false
|
|
thresholdLabels: false
|
|
thresholdMarkers: false
|
|
gridPos:
|
|
h: 3
|
|
w: 6
|
|
x: 12
|
|
"y": 0
|
|
id: 21
|
|
interval: null
|
|
links: []
|
|
mappingType: 1
|
|
mappingTypes:
|
|
- name: value to text
|
|
value: 1
|
|
- name: range to text
|
|
value: 2
|
|
maxDataPoints: 100
|
|
nullPointMode: connected
|
|
nullText: null
|
|
postfix: ""
|
|
postfixFontSize: 50%
|
|
prefix: ""
|
|
prefixFontSize: 50%
|
|
rangeMaps:
|
|
- from: "null"
|
|
text: N/A
|
|
to: "null"
|
|
sparkline:
|
|
fillColor: rgba(31, 118, 189, 0.18)
|
|
full: true
|
|
lineColor: rgb(31, 120, 193)
|
|
show: true
|
|
tableColumn: ""
|
|
targets:
|
|
- expr: sum(rate(nginx_ingress_controller_requests{controller_pod=~"$controller",controller_class=~"$controller_class",namespace=~"$namespace",status!~"[4-5].*"}[2m])) / sum(rate(nginx_ingress_controller_requests{controller_pod=~"$controller",controller_class=~"$controller_class",namespace=~"$namespace"}[2m]))
|
|
format: time_series
|
|
intervalFactor: 1
|
|
refId: A
|
|
step: 4
|
|
thresholds: 95, 99, 99.5
|
|
title: Controller Success Rate (non-4|5xx responses)
|
|
transparent: false
|
|
type: singlestat
|
|
valueFontSize: 80%
|
|
valueMaps:
|
|
- op: =
|
|
text: N/A
|
|
value: "null"
|
|
valueName: avg
|
|
- cacheTimeout: null
|
|
colorBackground: false
|
|
colorValue: false
|
|
colors:
|
|
- rgba(245, 54, 54, 0.9)
|
|
- rgba(237, 129, 40, 0.89)
|
|
- rgba(50, 172, 45, 0.97)
|
|
datasource: ${DS_PROMETHEUS}
|
|
decimals: 0
|
|
format: none
|
|
gauge:
|
|
maxValue: 100
|
|
minValue: 0
|
|
show: false
|
|
thresholdLabels: false
|
|
thresholdMarkers: true
|
|
gridPos:
|
|
h: 3
|
|
w: 3
|
|
x: 18
|
|
"y": 0
|
|
id: 81
|
|
interval: null
|
|
links: []
|
|
mappingType: 1
|
|
mappingTypes:
|
|
- name: value to text
|
|
value: 1
|
|
- name: range to text
|
|
value: 2
|
|
maxDataPoints: 100
|
|
nullPointMode: connected
|
|
nullText: null
|
|
postfix: ""
|
|
postfixFontSize: 50%
|
|
prefix: ""
|
|
prefixFontSize: 50%
|
|
rangeMaps:
|
|
- from: "null"
|
|
text: N/A
|
|
to: "null"
|
|
sparkline:
|
|
fillColor: rgba(31, 118, 189, 0.18)
|
|
full: true
|
|
lineColor: rgb(31, 120, 193)
|
|
show: true
|
|
tableColumn: ""
|
|
targets:
|
|
- expr: avg(nginx_ingress_controller_success{controller_pod=~"$controller",controller_class=~"$controller_class",controller_namespace=~"$namespace"})
|
|
format: time_series
|
|
instant: true
|
|
intervalFactor: 1
|
|
refId: A
|
|
step: 4
|
|
thresholds: ""
|
|
title: Config Reloads
|
|
transparent: false
|
|
type: singlestat
|
|
valueFontSize: 80%
|
|
valueMaps:
|
|
- op: =
|
|
text: N/A
|
|
value: "null"
|
|
valueName: avg
|
|
- cacheTimeout: null
|
|
colorBackground: false
|
|
colorValue: false
|
|
colors:
|
|
- rgba(245, 54, 54, 0.9)
|
|
- rgba(237, 129, 40, 0.89)
|
|
- rgba(50, 172, 45, 0.97)
|
|
datasource: ${DS_PROMETHEUS}
|
|
decimals: 0
|
|
format: none
|
|
gauge:
|
|
maxValue: 100
|
|
minValue: 0
|
|
show: false
|
|
thresholdLabels: false
|
|
thresholdMarkers: true
|
|
gridPos:
|
|
h: 3
|
|
w: 3
|
|
x: 21
|
|
"y": 0
|
|
id: 83
|
|
interval: null
|
|
links: []
|
|
mappingType: 1
|
|
mappingTypes:
|
|
- name: value to text
|
|
value: 1
|
|
- name: range to text
|
|
value: 2
|
|
maxDataPoints: 100
|
|
nullPointMode: connected
|
|
nullText: null
|
|
postfix: ""
|
|
postfixFontSize: 50%
|
|
prefix: ""
|
|
prefixFontSize: 50%
|
|
rangeMaps:
|
|
- from: "null"
|
|
text: N/A
|
|
to: "null"
|
|
sparkline:
|
|
fillColor: rgba(31, 118, 189, 0.18)
|
|
full: true
|
|
lineColor: rgb(31, 120, 193)
|
|
show: true
|
|
tableColumn: ""
|
|
targets:
|
|
- expr: count(nginx_ingress_controller_config_last_reload_successful{controller_pod=~"$controller",controller_namespace=~"$namespace"} == 0)
|
|
format: time_series
|
|
instant: true
|
|
intervalFactor: 1
|
|
refId: A
|
|
step: 4
|
|
thresholds: ""
|
|
title: Last Config Failed
|
|
transparent: false
|
|
type: singlestat
|
|
valueFontSize: 80%
|
|
valueMaps:
|
|
- op: =
|
|
text: N/A
|
|
value: "null"
|
|
valueName: avg
|
|
- aliasColors: {}
|
|
bars: false
|
|
dashLength: 10
|
|
dashes: false
|
|
datasource: ${DS_PROMETHEUS}
|
|
decimals: 2
|
|
editable: true
|
|
error: false
|
|
fill: 1
|
|
grid: {}
|
|
gridPos:
|
|
h: 7
|
|
w: 12
|
|
x: 0
|
|
"y": 3
|
|
height: 200px
|
|
id: 86
|
|
isNew: true
|
|
legend:
|
|
alignAsTable: true
|
|
avg: true
|
|
current: false
|
|
hideEmpty: false
|
|
hideZero: true
|
|
max: false
|
|
min: false
|
|
rightSide: true
|
|
show: true
|
|
sideWidth: 300
|
|
sort: current
|
|
sortDesc: true
|
|
total: false
|
|
values: true
|
|
lines: true
|
|
linewidth: 2
|
|
links: []
|
|
nullPointMode: connected
|
|
percentage: false
|
|
pointradius: 5
|
|
points: false
|
|
renderer: flot
|
|
repeat: null
|
|
repeatDirection: h
|
|
seriesOverrides: []
|
|
spaceLength: 10
|
|
stack: false
|
|
steppedLine: false
|
|
targets:
|
|
- expr: round(sum(irate(nginx_ingress_controller_requests{controller_pod=~"$controller",controller_class=~"$controller_class",controller_namespace=~"$namespace",ingress=~"$ingress"}[2m])) by (ingress), 0.001)
|
|
format: time_series
|
|
hide: false
|
|
instant: false
|
|
interval: ""
|
|
intervalFactor: 1
|
|
legendFormat: '{{ ingress }}'
|
|
metric: network
|
|
refId: A
|
|
step: 10
|
|
thresholds: []
|
|
timeFrom: null
|
|
timeShift: null
|
|
title: Ingress Request Volume
|
|
tooltip:
|
|
msResolution: false
|
|
shared: true
|
|
sort: 2
|
|
value_type: cumulative
|
|
transparent: false
|
|
type: graph
|
|
xaxis:
|
|
buckets: null
|
|
mode: time
|
|
name: null
|
|
show: true
|
|
values: []
|
|
yaxes:
|
|
- format: reqps
|
|
label: null
|
|
logBase: 1
|
|
max: null
|
|
min: null
|
|
show: true
|
|
- format: Bps
|
|
label: null
|
|
logBase: 1
|
|
max: null
|
|
min: null
|
|
show: false
|
|
yaxis:
|
|
align: false
|
|
alignLevel: null
|
|
- aliasColors:
|
|
max - istio-proxy: '#890f02'
|
|
max - master: '#bf1b00'
|
|
max - prometheus: '#bf1b00'
|
|
bars: false
|
|
dashLength: 10
|
|
dashes: false
|
|
datasource: ${DS_PROMETHEUS}
|
|
decimals: 2
|
|
editable: false
|
|
error: false
|
|
fill: 0
|
|
grid: {}
|
|
gridPos:
|
|
h: 7
|
|
w: 12
|
|
x: 12
|
|
"y": 3
|
|
id: 87
|
|
isNew: true
|
|
legend:
|
|
alignAsTable: true
|
|
avg: true
|
|
current: false
|
|
hideEmpty: true
|
|
hideZero: false
|
|
max: false
|
|
min: false
|
|
rightSide: true
|
|
show: true
|
|
sideWidth: 300
|
|
sort: avg
|
|
sortDesc: true
|
|
total: false
|
|
values: true
|
|
lines: true
|
|
linewidth: 2
|
|
links: []
|
|
nullPointMode: connected
|
|
percentage: false
|
|
pointradius: 5
|
|
points: false
|
|
renderer: flot
|
|
seriesOverrides: []
|
|
spaceLength: 10
|
|
stack: false
|
|
steppedLine: false
|
|
targets:
|
|
- expr: sum(rate(nginx_ingress_controller_requests{controller_pod=~"$controller",controller_class=~"$controller_class",namespace=~"$namespace",ingress=~"$ingress",status!~"[4-5].*"}[2m])) by (ingress) / sum(rate(nginx_ingress_controller_requests{controller_pod=~"$controller",controller_class=~"$controller_class",namespace=~"$namespace",ingress=~"$ingress"}[2m])) by (ingress)
|
|
format: time_series
|
|
instant: false
|
|
interval: 10s
|
|
intervalFactor: 1
|
|
legendFormat: '{{ ingress }}'
|
|
metric: container_memory_usage:sort_desc
|
|
refId: A
|
|
step: 10
|
|
thresholds: []
|
|
timeFrom: null
|
|
timeShift: null
|
|
title: Ingress Success Rate (non-4|5xx responses)
|
|
tooltip:
|
|
msResolution: false
|
|
shared: true
|
|
sort: 1
|
|
value_type: cumulative
|
|
type: graph
|
|
xaxis:
|
|
buckets: null
|
|
mode: time
|
|
name: null
|
|
show: true
|
|
values: []
|
|
yaxes:
|
|
- format: percentunit
|
|
label: null
|
|
logBase: 1
|
|
max: null
|
|
min: null
|
|
show: true
|
|
- format: short
|
|
label: null
|
|
logBase: 1
|
|
max: null
|
|
min: null
|
|
show: false
|
|
yaxis:
|
|
align: false
|
|
alignLevel: null
|
|
- aliasColors: {}
|
|
bars: false
|
|
dashLength: 10
|
|
dashes: false
|
|
datasource: ${DS_PROMETHEUS}
|
|
decimals: 2
|
|
editable: true
|
|
error: false
|
|
fill: 1
|
|
grid: {}
|
|
gridPos:
|
|
h: 6
|
|
w: 8
|
|
x: 0
|
|
"y": 10
|
|
height: 200px
|
|
id: 32
|
|
isNew: true
|
|
legend:
|
|
alignAsTable: false
|
|
avg: true
|
|
current: true
|
|
max: false
|
|
min: false
|
|
rightSide: false
|
|
show: false
|
|
sideWidth: 200
|
|
sort: current
|
|
sortDesc: true
|
|
total: false
|
|
values: true
|
|
lines: true
|
|
linewidth: 2
|
|
links: []
|
|
nullPointMode: connected
|
|
percentage: false
|
|
pointradius: 5
|
|
points: false
|
|
renderer: flot
|
|
seriesOverrides: []
|
|
spaceLength: 10
|
|
stack: false
|
|
steppedLine: false
|
|
targets:
|
|
- expr: sum (irate (nginx_ingress_controller_request_size_sum{controller_pod=~"$controller",controller_class=~"$controller_class",controller_namespace=~"$namespace"}[2m]))
|
|
format: time_series
|
|
instant: false
|
|
interval: 10s
|
|
intervalFactor: 1
|
|
legendFormat: Received
|
|
metric: network
|
|
refId: A
|
|
step: 10
|
|
- expr: '- sum (irate (nginx_ingress_controller_response_size_sum{controller_pod=~"$controller",controller_class=~"$controller_class",controller_namespace=~"$namespace"}[2m]))'
|
|
format: time_series
|
|
hide: false
|
|
interval: 10s
|
|
intervalFactor: 1
|
|
legendFormat: Sent
|
|
metric: network
|
|
refId: B
|
|
step: 10
|
|
thresholds: []
|
|
timeFrom: null
|
|
timeShift: null
|
|
title: Network I/O pressure
|
|
tooltip:
|
|
msResolution: false
|
|
shared: true
|
|
sort: 0
|
|
value_type: cumulative
|
|
transparent: false
|
|
type: graph
|
|
xaxis:
|
|
buckets: null
|
|
mode: time
|
|
name: null
|
|
show: true
|
|
values: []
|
|
yaxes:
|
|
- format: Bps
|
|
label: null
|
|
logBase: 1
|
|
max: null
|
|
min: null
|
|
show: true
|
|
- format: Bps
|
|
label: null
|
|
logBase: 1
|
|
max: null
|
|
min: null
|
|
show: false
|
|
yaxis:
|
|
align: false
|
|
alignLevel: null
|
|
- aliasColors:
|
|
max - istio-proxy: '#890f02'
|
|
max - master: '#bf1b00'
|
|
max - prometheus: '#bf1b00'
|
|
bars: false
|
|
dashLength: 10
|
|
dashes: false
|
|
datasource: ${DS_PROMETHEUS}
|
|
decimals: 2
|
|
editable: false
|
|
error: false
|
|
fill: 0
|
|
grid: {}
|
|
gridPos:
|
|
h: 6
|
|
w: 8
|
|
x: 8
|
|
"y": 10
|
|
id: 77
|
|
isNew: true
|
|
legend:
|
|
alignAsTable: true
|
|
avg: true
|
|
current: true
|
|
max: false
|
|
min: false
|
|
rightSide: false
|
|
show: false
|
|
sideWidth: 200
|
|
sort: current
|
|
sortDesc: true
|
|
total: false
|
|
values: true
|
|
lines: true
|
|
linewidth: 2
|
|
links: []
|
|
nullPointMode: connected
|
|
percentage: false
|
|
pointradius: 5
|
|
points: false
|
|
renderer: flot
|
|
seriesOverrides: []
|
|
spaceLength: 10
|
|
stack: false
|
|
steppedLine: false
|
|
targets:
|
|
- expr: 'avg(nginx_ingress_controller_nginx_process_resident_memory_bytes{controller_pod=~"$controller",controller_class=~"$controller_class",controller_namespace=~"$namespace"}) '
|
|
format: time_series
|
|
instant: false
|
|
interval: 10s
|
|
intervalFactor: 1
|
|
legendFormat: nginx
|
|
metric: container_memory_usage:sort_desc
|
|
refId: A
|
|
step: 10
|
|
thresholds: []
|
|
timeFrom: null
|
|
timeShift: null
|
|
title: Average Memory Usage
|
|
tooltip:
|
|
msResolution: false
|
|
shared: true
|
|
sort: 2
|
|
value_type: cumulative
|
|
type: graph
|
|
xaxis:
|
|
buckets: null
|
|
mode: time
|
|
name: null
|
|
show: true
|
|
values: []
|
|
yaxes:
|
|
- format: bytes
|
|
label: null
|
|
logBase: 1
|
|
max: null
|
|
min: null
|
|
show: true
|
|
- format: short
|
|
label: null
|
|
logBase: 1
|
|
max: null
|
|
min: null
|
|
show: false
|
|
yaxis:
|
|
align: false
|
|
alignLevel: null
|
|
- aliasColors:
|
|
max - istio-proxy: '#890f02'
|
|
max - master: '#bf1b00'
|
|
bars: false
|
|
dashLength: 10
|
|
dashes: false
|
|
datasource: ${DS_PROMETHEUS}
|
|
decimals: 3
|
|
editable: false
|
|
error: false
|
|
fill: 0
|
|
grid: {}
|
|
gridPos:
|
|
h: 6
|
|
w: 8
|
|
x: 16
|
|
"y": 10
|
|
height: ""
|
|
id: 79
|
|
isNew: true
|
|
legend:
|
|
alignAsTable: true
|
|
avg: true
|
|
current: true
|
|
max: false
|
|
min: false
|
|
rightSide: false
|
|
show: false
|
|
sort: null
|
|
sortDesc: null
|
|
total: false
|
|
values: true
|
|
lines: true
|
|
linewidth: 2
|
|
links: []
|
|
nullPointMode: connected
|
|
percentage: false
|
|
pointradius: 5
|
|
points: false
|
|
renderer: flot
|
|
seriesOverrides: []
|
|
spaceLength: 10
|
|
stack: false
|
|
steppedLine: false
|
|
targets:
|
|
- expr: 'sum (rate (nginx_ingress_controller_nginx_process_cpu_seconds_total{controller_pod=~"$controller",controller_class=~"$controller_class",controller_namespace=~"$namespace"}[2m])) '
|
|
format: time_series
|
|
interval: 10s
|
|
intervalFactor: 1
|
|
legendFormat: nginx
|
|
metric: container_cpu
|
|
refId: A
|
|
step: 10
|
|
thresholds:
|
|
- colorMode: critical
|
|
fill: true
|
|
line: true
|
|
op: gt
|
|
timeFrom: null
|
|
timeShift: null
|
|
title: Average CPU Usage
|
|
tooltip:
|
|
msResolution: true
|
|
shared: true
|
|
sort: 2
|
|
value_type: cumulative
|
|
transparent: false
|
|
type: graph
|
|
xaxis:
|
|
buckets: null
|
|
mode: time
|
|
name: null
|
|
show: true
|
|
values: []
|
|
yaxes:
|
|
- format: none
|
|
label: cores
|
|
logBase: 1
|
|
max: null
|
|
min: null
|
|
show: true
|
|
- format: short
|
|
label: null
|
|
logBase: 1
|
|
max: null
|
|
min: null
|
|
show: true
|
|
yaxis:
|
|
align: false
|
|
alignLevel: null
|
|
- columns: []
|
|
datasource: ${DS_PROMETHEUS}
|
|
fontSize: 100%
|
|
gridPos:
|
|
h: 8
|
|
w: 24
|
|
x: 0
|
|
"y": 16
|
|
hideTimeOverride: false
|
|
id: 75
|
|
links: []
|
|
pageSize: 7
|
|
repeat: null
|
|
repeatDirection: h
|
|
scroll: true
|
|
showHeader: true
|
|
sort:
|
|
col: 1
|
|
desc: true
|
|
styles:
|
|
- alias: Ingress
|
|
colorMode: null
|
|
colors:
|
|
- rgba(245, 54, 54, 0.9)
|
|
- rgba(237, 129, 40, 0.89)
|
|
- rgba(50, 172, 45, 0.97)
|
|
dateFormat: YYYY-MM-DD HH:mm:ss
|
|
decimals: 2
|
|
pattern: ingress
|
|
preserveFormat: false
|
|
sanitize: false
|
|
thresholds: []
|
|
type: string
|
|
unit: short
|
|
- alias: Requests
|
|
colorMode: null
|
|
colors:
|
|
- rgba(245, 54, 54, 0.9)
|
|
- rgba(237, 129, 40, 0.89)
|
|
- rgba(50, 172, 45, 0.97)
|
|
dateFormat: YYYY-MM-DD HH:mm:ss
|
|
decimals: 2
|
|
pattern: 'Value #A'
|
|
thresholds:
|
|
- ""
|
|
type: number
|
|
unit: ops
|
|
- alias: Errors
|
|
colorMode: null
|
|
colors:
|
|
- rgba(245, 54, 54, 0.9)
|
|
- rgba(237, 129, 40, 0.89)
|
|
- rgba(50, 172, 45, 0.97)
|
|
dateFormat: YYYY-MM-DD HH:mm:ss
|
|
decimals: 2
|
|
pattern: 'Value #B'
|
|
thresholds: []
|
|
type: number
|
|
unit: ops
|
|
- alias: P50 Latency
|
|
colorMode: null
|
|
colors:
|
|
- rgba(245, 54, 54, 0.9)
|
|
- rgba(237, 129, 40, 0.89)
|
|
- rgba(50, 172, 45, 0.97)
|
|
dateFormat: YYYY-MM-DD HH:mm:ss
|
|
decimals: 0
|
|
link: false
|
|
pattern: 'Value #C'
|
|
thresholds: []
|
|
type: number
|
|
unit: dtdurations
|
|
- alias: P90 Latency
|
|
colorMode: null
|
|
colors:
|
|
- rgba(245, 54, 54, 0.9)
|
|
- rgba(237, 129, 40, 0.89)
|
|
- rgba(50, 172, 45, 0.97)
|
|
dateFormat: YYYY-MM-DD HH:mm:ss
|
|
decimals: 0
|
|
pattern: 'Value #D'
|
|
thresholds: []
|
|
type: number
|
|
unit: dtdurations
|
|
- alias: P99 Latency
|
|
colorMode: null
|
|
colors:
|
|
- rgba(245, 54, 54, 0.9)
|
|
- rgba(237, 129, 40, 0.89)
|
|
- rgba(50, 172, 45, 0.97)
|
|
dateFormat: YYYY-MM-DD HH:mm:ss
|
|
decimals: 0
|
|
pattern: 'Value #E'
|
|
thresholds: []
|
|
type: number
|
|
unit: dtdurations
|
|
- alias: IN
|
|
colorMode: null
|
|
colors:
|
|
- rgba(245, 54, 54, 0.9)
|
|
- rgba(237, 129, 40, 0.89)
|
|
- rgba(50, 172, 45, 0.97)
|
|
dateFormat: YYYY-MM-DD HH:mm:ss
|
|
decimals: 2
|
|
pattern: 'Value #F'
|
|
thresholds:
|
|
- ""
|
|
type: number
|
|
unit: Bps
|
|
- alias: ""
|
|
colorMode: null
|
|
colors:
|
|
- rgba(245, 54, 54, 0.9)
|
|
- rgba(237, 129, 40, 0.89)
|
|
- rgba(50, 172, 45, 0.97)
|
|
dateFormat: YYYY-MM-DD HH:mm:ss
|
|
decimals: 2
|
|
pattern: Time
|
|
thresholds: []
|
|
type: hidden
|
|
unit: short
|
|
- alias: OUT
|
|
colorMode: null
|
|
colors:
|
|
- rgba(245, 54, 54, 0.9)
|
|
- rgba(237, 129, 40, 0.89)
|
|
- rgba(50, 172, 45, 0.97)
|
|
dateFormat: YYYY-MM-DD HH:mm:ss
|
|
decimals: 2
|
|
mappingType: 1
|
|
pattern: 'Value #G'
|
|
thresholds: []
|
|
type: number
|
|
unit: Bps
|
|
targets:
|
|
- expr: histogram_quantile(0.50, sum(rate(nginx_ingress_controller_request_duration_seconds_bucket{ingress!="",controller_pod=~"$controller",controller_class=~"$controller_class",controller_namespace=~"$namespace",ingress=~"$ingress"}[2m])) by (le, ingress))
|
|
format: table
|
|
hide: false
|
|
instant: true
|
|
intervalFactor: 1
|
|
legendFormat: '{{ ingress }}'
|
|
refId: C
|
|
- expr: histogram_quantile(0.90, sum(rate(nginx_ingress_controller_request_duration_seconds_bucket{ingress!="",controller_pod=~"$controller",controller_class=~"$controller_class",controller_namespace=~"$namespace",ingress=~"$ingress"}[2m])) by (le, ingress))
|
|
format: table
|
|
hide: false
|
|
instant: true
|
|
intervalFactor: 1
|
|
legendFormat: '{{ ingress }}'
|
|
refId: D
|
|
- expr: histogram_quantile(0.99, sum(rate(nginx_ingress_controller_request_duration_seconds_bucket{ingress!="",controller_pod=~"$controller",controller_class=~"$controller_class",controller_namespace=~"$namespace",ingress=~"$ingress"}[2m])) by (le, ingress))
|
|
format: table
|
|
hide: false
|
|
instant: true
|
|
intervalFactor: 1
|
|
legendFormat: '{{ destination_service }}'
|
|
refId: E
|
|
- expr: sum(irate(nginx_ingress_controller_request_size_sum{ingress!="",controller_pod=~"$controller",controller_class=~"$controller_class",controller_namespace=~"$namespace",ingress=~"$ingress"}[2m])) by (ingress)
|
|
format: table
|
|
hide: false
|
|
instant: true
|
|
interval: ""
|
|
intervalFactor: 1
|
|
legendFormat: '{{ ingress }}'
|
|
refId: F
|
|
- expr: sum(irate(nginx_ingress_controller_response_size_sum{ingress!="",controller_pod=~"$controller",controller_class=~"$controller_class",controller_namespace=~"$namespace",ingress=~"$ingress"}[2m])) by (ingress)
|
|
format: table
|
|
instant: true
|
|
intervalFactor: 1
|
|
legendFormat: '{{ ingress }}'
|
|
refId: G
|
|
timeFrom: null
|
|
title: Ingress Percentile Response Times and Transfer Rates
|
|
transform: table
|
|
transparent: false
|
|
type: table
|
|
- columns:
|
|
- text: Current
|
|
value: current
|
|
datasource: ${DS_PROMETHEUS}
|
|
fontSize: 100%
|
|
gridPos:
|
|
h: 8
|
|
w: 24
|
|
x: 0
|
|
"y": 24
|
|
height: "1024"
|
|
id: 85
|
|
links: []
|
|
pageSize: 7
|
|
scroll: true
|
|
showHeader: true
|
|
sort:
|
|
col: 1
|
|
desc: false
|
|
styles:
|
|
- alias: Time
|
|
dateFormat: YYYY-MM-DD HH:mm:ss
|
|
pattern: Time
|
|
type: date
|
|
- alias: TTL
|
|
colorMode: cell
|
|
colors:
|
|
- rgba(245, 54, 54, 0.9)
|
|
- rgba(237, 129, 40, 0.89)
|
|
- rgba(50, 172, 45, 0.97)
|
|
dateFormat: YYYY-MM-DD HH:mm:ss
|
|
decimals: 0
|
|
pattern: Current
|
|
thresholds:
|
|
- "0"
|
|
- "691200"
|
|
type: number
|
|
unit: s
|
|
- alias: ""
|
|
colorMode: null
|
|
colors:
|
|
- rgba(245, 54, 54, 0.9)
|
|
- rgba(237, 129, 40, 0.89)
|
|
- rgba(50, 172, 45, 0.97)
|
|
decimals: 2
|
|
pattern: /.*/
|
|
thresholds: []
|
|
type: number
|
|
unit: short
|
|
targets:
|
|
- expr: avg(nginx_ingress_controller_ssl_expire_time_seconds{kubernetes_pod_name=~"$controller",namespace=~"$namespace",ingress=~"$ingress"}) by (host) - time()
|
|
format: time_series
|
|
intervalFactor: 1
|
|
legendFormat: '{{ host }}'
|
|
metric: gke_letsencrypt_cert_expiration
|
|
refId: A
|
|
step: 1
|
|
title: Ingress Certificate Expiry
|
|
transform: timeseries_aggregations
|
|
type: table
|
|
refresh: 5s
|
|
schemaVersion: 16
|
|
style: dark
|
|
tags:
|
|
- nginx
|
|
templating:
|
|
list:
|
|
- allValue: .*
|
|
current:
|
|
text: All
|
|
value: $__all
|
|
datasource: ${DS_PROMETHEUS}
|
|
hide: 0
|
|
includeAll: true
|
|
label: Namespace
|
|
multi: false
|
|
name: namespace
|
|
options: []
|
|
query: label_values(nginx_ingress_controller_config_hash, controller_namespace)
|
|
refresh: 1
|
|
regex: ""
|
|
sort: 0
|
|
tagValuesQuery: ""
|
|
tags: []
|
|
tagsQuery: ""
|
|
type: query
|
|
useTags: false
|
|
- allValue: .*
|
|
current:
|
|
text: All
|
|
value: $__all
|
|
datasource: ${DS_PROMETHEUS}
|
|
hide: 0
|
|
includeAll: true
|
|
label: Controller Class
|
|
multi: false
|
|
name: controller_class
|
|
options: []
|
|
query: 'label_values(nginx_ingress_controller_config_hash{namespace=~"$namespace"}, controller_class) '
|
|
refresh: 1
|
|
regex: ""
|
|
sort: 0
|
|
tagValuesQuery: ""
|
|
tags: []
|
|
tagsQuery: ""
|
|
type: query
|
|
useTags: false
|
|
- allValue: .*
|
|
current:
|
|
text: All
|
|
value: $__all
|
|
datasource: ${DS_PROMETHEUS}
|
|
hide: 0
|
|
includeAll: true
|
|
label: Controller
|
|
multi: false
|
|
name: controller
|
|
options: []
|
|
query: 'label_values(nginx_ingress_controller_config_hash{namespace=~"$namespace",controller_class=~"$controller_class"}, controller_pod) '
|
|
refresh: 1
|
|
regex: ""
|
|
sort: 0
|
|
tagValuesQuery: ""
|
|
tags: []
|
|
tagsQuery: ""
|
|
type: query
|
|
useTags: false
|
|
- allValue: .*
|
|
current:
|
|
tags: []
|
|
text: All
|
|
value: $__all
|
|
datasource: ${DS_PROMETHEUS}
|
|
hide: 0
|
|
includeAll: true
|
|
label: Ingress
|
|
multi: false
|
|
name: ingress
|
|
options: []
|
|
query: 'label_values(nginx_ingress_controller_requests{namespace=~"$namespace",controller_class=~"$controller_class",controller=~"$controller"}, ingress) '
|
|
refresh: 1
|
|
regex: ""
|
|
sort: 2
|
|
tagValuesQuery: ""
|
|
tags: []
|
|
tagsQuery: ""
|
|
type: query
|
|
useTags: false
|
|
time:
|
|
from: now-1h
|
|
to: now
|
|
timepicker:
|
|
refresh_intervals:
|
|
- 5s
|
|
- 10s
|
|
- 30s
|
|
- 2m
|
|
- 5m
|
|
- 15m
|
|
- 30m
|
|
- 1h
|
|
- 2h
|
|
- 1d
|
|
time_options:
|
|
- 5m
|
|
- 15m
|
|
- 1h
|
|
- 6h
|
|
- 12h
|
|
- 24h
|
|
- 2d
|
|
- 7d
|
|
- 30d
|
|
timezone: browser
|
|
title: NGINX Ingress controller
|
|
uid: nginx
|
|
version: 1
|
|
description: Ingress-nginx supports a rich collection of prometheus metrics. If you have prometheus and grafana installed on your cluster then prometheus will already be scraping this data due to the scrape annotation on the deployment. |