diff --git a/README.md b/README.md index c8afb50b0f2cab4a9590f01f120ddda9326e61f5..eff1e4e9b885477287994fc08b77529f6b275b89 100644 --- a/README.md +++ b/README.md @@ -224,6 +224,7 @@ local kp = // serviceMonitor is separated so that it can be created after the CRDs are ready { 'prometheus-operator-serviceMonitor': kp.prometheusOperator.serviceMonitor } + { ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } + +{ ['blackbox-exporter-' + name]: kp.blackboxExporter[name] for name in std.objectFields(kp.blackboxExporter) } + { ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } + { ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } + { ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } + diff --git a/docs/developing-prometheus-rules-and-grafana-dashboards.md b/docs/developing-prometheus-rules-and-grafana-dashboards.md index ee7be4e0dd2d641caa4f0a535d6c81c0bcc7f7b7..f9decdcd5563740b333b37f64bdce9d873496edc 100644 --- a/docs/developing-prometheus-rules-and-grafana-dashboards.md +++ b/docs/developing-prometheus-rules-and-grafana-dashboards.md @@ -34,6 +34,7 @@ local kp = // serviceMonitor is separated so that it can be created after the CRDs are ready { 'prometheus-operator-serviceMonitor': kp.prometheusOperator.serviceMonitor } + { ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } + +{ ['blackbox-exporter-' + name]: kp.blackboxExporter[name] for name in std.objectFields(kp.blackboxExporter) } + { ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } + { ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } + { ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } + diff --git a/example.jsonnet b/example.jsonnet index 15a801f80100cc7eb77161059bbd390dbb66d758..a459460db2451ce5548f093b9b01e3fb92a1dbf3 100644 --- a/example.jsonnet +++ b/example.jsonnet @@ -22,6 +22,7 @@ local kp = // serviceMonitor is separated so that it can be created after the CRDs are ready { 'prometheus-operator-serviceMonitor': kp.prometheusOperator.serviceMonitor } + { ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } + +{ ['blackbox-exporter-' + name]: kp.blackboxExporter[name] for name in std.objectFields(kp.blackboxExporter) } + { ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } + { ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } + { ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } + diff --git a/examples/kustomize.jsonnet b/examples/kustomize.jsonnet index 38dd6c89d66559beff0c949545c2f1e5b40cccbf..7b1cf6a2e74e1147cb9454bc4b6be1cbbdda8223 100644 --- a/examples/kustomize.jsonnet +++ b/examples/kustomize.jsonnet @@ -16,6 +16,7 @@ local manifests = // serviceMonitor is separated so that it can be created after the CRDs are ready { 'prometheus-operator-serviceMonitor': kp.prometheusOperator.serviceMonitor } + { ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } + + { ['blackbox-exporter-' + name]: kp.blackboxExporter[name] for name in std.objectFields(kp.blackboxExporter) } + { ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } + { ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } + { ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } + diff --git a/kustomization.yaml b/kustomization.yaml index b067b22f5d0aada60a2eab82bf2baa581d408c6f..bd00d54fcf6b34d99cf2e8ea4ffe1acdfbaec7b1 100644 --- a/kustomization.yaml +++ b/kustomization.yaml @@ -6,6 +6,11 @@ resources: - ./manifests/alertmanager-service.yaml - ./manifests/alertmanager-serviceAccount.yaml - ./manifests/alertmanager-serviceMonitor.yaml +- ./manifests/blackbox-exporter-configuration.yaml +- ./manifests/blackbox-exporter-deployment.yaml +- ./manifests/blackbox-exporter-service.yaml +- ./manifests/blackbox-exporter-serviceAccount.yaml +- ./manifests/blackbox-exporter-serviceMonitor.yaml - ./manifests/grafana-dashboardDatasources.yaml - ./manifests/grafana-dashboardDefinitions.yaml - ./manifests/grafana-dashboardSources.yaml diff --git a/manifests/blackbox-exporter-configuration.yaml b/manifests/blackbox-exporter-configuration.yaml new file mode 100644 index 0000000000000000000000000000000000000000..497945ec80f646bcec55e625eefa8e78e64f982c --- /dev/null +++ b/manifests/blackbox-exporter-configuration.yaml @@ -0,0 +1,38 @@ +apiVersion: v1 +data: + config.yml: |- + "modules": + "http_2xx": + "prober": "http" + "http_post_2xx": + "http": + "method": "POST" + "prober": "http" + "irc_banner": + "prober": "tcp" + "tcp": + "query_response": + - "send": "NICK prober" + - "send": "USER prober prober prober :prober" + - "expect": "PING :([^ ]+)" + "send": "PONG ${1}" + - "expect": "^:[^ ]+ 001" + "pop3s_banner": + "prober": "tcp" + "tcp": + "query_response": + - "expect": "^+OK" + "tls": true + "tls_config": + "insecure_skip_verify": false + "ssh_banner": + "prober": "tcp" + "tcp": + "query_response": + - "expect": "^SSH-2.0-" + "tcp_connect": + "prober": "tcp" +kind: ConfigMap +metadata: + name: blackbox-exporter-configuration + namespace: monitoring diff --git a/manifests/blackbox-exporter-deployment.yaml b/manifests/blackbox-exporter-deployment.yaml new file mode 100644 index 0000000000000000000000000000000000000000..c7874949a5c78925da97fba898979b37d645fe69 --- /dev/null +++ b/manifests/blackbox-exporter-deployment.yaml @@ -0,0 +1,67 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app.kubernetes.io/name: blackbox-exporter + app.kubernetes.io/version: v0.18.0 + name: blackbox-exporter + namespace: monitoring +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: blackbox-exporter + template: + metadata: + labels: + app.kubernetes.io/name: blackbox-exporter + app.kubernetes.io/version: v0.18.0 + spec: + containers: + - image: quay.io/prometheus/blackbox-exporter:v0.18.0 + name: blackbox-exporter + ports: + - containerPort: 9115 + name: http + resources: + limits: + cpu: 20m + memory: 40Mi + requests: + cpu: 10m + memory: 20Mi + securityContext: + runAsNonRoot: true + runAsUser: 65534 + volumeMounts: + - mountPath: /etc/blackbox_exporter/ + name: config + readOnly: true + - args: + - --webhook-url=http://localhost:9115/-/reload + - --volume-dir=/etc/blackbox_exporter/ + image: jimmidyson/configmap-reload:v0.4.0 + name: module-configmap-reloader + resources: + limits: + cpu: 20m + memory: 40Mi + requests: + cpu: 10m + memory: 20Mi + securityContext: + runAsNonRoot: true + runAsUser: 65534 + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: FallbackToLogsOnError + volumeMounts: + - mountPath: /etc/blackbox_exporter/ + name: config + readOnly: true + nodeSelector: + kubernetes.io/os: linux + serviceAccountName: blackbox-exporter + volumes: + - configMap: + name: blackbox-exporter-configuration + name: config diff --git a/manifests/blackbox-exporter-service.yaml b/manifests/blackbox-exporter-service.yaml new file mode 100644 index 0000000000000000000000000000000000000000..b4895e7166641b9517f93e0ef5c9a3c7fac035a7 --- /dev/null +++ b/manifests/blackbox-exporter-service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app.kubernetes.io/name: blackbox-exporter + app.kubernetes.io/version: v0.18.0 + name: blackbox-exporter + namespace: monitoring +spec: + ports: + - name: http + port: 9115 + targetPort: http + selector: + app.kubernetes.io/name: blackbox-exporter diff --git a/manifests/blackbox-exporter-serviceAccount.yaml b/manifests/blackbox-exporter-serviceAccount.yaml new file mode 100644 index 0000000000000000000000000000000000000000..ac2acefb2e3aa946f502a84628d47cb64217721a --- /dev/null +++ b/manifests/blackbox-exporter-serviceAccount.yaml @@ -0,0 +1,5 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: blackbox-exporter + namespace: monitoring diff --git a/manifests/blackbox-exporter-serviceMonitor.yaml b/manifests/blackbox-exporter-serviceMonitor.yaml new file mode 100644 index 0000000000000000000000000000000000000000..ae39c5a8f11660ee07d97cf3bb3c5add1b2679ef --- /dev/null +++ b/manifests/blackbox-exporter-serviceMonitor.yaml @@ -0,0 +1,16 @@ +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + labels: + app.kubernetes.io/name: blackbox-exporter + app.kubernetes.io/version: v0.18.0 + name: blackbox-exporter + namespace: monitoring +spec: + endpoints: + - interval: 30s + path: /metrics + port: http + selector: + matchLabels: + app.kubernetes.io/name: blackbox-exporter