Prometheus 是 CNCF 的项目,云原生监控平台,与 Kubernetes 高度集成。本文介绍如何在 Kubernetes 环境中安装、部署、使用 Prometheus。
监控架构
安装
部署 Prometheus
git clone https://github.com/kbcx/k8s-prom
cd k8s-prom
kubectl create namespace prom
kubectl apply ./prometheus/
# 是否部署成功,通过查看日志判断:kubectl -n prom logs -f prometheus-server-xxx-xxx出现如下提示表示安装成功:
caller=main.go:491 msg="Server is ready to receive web requests."
# 域名验证
dig prometheus.prom.svc.kb.cx @10.96.0.10 +short
10.98.29.32
# 查看 svc
$ kubectl -n prom get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
prometheus NodePort 10.98.29.32 <none> 9090:31338/TCP 9h
访问 https://172.20.0.81:31338
就可以打开 Prometheus web 页面
部署 prometheus-adapter
kubectl apply -f ./prometheus-adapter/
$ kubectl -n prom get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
custom-metrics-apiserver ClusterIP 10.110.217.166 <none> 443/TCP 1m22s
$ kubectl api-versions | grep custom.metrics.k8s.io
custom.metrics.k8s.io/v1beta1
custom.metrics.k8s.io/v1beta2
调用 custom.metrics.k8s.io
调用API示例,API 使用参考:Kubernetes API 介绍
kubectl get --raw /apis/custom.metrics.k8s.io/v1beta2/ | jq .
# 或
# 第一个窗口启动代理
$ kubectl proxy --port=8080
# 第二个窗口调用 API,有对应的返回值
$ curl http://localhost:8080/apis/custom.metrics.k8s.io/v1beta2
部署 Grafana
kubectl apply -f grafana.yaml
$ kubectl -n prom get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
custom-metrics-apiserver ClusterIP 10.110.217.166 <none> 443/TCP 8m42s
grafana NodePort 10.110.42.140 <none> 3000:31270/TCP 99s
Configuration
-> Data sources
-> Add data source
-> Prometheus
-> HTTP:URL
输入 http://prometheus.prom.svc:9090
-> 点击 Save & test
在上述页面,切换到 Dashboards
标签页,在 Prometheus 2.0 Stats
后点击 Import
到 granfan 界面,点击 +
-> Import
选择模板和数据源后,导入模板。
高级用法
依赖于监控,可以使用 HPA 自动水平扩展