1
0
mirror of https://github.com/openshift/openshift-docs.git synced 2026-02-05 21:46:22 +01:00

OBSDOCS-2004 scrape targets in multiple namespaces

This commit is contained in:
Gabriel McGoldrick
2025-06-26 10:48:56 +01:00
parent 99df1c4b74
commit 96d416df26
2 changed files with 209 additions and 1 deletions

View File

@@ -0,0 +1,206 @@
// Module included in the following assemblies:
//
// * observability/cluster-observability-operator/configuring-the-cluster-observability-operator-to-monitor-a-service.adoc
:_mod-docs-content-type: PROCEDURE
[id="monitoring-scrape-targets-in-multiple-namespaces_{context}"]
= Scrape targets in multiple namespaces
To scrape targets in multiple namespaces, set the namespace and resource selector in the `MonitoringStack` object.
.Prerequisites
* You have access to the cluster as a user with the `cluster-admin` cluster role or as a user with administrative permissions for the namespace.
* You have installed the {coo-full}.
.Procedure
. Deploy the following namespace object and `MonitoringStack` YAML file:
+
.Example `MonitoringStack`
[source,yaml]
----
apiVersion: v1
kind: Namespace
metadata:
name: ns1-coo
labels:
monitoring.rhobs/stack: multi-ns
---
apiVersion: monitoring.rhobs/v1alpha1
kind: MonitoringStack
metadata:
name: example-coo-monitoring-stack
namespace: ns1-coo
spec:
logLevel: debug
retention: 1d
resourceSelector:
matchLabels:
k8s-app: prometheus-coo-example-monitor
namespaceSelector:
matchLabels:
monitoring.rhobs/stack: multi-ns
----
. Deploy a sample application in the namespace `ns1-coo`, with an alert that is always firing:
+
[source,yaml]
----
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: prometheus-coo-example-app
name: prometheus-coo-example-app
namespace: ns1-coo
spec:
replicas: 1
selector:
matchLabels:
app: prometheus-coo-example-app
template:
metadata:
labels:
app: prometheus-coo-example-app
spec:
containers:
- image: ghcr.io/rhobs/prometheus-example-app:0.4.2
imagePullPolicy: IfNotPresent
name: prometheus-coo-example-app
---
apiVersion: v1
kind: Service
metadata:
labels:
app: prometheus-coo-example-app
name: prometheus-coo-example-app
namespace: ns1-coo
spec:
ports:
- port: 8080
protocol: TCP
targetPort: 8080
name: web
selector:
app: prometheus-coo-example-app
type: ClusterIP
---
apiVersion: monitoring.rhobs/v1
kind: ServiceMonitor
metadata:
labels:
k8s-app: prometheus-coo-example-monitor
name: prometheus-coo-example-monitor
namespace: ns1-coo
spec:
endpoints:
- interval: 30s
port: web
scheme: http
selector:
matchLabels:
app: prometheus-coo-example-app
---
apiVersion: monitoring.rhobs/v1
kind: PrometheusRule
metadata:
name: example-alert
namespace: ns1-coo
labels:
k8s-app: prometheus-coo-example-monitor
spec:
groups:
- name: example
rules:
- alert: VersionAlert
for: 1m
expr: version{job="prometheus-coo-example-app"} > 0
labels:
severity: warning
----
. Deploy the same example application in another namespace labeled with `monitoring.rhobs/stack: multi-ns`:
+
[source,yaml]
----
apiVersion: v1
kind: Namespace
metadata:
name: ns2-coo
labels:
monitoring.rhobs/stack: multi-ns
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: prometheus-coo-example-app
name: prometheus-coo-example-app
namespace: ns2-coo
spec:
replicas: 1
selector:
matchLabels:
app: prometheus-coo-example-app
template:
metadata:
labels:
app: prometheus-coo-example-app
spec:
containers:
- image: ghcr.io/rhobs/prometheus-example-app:0.4.2
imagePullPolicy: IfNotPresent
name: prometheus-coo-example-app
---
apiVersion: v1
kind: Service
metadata:
labels:
app: prometheus-coo-example-app
name: prometheus-coo-example-app
namespace: ns2-coo
spec:
ports:
- port: 8080
protocol: TCP
targetPort: 8080
name: web
selector:
app: prometheus-coo-example-app
type: ClusterIP
---
apiVersion: monitoring.rhobs/v1
kind: ServiceMonitor
metadata:
labels:
k8s-app: prometheus-coo-example-monitor
name: prometheus-coo-example-monitor
namespace: ns2-coo
spec:
endpoints:
- interval: 30s
port: web
scheme: http
selector:
matchLabels:
app: prometheus-coo-example-app
----
.Verification
. Verify that the Prometheus instance adds new targets and that the alert are firing. Use a port-forward command to expose the Prometheus or the Alertmanager user interface that has been deployed by the `Monitoringstack` instance.
+
.Prometheus
[source,terminal]
----
$ oc port-forward -n ns1-coo pod/prometheus-example-coo-monitoring-stack-0 9090
----
+
.Alertmanager
[source,terminal]
----
$ oc port-forward -n ns1-coo pod/alertmanager-example-coo-monitoring-stack-0 9093
----
. Verify that the targets are being scraped and that the alerts are firing by browsing to `http://localhost:9090/targets` or `http://localhost:9093/#/alerts`.

View File

@@ -23,6 +23,8 @@ include::modules/monitoring-specifying-how-a-service-is-monitored-by-cluster-obs
// Create a MonitoringStack object to discover the service monitor
include::modules/monitoring-creating-a-monitoringstack-object-for-cluster-observability-operator.adoc[leveloffset=+1]
// Validate a MonitoringStack
// Validate a MonitoringStack
include::modules/monitoring-validating-a-monitoringstack-for-cluster-observability-operator.adoc[leveloffset=+1]
// Scrape targets in multiple namespaces
include::modules/monitoring-scrape-targets-in-multiple-namespaces.adoc[leveloffset=+1]