- Monitor
Enable Billing Dashboard
apache-pulsar-grafana-dashboard-k8s image added a new billing dashboard from 0.1.0
which includes the
- Detailed hourly Compute Unit (CU) and Storage Unit (SU) usage snapshots.
- Compute Unit (CU) and Storage Unit (SU) usage accumulation by day.
How to enable the billing dashboard
The billing dashboard requires data from kube-state-metrics to provide CPU and memory data for Pulsar Pods. So it requires user to install kube-state-metrics
in their kubernetes.
Install kube-state-metrics
You can install the kube-state-metrics
by
helm install kube-state-metrics -n kube-system prometheus-community/kube-state-metrics --version 4.29.0 -f https://raw.githubusercontent.com/streamnative/charts/master/examples/kube-state-metrics.yaml
And you can get the kube-state-metrics
configuration example at kube-state-metrics.yaml
Add extra Prometheus scrape in sn-platform
By default the Prometheus in the sn-platform
chart won’t scrape the kube-state-metrics
metrics, it requires to add an extraScrapeConfigs
in the Prometheus to scrape the KSM metrics.
Note
If you install the kube-state-metrics
in a different namespace, need to use the installed namespace in kubernetes_sd_configs.namespaces.names
prometheus:
extraScrapeConfigs:
- job_name: kube-state-metrics
honor_labels: true
scheme: http
kubernetes_sd_configs:
- role: endpoints
namespaces:
names:
- <Your KSM installed namespace>
prometheus:
extraScrapeConfigs:
- job_name: kube-state-metrics
honor_labels: true
scheme: http
kubernetes_sd_configs:
- role: endpoints
namespaces:
names:
- kube-system
relabel_configs:
- action: keep
source_labels:
- __meta_kubernetes_service_label_app_kubernetes_io_name
regex: kube-state-metrics
- action: keep
source_labels:
- __meta_kubernetes_endpoint_port_name
regex: http
- separator: ;
regex: __meta_kubernetes_pod_label_(.+)
replacement: $1
action: labelmap
- source_labels:
- __meta_kubernetes_endpoint_address_target_kind
- __meta_kubernetes_endpoint_address_target_name
separator: ;
regex: Node;(.*)
replacement: ${1}
target_label: node
- source_labels:
- __meta_kubernetes_endpoint_address_target_kind
- __meta_kubernetes_endpoint_address_target_name
separator: ;
regex: Pod;(.*)
replacement: ${1}
target_label: pod
- source_labels:
- __meta_kubernetes_pod_name
target_label: pod
- source_labels:
- __meta_kubernetes_namespace
target_label: namespace
- source_labels:
- __meta_kubernetes_service_name
target_label: service
- source_labels:
- __meta_kubernetes_service_name
target_label: job
replacement: ${1}
- target_label: endpoint
replacement: http