微动态丨保姆级 Prometheus PromQL 讲解与实战操作

来源:腾讯云 2023-03-23 18:21:55

一、PromQL 介绍


(资料图片仅供参考)

PromQL(Prometheus Query Language)为 Prometheus tsdb 的查询语言。是结合 grafana 进行数据展示和告警规则的配置的关键部分。

官方文档:https://prometheus.io/docs/prometheus/latest/querying/basics/

二、四种指标类型

counter(计数器)gauge (仪表类型)histogram(直方图类型)summary (摘要类型)

1)counter(计数器)

Counter(只增不减的计数器) 类型的指标其工作方式和计数器一样,只增不减。常见的监控指标,如 http_requests_totalnode_cpu_seconds_total都是 Counter类型的监控指标。

在 node-exporter 返回的样本数据中,其注释中也包含了该样本的类型。例如:

# HELP node_cpu_seconds_total Seconds the cpus spent in each mode.# TYPE node_cpu_seconds_total counternode_cpu_seconds_total{cpu="cpu0",mode="idle"} 362812.7890625
#HELP:解释当前指标的含义,上面表示在每种模式下 node 节点的 cpu 花费的时间,以 s 为单位。#TYPE:说明当前指标的数据类型,上面是 counter 类型。

counter是一个简单但又强大的工具,例如我们可以在应用程序中记录某些事件发生的次数,通过以时间序列的形式存储这些数据,我们可以轻松的了解该事件产生的速率变化。PromQL内置的聚合操作和函数可以让用户对这些数据进行进一步的分析,例如,通过 rate()函数获取 HTTP 请求量的增长率:

rate(http_requests_total[5m])

查询当前系统中,访问量前 10 的 HTTP 请求:

topk(10, http_requests_total)

2)gauge (仪表类型)

Counter不同, Gauge(可增可减的仪表盘)类型的指标侧重于反应系统的当前状态。因此这类指标的样本数据可增可减。常见指标如:node_memory_MemFree_bytes(主机当前空闲的内存大小)、 node_memory_MemAvailable_bytes(可用内存大小)都是 Gauge类型的监控指标。通过 Gauge指标,用户可以直接查看系统的当前状态:

node_memory_MemFree_bytes

对于 Gauge类型的监控指标,通过 PromQL内置函数 delta()可以获取样本在一段时间范围内的变化情况。例如,计算 CPU 温度在两个小时内的差异:

delta(cpu_temp_celsius{host="zeus"}[2h])

还可以直接使用 predict_linear()对数据的变化趋势进行预测。例如,预测系统磁盘空间在 4 个小时之后的剩余情况:

predict_linear(node_filesystem_free_bytes[1h], 4 * 3600)

3)Histogram(直方图类型) 和 Summary(摘要类型)

除了 CounterGauge类型的监控指标以外,Prometheus 还定义了 HistogramSummary的指标类型。HistogramSummary主用用于统计和分析样本的分布情况。

在大多数情况下人们都倾向于使用某些量化指标的平均值,例如 CPU 的平均使用率、页面的平均响应时间,这种方式也有很明显的问题,以系统 API 调用的平均响应时间为例:如果大多数 API 请求都维持在 100ms 的响应时间范围内,而个别请求的响应时间需要 5s,那么就会导致某些 WEB 页面的响应时间落到中位数上,而这种现象被称为长尾问题。为了区分是平均的慢还是长尾的慢,最简单的方式就是按照请求延迟的范围进行分组。例如,统计延迟在 0~10ms 之间的请求数有多少而 10~20ms 之间的请求数又有多少。通过这种方式可以快速分析系统慢的原因。HistogramSummary都是为了能够解决这样的问题存在的,通过 HistogramSummary类型的监控指标,我们可以快速了解监控样本的分布情况。

例如,指标 prometheus_tsdb_wal_fsync_duration_seconds的指标类型为 Summary。它记录了 Prometheus Server 中 wal_fsync的处理时间,通过访问 Prometheus Server 的 /metrics地址,可以获取到以下监控样本数据:

# HELP prometheus_tsdb_wal_fsync_duration_seconds Duration of WAL fsync.# TYPE prometheus_tsdb_wal_fsync_duration_seconds summaryprometheus_tsdb_wal_fsync_duration_seconds{quantile="0.5"} 0.012352463prometheus_tsdb_wal_fsync_duration_seconds{quantile="0.9"} 0.014458005prometheus_tsdb_wal_fsync_duration_seconds{quantile="0.99"} 0.017316173prometheus_tsdb_wal_fsync_duration_seconds_sum 2.888716127000002prometheus_tsdb_wal_fsync_duration_seconds_count 216

从上面的样本中可以得知当前 Prometheus Server 进行 wal_fsync操作的总次数为 216 次,耗时 2.888716127000002s。其中中位数(quantile=0.5)的耗时为 0.012352463,9 分位数(quantile=0.9)的耗时为 0.014458005s。

在 Prometheus Server 自身返回的样本数据中,我们还能找到类型为 Histogram 的监控指标 prometheus_tsdb_compaction_chunk_range_seconds_bucket

# HELP prometheus_tsdb_compaction_chunk_range_seconds Final time range of chunks on their first compaction# TYPE prometheus_tsdb_compaction_chunk_range_seconds histogramprometheus_tsdb_compaction_chunk_range_seconds_bucket{le="100"} 71prometheus_tsdb_compaction_chunk_range_seconds_bucket{le="400"} 71prometheus_tsdb_compaction_chunk_range_seconds_bucket{le="1600"} 71prometheus_tsdb_compaction_chunk_range_seconds_bucket{le="6400"} 71prometheus_tsdb_compaction_chunk_range_seconds_bucket{le="25600"} 405prometheus_tsdb_compaction_chunk_range_seconds_bucket{le="102400"} 25690prometheus_tsdb_compaction_chunk_range_seconds_bucket{le="409600"} 71863prometheus_tsdb_compaction_chunk_range_seconds_bucket{le="1.6384e+06"} 115928prometheus_tsdb_compaction_chunk_range_seconds_bucket{le="6.5536e+06"} 2.5687892e+07prometheus_tsdb_compaction_chunk_range_seconds_bucket{le="2.62144e+07"} 2.5687896e+07prometheus_tsdb_compaction_chunk_range_seconds_bucket{le="+Inf"} 2.5687896e+07prometheus_tsdb_compaction_chunk_range_seconds_sum 4.7728699529576e+13prometheus_tsdb_compaction_chunk_range_seconds_count 2.5687896e+07

Summary类型的指标相似之处在于 Histogram类型的样本同样会反应当前指标的记录的总数(以 _count作为后缀)以及其值的总量(以 _sum作为后缀)。不同在于 Histogram指标直接反应了在不同区间内样本的个数,区间通过标签 le 进行定义。

三、表达式四种数据类型

PromQL 查询语句即表达式,实现的四种数据类型:

瞬时向量(Instant vector):一组时间序列,每个时间序列包含单个样本,它们共享相同的时间戳。也就是说,表达式的返回值中只会包含该时间序列中最新的一个样本值。区间向量(Range vector):一组时间序列,每个时间序列包含一段时间范围内的样本数据。标量(Scalar):一个浮点型的数据值,没有时序。可以写成[-](digits)[.(digits)]的形式。需要注意的是,使用表达式 count(http_requests_total)返回的数据类型依然是瞬时向量,用户可以通过内置函数 scalar()将单个瞬时向量转换为标量。字符串(String):一个简单的字符串值。字符串可以用单引号("")、双引号("")或反引号(``)来指定。

1)瞬时向量(Instant vector)

Instance vector(瞬时向量)表示一个时间序列的集合,但是每个时序只有最近的一个点,而不是线。

2)区间向量(Range vector)

Range vector(范围向量)表示一段时间范围里的时序,每个时序可包含多个点 。

3)标量(Scalar)

Scalar(标量)通常为数值,可以将只有一个时序的 Instance vector 转换成 Scalar。

4) 字符串(String)

一个简单的字符串值。字符串可以用单引号("")、双引号("")或反引号(``)来指定。

四、时间序列(向量)

按照时间顺序记录系统、设备状态变化的数据,每个数据成为一个样本。

数据采集以特定的时间周期进行,因而,随着时间流逝,将这些样本数据记录下来,将生成一个离散的样本数据序列。该序列也称为向量(Vector),以时间轴为横坐标、序列为纵坐标,这些数据点连接起来就会形成一个矩阵。

1)时间序列的构成

每条时间序列(Time Series)是通过指标名称(Metrics name)和一组标签集(Label set)来命名的。

如果 time 相同,但是指标名称或者标签集不同,那么时间序列也不同。

2)样本构成

矩阵中每一个点都可称为一个样本(Sample),样本主要由 3 方面构成。

指标(Metrics):包括指标名称(Metrics name)和一组标签集(Label set)名称,如 request_total{path="/status",method="GET"}。时间戳(TimeStamp):这个值默认精确到毫秒。样本值(Value):这个值默认使用 Float64 浮点类型。

时间序列的指标(Metrics)存储格式为 key-value。

http_request_total{status="200",method="GET"}@1434417560938=>94355为例,在 Key-Value 关系中,94355 作为 Value(也就是样本值 Sample Value),前面的 http_request_total{status="200",method="GET"}@1434417560938一律作为 Key。

3)key 的组成

Metric Name:指标名(例子中的 http_request_total)Label:标签(例子中的{status="200",method="GET"})Timestamp:时间戳(例子中的@1434417560938)

Prometheus Metrics 两种表现形式:

五、标签过滤器 4 种运算符

=:与字符串匹配!=:与字符串不匹配=~:与正则匹配!~:与正则不匹配

1)匹配器(Matcher)

匹配器是作用于标签上的,标签匹配器可以对时间序列进行过滤,Prometheus 支持完全匹配和正则匹配两种模式:完全匹配正则表达式匹配

2)完全匹配

1、相等匹配器(=)

相等匹配器(Equality Matcher),用于选择与提供的字符串完全相同的标签。下面介绍的例子中就会使用相等匹配器按照条件进行一系列过滤。

node_cpu_seconds_total{instance="ydzs-master"}

2、不相等匹配器(!=)

不相等匹配器(Negative Equality Matcher),用于选择与提供的字符串不相同的标签。它和相等匹配器是完全相反的。举个例子,如果想要查看 job 并不是 HelloWorld 的 HTTP 请求总数,可以使用如下不相等匹配器。

3)正则表达式匹配

1、正则表达式匹配器(=~)

正则表达式匹配器(Regular Expression Matcher),用于选择与提供的字符串进行正则运算后所得结果相匹配的标签。Prometheus 的正则运算是强指定的,比如正则表达式 a 只会匹配到字符串 a,而并不会匹配到 ab 或者 ba 或者 abc。如果你不想使用这样的强指定功能,可以在正则表达式的前面或者后面加上“.*”。比如下面的例子表示 job 是所有以 Hello 开头的 HTTP 请求总数。

node_cpu_seconds_total{instance=~"ydzs-.*", mode="idle"}

node_cpu_seconds_total直接等效于{__name__="node_cpu_seconds_total"},后者也可以使用和前者一样的 4 种匹配器(=,!=,=,!)。比如下面的案例可以表示所有以 Hello 开头的指标。

{__name__="node_cpu_seconds_total",instance=~"ydzs-.*", mode="idle"}

2、正则表达式相反匹配器(!~)

正则表达式相反匹配器(Negative Regular Expression Matcher),用于选择与提供的字符串进行正则运算后所得结果不匹配的标签。因为 PromQL 的正则表达式基于 RE2 的语法,但是 RE2 不支持向前不匹配表达式,所以!~的出现是作为一种替代方案,以实现基于正则表达式排除指定标签值的功能。在一个选择器当中,可以针对同一个标签来使用多个匹配器。比如下面的例子,可以实现查找 job 名是 node 且安装在/prometheus 目录下,但是并不在/prometheus/user 目录下的所有文件系统并确定其大小。

node_filesystem_size_bytes{job="node",mountpoint=~"/prometheus/.*", mountpoint!~ "/prometheus/user/.*"}

六、范围选择器

我们可以通过将时间范围选择器 range vector selectors 附加到查询语句中,指定为每个返回的区间向量样本值中提取多长的时间范围。每个时间戳的值都是按时间倒序记录在时间序列中的,该值是从时间范围内的时间戳获取的对应的值。

时间范围通过数字来表示,单位可以使用以下其中之一的时间单位:

s - 秒m - 分钟h - 小时d - 天w - 周y - 年

比如 node_cpu_seconds_total{instance="ydzs-master",mode="idle"}这个查询语句,如果添加上 [1m]这个时间范围选择器,则我们可以得到如下所示的信息:

node_cpu_seconds_total{instance="ydzs-master",mode="idle"}[5m]

这是因为现在每一个时间序列中都有多个时间戳多个值,所以没办法渲染,必须是标量或者瞬时向量才可以绘制图形。

不过通常区间向量都会应用一个函数后变成可以绘制的瞬时向量,Prometheus 中对瞬时向量和区间向量有很多操作的 函数,不过对于区间向量来说最常用的函数并不多,使用最频繁的有如下几个函数:

rate(): 计算整个时间范围内区间向量中时间序列的每秒平均增长率。irate(): 仅使用时间范围中的最后两个数据点来计算区间向量中时间序列的每秒平均增长率, irate只能用于绘制快速变化的序列,在长期趋势分析或者告警中更推荐使用 rate函数。increase(): 计算所选时间范围内时间序列的增量,它基本上是速率乘以时间范围选择器中的秒数。

