除了直接使用社区提供的Exporter程序以外,用户还可以基于Prometheus提供的Client Library创建自己的Exporter程序,目前Promthues社区官方提供了对以下编程语言的支持:Go、Java/Scala、Python、Ruby。同时还有第三方实现的如:Bash、C++、Common Lisp、Erlang,、Haskeel、Lua、Node.js、PHP、Rust等。
1.2.3 client libraries顾名思义,用来生成自定义的exporters的java库。
1.2.3 push gateway由于Prometheus数据采集基于Pull模型进行设计,因此在网络环境的配置上必须要让Prometheus Server能够直接与Exporter进行通信。 当这种网络需求无法直接满足时(短周期或者临时采集的样本数据),就可以利用PushGateway来进行中转。可以通过PushGateway将内部网络的监控数据主动Push到Gateway当中。而Prometheus Server则可以采用同样Pull的方式从PushGateway中获取到监控数据。
推送数据的方式:
1、API 方式 Push 数据到 PushGateway
2、用 Client SDK Push 数据到 Pushgateway
1.2.4 Alertmanager在Prometheus Server中支持基于PromQL创建告警规则,如果满足PromQL定义的规则,则会产生一条告警,而告警的后续处理流程则由AlertManager进行管理。在AlertManager中我们可以与邮件,Slack等等内置的通知方式进行集成,也可以通过Webhook自定义告警处理方式。AlertManager即Prometheus体系中的告警处理中心。
1.2.5 various support tools1.3 特性
1. 由指标名称和和键/值对标签标识的时间序列数据组成的多维数据模型。
2. 强大的查询语言 PromQL。
3. 不依赖分布式存储;单个服务节点具有自治能力。
4. 时间序列数据是服务端通过 HTTP 协议主动拉取获得的。
5. 也可以通过中间网关来推送时间序列数据。
6. 可以通过静态配置文件或服务发现来获取监控目标。
7. 支持多种类型的图表和仪表盘。
引自官网:
a multi-dimensional data model with time series data identified by metric name and key/value pairs;
PromQL, a flexible query language to leverage this dimensionality;
no reliance on distributed storage; single server nodes are autonomous;
time series collection happens via a pull model over HTTP;
pushing time series is supported via an intermediary gateway;
targets are discovered via service discovery or static configuration;
multiple modes of graphing and dashboarding support.
1.4 数据类型