SMARCH-40: monitoring for harbor

master
Sven Ketelsen 5 years ago
parent 78d2815bb3
commit 18f3fd3102

@ -91,6 +91,7 @@ monitor_port_service: "9081"
monitor_port_system: "9082" monitor_port_system: "9082"
monitor_port_docker: "9083" monitor_port_docker: "9083"
monitor_port_elastic: "9084" monitor_port_elastic: "9084"
monitor_port_harbor: "9085"
admin_port_traefik: "9080" admin_port_traefik: "9080"

@ -1,7 +1,6 @@
--- ---
grafana_version: "7.0.5" grafana_version: "8.0.3"
prometheus_version: "v2.19.2" prometheus_version: "v2.28.0"
alertmanager_version: "v0.21.0" alertmanager_version: "v0.22.2"
blackbox_exporter_version: "v0.17.0" blackbox_exporter_version: "v0.19.0"
postgres_exporter_version: "v0.8.0"

@ -1,16 +0,0 @@
{% for database in databases %}
{
name: "{{ service_name }}-postgres-exporter-{{ database.name }}",
image_name: "wrouesnel/postgres_exporter",
image_version: "{{ postgres_exporter_version }}",
environment: [
'DATA_SOURCE_URI: "{{ database.uri }}"',
"{{ database.user }}",
"{{ database.pass }}",
],
networks: [
'"back-tier"',
'"front-tier"',
],
}
{% endfor %}

