prometheus
https://github.com/likaiyuan00/k8s-prometheus.git
k8s-prometheus
部署kubernetes_sd_configs
配置文件只采集了
1 prometheus* prometheus-server
2 container* kubelet 的10250端口 /metrics/cadvisor
3 node* node_exporter
4 apiserver* apiserver 6443 端口 /metrics
5 kube* kube-state-metrics组件 8080端口 /metrics
6 coredns* kubernetes-pods 自动发现 pod需要配置 prometheus.io/scrape: “true” 不然抓取不到 默认flase
prometheus.io/path: “/metrics” # 指标路径(默认 /metrics 可不写)
7 kubelet* apiserver代理端点 /api/v1/nodes/<node-name>/proxy/metrics
其他有需要的可以自行配置
导入镜像,执行yml文件即可
prometheus效果图

grafana效果图



kubelet 组件
kubelet 三个指标 /metrics/probes(探针) /metrics/cadvisor(pod) /metrics(node)
对应apiserver的 /api/v1/nodes/${node-name}/proxy/${url};一般为了减少apiserver的负载不建议使用这种方式 **
直接访问会报401没有权限
需要先获取token,上面文件执行完会有一个prometheus用户
pod内token路径为 /var/run/secrets/kubernetes.io/serviceaccount/token
通过token再去访问发现就正常了
1 | /metrics |

对应kubelet*开头
1 | /metrics/probes(探针) |

1 | /metrics/cadvisor(pod) |

对应container*开头,容器指标
node_exporter
端口暴露到节点了就不需要token了
node*开头,节点指标
kube-state-metrics
集群应用状态监控比较重要的一个需要单独安装
使用containerPort: 8080 暴露到节点了不需要token
kube*开头
apiserver
主要是监控apiserver的qps,查询成功率失败率等信息
apiserver*开头
kubernetes-pods 自动发现
如果元数据内设置true,该pod才可以被抓取,默认false
以coredns为例

以coredns*开头
这个自动发现还可以配置自身业务的监控,只有保证开启抓取,和符合prometheus抓取规范就可以,如果开启了prometheus.io/scrape 但是pod并没有提供数据指标的能力就会直接报错,如图404
比如现在我想加一个grafana的数据,只需要添加对应元数据就可以了
prometheus就自动发现了pod的ip
grafana*开头
