最近在看k8s的代码,每个模块都有收集metrics相关的代码,例如scheduler 中

var (
	E2eSchedulingLatency = prometheus.NewHistogram(
		prometheus.HistogramOpts{
			Subsystem: schedulerSubsystem,
			Name:      "e2e_scheduling_latency_microseconds",
			Help:      "E2e scheduling latency (scheduling algorithm + binding)",
			Buckets:   prometheus.ExponentialBuckets(1000, 2, 15),
		},
	)
)
metrics.BindingLatency.Observe(metrics.SinceInMicroseconds(bindingStart))


Prometheus 是一个可以收集你的程序运行的一些性能指标,比如采集一个http请求的时间,上面代码是k8s 记录调度一个pod所需要的时间,prometheus 客户端 将这些元数据保存起来,生成不同的Metrics 类型,使用Http的方式向外提供, 服务器端使用pull的方式采集这些数据,提供给用户使用。metrics的类型见: https://prometheus.io/docs/concepts/metric_types/

官网这里有它的简单使用方法:https://prometheus.io/docs/introduction/getting_started/

我们可以用 grafana 将Prometheus 收集的metrics 用dashboard展示出来:


Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