课程名称:课程版本(301)+ 3.2.1 TiDB Cluster Monitoring(K8s 部署的 TiDB 集群监控)
学习时长:
30 min
课程收获:
在k8s上进行监控的部署和查看
课程内容:
Config and Deploy Grafana and Prometheus
- 首先要创建一个 yaml 的配置文件。
- 模板参考网站:https://raw.githubusercontent.com/pingcap/tidb-operator/master/examples/basic/tidb-monitor.yaml。
- metadata.name: 设置监控本身的名字。
- spec.clusters.name: 集群名称,用来找集群。
- kubectl apply -f ${tidb-monitor-file}.yaml -n ${namespace} 用于部署监控。
- kubectl get pod -l app.kubernetes.io/instance=basic -n ${namespace} | grep monitor 用于查看部署的监控状态,是否成功启动。
- 默认监控数据不会持久化保存,需要设置参数并设置保存数据的位置
- kubectl delete tidbmonitor ${tidb-monitor-name} -n ${namespace} 用于删除
Access Grafana and Prometheus
- 通过暴露端口给外部访问(不建议生产环境使用,会有性能及稳定性方便的问题,测试环境可以使用)
- kubectl get svc -n ${namespcae},查看集群情况
- kubectl -n ${namespace} port-forward svc/${grafana-svn-name} 3000:3000 &>/tem/pf-grafana.log &
- 映射3000端口用于访问,3000为默认端口
- 通过 Ingress 方式访问(推荐方式)
- 部署一个 Ingress controller
- 在TiDB监控中配置 Ingress
- TiDBitMonitor 的 Ingress 同样支持 TLS
Monitor Kubernetes
- 建议通过 kube-prometheus 来监控 Kubernetes
-
正常环境部署于K8s部署不同
-
TiDB运行在POD中, 需要对K8s集群环境监控来查看TiDB的运行状态
-
会启动一个 HA Prometheus cluster
-
会启动一个 HA Alertmanager cluster,可以复用,TiDB不用再次启动该服务
-
An node-exporter DaemonSet
-
Grafana with various dashboards and alert rules
-
kube- state-metrics for Kubernetes API object metrics ingestion
-
Access TiDB Dashboard
- TIDB Operator v1.1.1 及以后的版本
- TiDB v4.0.1 及以后的版本
- 早期版本会支持不完善,导致部分功能缺失
- enableDashboardInternalProxy 设置为 true 开启Dashboard功能
- 访问界面与前面访问Grafana 和 Prometheus一样,两种方式
- 通过 kubectl port-forward
- 如果想暴露给其他机器用ip方式访问,则需要再开启的命令中添加 --address 0.0.0.0 来提供访问
- 通过Ingress方式访问,填写配置文件进行部署,支持TLS加密
学习过程中遇到的问题或延伸思考:
- 问题 1:听了这么久的监控,有个小问题,能否直接把Grafana和Prometheus的监控配置集成Dashboard上,而不是单独再暴露端口和服务?
学习过程中参考的其他资料
无