mirror of
https://github.com/prometheus-operator/prometheus-operator.git
synced 2025-04-21 11:48:53 +00:00
Adjust config generation for Prometheus v1.3.0-beta.0
This commit is contained in:
parent
f95f6799bf
commit
f66d48e9f4
6 changed files with 68 additions and 34 deletions
3
Makefile
3
Makefile
|
@ -1,2 +1,5 @@
|
|||
build:
|
||||
go build github.com/coreos/kube-prometheus-controller/cmd/controller
|
||||
|
||||
container:
|
||||
docker build -t quay.io/coreos/kube-prometheus-controller .
|
||||
|
|
|
@ -30,3 +30,6 @@ spec:
|
|||
containers:
|
||||
- name: example-app
|
||||
image: fabxc/instrumented_app
|
||||
ports:
|
||||
- name: web
|
||||
containerPort: 8080
|
||||
|
|
|
@ -5,10 +5,9 @@ metadata:
|
|||
labels:
|
||||
app: example-app
|
||||
spec:
|
||||
# selector:
|
||||
# matchLabels:
|
||||
# app: example-app
|
||||
selector:
|
||||
matchLabels:
|
||||
app: example-app
|
||||
endpoints:
|
||||
- path: "/metrics"
|
||||
scrapeInterval: "30s"
|
||||
- port: "web"
|
||||
|
||||
|
|
|
@ -5,10 +5,10 @@ metadata:
|
|||
labels:
|
||||
prometheus: "main"
|
||||
spec:
|
||||
# monitors:
|
||||
# - selector:
|
||||
# matchLabels:
|
||||
# app: example-app
|
||||
monitors:
|
||||
- selector:
|
||||
matchLabels:
|
||||
app: example-app
|
||||
rules:
|
||||
- name: "example-app-alerts"
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package prometheus
|
||||
|
||||
import "text/template"
|
||||
import "html/template"
|
||||
|
||||
type TemplateConfig struct {
|
||||
ServiceMonitors map[string]ServiceMonitorObj
|
||||
|
@ -9,36 +9,54 @@ type TemplateConfig struct {
|
|||
var configTmpl = template.Must(template.New("config").Parse(`
|
||||
{{- block "scrapeConfigs" . -}}
|
||||
scrape_configs:
|
||||
{{- range $svc := .ServiceMonitors }}
|
||||
{{- range $ep := $svc.Spec.Endpoints }}
|
||||
- job_name: "{{ $svc.Name }}_{{ $ep.Port }}"
|
||||
scrape_interval: "{{ $svc.Spec.ScrapeInterval }}"
|
||||
{{- range $i, $mon := .ServiceMonitors }}
|
||||
{{- range $ep := $mon.Spec.Endpoints }}
|
||||
- job_name: "{{ $mon.Name }}_{{ $i }}"
|
||||
|
||||
{{- if ne $mon.Spec.ScrapeInterval "" }}
|
||||
scrape_interval: "{{ $mon.Spec.ScrapeInterval }}"
|
||||
{{- else }}
|
||||
scrape_interval: "30s"
|
||||
{{- end }}
|
||||
{{- if ne $ep.Path "" }}
|
||||
metrics_path: "{{ $ep.Path }}"
|
||||
{{- end }}
|
||||
{{- if ne $ep.Scheme "" }}
|
||||
scheme: "{{ $ep.Scheme }}"
|
||||
{{- end }}
|
||||
|
||||
kubernetes_sd_configs:
|
||||
- in_cluster: true
|
||||
api_servers:
|
||||
- "https://kubernetes"
|
||||
role: endpoint
|
||||
- role: endpoints
|
||||
tls_config:
|
||||
ca_file: "/var/run/secrets/kubernetes.io/serviceaccount/ca.crt"
|
||||
bearer_token_file: "/var/run/secrets/kubernetes.io/serviceaccount/token"
|
||||
|
||||
relabel_configs:
|
||||
{{- range $k, $v := $svc.Spec.Selector.MatchLabels }}
|
||||
#
|
||||
# FILTERING
|
||||
#
|
||||
{{- range $k, $v := $mon.Spec.Selector.MatchLabels }}
|
||||
- action: "keep"
|
||||
source_labels: ["__meta_kubernetes_service_label_{{ $k }}"]
|
||||
regex: "{{ $v }}"
|
||||
{{- end }}{{ if false}}
|
||||
{{- if not eq $ep.Port.StrVal "" }}
|
||||
{{- end }}
|
||||
{{- if ne $ep.Port "" }}
|
||||
- action: "keep"
|
||||
source_labels: ["__meta_kubernetes_pod_port_name"]
|
||||
regex: "{{ $ep.Port.String }}"
|
||||
{{- else if not eq $ep.Port.IntVal 0 }}
|
||||
- source_labels: ["__address__"]
|
||||
regex: "(.+):[0-9]+"
|
||||
target_label: "__address__"
|
||||
replacement: "$1:{{ $ep.Port.String }}"
|
||||
{{- end }}{{ end }}
|
||||
- source_labels: [__meta_kubernetes_service_namespace]
|
||||
source_labels: ["__meta_kubernetes_endpoint_port_name"]
|
||||
regex: "{{ $ep.Port }}"
|
||||
{{- else if ne $ep.TargetPort.StrVal "" }}
|
||||
- action: "keep"
|
||||
source_labels: ["__meta_kubernetes_pod_container_port_name"]
|
||||
regex: "{{ $ep.TargetPort.String }}"
|
||||
{{- else if ne $ep.TargetPort.IntVal 0 }}
|
||||
- action: "keep"
|
||||
source_labels: ["__meta_kubernetes_pod_container_port_number"]
|
||||
regex: "{{ $ep.TargetPort.String }}"
|
||||
{{- end }}
|
||||
#
|
||||
# TARGET LABELS
|
||||
#
|
||||
- source_labels: ["__meta_kubernetes_namespace"]
|
||||
target_label: "namespace"
|
||||
- action: "labelmap"
|
||||
regex: "__meta_kubernetes_service_label_(.+)"
|
||||
|
@ -46,9 +64,18 @@ scrape_configs:
|
|||
- action: "labelmap"
|
||||
regex: "__meta_kubernetes_pod_label_(.+)"
|
||||
replacement: "pod_$1"
|
||||
- source_labels: [__meta_kubernetes_service_name]
|
||||
#
|
||||
# JOB LABEL
|
||||
#
|
||||
{{- if ne $ep.Port "" }}
|
||||
- source_labels: ["__meta_kubernetes_service_name"]
|
||||
target_label: "job"
|
||||
replacement: "${1}_{{ $ep.Port }}"
|
||||
{{- else if ne $ep.TargetPort.String "" }}
|
||||
- source_labels: ["__meta_kubernetes_service_name"]
|
||||
target_label: "job"
|
||||
replacement: "${1}-{{ $ep.TargetPort.String }}"
|
||||
{{- end}}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
|
|
@ -43,8 +43,10 @@ type ServiceMonitorSpec struct {
|
|||
}
|
||||
|
||||
type Endpoint struct {
|
||||
Port intstr.IntOrString `json:"port"`
|
||||
Path string `json:"path"`
|
||||
Port string `json:"port"`
|
||||
TargetPort intstr.IntOrString `json:"targetPort"`
|
||||
Path string `json:"path"`
|
||||
Scheme string `json:"scheme"`
|
||||
}
|
||||
|
||||
type ServiceMonitorList struct {
|
||||
|
@ -107,7 +109,7 @@ func makeReplicaSet(name string, replicas int32) *apiExtensions.ReplicaSet {
|
|||
Containers: []apiV1.Container{
|
||||
{
|
||||
Name: "prometheus",
|
||||
Image: "quay.io/prometheus/prometheus:latest",
|
||||
Image: "quay.io/prometheus/prometheus:v1.3.0-beta.0",
|
||||
Ports: []apiV1.ContainerPort{
|
||||
{
|
||||
Name: "web",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue