我们使用k8s后一般需要监控一下四大块指标:
| 指标类型 | 采集源 | 应用举例 | 发现类型 |
|---|---|---|---|
| 容器基础资源指标 | kubelet 内置cadvisor metrics接口 | 查看容器cpu、mem利用率等 | k8s_sd node级别直接访问node_ip |
| k8s资源指标 | kube-stats-metrics (简称ksm) | 具体可以看从容器监控kube-stats-metrics看k8s众多组件 看pod状态如pod waiting状态的原因 数个数如:查看node pod按namespace分布情况 | 通过coredns访问域名 |
| k8s服务组件指标 | 服务组件 metrics接口 | 查看apiserver 、scheduler、etc、coredns请求延迟等 | k8s_sd endpoint级别 |
| 部署在pod中业务埋点指标 | pod 的metrics接口 | 依据业务指标场景 | k8s_sd pod级别,访问pod ip的metricspath |
鉴权/证书问题
我们在prometheus采集job中经常能看到下面的 token 证书配置,主要原因为
apiserver可以采用tls双向认证,所以需要提供证书
- bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
- tls_config:
- ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
- insecure_skip_verify: true
prometheus通过 sa,clusterrolebinding来解决token、证书挂载问题
sa等配置: prometheus yaml中需要配置对应的saserviceAccountName
- apiVersion: rbac.authorization.k8s.io/v1 # api的version
- kind: ClusterRole # 类型
- metadata:
- name: prometheus