1
0
Fork 0
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:
Fabian Reinartz 2016-10-18 16:33:15 +02:00
parent f95f6799bf
commit f66d48e9f4
6 changed files with 68 additions and 34 deletions

View file

@ -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 .

View file

@ -30,3 +30,6 @@ spec:
containers:
- name: example-app
image: fabxc/instrumented_app
ports:
- name: web
containerPort: 8080

View file

@ -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"

View file

@ -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"

View file

@ -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 }}

View file

@ -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",