Questo contenuto non è disponibile nella lingua selezionata.
Chapter 7. Managing metrics
You can collect metrics to monitor how cluster components and your own workloads are performing.
7.1. Understanding metrics Copia collegamentoCollegamento copiato negli appunti!
In OpenShift Container Platform 4.11, cluster components are monitored by scraping metrics exposed through service endpoints. You can also configure metrics collection for user-defined projects.
You can define the metrics that you want to provide for your own workloads by using Prometheus client libraries at the application level.
In OpenShift Container Platform, metrics are exposed through an HTTP service endpoint under the
/metrics
curl
http://<endpoint>/metrics
prometheus-example-app
$ curl http://<example_app_endpoint>/metrics
Example output
# HELP http_requests_total Count of all HTTP requests
# TYPE http_requests_total counter
http_requests_total{code="200",method="get"} 4
http_requests_total{code="404",method="get"} 2
# HELP version Version information about this binary
# TYPE version gauge
version{version="v0.1.0"} 1
7.2. Setting up metrics collection for user-defined projects Copia collegamentoCollegamento copiato negli appunti!
You can create a
ServiceMonitor
/metrics
This section describes how to deploy a sample service in a user-defined project and then create a
ServiceMonitor
7.2.1. Deploying a sample service Copia collegamentoCollegamento copiato negli appunti!
To test monitoring of a service in a user-defined project, you can deploy a sample service.
Procedure
-
Create a YAML file for the service configuration. In this example, it is called .
prometheus-example-app.yaml Add the following deployment and service configuration details to the file:
apiVersion: v1 kind: Namespace metadata: name: ns1 --- apiVersion: apps/v1 kind: Deployment metadata: labels: app: prometheus-example-app name: prometheus-example-app namespace: ns1 spec: replicas: 1 selector: matchLabels: app: prometheus-example-app template: metadata: labels: app: prometheus-example-app spec: containers: - image: ghcr.io/rhobs/prometheus-example-app:0.4.2 imagePullPolicy: IfNotPresent name: prometheus-example-app --- apiVersion: v1 kind: Service metadata: labels: app: prometheus-example-app name: prometheus-example-app namespace: ns1 spec: ports: - port: 8080 protocol: TCP targetPort: 8080 name: web selector: app: prometheus-example-app type: ClusterIPThis configuration deploys a service named
in the user-definedprometheus-example-appproject. This service exposes the customns1metric.versionApply the configuration to the cluster:
$ oc apply -f prometheus-example-app.yamlIt takes some time to deploy the service.
You can check that the pod is running:
$ oc -n ns1 get podExample output
NAME READY STATUS RESTARTS AGE prometheus-example-app-7857545cb7-sbgwq 1/1 Running 0 81m
7.2.2. Specifying how a service is monitored Copia collegamentoCollegamento copiato negli appunti!
To use the metrics exposed by your service, you must configure OpenShift Container Platform monitoring to scrape metrics from the
/metrics
ServiceMonitor
PodMonitor
Service
This procedure shows you how to create a
ServiceMonitor
Prerequisites
-
You have access to the cluster as a user with the cluster role or the
cluster-admincluster role.monitoring-edit - You have enabled monitoring for user-defined projects.
For this example, you have deployed the
sample service in theprometheus-example-appproject.ns1NoteThe
sample service does not support TLS authentication.prometheus-example-app
Procedure
-
Create a YAML file for the resource configuration. In this example, the file is called
ServiceMonitor.example-app-service-monitor.yaml Add the following
resource configuration details:ServiceMonitorapiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: labels: k8s-app: prometheus-example-monitor name: prometheus-example-monitor namespace: ns1 spec: endpoints: - interval: 30s port: web scheme: http selector: matchLabels: app: prometheus-example-appThis defines a
resource that scrapes the metrics exposed by theServiceMonitorsample service, which includes theprometheus-example-appmetric.versionNoteA
resource in a user-defined namespace can only discover services in the same namespace. That is, theServiceMonitorfield of thenamespaceSelectorresource is always ignored.ServiceMonitorApply the configuration to the cluster:
$ oc apply -f example-app-service-monitor.yamlIt takes some time to deploy the
resource.ServiceMonitorYou can check that the
resource is running:ServiceMonitor$ oc -n ns1 get servicemonitorExample output
NAME AGE prometheus-example-monitor 81m