From 309c677270ad0728e2936afb4bd75d56ad7ac122 Mon Sep 17 00:00:00 2001 From: Frederic Branczyk <fbranczyk@gmail.com> Date: Thu, 27 Apr 2017 12:35:06 +0200 Subject: [PATCH] kube-prometheus: extract ServiceMonitors into single files Starting with Kubernetes 1.6 `kubectl apply` works for TPRs so we can start using it, therefore using multiple files is no issue. --- hack/cluster-monitoring/deploy | 18 +---- ...heus-k8s-service-monitor-alertmanager.yaml | 12 ++++ ...metheus-k8s-service-monitor-apiserver.yaml | 23 ++++++ ...eus-k8s-service-monitor-k8s-apps-http.yaml | 23 ++++++ ...8s-service-monitor-kube-state-metrics.yaml | 19 +++++ ...rometheus-k8s-service-monitor-kubelet.yaml | 17 +++++ ...eus-k8s-service-monitor-node-exporter.yaml | 18 +++++ ...etheus-k8s-service-monitor-prometheus.yaml | 12 ++++ .../prometheus-k8s-servicemonitors.yaml | 72 ------------------- 9 files changed, 126 insertions(+), 88 deletions(-) create mode 100644 manifests/prometheus/prometheus-k8s-service-monitor-alertmanager.yaml create mode 100644 manifests/prometheus/prometheus-k8s-service-monitor-apiserver.yaml create mode 100644 manifests/prometheus/prometheus-k8s-service-monitor-k8s-apps-http.yaml create mode 100644 manifests/prometheus/prometheus-k8s-service-monitor-kube-state-metrics.yaml create mode 100644 manifests/prometheus/prometheus-k8s-service-monitor-kubelet.yaml create mode 100644 manifests/prometheus/prometheus-k8s-service-monitor-node-exporter.yaml create mode 100644 manifests/prometheus/prometheus-k8s-service-monitor-prometheus.yaml delete mode 100644 manifests/prometheus/prometheus-k8s-servicemonitors.yaml diff --git a/hack/cluster-monitoring/deploy b/hack/cluster-monitoring/deploy index 3c3a5dcd..2d0d50ad 100755 --- a/hack/cluster-monitoring/deploy +++ b/hack/cluster-monitoring/deploy @@ -26,20 +26,6 @@ echo "done!" kctl apply -f manifests/exporters kctl apply -f manifests/grafana/grafana-credentials.yaml kctl apply -f manifests/grafana - -kctl apply -f manifests/prometheus/prometheus-k8s-rules.yaml -kctl apply -f manifests/prometheus/prometheus-k8s-service.yaml -kctl apply -f manifests/prometheus/prometheus-cluster-role-binding.yaml -kctl apply -f manifests/prometheus/prometheus-cluster-role.yaml -kctl apply -f manifests/prometheus/prometheus-k8s-service-account.yaml - -kctl apply -f manifests/alertmanager/alertmanager-config.yaml -kctl apply -f manifests/alertmanager/alertmanager-service.yaml - -# `kubectl apply` is currently not working for third party resources so we are -# using `kubectl create` here for the time being. -# (https://github.com/kubernetes/kubernetes/issues/29542) -kctl create -f manifests/prometheus/prometheus-k8s-servicemonitors.yaml -kctl create -f manifests/prometheus/prometheus-k8s.yaml -kctl create -f manifests/alertmanager/alertmanager.yaml +kctl apply -f manifests/prometheus/ +kctl apply -f manifests/alertmanager/ diff --git a/manifests/prometheus/prometheus-k8s-service-monitor-alertmanager.yaml b/manifests/prometheus/prometheus-k8s-service-monitor-alertmanager.yaml new file mode 100644 index 00000000..d193b676 --- /dev/null +++ b/manifests/prometheus/prometheus-k8s-service-monitor-alertmanager.yaml @@ -0,0 +1,12 @@ +apiVersion: monitoring.coreos.com/v1alpha1 +kind: ServiceMonitor +metadata: + labels: + alertmanager: main + name: alertmanager +spec: + endpoints: + - port: web + selector: + matchExpressions: + - {key: alertmanager, operator: In, values: [main]} diff --git a/manifests/prometheus/prometheus-k8s-service-monitor-apiserver.yaml b/manifests/prometheus/prometheus-k8s-service-monitor-apiserver.yaml new file mode 100644 index 00000000..1fd793e5 --- /dev/null +++ b/manifests/prometheus/prometheus-k8s-service-monitor-apiserver.yaml @@ -0,0 +1,23 @@ +apiVersion: monitoring.coreos.com/v1alpha1 +kind: ServiceMonitor +metadata: + name: kube-apiserver + labels: + k8s-apps: https +spec: + jobLabel: provider + selector: + matchLabels: + component: apiserver + provider: kubernetes + namespaceSelector: + matchNames: + - default + endpoints: + - port: https + interval: 15s + scheme: https + tlsConfig: + caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + serverName: kubernetes + bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token diff --git a/manifests/prometheus/prometheus-k8s-service-monitor-k8s-apps-http.yaml b/manifests/prometheus/prometheus-k8s-service-monitor-k8s-apps-http.yaml new file mode 100644 index 00000000..fbfcda97 --- /dev/null +++ b/manifests/prometheus/prometheus-k8s-service-monitor-k8s-apps-http.yaml @@ -0,0 +1,23 @@ +apiVersion: monitoring.coreos.com/v1alpha1 +kind: ServiceMonitor +metadata: + name: k8s-apps-http + namespace: monitoring + labels: + k8s-apps: http +spec: + jobLabel: k8s-app + selector: + matchExpressions: + - {key: k8s-app, operator: Exists} + - {key: k8s-app, operator: NotIn, values: [kubelet]} + namespaceSelector: + matchNames: + - kube-system + endpoints: + - port: http-metrics + interval: 15s + - port: http-metrics-dnsmasq + interval: 15s + - port: http-metrics-skydns + interval: 15s diff --git a/manifests/prometheus/prometheus-k8s-service-monitor-kube-state-metrics.yaml b/manifests/prometheus/prometheus-k8s-service-monitor-kube-state-metrics.yaml new file mode 100644 index 00000000..c4ed1afc --- /dev/null +++ b/manifests/prometheus/prometheus-k8s-service-monitor-kube-state-metrics.yaml @@ -0,0 +1,19 @@ +apiVersion: monitoring.coreos.com/v1alpha1 +kind: ServiceMonitor +metadata: + name: kube-state-metrics + namespace: monitoring + labels: + k8s-apps: http +spec: + jobLabel: k8s-app + selector: + matchLabels: + k8s-app: kube-state-metrics + namespaceSelector: + matchNames: + - monitoring + endpoints: + - port: http-metrics + interval: 15s + honorLabels: true diff --git a/manifests/prometheus/prometheus-k8s-service-monitor-kubelet.yaml b/manifests/prometheus/prometheus-k8s-service-monitor-kubelet.yaml new file mode 100644 index 00000000..4e9aabd8 --- /dev/null +++ b/manifests/prometheus/prometheus-k8s-service-monitor-kubelet.yaml @@ -0,0 +1,17 @@ +apiVersion: monitoring.coreos.com/v1alpha1 +kind: ServiceMonitor +metadata: + name: kubelet + labels: + k8s-apps: http +spec: + jobLabel: k8s-app + selector: + matchLabels: + k8s-app: kubelet + namespaceSelector: + matchNames: + - kube-system + endpoints: + - port: http-metrics + interval: 15s diff --git a/manifests/prometheus/prometheus-k8s-service-monitor-node-exporter.yaml b/manifests/prometheus/prometheus-k8s-service-monitor-node-exporter.yaml new file mode 100644 index 00000000..a7b20301 --- /dev/null +++ b/manifests/prometheus/prometheus-k8s-service-monitor-node-exporter.yaml @@ -0,0 +1,18 @@ +apiVersion: monitoring.coreos.com/v1alpha1 +kind: ServiceMonitor +metadata: + name: node-exporter + namespace: monitoring + labels: + k8s-apps: http +spec: + jobLabel: k8s-app + selector: + matchLabels: + k8s-app: node-exporter + namespaceSelector: + matchNames: + - monitoring + endpoints: + - port: http-metrics + interval: 15s diff --git a/manifests/prometheus/prometheus-k8s-service-monitor-prometheus.yaml b/manifests/prometheus/prometheus-k8s-service-monitor-prometheus.yaml new file mode 100644 index 00000000..5e5d17be --- /dev/null +++ b/manifests/prometheus/prometheus-k8s-service-monitor-prometheus.yaml @@ -0,0 +1,12 @@ +apiVersion: monitoring.coreos.com/v1alpha1 +kind: ServiceMonitor +metadata: + name: prometheus + labels: + prometheus: k8s +spec: + endpoints: + - port: web + selector: + matchExpressions: + - {key: prometheus, operator: In, values: [k8s]} diff --git a/manifests/prometheus/prometheus-k8s-servicemonitors.yaml b/manifests/prometheus/prometheus-k8s-servicemonitors.yaml deleted file mode 100644 index ac2a26a1..00000000 --- a/manifests/prometheus/prometheus-k8s-servicemonitors.yaml +++ /dev/null @@ -1,72 +0,0 @@ -apiVersion: monitoring.coreos.com/v1alpha1 -kind: ServiceMonitor -metadata: - name: kube-apiserver - labels: - k8s-apps: https -spec: - jobLabel: provider - selector: - matchLabels: - component: apiserver - provider: kubernetes - namespaceSelector: - matchNames: - - default - endpoints: - - port: https - interval: 15s - scheme: https - tlsConfig: - caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt - serverName: kubernetes - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token ---- -apiVersion: monitoring.coreos.com/v1alpha1 -kind: ServiceMonitor -metadata: - name: k8s-apps-http - labels: - k8s-apps: http -spec: - jobLabel: k8s-app - selector: - matchExpressions: - - {key: k8s-app, operator: Exists} - namespaceSelector: - matchNames: - - kube-system - - monitoring - endpoints: - - port: http-metrics - interval: 15s - - port: http-metrics-dnsmasq - interval: 15s - - port: http-metrics-skydns - interval: 15s ---- -apiVersion: monitoring.coreos.com/v1alpha1 -kind: ServiceMonitor -metadata: - name: prometheus - labels: - prometheus: k8s -spec: - endpoints: - - port: web - selector: - matchExpressions: - - {key: prometheus, operator: In, values: [k8s]} ---- -apiVersion: monitoring.coreos.com/v1alpha1 -kind: ServiceMonitor -metadata: - labels: - alertmanager: main - name: alertmanager -spec: - endpoints: - - port: web - selector: - matchExpressions: - - {key: alertmanager, operator: In, values: [main]} \ No newline at end of file -- GitLab