七、PromQL 运算符

1)数学运算符

数学运算符比较简单,就是简单的加减乘除等。

例如:我们通过 prometheus_http_response_size_bytes_sum可以查询到 Prometheus 这个应用的 HTTP 响应字节总和。但是这个单位是字节,我们希望用 MB 显示。那么我们可以这么设置:prometheus_http_response_size_bytes_sum/8/1024

PromQL 支持的所有数学运算符如下所示:

+ (加法)- (减法)* (乘法)/ (除法)% (求余)^ (幂运算)

2)布尔运算符

布尔运算符支持用户根据时间序列中样本的值,对时间序列进行过滤。

例如:我们可以通过 prometheus_http_requests_total 查询出每个接口的请求次数,但是如果我们想筛选出请求次数超过 20 次的接口呢?

此时我们可以用下面的 PromQL 表达式:

prometheus_http_requests_total > 20

从上面的图中我们可以看到,value 的值还是具体的数值。但如果我们希望对符合条件的数据,value 变为 1。不符合条件的数据,value 变为 0。那么我们可以使用bool 修饰符。

我们使用下面的 PromQL 表达式:

prometheus_http_requests_total > bool 20

目前,Prometheus 支持以下布尔运算符如下:

==(相等)!=(不相等)>(大于)<(小于)>=(大于或等于)<=(小于或等于)

3)集合运算符

通过集合运算,可以在两个瞬时向量与瞬时向量之间进行相应的集合操作。目前,Prometheus 支持以下集合运算符:

and 与操作or 或操作unless 排除操作

1、and 与操作

vector1 and vector2 进行一个与操作,会产生一个新的集合。该集合中的元素同时在 vector1 和 vector2 中都存在。

例如:我们有 vector1 为 A B C,vector2 为 B C D,那么 vector1 and vector2 的结果为:B C。

2、or 或操作

vector1 and vector2 进行一个或操作,会产生一个新的集合。该集合中包含 vector1 和 vector2 中的所有元素。

例如:我们有 vector1 为 A B C,vector2 为 B C D,那么 vector1 or vector2 的结果为:A B C D。

3、unless 排除操作

vector1 and vector2 进行一个或操作,会产生一个新的集合。该集合首先取 vector1 集合的所有元素,然后排除掉所有在 vector2 中存在的元素。

例如:我们有 vector1 为 A B C,vector2 为 B C D,那么 vector1 unless vector2 的结果为:A。

4)操作符优先级

在 PromQL 操作符中优先级由高到低依次为:

^*, /, %+, -==, !=, <=, <, >=, >and, unlessor

八、PromQL 内置函数

Prometheus 提供了其它大量的内置函数,可以对时序数据进行丰富的处理。某些函数有默认的参数,例如:year(v=vector(time()) instant-vector)。其中参数 v 是一个瞬时向量,如果不提供该参数,将使用默认值 vector(time())。instant-vector 表示参数类型。

1) abs()

abs(v instant-vector) 返回输入向量的所有样本的绝对值。

2)absent()

absent(v instant-vector),如果传递给它的向量参数具有样本数据,则返回空向量;如果传递的向量参数没有样本数据,则返回不带度量指标名称且带有标签的时间序列,且样本值为 1。

当监控度量指标时,如果获取到的样本数据是空的, 使用 absent 方法对告警是非常有用的。例如:

# 这里提供的向量有样本数据absent(http_requests_total{method="get"})  => no dataabsent(sum(http_requests_total{method="get"}))  => no data# 由于不存在度量指标 nonexistent,所以 返回不带度量指标名称且带有标签的时间序列,且样本值为1absent(nonexistent{job="myjob"})  => {job="myjob"}  1# 正则匹配的 instance 不作为返回 labels 中的一部分absent(nonexistent{job="myjob",instance=~".*"})  => {job="myjob"}  1# sum 函数返回的时间序列不带有标签,且没有样本数据absent(sum(nonexistent{job="myjob"}))  => {}  1

3)ceil()

ceil(v instant-vector)将 v 中所有元素的样本值向上四舍五入到最接近的整数。例如:

node_load5{instance="192.168.1.75:9100"} # 结果为 2.79ceil(node_load5{instance="192.168.1.75:9100"}) # 结果为 3

4)changes()

changes(v range-vector)输入一个区间向量, 返回这个区间向量内每个样本数据值变化的次数(瞬时向量)。例如:

# 如果样本数据值没有发生变化,则返回结果为 1changes(node_load5{instance="192.168.1.75:9100"}[1m]) # 结果为 1

5)clamp_max()

clamp_max(v instant-vector, max scalar)函数,输入一个瞬时向量和最大值,样本数据值若大于 max,则改为 max,否则不变。例如:

node_load5{instance="192.168.1.75:9100"} # 结果为 2.79clamp_max(node_load5{instance="192.168.1.75:9100"}, 2) # 结果为 2

6)clamp_min()

clamp_min(v instant-vector, min scalar)函数,输入一个瞬时向量和最小值,样本数据值若小于 min,则改为 min,否则不变。例如:

node_load5{instance="192.168.1.75:9100"} # 结果为 2.79clamp_min(node_load5{instance="192.168.1.75:9100"}, 3) # 结果为 3

7)day_of_month()

day_of_month(v=vector(time()) instant-vector)函数,返回被给定 UTC 时间所在月的第几天。返回值范围:1~31。

8)day_of_week()

day_of_week(v=vector(time()) instant-vector)函数,返回被给定 UTC 时间所在周的第几天。返回值范围:0~6,0 表示星期天。

9)days_in_month()

days_in_month(v=vector(time()) instant-vector)函数,返回当月一共有多少天。返回值范围:28~31。

10)delta()

delta(v range-vector)的参数是一个区间向量,返回一个瞬时向量。它计算一个区间向量 v 的第一个元素和最后一个元素之间的差值。由于这个值被外推到指定的整个时间范围,所以即使样本值都是整数,你仍然可能会得到一个非整数值。

例如,下面的例子返回过去两小时的 CPU 温度差:

delta(cpu_temp_celsius{host="zeus"}[2h])

11)deriv()

deriv(v range-vector)的参数是一个区间向量,返回一个瞬时向量。它使用简单的线性回归计算区间向量 v 中各个时间序列的导数。这个函数一般只用在 Gauge 类型的时间序列上。

12)exp()

exp(v instant-vector)函数,输入一个瞬时向量,返回各个样本值的 e 的指数值,即 e 的 N 次方。当 N 的值足够大时会返回 +Inf。特殊情况为:

Exp(+Inf) = +InfExp(NaN) = NaN

13)floor()

floor(v instant-vector)函数与 ceil() 函数相反,将 v 中所有元素的样本值向下四舍五入到最接近的整数。

