Getting Started with Helm Charts (Monitoring using Prometheus Operator)
This document explains how to get started with Scalar products monitoring on Kubernetes using Prometheus Operator (kube-prometheus-stack). Here, we assume that you already have a Mac or Linux environment for testing. We use Minikube in this document, but the steps we will show should work in any Kubernetes cluster.
What we create
We will deploy the following components on a Kubernetes cluster as follows.
+--------------------------------------------------------------------------------------------------+
| +------------------------------------------------------+ +-----------------+ |
| | kube-prometheus-stack | | Scalar Products | |
| | | | | |
| | +--------------+ +--------------+ +--------------+ | -----(Monitor)----> | +-----------+ | |
| | | Prometheus | | Alertmanager | | Grafana | | | | ScalarDB | | |
| | +-------+------+ +------+-------+ +------+-------+ | | +-----------+ | |
| | | | | | | +-----------+ | |
| | +----------------+-----------------+ | | | ScalarDL | | |
| | | | | +-----------+ | |
| +--------------------------+---------------------------+ +-----------------+ |
| | |
| | Kubernetes |
+----------------------------+---------------------------------------------------------------------+
| <- expose to localhost (127.0.0.1) or use load balancer etc to access
|
(Access Dashboard through HTTP)
|
+----+----+
| Browser |
+---------+
Step 1. Start a Kubernetes cluster
First, you need to prepare a Kubernetes cluster. If you use a minikube environment, please refer to the Getting Started with Scalar Helm Charts. If you have already started a Kubernetes cluster, you can skip this step.
Step 2. Prepare a custom values file
-
Save the sample file scalar-prometheus-custom-values.yaml for
kube-prometheus-stack
. -
Add custom values in the
scalar-prometheus-custom-values.yaml
as follows.- settings
prometheus.service.type
toLoadBalancer
alertmanager.service.type
toLoadBalancer
grafana.service.type
toLoadBalancer
grafana.service.port
to3000
- Example
alertmanager:
service:
type: LoadBalancer
...
grafana:
service:
type: LoadBalancer
port: 3000
...
prometheus:
service:
type: LoadBalancer
... - Note:
-
If you want to customize the Prometheus Operator deployment by using Helm Charts, you'll need to set the following configurations to monitor Scalar products:
- Set
serviceMonitorSelectorNilUsesHelmValues
andruleSelectorNilUsesHelmValues
tofalse
(true
by default) so that Prometheus Operator can detectServiceMonitor
andPrometheusRule
for Scalar products.
- Set
-
If you want to use Scalar Manager, you'll need to set the following configurations to enable Scalar Manager to collect CPU and memory resources:
- Set
kubeStateMetrics.enabled
,nodeExporter.enabled
, andkubelet.enabled
totrue
.
- Set
-
If you want to use Scalar Manager, you'll need to set the following configurations to enable Scalar Manager to embed Grafana:
- Set
grafana.ini.security.allow_embedding
andgrafana.ini.auth.anonymous.enabled
totrue
. - Set
grafana.ini.auth.anonymous.org_name
to the organization you are using. If you're using the sample custom values, the value isMain Org.
. - Set
grafana.ini.auth.anonymous.org_role
toEditor
.
- Set
-
- settings
Step 3. Deploy kube-prometheus-stack
-
Add the
prometheus-community
helm repository.helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
-
Create a namespace
monitoring
on the Kubernetes.kubectl create namespace monitoring
-
Deploy the
kube-prometheus-stack
.helm install scalar-monitoring prometheus-community/kube-prometheus-stack -n monitoring -f scalar-prometheus-custom-values.yaml
Step 4. Deploy (or Upgrade) Scalar products using Helm Charts
- Note:
- The following explains the minimum steps. If you want to know more details about the deployment of ScalarDB and ScalarDL, please refer to the following documents.
-
To enable Prometheus monitoring of Scalar products, set
true
to the following configurations in the custom values file.- Configurations
*.prometheusRule.enabled
*.grafanaDashboard.enabled
*.serviceMonitor.enabled
- Sample configuration files
- ScalarDB (scalardb-custom-values.yaml)
envoy:
prometheusRule:
enabled: true
grafanaDashboard:
enabled: true
serviceMonitor:
enabled: true
scalardb:
prometheusRule:
enabled: true
grafanaDashboard:
enabled: true
serviceMonitor:
enabled: true - ScalarDL Ledger (scalardl-ledger-custom-values.yaml)
envoy:
prometheusRule:
enabled: true
grafanaDashboard:
enabled: true
serviceMonitor:
enabled: true
ledger:
prometheusRule:
enabled: true
grafanaDashboard:
enabled: true
serviceMonitor:
enabled: true - ScalarDL Auditor (scalardl-auditor-custom-values.yaml)
envoy:
prometheusRule:
enabled: true
grafanaDashboard:
enabled: true
serviceMonitor:
enabled: true
auditor:
prometheusRule:
enabled: true
grafanaDashboard:
enabled: true
serviceMonitor:
enabled: true
- ScalarDB (scalardb-custom-values.yaml)
- Configurations
-
Deploy (or Upgrade) Scalar products using Helm Charts with the above custom values file.
- Examples
- ScalarDB
helm install scalardb scalar-labs/scalardb -f ./scalardb-custom-values.yaml
helm upgrade scalardb scalar-labs/scalardb -f ./scalardb-custom-values.yaml
- ScalarDL Ledger
helm install scalardl-ledger scalar-labs/scalardl -f ./scalardl-ledger-custom-values.yaml
helm upgrade scalardl-ledger scalar-labs/scalardl -f ./scalardl-ledger-custom-values.yaml
- ScalarDL Auditor
helm install scalardl-auditor scalar-labs/scalardl-audit -f ./scalardl-auditor-custom-values.yaml
helm upgrade scalardl-auditor scalar-labs/scalardl-audit -f ./scalardl-auditor-custom-values.yaml
- ScalarDB
- Examples
Step 5. Access Dashboards
If you use minikube
-
To expose each service resource as your
localhost (127.0.0.1)
, open another terminal, and run theminikube tunnel
command.minikube tunnel
After running the
minikube tunnel
command, you can see the EXTERNAL-IP of each service resource as127.0.0.1
.kubectl get svc -n monitoring scalar-monitoring-kube-pro-prometheus scalar-monitoring-kube-pro-alertmanager scalar-monitoring-grafana
[Command execution result]
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
scalar-monitoring-kube-pro-prometheus LoadBalancer 10.98.11.12 127.0.0.1 9090:30550/TCP 26m
scalar-monitoring-kube-pro-alertmanager LoadBalancer 10.98.151.66 127.0.0.1 9093:31684/TCP 26m
scalar-monitoring-grafana LoadBalancer 10.103.19.4 127.0.0.1 3000:31948/TCP 26m -
Access each Dashboard.
- Prometheus
http://localhost:9090/
- Alertmanager
http://localhost:9093/
- Grafana
http://localhost:3000/
- Note:
- You can see the user and password of Grafana as follows.
- user
kubectl get secrets scalar-monitoring-grafana -n monitoring -o jsonpath='{.data.admin-user}' | base64 -d
- password
kubectl get secrets scalar-monitoring-grafana -n monitoring -o jsonpath='{.data.admin-password}' | base64 -d
- user
- You can see the user and password of Grafana as follows.
- Note:
- Prometheus
If you use other Kubernetes than minikube
If you use a Kubernetes cluster other than minikube, you need to access the LoadBalancer service according to the manner of each Kubernetes cluster. For example, using a Load Balancer provided by cloud service or the kubectl port-forward
command.
Step 6. Delete all resources
After completing the Monitoring tests on the Kubernetes cluster, remove all resources.
-
Terminate the
minikube tunnel
command. (If you use minikube)Ctrl + C
-
Uninstall
kube-prometheus-stack
.helm uninstall scalar-monitoring -n monitoring
-
Delete minikube. (Optional / If you use minikube)
minikube delete --all
- Note:
- If you deploy the ScalarDB or ScalarDL, you need to remove them before deleting minikube.
- Note: