最近排查promql问题的时候发现,只要promql中带有特殊字符的,在查询的时候特殊字符都会被转义。
比如在查询
sum(1 - rate(node_cpu_seconds_total{mode="idle"}[5m]) * on (namespace, pod) group_left(node) node_namespace_pod:kube_pod_info:{node=~"master2.sugonsit.local"}) by (node)
但是实际执行的表达式却是
sum%281+-+rate%28node_cpu_seconds_total%7Bmode%3D%22idle%22%7D%5B5m%5D%29+%2A+on+%28namespace%2C+pod%29+group_left%28node%29+node_namespace_pod%3Akube_pod_info%3A%7Bnode%3D~%22master2.sugonsit.local%22%7D%29+by+%28node%29
经过对比分析,可以知道
%28代表(
%7B代表{
%3D代表=
%22代表"
%7D代表}
%29代表)
%2C代表,
%21代表!
%5B代表[
%5D代表]
+ 代表空格
%2A 代表*
%3A代表:
%7C代表|