14)histogram_quantile()

histogram_quantile(φ float, b instant-vector)从 bucket 类型的向量 b 中计算 φ (0 ≤ φ ≤ 1) 分位数(百分位数的一般形式)的样本的最大值。(有关 φ 分位数的详细说明以及直方图指标类型的使用,请参阅直方图和摘要)。向量 b 中的样本是每个 bucket 的采样点数量。每个样本的 labels 中必须要有 le 这个 label 来表示每个 bucket 的上边界,没有 le 标签的样本会被忽略。直方图指标类型自动提供带有 _bucket 后缀和相应标签的时间序列。可以使用 rate() 函数来指定分位数计算的时间窗口。

例如:一个直方图指标名称为 employee_age_bucket_bucket,要计算过去 10 分钟内 第 90 个百分位数,请使用以下表达式:

histogram_quantile(0.9, rate(employee_age_bucket_bucket[10m]))

返回:

{instance="10.0.86.71:8080",job="prometheus"} 35.714285714285715

这表示最近 10 分钟之内 90% 的样本的最大值为 35.714285714285715。

15)holt_winters()

holt_winters(v range-vector, sf scalar, tf scalar)函数基于区间向量 v,生成时间序列数据平滑值。平滑因子 sf 越低, 对旧数据的重视程度越高。趋势因子 tf 越高,对数据的趋势的考虑就越多。其中,0< sf, tf <=1。holt_winters 仅适用于 Gauge类型的时间序列。

16)hour()

hour(v=vector(time()) instant-vector)函数返回被给定 UTC 时间的当前第几个小时,时间范围:0~23。

17)idelta()

idelta(v range-vector)的参数是一个区间向量, 返回一个瞬时向量。它计算最新的 2 个样本值之间的差值。这个函数一般只用在 Gauge 类型的时间序列上。

18)increase()

increase(v range-vector)函数获取区间向量中的第一个和最后一个样本并返回其增长量, 它会在单调性发生变化时(如由于采样目标重启引起的计数器复位)自动中断。由于这个值被外推到指定的整个时间范围,所以即使样本值都是整数,你仍然可能会得到一个非整数值。

例如:以下表达式返回区间向量中每个时间序列过去 5 分钟内 HTTP 请求数的增长数:

increase(http_requests_total{job="apiserver"}[5m])

increase 的返回值类型只能是计数器类型,主要作用是增加图表和数据的可读性。使用 rate 函数记录规则的使用率,以便持续跟踪数据样本值的变化。

19)irate()

irate(v range-vector)函数用于计算区间向量的增长率,但是其反应出的是瞬时增长率。irate 函数是通过区间向量中最后两个两本数据来计算区间向量的增长速率,它会在单调性发生变化时(如由于采样目标重启引起的计数器复位)自动中断。这种方式可以避免在时间窗口范围内的“长尾问题”,并且体现出更好的灵敏度,通过 irate 函数绘制的图标能够更好的反应样本数据的瞬时变化状态。

例如:以下表达式返回区间向量中每个时间序列过去 5 分钟内最后两个样本数据的 HTTP 请求数的增长率:

irate(http_requests_total{job="api-server"}[5m])

20)label_join()

label_join(v instant-vector, dst_label string, separator string, src_label_1 string, src_label_2 string, ...)函数可以将时间序列 v 中多个标签 src_label 的值,通过 separator 作为连接符写入到一个新的标签 dst_label 中。可以有多个 src_label 标签。

例如:以下表达式返回的时间序列多了一个 foo 标签,标签值为 etcd,etcd-k8s:

up{endpoint="api",instance="192.168.123.248:2379",job="etcd",namespace="monitoring",service="etcd-k8s"}=> up{endpoint="api",instance="192.168.123.248:2379",job="etcd",namespace="monitoring",service="etcd-k8s"}  1label_join(up{endpoint="api",instance="192.168.123.248:2379",job="etcd",namespace="monitoring",service="etcd-k8s"}, "foo", ",", "job", "service")=> up{endpoint="api",foo="etcd,etcd-k8s",instance="192.168.123.248:2379",job="etcd",namespace="monitoring",service="etcd-k8s"}  1

21)label_replace()

为了能够让客户端的图标更具有可读性,可以通过 label_replace 函数为时间序列添加额外的标签。label_replace 的具体参数如下:

label_replace(v instant-vector, dst_label string, replacement string, src_label string, regex string)

该函数会依次对 v 中的每一条时间序列进行处理,通过 regex 匹配 src_label 的值,并将匹配部分 relacement 写入到 dst_label 标签中。如下所示:

label_replace(up, "host", "$1", "instance",  "(.*):.*")

函数处理后,时间序列将包含一个 host 标签,host 标签的值为 Exporter 实例的 IP 地址:

up{host="localhost",instance="localhost:8080",job="cadvisor"}   1up{host="localhost",instance="localhost:9090",job="prometheus"}   1up{host="localhost",instance="localhost:9100",job="node"}   1

22)ln()

ln(v instant-vector) 计算瞬时向量 v 中所有样本数据的自然对数。特殊情况:

ln(+Inf) = +Infln(0) = -Infln(x < 0) = NaNln(NaN) = NaN

23)log2()

log2(v instant-vector)函数计算瞬时向量 v 中所有样本数据的二进制对数。特殊情况同上。

24)log10()

log10(v instant-vector)计算瞬时向量 v 中所有样本数据的十进制对数。特殊情况同上。

25)minute()

minute(v=vector(time()) instant-vector)函数返回给定 UTC 时间当前小时的第多少分钟。结果范围:0~59。

26)month()

month(v=vector(time()) instant-vector)函数返回给定 UTC 时间当前属于第几个月,结果范围:0~12。

27)predict_linear()

predict_linear(v range-vector, t scalar)函数可以预测时间序列 v 在 t 秒后的值。它基于简单线性回归的方式,对时间窗口内的样本数据进行统计,从而可以对时间序列的变化趋势做出预测。该函数的返回结果不带有度量指标,只有标签列表。

例如,基于 2 小时的样本数据,来预测主机可用磁盘空间的是否在 4 个小时候被占满,可以使用如下表达式:

predict_linear(node_filesystem_free{job="node"}[2h], 4 * 3600) < 0

28)rate()

rate(v range-vector)函数可以直接计算区间向量 v 在时间窗口内平均增长速率,它会在单调性发生变化时(如由于采样目标重启引起的计数器复位)自动中断。该函数的返回结果不带有度量指标,只有标签列表。

例如,以下表达式返回区间向量中每个时间序列过去 5 分钟内 HTTP 请求数的每秒增长率:

