- 序言
- 云原生
- Kubernetes 架构
- Kubernetes 中的网络
- Pod 状态与生命周期管理
- 集群资源管理
- 控制器
- 服务发现
- 身份与权限控制
- 存储
- 集群扩展
- 资源调度
- 用户指南
- 资源对象配置
- 命令使用
- 集群安全性管理
- 访问 Kubernetes 集群
- 在 Kubernetes 中开发部署应用
- 最佳实践概览
- 在 CentOS 上部署 Kubernetes 集群
- 生产级的 Kubernetes 简化管理工具kubeadm
- 服务发现与负载均衡
- 运维管理
- 存储管理
- 集群与应用监控
- 分布式跟踪
- 服务编排管理
- 持续集成与发布
- 更新与升级
- 领域应用概览
- 微服务架构
- Service Mesh 服务网格
- 大数据
- Serverless架构
- 边缘计算
- 人工智能
- 开发指南
- CNCF
- 附录说明
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
Prometheus 查询语言 PromQL 使用说明
目前很多云原生应用使用了 Prometheus 作为监控,例如在 Istio 中查询 Prometheus 指标。
Prometheus 提供了一种功能表达式语言,允许用户实时选择和汇总时间序列数据。表达式的结果可以显示为图形、表格数据或者由外部系统通过 RESTful API 消费。
表达式语言数据类型
Prometheus 查询语言简称 PromQL,其中包含以下四类数据类型:
- Instant vector(即时向量) :一组时间序列,拥有共同的时间戳,每个时间序列中都包含一个样本。
- Range vector(范围向量) :一组时间序列,其中每个时间序列都包含一系列时间范围内的数据点。
- Scalar(标量) :一个简单的浮点值。
- String(字符串) :一个简单的字符串,目前暂未使用。
示例
可以通过 Prometheus web 页面查询。
还可以使用 HTTP API 直接请求查询,例如你使用 kubernetes-vagrant-centos-cluster 部署了 Istio ,会默认安装 Prometheus,你可以在浏览器中请求 http://prometheus.istio.jimmysong.io/api/v1/query?query=http_requests_total{job=%22kubernetes-nodes%22} ,将会看到如下格式的 json 返回值。
{
"status": "success",
"data": {
"resultType": "vector",
"result": [
{
"metric": {
"__name__": "http_requests_total",
"beta_kubernetes_io_arch": "amd64",
"beta_kubernetes_io_os": "linux",
"code": "200",
"handler": "prometheus",
"instance": "node1",
"job": "kubernetes-nodes",
"kubernetes_io_hostname": "node1",
"method": "get"
},
"value": [
1539861026.814,
"556"
]
},
{
"metric": {
"__name__": "http_requests_total",
"beta_kubernetes_io_arch": "amd64",
"beta_kubernetes_io_os": "linux",
"code": "200",
"handler": "prometheus",
"instance": "node2",
"job": "kubernetes-nodes",
"kubernetes_io_hostname": "node2",
"method": "get"
},
"value": [
1539861026.814,
"555"
]
},
{
"metric": {
"__name__": "http_requests_total",
"beta_kubernetes_io_arch": "amd64",
"beta_kubernetes_io_os": "linux",
"code": "200",
"handler": "prometheus",
"instance": "node3",
"job": "kubernetes-nodes",
"kubernetes_io_hostname": "node3",
"method": "get"
},
"value": [
1539861026.814,
"556"
]
}
]
}
}
HTTP API 说明
上面是对最常用也是比较简单的即时查询,下面是对以上返回结果的简要说明。
status
:可以为success
和error
, 如果为error
,则不会显示data
字段,而显示errorType
和error
。resultType
:返回结果类型,可以为matrix
、vector
、scalar
或string
。metric
:即时查询的到的监控 metric,其中的项为 label,可以在查询 URL 中增加标签选择器来过滤 metric。value
:第一个数字是 UNIX 格式的时间戳,例如1539861026.814
表示的是北京时间2018/10/18 19:10:26.814
(注意:小数点后毫秒数)。Prometheus 中的 metric 时间都是以 UTC(协调世界时间)为单位的,无法调整时区,需要在前端展示时自己来调整。
您也可以查询一个时间段、根据标签选择一组 metric、Prometheus 中的 target、rule、metadata 等配置进行查询。关于 Prometheus RESTful API 的详细用法请参考 HTTP API 。
参考
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论