Configuring Prometheus with Prometheus Operator: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
 
(22 intermediate revisions by the same user not shown)
Line 2: Line 2:
* https://coreos.com/operators/prometheus/docs/0.17.0/index.html
* https://coreos.com/operators/prometheus/docs/0.17.0/index.html
* https://github.com/prometheus-operator/prometheus-operator
* https://github.com/prometheus-operator/prometheus-operator
* https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md
=Internal=
=Internal=
* [[Prometheus_Configuration#Configuring_Prometheus_with_Prometheus_Operator|Prometheus Configuration]]
* [[Prometheus_Configuration#Configuring_Prometheus_with_Prometheus_Operator|Prometheus Configuration]]
* [[Prometheus Operator Concepts]]
=Overview=
=Overview=
To monitor a target, create a ServiceMonitor custom resource:


=Add a Target=
=Add a Monitoring Target=
To add a monitoring [[Prometheus_Concepts#Target|target]], deploy a [[Prometheus_Operator_Concepts#ServiceMonitor_Resource|ServiceMonitor]] custom resource:
<syntaxhighlight lang='bash'>
namespace="prometheus"
cat <<EOF | kubectl -n ${namespace} apply -f -
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: pushgateway
  namespace: ${namespace}
  labels:
    release: prometheus
spec:
  endpoints:
  - port: 'pushgateway'
    path: /metrics
    # default interval 30s
    interval: 15s
  namespaceSelector:
    matchNames:
    - ${namespace}
  selector:
    matchLabels:
      function: pushgateway-target
EOF
</syntaxhighlight>
 
⚠️ The endpoint "port" element must be a string, and it must be the [[Kubernetes_Service_Manifest#name|name]] of the port exposed by the corresponding Service:
<syntaxhighlight lang='yaml'>
apiVersion: v1
kind: Service
...
spec:
  ports:
  - name: 'pushgateway'
    port: 9091
    targetPort: 9091
    ...
</syntaxhighlight>
 
The ServiceMonitor resource must carry a label that will identify it to the [[Prometheus_Operator_Concepts#Prometheus_Resource|Prometheus]] custom resource by matching the Prometheus resource "serviceMonitorSelector":
<syntaxhighlight lang='yaml'>
apiVersion: monitoring.coreos.com/v1
kind: Prometheus
...
spec:
  serviceMonitorSelector:
    matchLabels:
      release: prometheus
</syntaxhighlight>
Also, ServiceMonitor selector must match monitored [[Kubernetes_Service_Concepts#Service_.28ClusterIP_Service.29|Services]]' labels.
 
If the ServiceMonitor was configured correctly, the new monitoring target surfaces in the Prometheus server configuration after a while. The configuration can be inspected from the server's [[Prometheus_Concepts#Prometheus_Console|console]] (Status → Configuration). Also the console has a "Targets" section where the target should show up:
[[File: SuccessfulPrometheusTarget.png]]

Latest revision as of 00:45, 15 October 2020

External

Internal

Overview

Add a Monitoring Target

To add a monitoring target, deploy a ServiceMonitor custom resource:

namespace="prometheus"
cat <<EOF | kubectl -n ${namespace} apply -f -
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: pushgateway
  namespace: ${namespace}
  labels:
    release: prometheus
spec:
  endpoints:
  - port: 'pushgateway'
    path: /metrics
    # default interval 30s
    interval: 15s
  namespaceSelector:
    matchNames:
    - ${namespace}
  selector:
    matchLabels:
      function: pushgateway-target
EOF

⚠️ The endpoint "port" element must be a string, and it must be the name of the port exposed by the corresponding Service:

apiVersion: v1
kind: Service
...
spec:
  ports:
  - name: 'pushgateway'
    port: 9091
    targetPort: 9091
    ...

The ServiceMonitor resource must carry a label that will identify it to the Prometheus custom resource by matching the Prometheus resource "serviceMonitorSelector":

apiVersion: monitoring.coreos.com/v1
kind: Prometheus
...
spec:
  serviceMonitorSelector:
    matchLabels:
      release: prometheus

Also, ServiceMonitor selector must match monitored Services' labels.

If the ServiceMonitor was configured correctly, the new monitoring target surfaces in the Prometheus server configuration after a while. The configuration can be inspected from the server's console (Status → Configuration). Also the console has a "Targets" section where the target should show up: SuccessfulPrometheusTarget.png