@ -68,6 +68,10 @@ traefik_docker: {
external: "0.0.0.0:{{ monitor_port_elastic }}", external: "0.0.0.0:{{ monitor_port_elastic }}",
internal: "{{ monitor_port_elastic }}" internal: "{{ monitor_port_elastic }}"
}, },
{
external: "0.0.0.0:{{ monitor_port_harbor }}",
internal: "{{ monitor_port_harbor }}"
},
], ],
dns: [ dns: [
'"8.8.8.8"', '"8.8.8.8"',

@ -1,13 +1,4 @@
version: '2.3' version: '2.3'
networks:
front-tier:
external: true
harbor:
external: false
harbor-chartmuseum:
external: false
services: services:
log: log:
image: goharbor/harbor-log:v2.2.2 image: goharbor/harbor-log:v2.2.2
@ -33,7 +24,6 @@ services:
- 127.0.0.1:1514:10514 - 127.0.0.1:1514:10514
networks: networks:
- harbor - harbor
registry: registry:
image: goharbor/registry-photon:v2.2.2 image: goharbor/registry-photon:v2.2.2
container_name: registry container_name: registry
@ -63,7 +53,6 @@ services:
options: options:
syslog-address: "tcp://127.0.0.1:1514" syslog-address: "tcp://127.0.0.1:1514"
tag: "registry" tag: "registry"
registryctl: registryctl:
image: goharbor/harbor-registryctl:v2.2.2 image: goharbor/harbor-registryctl:v2.2.2
container_name: registryctl container_name: registryctl
@ -95,7 +84,6 @@ services:
options: options:
syslog-address: "tcp://127.0.0.1:1514" syslog-address: "tcp://127.0.0.1:1514"
tag: "registryctl" tag: "registryctl"
postgresql: postgresql:
image: goharbor/harbor-db:v2.2.2 image: goharbor/harbor-db:v2.2.2
container_name: harbor-db container_name: harbor-db
@ -121,7 +109,6 @@ services:
options: options:
syslog-address: "tcp://127.0.0.1:1514" syslog-address: "tcp://127.0.0.1:1514"
tag: "postgresql" tag: "postgresql"
core: core:
image: goharbor/harbor-core:v2.2.2 image: goharbor/harbor-core:v2.2.2
container_name: harbor-core container_name: harbor-core
@ -168,7 +155,6 @@ services:
extra_hosts: extra_hosts:
- dev-keycloak-01.smardigo.digital:10.1.0.2 - dev-keycloak-01.smardigo.digital:10.1.0.2
- dev-mail-01.smardigo.digital:10.2.0.2 - dev-mail-01.smardigo.digital:10.2.0.2
portal: portal:
image: goharbor/harbor-portal:v2.2.2 image: goharbor/harbor-portal:v2.2.2
container_name: harbor-portal container_name: harbor-portal
@ -225,7 +211,6 @@ services:
options: options:
syslog-address: "tcp://127.0.0.1:1514" syslog-address: "tcp://127.0.0.1:1514"
tag: "jobservice" tag: "jobservice"
redis: redis:
image: goharbor/redis-photon:v2.2.2 image: goharbor/redis-photon:v2.2.2
container_name: redis container_name: redis
@ -251,7 +236,6 @@ services:
options: options:
syslog-address: "tcp://127.0.0.1:1514" syslog-address: "tcp://127.0.0.1:1514"
tag: "redis" tag: "redis"
proxy: proxy:
image: goharbor/nginx-photon:v2.2.2 image: goharbor/nginx-photon:v2.2.2
container_name: nginx container_name: nginx
@ -274,6 +258,7 @@ services:
dns_search: . dns_search: .
# ports: # ports:
# - 80:8080 # - 80:8080
# - 9090:9090
depends_on: depends_on:
- registry - registry
- core - core
@ -293,7 +278,43 @@ services:
- "traefik.http.routers.dev-docker-registry-01-harbor.tls=true" - "traefik.http.routers.dev-docker-registry-01-harbor.tls=true"
- "traefik.http.routers.dev-docker-registry-01-harbor.tls.certresolver=letsencrypt" - "traefik.http.routers.dev-docker-registry-01-harbor.tls.certresolver=letsencrypt"
- "traefik.http.services.dev-docker-registry-01-harbor.loadbalancer.server.port=8080" - "traefik.http.services.dev-docker-registry-01-harbor.loadbalancer.server.port=8080"
- "traefik.http.middlewares.dev-docker-registry-01-harbor-monitor.headers.customrequestheaders.X-Forwarded-Proto=https"
- "traefik.http.routers.dev-docker-registry-01-harbor-monitor.service=dev-docker-registry-01-harbor"
- "traefik.http.routers.dev-docker-registry-01-harbor-monitor.rule=Host(`dev-docker-registry-01.smardigo.digital`)"
- "traefik.http.routers.dev-docker-registry-01-harbor-monitor.entrypoints=monitoring-harbor"
- "traefik.http.routers.dev-docker-registry-01-harbor-monitor.tls=true"
- "traefik.http.routers.dev-docker-registry-01-harbor-monitor.tls.certresolver=letsencrypt"
- "traefik.http.services.dev-docker-registry-01-harbor-monitor.loadbalancer.server.port=9090"
trivy-adapter:
container_name: trivy-adapter
image: goharbor/trivy-adapter-photon:v2.2.2
restart: always
cap_drop:
- ALL
dns_search: .
depends_on:
- log
- redis
networks:
- harbor
volumes:
- type: bind
source: /data/trivy-adapter/trivy
target: /home/scanner/.cache/trivy
- type: bind
source: /data/trivy-adapter/reports
target: /home/scanner/.cache/reports
- type: bind
source: ./common/config/shared/trust-certificates
target: /harbor_cust_cert
logging:
driver: "syslog"
options:
syslog-address: "tcp://127.0.0.1:1514"
tag: "trivy-adapter"
env_file:
./common/config/trivy-adapter/env
chartmuseum: chartmuseum:
container_name: chartmuseum container_name: chartmuseum
image: goharbor/chartmuseum-photon:v2.2.2 image: goharbor/chartmuseum-photon:v2.2.2
@ -323,3 +344,31 @@ services:
tag: "chartmuseum" tag: "chartmuseum"
env_file: env_file:
./common/config/chartserver/env ./common/config/chartserver/env
exporter:
image: goharbor/harbor-exporter:v2.2.2
container_name: harbor-exporter
env_file:
- ./common/config/exporter/env
restart: always
networks:
- harbor
dns_search: .
depends_on:
- core
- postgresql
volumes:
- type: bind
source: ./common/config/shared/trust-certificates
target: /harbor_cust_cert
logging:
driver: "syslog"
options:
syslog-address: "tcp://127.0.0.1:1514"
tag: "exporter"
networks:
harbor:
external: false
harbor-chartmuseum:
external: false
front-tier:
external: true

@ -198,6 +198,6 @@ proxy:
- trivy - trivy
metric: metric:
enabled: false enabled: true
port: 9090 port: 9090
path: /metrics path: /metrics

@ -0,0 +1,775 @@
{
"annotations": {
"list": [
{
"$$hashKey": "object:112",
"builtIn": 1,
"datasource": "-- Grafana --",
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"limit": 100,
"name": "Annotations & Alerts",
"showIn": 0,
"type": "dashboard"
}
]
},
"description": "Traefik dashboard (data from prometheus) (based on Traefik by Thomas Cheronneau https://grafana.com/grafana/dashboards/4475)",
"editable": true,
"gnetId": 12250,
"graphTooltip": 0,
"id": 8,
"iteration": 1624464454700,
"links": [],
"panels": [
{
"datasource": "Prometheus",
"fieldConfig": {
"defaults": {},
"overrides": []
},
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 0
},
"id": 16,
"title": "Global stats",
"type": "row"
},
{
"aliasColors": {},
"bars": false,
"dashLength": 10,
"dashes": false,
"datasource": "Prometheus",
"fieldConfig": {
"defaults": {
"links": []
},
"overrides": []
},
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 7,
"w": 12,
"x": 0,
"y": 1
},
"hiddenSeries": false,
"id": 14,
"legend": {
"alignAsTable": false,
"avg": false,
"current": false,
"max": false,
"min": false,
"rightSide": true,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 1,
"links": [],
"nullPointMode": "null",
"options": {
"alertThreshold": true
},
"percentage": false,
"pluginVersion": "8.0.3",
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"expr": "sum(traefik_service_request_duration_seconds_sum{}) by (service) / sum(traefik_service_request_duration_seconds_count{}) by (service)",
"format": "time_series",
"interval": "",
"intervalFactor": 2,
"legendFormat": " {{service}}",
"refId": "A",
"step": 240
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Average response time by service",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"$$hashKey": "object:598",
"format": "s",
"label": null,
"logBase": 1,
"max": null,
"min": "0",
"show": true
},
{
"$$hashKey": "object:599",
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
],
"yaxis": {
"align": false,
"alignLevel": null
}
},
{
"aliasColors": {},
"breakPoint": "50%",
"cacheTimeout": null,
"combine": {
"label": "Others",
"threshold": 0
},
"datasource": "Prometheus",
"fontSize": "80%",
"format": "short",
"gridPos": {
"h": 7,
"w": 6,
"x": 12,
"y": 1
},
"id": 7,
"interval": null,
"legend": {
"show": true,
"values": true
},
"legendType": "Right side",
"links": [],
"maxDataPoints": 3,
"nullPointMode": "connected",
"pieType": "pie",
"strokeWidth": 1,
"targets": [
{
"expr": "sum(rate(traefik_service_requests_total[5m])) by (service) ",
"format": "time_series",
"interval": "",
"intervalFactor": 2,
"legendFormat": "{{ service }}",
"refId": "A"
}
],
"title": "Requests by service",
"type": "grafana-piechart-panel",
"valueName": "total"
},
{
"aliasColors": {},
"breakPoint": "50%",
"cacheTimeout": null,
"combine": {
"label": "Others",
"threshold": 0
},
"datasource": "Prometheus",
"fontSize": "80%",
"format": "short",
"gridPos": {
"h": 7,
"w": 6,
"x": 18,
"y": 1
},
"id": 8,
"interval": null,
"legend": {
"show": true,
"values": true
},
"legendType": "Right side",
"links": [],
"maxDataPoints": 3,
"nullPointMode": "connected",
"pieType": "pie",
"strokeWidth": 1,
"targets": [
{
"expr": "sum(rate(traefik_entrypoint_requests_total{entrypoint =~ \"$entrypoint\"}[5m])) by (entrypoint) ",
"format": "time_series",
"interval": "",
"intervalFactor": 2,
"legendFormat": "{{ entrypoint }}",
"refId": "A"
}
],
"title": "Requests by protocol",
"type": "grafana-piechart-panel",
"valueName": "total"
},
{
"aliasColors": {},
"bars": true,
"dashLength": 10,
"dashes": false,
"datasource": "Prometheus",
"fieldConfig": {
"defaults": {
"links": []
},
"overrides": []
},
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 7,
"w": 12,
"x": 0,
"y": 8
},
"hiddenSeries": false,
"id": 5,
"legend": {
"alignAsTable": true,
"avg": false,
"current": true,
"max": true,
"min": true,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": false,
"linewidth": 1,
"links": [],
"nullPointMode": "null",
"options": {
"alertThreshold": true
},
"percentage": false,
"pluginVersion": "8.0.3",
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": true,
"steppedLine": false,
"targets": [
{
"expr": "rate(traefik_entrypoint_requests_total{entrypoint=~\"$entrypoint\",code=\"200\"}[5m])",
"format": "time_series",
"interval": "",
"intervalFactor": 2,
"legendFormat": "{{method}} : {{code}}",
"refId": "A"
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Status code 200 over 5min",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "short",
"label": null,
"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
}
},
{
"aliasColors": {},
"bars": true,
"dashLength": 10,
"dashes": false,
"datasource": "Prometheus",
"fieldConfig": {
"defaults": {
"links": []
},
"overrides": []
},
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 7,
"w": 12,
"x": 12,
"y": 8
},
"hiddenSeries": false,
"id": 6,
"legend": {
"alignAsTable": true,
"avg": false,
"current": true,
"max": true,
"min": true,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": false,
"linewidth": 1,
"links": [],
"nullPointMode": "null",
"options": {
"alertThreshold": true
},
"percentage": false,
"pluginVersion": "8.0.3",
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": true,
"steppedLine": false,
"targets": [
{
"expr": "rate(traefik_entrypoint_requests_total{entrypoint=~\"$entrypoint\",code!=\"200\"}[5m])",
"format": "time_series",
"intervalFactor": 2,
"legendFormat": "{{ method }} : {{code}}",
"refId": "A"
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Others status code over 5min",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "short",
"label": null,
"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
}
},
{
"collapsed": false,
"datasource": "Prometheus",
"fieldConfig": {
"defaults": {},
"overrides": []
},
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 15
},
"id": 10,
"panels": [],
"title": "$service stats",
"type": "row"
},
{
"cacheTimeout": null,
"datasource": "Prometheus",
"fieldConfig": {
"defaults": {
"color": {
"fixedColor": "rgb(31, 120, 193)",
"mode": "fixed"
},
"mappings": [
{
"options": {
"match": "null",
"result": {
"text": "N/A"
}
},
"type": "special"
}
],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
},
"unit": "ms"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 8,
"x": 0,
"y": 16
},
"id": 4,
"interval": null,
"links": [],
"maxDataPoints": 100,
"options": {
"colorMode": "none",
"graphMode": "area",
"justifyMode": "auto",
"orientation": "horizontal",
"reduceOptions": {
"calcs": [
"mean"
],
"fields": "",
"values": false
},
"text": {},
"textMode": "auto"
},
"pluginVersion": "8.0.3",
"targets": [
{
"expr": "sum(traefik_service_request_duration_seconds_sum{service=\"$service\"}) / sum(traefik_service_requests_total{service=\"$service\"}) * 1000",
"format": "time_series",
"interval": "",
"intervalFactor": 2,
"legendFormat": "",
"refId": "A"
}
],
"title": "$service response time",
"type": "stat"
},
{
"aliasColors": {},
"breakPoint": "50%",
"cacheTimeout": null,
"combine": {
"label": "Others",
"threshold": 0
},
"datasource": "Prometheus",
"fontSize": "80%",
"format": "short",
"gridPos": {
"h": 7,
"w": 8,
"x": 8,
"y": 16
},
"id": 2,
"interval": null,
"legend": {
"percentage": true,
"show": true,
"values": true
},
"legendType": "Right side",
"links": [],
"maxDataPoints": 3,
"nullPointMode": "connected",
"pieType": "pie",
"strokeWidth": 1,
"targets": [
{
"expr": "traefik_service_requests_total{service=\"$service\"}",
"format": "time_series",
"interval": "",
"intervalFactor": 2,
"legendFormat": "{{method}} : {{code}}",
"refId": "A"
}
],
"title": "$service return code",
"type": "grafana-piechart-panel",
"valueName": "current"
},
{
"aliasColors": {},
"bars": true,
"dashLength": 10,
"dashes": false,
"datasource": "Prometheus",
"fieldConfig": {
"defaults": {
"links": []
},
"overrides": []
},
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 7,
"w": 8,
"x": 16,
"y": 16
},
"hiddenSeries": false,
"id": 3,
"legend": {
"alignAsTable": true,
"avg": true,
"current": false,
"max": true,
"min": true,
"rightSide": false,
"show": true,
"total": false,
"values": true
},
"lines": false,
"linewidth": 1,
"links": [],
"nullPointMode": "null",
"options": {
"alertThreshold": true
},
"percentage": false,
"pluginVersion": "8.0.3",
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"expr": "sum(rate(traefik_service_requests_total{service=\"$service\"}[5m]))",
"format": "time_series",
"interval": "",
"intervalFactor": 2,
"legendFormat": "Total requests $service",
"refId": "A"
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Total requests over 5min $service",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"$$hashKey": "object:509",
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"$$hashKey": "object:510",
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
],
"yaxis": {
"align": false,
"alignLevel": null
}
}
],
"refresh": "5m",
"schemaVersion": 30,
"style": "dark",
"tags": [
"prometheus",
"traefik"
],
"templating": {
"list": [
{
"allValue": null,
"current": {
"selected": false,
"text": "dev-connect-01-connect-admin@docker",
"value": "dev-connect-01-connect-admin@docker"
},
"datasource": "Prometheus",
"definition": "label_values(service)",
"description": null,
"error": null,
"hide": 0,
"includeAll": false,
"label": null,
"multi": false,
"name": "service",
"options": [],
"query": {
"query": "label_values(service)",
"refId": "Prometheus-service-Variable-Query"
},
"refresh": 1,
"regex": "",
"skipUrlSync": false,
"sort": 0,
"tagValuesQuery": "",
"tagsQuery": "",
"type": "query",
"useTags": false
},
{
"allValue": null,
"current": {
"selected": false,
"text": "All",
"value": "$__all"
},
"datasource": "Prometheus",
"definition": "",
"description": null,
"error": null,
"hide": 0,
"includeAll": true,
"label": null,
"multi": true,
"name": "entrypoint",
"options": [],
"query": {
"query": "label_values(entrypoint)",
"refId": "Prometheus-entrypoint-Variable-Query"
},
"refresh": 1,
"regex": "",
"skipUrlSync": false,
"sort": 0,
"tagValuesQuery": "",
"tagsQuery": "",
"type": "query",
"useTags": false
}
]
},
"time": {
"from": "now-1h",
"to": "now"
},
"timepicker": {
"refresh_intervals": [
"5s",
"10s",
"30s",
"1m",
"5m",
"15m",
"30m",
"1h",
"2h",
"1d"
],
"time_options": [
"5m",
"15m",
"1h",
"6h",
"12h",
"24h",
"2d",
"7d",
"30d"
]
},
"timezone": "",
"title": "Traefik 2.2",
"uid": "O23g2BeWk",
"version": 1
}

