---
id: setup-datasource
title: Setting up Data source
sidebar_label: Setup Data source
---
---
This guide provides sample scrape job to be used for Prometheus deployment’s scrape-configmap and service monitors to be used with Prometheus operator for the different architectural topologies for integrating Prometheus (connecting a data source link) with Chaos center.
### Topologies
Listed below are three among many topologies in which a data source can be setup for collecting chaos delegate cluster's metrics along with chaos metrics for chaos center.
#### For Control plane chaos delegate / Self chaos delegate with Prometheus - scraping chaos-exporter metrics and events along with other metrics
Data flow and topological diagram
_Scrape jobs:_
- **Chaos exporter**
```yaml
- job_name: 'chaos-exporter'
static_configs:
- targets: ['chaos-exporter.litmus.svc.cluster.local:8080']
relabel_configs:
- target_label: instance
replacement: 'chaos-exporter-service'
```
- **Kube state metrics exporter**
```yaml
- job_name: 'kube-state-metrics'
static_configs:
- targets: ['kube-state-metrics.monitoring.svc.cluster.local:8080']
```
- [Node exporter](https://github.com/litmuschaos/litmus/blob/master/monitoring/utils/prometheus/prometheus-scrape-configuration/02-prometheus-configMap.yaml)
- [Black box exporter](https://github.com/litmuschaos/litmus/blob/master/monitoring/utils/prometheus/prometheus-scrape-configuration/02-prometheus-configMap.yaml)
- [cAdvisor](https://github.com/litmuschaos/litmus/blob/master/monitoring/utils/prometheus/prometheus-scrape-configuration/02-prometheus-configMap.yaml)
[Detailed setup guide for Prometheus deployment with scrape configuration](../integrations/prometheus)
_Service monitors:_
- **Chaos exporter**
```yaml
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: chaos-exporter
labels:
k8s-app: chaos-exporter
namespace: litmus
spec:
jobLabel: app
selector:
matchLabels:
app: chaos-exporter
namespaceSelector:
matchNames:
- litmus
endpoints:
- port: tcp
interval: 1s
metricRelabelings:
- targetLabel: instance
replacement: 'chaos-exporter-service'
```
- **Kube state metrics exporter**
```yaml
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
labels:
app.kubernetes.io/name: kube-state-metrics
app.kubernetes.io/version: latest
k8s-app: kube-state-metrics
name: kube-state-metrics
namespace: monitoring
spec:
endpoints:
- bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
honorLabels: true
interval: 30s
port: http-metrics
relabelings:
- action: labeldrop
regex: (pod|service|endpoint|namespace)
scheme: http
scrapeTimeout: 30s
tlsConfig:
insecureSkipVerify: true
- bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
interval: 30s
port: telemetry
scheme: http
tlsConfig:
insecureSkipVerify: true
jobLabel: app.kubernetes.io/name
selector:
matchLabels:
app.kubernetes.io/name: kube-state-metrics
```
- [Node exporter](https://github.com/litmuschaos/litmus/blob/master/monitoring/utils/metrics-exporters-with-service-monitors/node-exporter/service-monitor.yaml)
- [Black box exporter](https://github.com/litmuschaos/litmus/blob/master/monitoring/utils/metrics-exporters-with-service-monitors/prometheus-blackbox-exporter-metrics/service-monitor.yaml)
[Detailed setup guide for Prometheus operator with service monitors](../integrations/prometheus)
##### Note:
- Scrape jobs as per (above links) can also be added under [this](https://github.com/prometheus-community/helm-charts/blob/9b3d4815bdefa71ef94ac0d474934c4aaebb3891/charts/kube-prometheus-stack/values.yaml#L2247) additionalScrapeConfigs for the [Prometheus community’s Kube prometheus stack](https://github.com/prometheus-community/helm-charts/blob/main/charts/kube-prometheus-stack/README.md)
- Pod labels to be used with Prometheus operator installed via helm as part of the [Prometheus community’s Kube prometheus stack](https://github.com/prometheus-community/helm-charts/blob/main/charts/kube-prometheus-stack/README.md) configured for podMonitors or with [Prometheus’s inbuilt Kubernetes service discovery](https://github.com/prometheus-community/helm-charts/blob/9b3d4815bdefa71ef94ac0d474934c4aaebb3891/charts/kube-prometheus-stack/values.yaml#L2492)
_Chaos exporter_
> labels
```yaml
labels:
app: chaos-exporter
release: prometheus-stack
```
> pod monitor
```yaml
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
name: chaos-exporter-monitor
namespace: monitoring
labels:
release: prometheus-stack
spec:
selector:
matchLabels:
app: chaos-exporter
namespaceSelector:
matchNames:
- litmus
podMetricsEndpoints:
- port: tcp
- interval: 1s
metricRelabelings:
- targetLabel: instance
replacement: 'chaos-exporter-service'
```
_Black box exporter_
> labels
```yaml
labels:
app: prometheus-blackbox-exporter
release: prometheus-stack
```
> pod monitor
```yaml
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
name: black-box-exporter-monitor
namespace: monitoring
labels:
release: prometheus-stack
spec:
selector:
matchLabels:
app: prometheus-blackbox-exporter
namespaceSelector:
matchNames:
- monitoring
podMetricsEndpoints:
- port: http
- interval: 1s
```
[Detailed setup guide for Prometheus operator with pod monitors](../integrations/prometheus)
#### For Multiple chaos delegate s with multiple prometheus instances - scraping chaos-exporter metrics and events along with other metrics
Data flow and topological diagram
- Scrape job and service monitor remain same as in case of Control plane chaos delegate / self chaos delegate , the individual [Prometheus instances can be connected](configure-datasource) as separate data sources to the Chaos center. [Separate dashboards can be created](manage-app-dashboard) by selecting specific chaos delegate s and their corresponding data source which is essentially a Prometheus time series database, collecting metrics from the chaos delegate cluster for application / infra metrics, chaos events and chaos verdicts.
#### For Multiple chaos delegate s with single prometheus - scraping chaos-exporter metrics and events along with other metrics
- Separate dashboards can be created by selecting specific chaos delegate s and the data source which is essentially a Prometheus time series database, collecting metrics from the chaos delegate cluster for application / infra metrics, chaos events and chaos verdicts.
Data flow and topological diagram
_Scrape jobs:_
- **Chaos-exporter - chaos delegate -1**
```yaml
- job_name: 'chaos-exporter-agent-1'
static_configs:
- targets: ['']
relabel_configs:
- target_label: instance
replacement: 'chaos-exporter-service'
```
- **Chaos-exporter - chaos delegate -2**
```yaml
- job_name: 'chaos-exporter-agent-2'
static_configs:
- targets: ['']
relabel_configs:
- target_label: instance
replacement: 'chaos-exporter-service'
```
- **Kube state metrics exporter - chaos delegate -1**
```yaml
- job_name: 'kube-state-metrics-agent-1'
static_configs:
- targets: ['']
```
- **Kube state metrics exporter - chaos delegate -2**
```yaml
- job_name: 'kube-state-metrics-agent-2'
static_configs:
- targets: ['']
```
- [Node exporter](https://github.com/litmuschaos/litmus/blob/master/monitoring/utils/prometheus/prometheus-scrape-configuration/02-prometheus-configMap.yaml)
- [Black box exporter](https://github.com/litmuschaos/litmus/blob/master/monitoring/utils/prometheus/prometheus-scrape-configuration/02-prometheus-configMap.yaml)
- [cAdvisor](https://github.com/litmuschaos/litmus/blob/master/monitoring/utils/prometheus/prometheus-scrape-configuration/02-prometheus-configMap.yaml)
[Detailed setup guide for Prometheus deployment with scrape configuration](../integrations/prometheus)
_Service endpoint, spec and monitors:_
- **Chaos-exporter - chaos delegate -1**
```yaml
kind: Service
apiVersion: v1
metadata:
name: chaos-exporter-agent-1
namespace: monitoring
spec:
type: ClusterIP
ports:
- name: tcp
port: 8080
targetPort: 8080
---
kind: Endpoints
apiVersion: v1
metadata:
name: chaos-exporter-agent-1
namespace: monitoring
subsets:
- addresses:
- ip:
ports:
- name: tcp
port: 8080
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
labels:
k8s-app: chaos-exporter-agent-1
name: chaos-exporter-agent-1
namespace: monitoring
spec:
jobLabel: app
selector:
matchLabels:
app: chaos-exporter-agent-1
namespaceSelector:
matchNames:
- monitoring
endpoints:
- interval: 1s
port: tcp
metricRelabelings:
- targetLabel: instance
replacement: 'chaos-exporter-service'
```
- **Chaos-exporter - chaos delegate -2**
```yaml
kind: Service
apiVersion: v1
metadata:
name: chaos-exporter-agent-2
namespace: monitoring
spec:
type: ClusterIP
ports:
- name: tcp
port: 8080
targetPort: 8080
---
kind: Endpoints
apiVersion: v1
metadata:
name: chaos-exporter-agent-2
namespace: monitoring
subsets:
- addresses:
- ip:
ports:
- name: tcp
port: 8080
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
labels:
k8s-app: chaos-exporter-agent-2
name: chaos-exporter-agent-2
namespace: monitoring
spec:
jobLabel: app
selector:
matchLabels:
app: chaos-exporter-agent-2
namespaceSelector:
matchNames:
- monitoring
endpoints:
- interval: 1s
port: tcp
metricRelabelings:
- targetLabel: instance
replacement: 'chaos-exporter-service'
```
- **Kube state metrics exporter - chaos delegate -1**
```yaml
kind: Service
apiVersion: v1
metadata:
name: kube-state-metrics-agent-1
namespace: monitoring
spec:
type: ClusterIP
ports:
- name: tcp
port: 8080
targetPort: 8080
---
kind: Endpoints
apiVersion: v1
metadata:
name: kube-state-metrics-agent-1
namespace: monitoring
subsets:
- addresses:
- ip:
ports:
- name: tcp
port: 8080
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
labels:
k8s-app: kube-state-metrics-agent-1
name: kube-state-metrics-agent-1
namespace: monitoring
spec:
jobLabel: app
selector:
matchLabels:
app: kube-state-metrics-agent-1
namespaceSelector:
matchNames:
- monitoring
endpoints:
- interval: 30s
port: tcp
```
- **Kube state metrics exporter - chaos delegate -2**
```yaml
kind: Service
apiVersion: v1
metadata:
name: kube-state-metrics-agent-2
namespace: monitoring
spec:
type: ClusterIP
ports:
- name: tcp
port: 8080
targetPort: 8080
---
kind: Endpoints
apiVersion: v1
metadata:
name: kube-state-metrics-agent-2
namespace: monitoring
subsets:
- addresses:
- ip:
ports:
- name: tcp
port: 8080
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
labels:
k8s-app: kube-state-metrics-agent-2
name: kube-state-metrics-agent-2
namespace: monitoring
spec:
jobLabel: app
selector:
matchLabels:
app: kube-state-metrics-agent-2
namespaceSelector:
matchNames:
- monitoring
endpoints:
- interval: 30s
port: tcp
```
- [Node exporter](https://github.com/litmuschaos/litmus/blob/master/monitoring/utils/metrics-exporters-with-service-monitors/node-exporter/service-monitor.yaml)
- [Black box exporter](https://github.com/litmuschaos/litmus/blob/master/monitoring/utils/metrics-exporters-with-service-monitors/prometheus-blackbox-exporter-metrics/service-monitor.yaml)
[Detailed setup guide for Prometheus operator with service monitors](../integrations/prometheus.md)
### Resources
### Learn more
- [Observability Setup](observability-set-up.md)
- [Configure Data Source](configure-datasource.md)
- [Manage Application Dashboards](manage-app-dashboard.md)