exporter
广义上讲所有可以向Prometheus提供监控样本数据的程序都可以被称为一个Exporter。而Exporter的一个实例称为target,如下所示,Prometheus通过轮询的方式定期从这些target中获取样本数据:
prometheus通过pull从exporter拉取数据.
直接采集:cAdvisor, kubernetes, etcd, gokit等直接内置了用于向prometheus暴露监控数据的端点.
间接采集: 通过promethesu的client api编写exporter,例如mysql-exporter, consul-exporter.
host
https://github.com/prometheus/node_exporter
k8s
k8s metrics api包括 resource metrics api 和 customer metrics api.
cadvisor, metrics-server, kube-state-metrics 等实现了 核心api.
一些adapter实现了自定义api.
k8s-prometheus-adapter实现了metrics-server的核心api,同时实现了自定义api.
metrics-server
提供了整个集群的资源监控数据
https://github.com/kubernetes-sigs/metrics-server
cAdvisor
负责单节点内部的容器和节点资源使用统计,会自动收集本机容器 CPU、内存、网络和文件系统的资源占用情况
https://github.com/google/cadvisor
kube-state-metrics
提供了 Kubernetes 资源对象(如 DaemonSet、Deployments 等)的度量。
https://github.com/kubernetes/kube-state-metrics
adapter
同时支持核心api和自定义api.
https://github.com/DirectXMan12/k8s-prometheus-adapter
blackbox
https://github.com/prometheus/blackbox_exporter
wmi
https://github.com/martinlindhe/wmi_exporter
snmp
https://github.com/prometheus/snmp_exporter
mysql
https://github.com/prometheus/mysqld_exporter
rabbitmq
https://github.com/deadtrickster/prometheus_rabbitmq_exporter
mongo
https://github.com/percona/mongodb_exporter
redis
https://github.com/oliver006/redis_exporter
haproxy
https://github.com/prometheus/haproxy_exporter
consul
https://github.com/prometheus/consul_exporter
pushgateway
https://github.com/prometheus/pushgateway
由于Prometheus数据采集基于Pull模型进行设计,因此在网络环境的配置上必须要让Prometheus Server能够直接与Exporter进行通信。 当这种网络需求无法直接满足时,就可以利用PushGateway来进行中转。可以通过PushGateway将内部网络的监控数据主动Push到Gateway当中。而Prometheus Server则可以采用同样Pull的方式从PushGateway中获取到监控数据.