@ -63,6 +63,72 @@ scrape_configs:
target_label: instance target_label: instance
replacement: $1 replacement: $1
##############################################
- job_name: 'harbor-exporter'
scheme: {{ http_s }}
metrics_path: '/metrics'
static_configs:
# Scrape metrics from the Harbor exporter component
- targets: [
{% for host in groups['harbor'] | default([]) %}
'{{ host }}.{{ domain }}:{{ monitor_port_harbor }}',
{% endfor %}
]
labels:
env: {{ stage }}
project: harbor
application: harbor-exporter
relabel_configs:
- source_labels: [__address__]
regex: (.*):.*
target_label: instance
replacement: $1
- job_name: 'harbor-core'
scheme: {{ http_s }}
metrics_path: '/metrics'
params:
# Scrape metrics from the Harbor core component
comp: ['core']
static_configs:
- targets: [
{% for host in groups['harbor'] | default([]) %}
'{{ host }}.{{ domain }}:{{ monitor_port_harbor }}',
{% endfor %}
]
labels:
env: {{ stage }}
project: harbor
application: harbor-core
relabel_configs:
- source_labels: [__address__]
regex: (.*):.*
target_label: instance
replacement: $1
- job_name: 'harbor-registry'
scheme: {{ http_s }}
metrics_path: '/metrics'
params:
# Scrape metrics from the Harbor registry component
comp: ['registry']
static_configs:
- targets: [
{% for host in groups['harbor'] | default([]) %}
'{{ host }}.{{ domain }}:{{ monitor_port_harbor }}',
{% endfor %}
]
labels:
env: {{ stage }}
project: harbor
application: harbor-registry
relabel_configs:
- source_labels: [__address__]
regex: (.*):.*
target_label: instance
replacement: $1
############################################## ##############################################
- job_name: 'connect' - job_name: 'connect'

@ -87,6 +87,13 @@
to = "monitoring-elastic" to = "monitoring-elastic"
scheme = "https" scheme = "https"
### system monitoring port - harbor metrics ###
[entryPoints.monitoring-harbor]
address = ":{{ monitor_port_harbor }}"
[entryPoints.monitoring-harbor.http.redirections.entryPoint]
to = "monitoring-harbor"
scheme = "https"
### service monitoring port - metrics for all served services ### ### service monitoring port - metrics for all served services ###
[entryPoints.admin-service] [entryPoints.admin-service]
address = ":{{ monitor_port_service }}" address = ":{{ monitor_port_service }}"

Loading…
Cancel
Save