-
Notifications
You must be signed in to change notification settings - Fork 4
Open
Labels
Description
0. 安装 Prometheus 和 Grafana 等组件
通过 Minikube 来安装 Kubernetes 测试环境。
$ minikube start --cpus 4 --memory 8192 --vm-driver hyperkit
$ helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
$ helm repo add stable https://kubernetes-charts.storage.googleapis.com/
$ helm repo update
$ helm install prometheus prometheus-community/kube-prometheus-stack可以使用 kubectl 查看安装好的各组件。
1. 安装 MongoDB
mongodb.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: mongodb-deployment
labels:
app: mongodb
spec:
replicas: 1
selector:
matchLabels:
app: mongodb
template:
metadata:
labels:
app: mongodb
spec:
containers:
- name: mongodb
image: mongo
ports:
- containerPort: 27017
---
apiVersion: v1
kind: Service
metadata:
name: mongodb-service
spec:
selector:
app: mongodb
ports:
- protocol: TCP
port: 27017
targetPort: 27017安装:
$ kubectl apply -f mongodb.yaml2. 安装 Exporter
Exporter 是什么:将要采集数据的应用数据转换成 Prometheus 能理解的 metrics。
工作流程:1)Exporter 从目标应用获取 metrics 数据。2)转换为正确格式。3)在 /metrics 端点暴露 metrics。4)Promettheus 的 Retrieval 拉取 metrics 数据。5)Promettheus 将 metrics 数据存储到时序数据库。6)Promettheus 的 HTTP Server 提供从数据库获取数据的 API,可以通过 PromQL 来查询数据。
需要安装 3 个组件:
- Exporter 应用:用来暴露
/metrics端点 - Service:用来连接到 Exporter
- ServiceMonitor:让 Prometheus 知道有一个新的端点需要被 scrape。
可以通过 Helm 来安装。
先添加 repo:
$ helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
$ helm repo update查看 chart 的 values:
$ helm show values prometheus-community/prometheus-mongodb-exporter有几个值需要指定:
values.yaml
mongodb:
uri: "mongodb://mongodb-service:27017" # 指定 MongoDB SVC endpoint
serviceMonitor:
additionalLabels:
release: prometheus # ServiceMonitor 标签,使其可以被 Prometheus 发现安装:
helm install mongodb-exporter prometheus-community/prometheus-mongodb-exporter -f values.yaml检查 SVC 及 ServiceMonitor 是否正常:
$ kubectl port-forward service/mongodb-exporter-prometheus-mongodb-exporter 9216
$ curl localhost:9216
$ kubectl get servicemonitor3. 使用 Grafana 查看数据
$ kubectl port-forward deployment/prometheus-grafana 3000用户名 admin,获取密码:
$ kubectl get secret prometheus-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo浏览器访问 http://localhost:3000/,登录后即可在 Manage 中查看 MongoDB 的 CPU、内存等的使用情况了。