rate(http_requests_total[5m])结果:{code="200",handler="label_values",instance="120.77.65.193:9090",job="prometheus",method="get"} 0{code="200",handler="query_range",instance="120.77.65.193:9090",job="prometheus",method="get"}  0{code="200",handler="prometheus",instance="120.77.65.193:9090",job="prometheus",method="get"}   0.2...

rate() 函数返回值类型只能用计数器,在长期趋势分析或者告警中推荐使用这个函数。

注意:

当将 rate() 函数与聚合运算符(例如 sum())或随时间聚合的函数(任何以 _over_time 结尾的函数)一起使用时,必须先执行 rate 函数,然后再进行聚合操作,否则当采样目标重新启动时 rate() 无法检测到计数器是否被重置。

29)resets()

resets(v range-vector)的参数是一个区间向量。对于每个时间序列,它都返回一个计数器重置的次数。两个连续样本之间的值的减少被认为是一次计数器重置。

这个函数一般只用在计数器类型的时间序列上。

30)round()

round(v instant-vector, to_nearest=1 scalar)函数与 ceil 和 floor 函数类似,返回向量中所有样本值的最接近的整数。to_nearest 参数是可选的,默认为 1,表示样本返回的是最接近 1 的整数倍的值。你也可以将该参数指定为任意值(也可以是小数),表示样本返回的是最接近它的整数倍的值。

31)scalar()

scalar(v instant-vector)函数的参数是一个单元素的瞬时向量,它返回其唯一的时间序列的值作为一个标量。如果度量指标的样本数量大于 1 或者等于 0, 则返回 NaN。

32) sort()

sort(v instant-vector)函数对向量按元素的值进行升序排序,返回结果:key: value = 度量指标:样本值[升序排列]。

33)sort_desc()

sort(v instant-vector)函数对向量按元素的值进行降序排序,返回结果:key: value = 度量指标:样本值[降序排列]。

34) sqrt()

sqrt(v instant-vector)函数计算向量 v 中所有元素的平方根。

35)time()

time()函数返回从 1970-01-01 到现在的秒数。注意:它不是直接返回当前时间,而是时间戳

36)timestamp()

timestamp(v instant-vector)函数返回向量 v 中的每个样本的时间戳(从 1970-01-01 到现在的秒数)。

该函数从 Prometheus 2.0 版本开始引入。

37)vector()

vector(s scalar)函数将标量 s 作为没有标签的向量返回,即返回结果为:key: value= {}, s。

38)year()

year(v=vector(time()) instant-vector)函数返回被给定 UTC 时间的当前年份。

39)_over_time()

下面的函数列表允许传入一个区间向量,它们会聚合每个时间序列的范围,并返回一个瞬时向量:

avg_over_time(range-vector) : 区间向量内每个度量指标的平均值。min_over_time(range-vector) : 区间向量内每个度量指标的最小值。max_over_time(range-vector) : 区间向量内每个度量指标的最大值。sum_over_time(range-vector) : 区间向量内每个度量指标的求和。count_over_time(range-vector) : 区间向量内每个度量指标的样本数据个数。quantile_over_time(scalar, range-vector) : 区间向量内每个度量指标的样本数据值分位数,φ-quantile (0 ≤ φ ≤ 1)。stddev_over_time(range-vector) : 区间向量内每个度量指标的总体标准差。stdvar_over_time(range-vector) : 区间向量内每个度量指标的总体标准方差。12345678

注意:

即使区间向量内的值分布不均匀,它们在聚合时的权重也是相同的。

八、PromQL 聚合操作

Prometheus 还提供了聚合操作符,这些操作符作用于瞬时向量。可以将瞬时表达式返回的样本数据进行聚合,形成一个新的时间序列。目前支持的聚合函数有:

sum (求和)min (最小值)max (最大值)avg (平均值)stddev (标准差)stdvar (标准方差)count (计数)count_values (对 value 进行计数)bottomk (后 n 条时序)topk (前 n 条时序)

1)sum 求和

用于对记录的 value 值进行求和。

例如:sum(prometheus_http_requests_total)表示统计所有 HTTP 请求的次数。

sum(prometheus_http_requests_total)

2)min 最小值

返回所有记录的最小值。

例如:min(prometheus_http_requests_total)表示获取数据集合中的最小值。

min(prometheus_http_requests_total)

3)max 最大值

返回所有记录的最大值。

