通过curl访问OpenShift上部署的Prometheus获取监控数据
Prometheus作为最常用的集群的监控组件,它收集了集群最全的状态信息。那么当我们需要将它与现有的监控告警平台打通,或者根据它开发一个自己的监控展示平台时,就不得不需要获得Prometheus的监控数据了。这时就不得不访问Prometheus的API接口。
根据场景的不同有两种方式能够获取到Prometheus的数据
- 集群外部,通过访问Prometheus UI的链接来获取指标数据
- 集群内部,进入Prometheus容器中,获取指标数据
1. 集群外部,curl访问Prometheus UI地址
由于OpenShift上部署的Prometheus应用对接了OpenShift的用户认证oauth-proxy,所以必须先获取用户的Token后再通过curl访问prometheus服务获取数据,具体操作如下。
1 | #登录 |
2. 集群内部,进入Prometheus容器获取数据
进入Prometheus应用的容器,绕过了OpenShift的认证,直接获取数据,具体操作如下。
1 | [root@master ~]# oc exec -c prometheus prometheus-k8s-0 -- curl -s \ |
其中${QUERY_EXPRESSION}即为Prometheus请求表达式,如:count(kube_pod_container_status_running%7Bcontainer%3D%22etcd%22%7D)
来获取正常运行的etcd容器的个数
其中%7B
为(
、%7D
为)
、%3D
为=
、%22
为"
,这些都需要经过HtmlEncode编码。也可以通过Prometheus界面上通过抓包的方式,获取截取具体的QUERY_EXPRESSION表达示。
总结
Prometheus API通过HTTP服务的方式向外提供它的监控数据,以上使用curl工具方便地获取监控指标,实际中可以通过各种开发语言进行获取需要的数据。返回数据都为json格式,根据需要可以非常方便地对数据进行格式转化处理。
正常情况下,返回的code为2xx,但也会有不正常的请求Code,如下:
- 404 Bad Request:当参数错误或者缺失时
- 422 Unprocessable Entity 当表达式无法执行时
- 503 Service Unavailiable 当请求超时或者被中断时
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Michael Blog!
评论