PromQL使用笔记

最近需要从PaaS云上获取一些系统指标,由于云端的监控系统采用的是Prometheus,故简单学习了一些Prometheus内置的数据查询语言PromQL,在此做个记录。

1.文档

PromQL官方有很详细的介绍,大家可参看学习,内容很详实
英文API地址为:https://prometheus.io/docs/prometheus/latest/querying/api/
中文API地址为:https://yunlzheng.gitbook.io/prometheus-book/parti-prometheus-ji-chu/promql/prometheus-promql-with-http-api

2.使用

由于文档中已将其基本的使用介绍的很清楚了,本博客不在对PromQL基础进行记录,而是直接给大家提供示例代码,供大家学习。
1)常用指标
machine_cpu_core :查询机器CPU内核个数
node_cpu :查询节点CPU
node_memory_memtotal :查询内存总和
node_memory_memfree : 查询看节点可用内存
node_filesystem_size :查询磁盘空间
node_filesystem_avail_bytes :查询可用磁盘空间
kube_pod_container_status_restarts_toatl :查询容器重启次数
namespace_pod-name_container_name:container_cpu_usage_seconds_total:sum_rate:查询CPU使用值
kube_pod_container_resource_requests_cpu_cores :查询CPU使用量
container_memory_usage_bytes:查询内存使用量
kube_pod_container_resource_request_memory_bytes :查询内存使用量
…(后续陆续添加自己使用到的指标)

2)简单使用
Prometheus提供了rest请求方式获取各指标的值,请求url格式如下
https://url/api/v1/query?query=指标

String requestUrl = "https://xxxx/api/v1/query?query=machine_cpu_core";
//发起查询CPU内核个数请求
String res = HttpsClientUtils.getRequest(requestUrl);
//该请求将返回JSON,内容如下
{
	"status":"success",
	"data":{
		"resultType":"vectory",
		"result":[
			{
				"metric":{
					"__name__":"machine_cpu_core",
					"endpoint":"https-metrics",
					"instance":"192.168.1.123:12345",
					"job":"kubelet",
					"namespace":"kube-system",
					"sevice":"kubelet"
				},
				"value":{
					1576293471.311,//该值*1000 = Date.getTime(),单位s,表示查询时间
					1
				}
			},
			.....
		]
	}
}

2)常用请求

//查询当天容器重启次数
baseUrl+"/api/v1/query?query=sum(changes(kube_pod_container_status_restarts_total[1d])) ";
//上述返回结果:{"status":"success","data":{"resultType":"vector","result":[{"metric":{},"value":[1576293471.311,500]}]}}


//查询所有命名空间容器重启次数
baseUrl+"/api/v1/query?query=sum(changes(kube_pod_container_status_restarts_total{namespace=~'(.*)'}[1d]))by(namespace) ";
//上述返回结果:{"status":"success","data":{"resultType":"vector","result":[{"metric":{"namespace":"n1"},"value":[1576293471.311,500]},....]}}

//查询cpu使用率
baseUrl+"/api/v1/query?query=sum(namespace_pod-name_container_name:container_cpu_usage_seconds_total:sum_rate)/sum(kube_pod_container_resource_requests_cpu_cores)";

//查询某个命名空间下内存使用率
baseUrl+"/api/v1/query?query=sum(container_memory_usage_bytes(container_name!='',namespace='"+namespace+"'})by(namespace)/sum(kube_pod_container_resource_requests_memory_bytes{'"+namespace+"'})by(namespace)}";

你可能感兴趣的:(java)