例如:maxmetheus_http_requests_total)` 表示获取数据集合中的最大值。

max(prometheus_http_requests_total)

4)avg 平均值

avg 函数返回所有记录的平均值。

例如:avg(metheus_http_requests_total)表示获取数据集合中的平均值。

avg(prometheus_http_requests_total)

5)stddev 标准差

标准差(Standard Deviation)常用来描述数据的波动大小。

例如:统计出不同 HTTP 请求的数量波动情况。

stddev(prometheus_http_requests_total)

6)count 计数

count 函数返回所有记录的计数。

例如:count(prometheus_http_requests_total)表示统计所有 HTTP 请求的次数。

count(prometheus_http_requests_total)

7)bottomk 后几条

bottomk 用于对样本值进行排序,返回当前样本值后 N 位的时间序列。

例如:获取 HTTP 请求量后 5 位的请求,可以使用表达式:

bottomk(5, prometheus_http_requests_total)

8)topk 前几条

topk 用于对样本值进行排序,返回当前样本值前 N 位的时间序列。

例如:获取 HTTP 请求量前 5 位的请求,可以使用表达式:

topk(5, prometheus_http_requests_total)

九、PromQL 非法总结

由于所有的 PromQL 表达式必须至少包含一个指标名称,或者至少有一个不会匹配到空字符串的标签过滤器,因此结合 Prometheus 官方文档,可以梳理出如下非法示例。

{job=~".*"} # 非法!.*表示任意一个字符,这就包括空字符串,且还没有指标名称{job=""}    # 非法!{job!=""}   # 非法!

相反,如下表达式是合法的。

{job=~".+"}               # 合法!.+表示至少一个字符{job=~".*",method="get"}  # 合法!.*表示任意一个字符{job="",method="post"}    # 合法!存在一个非空匹配{job=~".+",method="post"} # 合法!存在一个非空匹配

关于 Prometheus PromQL 讲解就先到这里了,其实官网介绍的很清楚,也不难,多使用就很容易掌握了,有疑问的小伙伴欢迎给我留言,后续会持续更新【云原生+大数据】的文章,请小伙伴耐心等待~

上一篇 :

下一篇 :

x
广告
推荐

微动态丨保姆级 Prometheus PromQL 讲解与实战操作

腾讯云 2023-03-23

天天新动态:翠翠天保是哪本小说的人物

万年历 2023-03-23

今日要闻!国家网信办公布《网信部门行政执法程序规定》 6月1日起施行

中国新闻网 2023-03-23

快资讯丨新增1.5T Evo2发动机,全新探歌懂你所需、知你所想

爱卡汽车网 2023-03-23

世界短讯!和讯个股快报:2023年03月23日 恒宇信通(300965)该股换手率大于8%

自选股智能写手 2023-03-23

胡润全球富豪榜: LVMH集团掌门人首登世界首富 天天即时看

南财快讯 2023-03-23

2022-2023年度「互联网经济大奖」榜单揭晓

中国电子银行网 2023-03-23

全球热推荐:李佳航个人资料简介

万年历 2023-03-23

60岁退休后,退休金仅有2000元,存款20万元,可以安心养 天天新要闻

东方资讯 2023-03-23

世界最资讯丨100MW/1061MWh!世界最大规模碳铅储能电站落地浙江

北极星储能网 2023-03-23

《我的朋友佩德罗》:为帅而生的“香蕉芭蕾”,其实是款重制作品 环球焦点

王者解说 2023-03-23

3月22日基金净值:华商稳健双利债券A最新净值1.627

证券之星 2023-03-23

天天精选!二裂酵母是什么意思_二裂酵母是什么

互联网 2023-03-22

巴厘岛旅游注意事项是什么 今日关注

万年历 2023-03-22

零跑汽车2022年净亏损扩大至51亿元,面对价格战降价减配

红星新闻 2023-03-22

南大苏州校区6月启用,苏州将争取开通与主校区间高铁通勤班次

澎湃新闻 2023-03-22

怎样评价杜兰特在电影《被解救的姜戈》中的表演? 天天报道

互联网 2023-03-22

仅差800米!深蓉“轨交第四城”之争白热化,还有一个搅局者_环球热点

第一财经 2023-03-22

迈得医疗(688310)3月22日主力资金净卖出111.90万元

证券之星 2023-03-22

全省首次!哈尔滨市南岗区法院集中公开宣判20起偷逃高速通行费案件

哈尔滨市中级人民法院 2023-03-22

焦点快播:塔里木油田获第七届中国工业大奖并入选国资委创建世界一流专精特新示范企业

科技日报 2023-03-22

肠道微生物群被用作诊断疾病的工具 有望在脂肪肝诊断中取得成果

互联网 2023-03-22

前沿热点:暖宝宝可以放在眼罩里吗?

南方养生网 2023-03-22

苏教版五年级下册数学补充习题答案_苏教版五年级下册教案-天天热闻

元宇宙网 2023-03-22

唐山动物园开放时间+门票价格+预约方式

本地宝 2023-03-21

航拍博鳌亚洲论坛永久会址-快看点

中国新闻网 2023-03-21

宥的意思_宥什么意思

互联网 2023-03-21

焦作四中分数线2021_焦作四中分数线-最新

科学教育网 2023-03-21

费城8连胜太猛!可惜哈登…

篮球大图 2023-03-21

【新要闻】普枫新能源与岭郅中国合作的余姚岭郅分布式光伏项目并网发电

互联网 2023-03-21

有龙字的成语是哪些_有龙字的成语

互联网 2023-03-21

焦点要闻:“二维码”不能成“拦路码”

中工网-工人日报 2023-03-21

每日快看:带有方向的作文题目(必备36篇)

互联网 2023-03-21

科创板股票自什么起可作为融资(科创板股票自( )起可作为融资融券标的)

互联网 2023-03-20

库拉树是真实存在的吗(库拉树)|每日热闻

互联网 2023-03-20

首艘不合标准运维船被退场!海风装备质量差未来将被风电业主抵制|天天快看点

南通海事 2023-03-20

Facebook 也推出了 blue-check Verified 程序

互联网 2023-03-20

慈诚罗珠堪布|在大乘中是以两种力量转为道用:第一个是空性见。另外一个就是菩提心的力量。 当前观点

香巴拉佛教中心 2023-03-20

人字开头的成语大全_人字开头的成语_焦点速看

互联网 2023-03-20

世界头条:昆明主城小学一年级招生入学信息31日公布

春城晚报 2023-03-20

速看:今天最新消息 河南新增本土无症状感染者转确诊病例13例 新增本土无症状感染者40例

互联网 2023-03-20

抖音dadadadada什么歌英语_抖音dadadadada什么歌|世界报资讯

互联网 2023-03-20

餐饮行业如何吸引顾客_餐饮业如何吸引顾客 每日热议

互联网 2023-03-19

王玉雯夏至未至演的谁_胡一天夏至未至演的谁

互联网 2023-03-19

期冀未来的意思_期冀

互联网 2023-03-19

首金诞生!全红婵陈芋汐勇夺双人10米台冠军,再演水花消失术 新动态

天涯沦落人 2023-03-19

今日热讯:win7怎么截图快_win7怎么截图

互联网 2023-03-19

最新:事关3岁以下婴幼儿托育,官方公开征求意见

中国教育新闻网 2023-03-19

石霍的功效与作用_石斜的功效与作用 焦点简讯

互联网 2023-03-18

夜走蜈蚣岭评书_夜走蜈蚣岭_世界快报

科学教育网 2023-03-18

实木颗粒板材和多层板_板材对比实木颗粒板与多层实木板哪个好点

互联网 2023-03-18

小史密斯0.4秒三分准绝杀 火箭逆转胜鹈鹕

北青网 2023-03-18

“老婆很漂亮,但我还是出轨了”,这个原因是多少婚姻过不去的槛?

王耳朵先生 2023-03-18

全球看热讯:IG和RNG互相较劲!分别下调1人和上调1人,就连小虎都有替补了

话说小王子 2023-03-18

2019年10月:全国各省市合成洗涤剂产量排名,广东省当月产27.23万吨登顶

报告网 2023-03-17

当前速读:水利部:全力推进2023年水资源管理重点工作 推动出台水资源刚性约束制度文件

上海证券报·中国证券网 2023-03-17

字节跳动11周年梁汝波内部发言:我们最近一两年的领先不明显了

互联网 2023-03-17

6岁女童看店 2人用98元买走60根虫草 店主:是误会,已归还

站长之家 2023-03-17

山楂苹果水的功效与作用及禁忌_山楂苹果水的功效

互联网 2023-03-17

2023年“昆明市领导干部培训日”专题讲座第一讲开讲

昆明日报 2023-03-17

实时:湖南裕能(301358)3月16日主力资金净卖出7246.96万元

证券之星 2023-03-17

世界最新:女子酒后地铁上暴打男子被行拘10日是什么情况

互联网 2023-03-17

部编版六年级语文上册期末检测卷(部编版六年级语文上册期末试卷)_每日看点

互联网 2023-03-17

帐和账的区别在哪里_帐和账的区别 环球今头条

互联网 2023-03-16

全球热资讯!带给达康书记快乐狂飙,这就是BJ60的家玩能力

爱卡汽车网 2023-03-16

【世界说】民调显示美国非裔选民最关注控枪、白人至上主义和经济等政府应对较差的问题-每日热文

中国日报网 2023-03-16

山西晋城警方打掉一“跑分”洗钱团伙 12人落网涉案1.2亿元

中国新闻网 2023-03-16

幽篁深林明月这些景物描绘了一幅怎样的图景_幽篁|环球新视野

互联网 2023-03-16

什么图片每天可以自学原画设计?怎样每天练习自学原画?-全球速讯

哔哩哔哩 2023-03-16

长虹能源:3月15日融资买入3.64万元,融资融券余额116.52万元|世界播资讯

证券之星 2023-03-16

每日视讯:北向资金单日净买入32.86亿元 加仓医药生物、交通运输、公用事业

证券时报·e公司 2023-03-16

万圣节南瓜灯_万圣南瓜

互联网 2023-03-16

合肥到九华山动车_合肥到九华山_每日信息

互联网 2023-03-15

天天即时看!dota2进去之后只有一个dota2_dota2进去黑屏就显示dota2怎么办

互联网 2023-03-15

鹅鸭杀登录注册教程 goose goose duck账号注册详细图文教程|当前独家

哔哩哔哩 2023-03-15

03月15日12时广东肇庆疫情数据 阳了以后为什么会腰疼?应该怎么办?

互联网 2023-03-15

每日消息!不必担忧硅谷银行事件冲击中国金融体系

证券时报 2023-03-15

《钟山区高中劳动教育指导手册》编写研讨会举行 快消息

东方资讯 2023-03-15

天天观热点:2023南宁一模答案解析及各科试卷汇总!_更新中

互联网 2023-03-15

环球信息:和邦生物:3月14日融券净卖出5.21万股,连续3日累计净卖出80.54万股

证券之星 2023-03-15

即时:冷门频出!世界第8出局,王楚钦迎战16岁天才,张本智和险被淘汰

小李子爱体育 2023-03-15

节节高升近义词(节节高升同义词) 环球视讯

互联网 2023-03-14

肇州县气象台发布道路结冰黄色预警【III级/较重】

二三里资讯 2023-03-14

天天快报!新城控股董事长王晓松:新城控股商业运营情况

母婴达人推荐官 2023-03-14

浙江发布不公平格式条款十大案例,娱乐公司谢绝自带酒水被罚-世界今头条

澎湃新闻 2023-03-14

乌兰察布新型冠状病毒肺炎疫情:3月14日乌兰察布疫情最新消息今天数据统计情况通报_简讯

互联网 2023-03-14

word下划线怎么打不出来

互联网 2023-03-14

加科思-B(01167.HK):三项临床前研究资料将在2023年美国癌症研究协会(AACR)年会上公布 环球今日报

证券之星 2023-03-14

胆结石手术怎么做,痛苦吗_胆结石手术怎么做

互联网 2023-03-14

音乐声艺考考什么(艺考声乐是怎么考的)

互联网 2023-03-13

环球滚动:2021顺德欢乐海岸海神山电音季活动指南(附购票入口)

本地宝 2023-03-13

当前滚动:永葆初心 定创辉煌 | 厦门银行龙岩永定支行盛大开业!

中国网财经 2023-03-13

全球头条:宝刀不老!47岁丘索维金娜连续三站世界杯获得奖牌

中国新闻网 2023-03-13

焦点报道:全国36个重点城市分级一览表!

你的开心由我承包 2023-03-13

今日观点!江西崇仁县:筑牢社会安全“防火屏障”

中国青年网 2023-03-13

nokia 3210_nokia x3 02 报资讯

互联网 2023-03-13

【报资讯】上眼皮下垂是什么原因引起的?_上眼皮下垂什么原因

互联网 2023-03-13

每日热门:抚州市气象局

互联网 2023-03-12

今日热闻!外媒:超100家风投公司呼吁限制硅谷银行倒闭影响

成都商报红星新闻 2023-03-12

天天热资讯!各种练家子!台州比赛飞踢飞踹拳头满场飞!双方人马球场大战

直播吧 2023-03-12

用好科学界资源开展科学教育

东方资讯 2023-03-12

erp沙盘模拟大赛国赛_erp沙盘模拟大赛_当前短讯

互联网 2023-03-12

海南区全力推进主要交通干线及城区出入口环境综合治理工作 焦点热讯

北方海南 2023-03-11

焦点快报!嗨皮像素冒险什么时候出 公测上线时间预告

九游网 2023-03-11

brc是什么门窗_brc是什么币

互联网 2023-03-11

酵母菌发酵原理(酵母菌发酵)|世界视讯

互联网 2023-03-11

环球微资讯!花开了生态景区

互联网 2023-03-11

上海大众货运_热议

互联网 2023-03-11

城南以南不再蓝城北以北不再美是什么歌(海以南不再蓝城以北不再北城什么意思)

互联网 2023-03-11

陈太丘与友期行期是什么意思_陈太丘与友期行出处-焦点速讯

互联网 2023-03-11

世界焦点!金文奎ins账号_金文奎

互联网 2023-03-10

不重视外管7号文,股权激励恐怕“血本无归” 要闻

一心向上ESOP 2023-03-10

南卫股份: 南卫股份股东减持股份结果公告|当前快讯

证券之星 2023-03-10

天天信息:海南矿业(601969)3月10日主力资金净买入428.53万元

证券之星 2023-03-10

西测测试:公司承担的zzkk项目,主要为元器件筛选相关业务

同花顺金融研究中心 2023-03-10

三星电脑怎么恢复出厂_三星电脑怎么样

互联网 2023-03-10

环球时讯:淘宝造物节门票上下午_淘宝造物节门票

互联网 2023-03-10

世界新资讯:东契奇伤退欧文27分 独行侠憾负鹈鹕!CJ32+5+5

网易体育 2023-03-10

精雕软件工具栏没有了怎么改回来_金雕软件_热闻

互联网 2023-03-10

阿尔特塔:我们展现出很强的韧性,在这队里你必须每三天踢一场球

直播吧 2023-03-10

热头条丨两会好声音|全国人大代表曾娜:让“非遗”在新时代绽放新光彩

川观新闻 2023-03-10

焦点资讯:河北女子学院官网图片_河北女子学院官网

互联网 2023-03-09

热点在线丨机顶盒有信号电视黑屏无信号怎么办_机顶盒有信号电视黑屏

互联网 2023-03-09

当前报道:果洛新型冠状病毒肺炎疫情:3月9日果洛疫情最新消息今天数据统计情况通报

互联网 2023-03-09

满天星发芽后怎么养_满天星发芽后如何养护

互联网 2023-03-09

短除法是什么意思举例图片_短除法是什么

科学教育网 2023-03-09

【天天新要闻】中国电信河北营业厅网址_中国电信河北营业厅网

互联网 2023-03-09

复古霸业最新兑换码以及内部号问题解答-全球微资讯

哔哩哔哩 2023-03-09

徕卡100-400mm f/5-6.3照片曝光 熟悉的适马味道_世界看热讯

热点科技 2023-03-09

嫣怎么读写_嫣怎么读

互联网 2023-03-09

必要时停工、停业、停课!此地发布应急预案-视讯

杭州日报 2023-03-09

焊接油罐车爆炸什么情况?焊接油罐车爆炸2死1伤

互联网 2023-03-09

全球快看点丨少林寺旅游攻略_少林寺旅游攻略

互联网 2023-03-09

世界热点评!官宣!2月SUV销量榜:1-300名,仅12款破万,CR-V第7,博越L第10

懂车帝 2023-03-08

周大福内地业务负责人陈世昌辞任,股价连续两日下跌

新京报 2023-03-08

槑头槑脑什么意思_槑

互联网 2023-03-08

消息!爱奇艺回应2月充会员只能用28天,网友:套路绝了

今日热点 2023-03-08

arena-环球热讯

互联网 2023-03-08

LOL:十一年游戏还能再火吗?韩国网友给答案,网吧上座率第一 天天微动态

车来车往pro 2023-03-08

民宿设计开题报告_民宿设计

互联网 2023-03-08

朝歌电视剧

互联网 2023-03-08

回头是岸是什么意思_回头是岸是啥意思

互联网 2023-03-08

运动地板 环球观天下

互联网 2023-03-08

【全球速看料】中国生物:新型冠状病毒 mRNA 疫苗 I 期临床试验启动

IT之家 2023-03-08

微波铁氧体器件HFSS设计原理 上册 焦点热讯

互联网 2023-03-08

佛头果是什么水果 佛头果是啥水果_当前报道

万年历 2023-03-08

天天实时:安徽智行新能源科技有限公司

互联网 2023-03-08

钾盐矿_每日热点

互联网 2023-03-07

【焦点热闻】一直流黄鼻涕是怎么回事_流黄鼻涕是怎么回事

互联网 2023-03-07

小儿干咳是什么原因

万年历 2023-03-07

离散程度通俗解释_离散程度

互联网 2023-03-07

全球快资讯:缓存清理有什么影响_缓存清理

互联网 2023-03-07

广州市印刷公司

互联网 2023-03-07

世界观热点:玻璃棒的用途总结_玻璃棒的用途

互联网 2023-03-07

混凝土砌块 热点评

互联网 2023-03-07

全球要闻:美国今年已发生逾百起大规模枪击案 这是一个令人不安的里程碑

中国新闻网 2023-03-07

英国一流装备,星光防空导弹不愧是一款顶级高速近程面对空导弹武器系统!-世界快报

七夜小当家 2023-03-07

三星手机怎么关闭流量

万年历 2023-03-07

今日视点:月光曲课文主要内容概括_月光曲课文主要内容

互联网 2023-03-07

go to the top

互联网 2023-03-07

幽门螺杆菌概念板块3月6日涨1.08%,润达医疗领涨,主力资金净流出459.42万元 当前快播

证券之星 2023-03-07

flash是干什么用的补间_flash是干什么用的|全球快资讯

科学教育网 2023-03-07

玛沁

互联网 2023-03-06

刚怀孕怎么快速流产_吃什么可以自然流产

互联网 2023-03-06

5月4日青年节

互联网 2023-03-06

中亦科技:接受国金证券调研

每日经济新闻 2023-03-06

天天快看:开通美股账户需要什么条件

万年历 2023-03-06

养生茶 你喝对了吗_世界即时看

看看新闻Knews 2023-03-06

博隆技术拟在上交所主板上市募资10.06亿元,投资者可保持关注 天天即时看

证券之星 2023-03-06

求守护甜心亚梦和几斗一起的集数

万年历 2023-03-06

当前速递!上海迪士尼官微宣布:重启握手拥抱合影 网友已经等不及了

站长之家 2023-03-06

辽宁人事考试网怎么换照片_辽宁人事考试网报名 世界热讯

互联网 2023-03-06

非常视点:数字经济为青年就业拓展更大空间

青瞳视角 2023-03-06

全球今亮点!原神玩家绘制的黑板报火了!妮露钟离巨还原,学生们还有心学习?

刻晴你爱了吗 2023-03-06

全球热推荐:营养午餐手抄报数学_营养午餐手抄报

互联网 2023-03-06

天天观速讯丨格式工厂,一个不知廉耻的软件!

哔哩哔哩 2023-03-06

南方过年吃什么

万年历 2023-03-05

全球速递!璧山区“3.5学雷锋”快闪活动暨公益集市启幕

人民网 2023-03-05

看热讯:中国宠物

互联网 2023-03-05

春天的约定!这批青年志愿者相约将“学雷锋”敬老行动常态化 看点

极目新闻 2023-03-05

每日资讯:红军三大主力在哪里会师

万年历 2023-03-05

每日视点!樱花与古典园林相遇,开启宝墨园汉风古韵樱花节

广州日报 2023-03-05

宁州市属于哪个省

万年历 2023-03-05

诗婷露雅是哪个国家的品牌_诗婷露雅是什么国家的品牌 世界动态

元宇宙网 2023-03-05

世界视讯!“粮食信息处理与控制”省部共建教育部重点实验室

互联网 2023-03-05

环球热门:今天最新消息 马来西亚破获史上最大象牙走私案

互联网 2023-03-05

学术论文格式范文_学术论文格式 全球独家

互联网 2023-03-04

【环球报资讯】10分钟玩尽随身英语A-Z

互联网 2023-03-04

中国室内儿童游乐场排名_室内儿童游乐场注意事项

互联网 2023-03-04

夯实民生之本 推动社会保障事业高质量发展——人社部有关负责人谈新举措新进展|环球头条

新华网 2023-03-04

_Z-2-甲基-2-丁烯酸异戊酯 消息

互联网 2023-03-04

有猫在根据什么改编的 有猫在漫画哪里能免费看 全球微速讯

互联网 2023-03-04

精选!罗马诺:目前恩里克没有与切尔西进行接触 斯特林想继续留在蓝军

直播吧 2023-03-02

2-乙基己醛环乙二醇缩醛

互联网 2023-03-02

手握3套房,不上班一个月,崩溃了

临公子的后花园 2023-03-02

今日最新!签订抵押合同如何防范风险,没有办理抵押登记的抵押合同有效吗

法务网 2023-03-02

黄昏到寺蝙蝠飞下一句_黄昏到寺蝙蝠飞

互联网 2023-03-02

全球快报:什么是地推陌拜_什么是地推

互联网 2023-03-01

四川“便民办税春风行动”再推25条便民利企措施 全球今日讯

东方资讯 2023-03-01

法国足坛名宿方丹去世,单届世界杯13球纪录堪称神迹|当前热议

文汇网 2023-03-01

返回顶部