adapter的配置以configmap的模式,被挂载到adapter的pod中:
# kubectl get cm adapter-config -n monitoringNAME DATA AGEadapter-config 1 2d
一.配置文件的构造
整个配置蕴含2个重要的局部:
- rules局部:用于custom.metrics.k8s.io,用以自定义指标的HPA伸缩;
- resourceRule局部:用于metrics.k8s.io,用以cpu、mem指标的HPA伸缩;
rules: - seriesQuery: '{__name__=~"^container_.*",container_name!="POD",namespace!="",pod!=""}' seriesFilters: [] resources: overrides: namespace: resource: namespace pod: resource: pods name: matches: ^container_(.*)_seconds_total$ as: "" metricsQuery: sum(rate(<<.Series>>{<<.LabelMatchers>>,container_name!="POD"}[1m])) by (<<.GroupBy>>)---resourceRules: cpu: containerQuery: sum(rate(container_cpu_usage_seconds_total{<<.LabelMatchers>>}[1m])) by (<<.GroupBy>>) nodeQuery: sum(rate(container_cpu_usage_seconds_total{<<.LabelMatchers>>, id='/'}[1m])) by (<<.GroupBy>>) resources: overrides: instance: resource: nodes namespace: resource: namespace pod: resource: pods containerLabel: container_name
二. rules配置的构造
rules:- seriesQuery: '{__name__=~"^container_.*",container!="POD",namespace!="",pod!="”}' seriesFilters: [] resources: overrides: namespace: {resource: "namespace"}, pod: {resource: "pod"}, name: matches: "^container_(.*)_seconds_total$" metricsQuery: "sum(rate(<<.Series>>{<<.LabelMatchers>>,container!="POD"}[2m])) by (<<.GroupBy>>)"
每个rule通常由4局部形成:
Discovery: 筛选series,包含:
- seriesQuery
- seriesFilter
Association: 将prom的label与resource类型关联起来
- resources
Naming: 自定义输入的指标名称
- name
Querying: Go template用于定义PromQL表达式
- metricsQuery
三.rules配置详解
rules定义了指标的转换规则,用作custom.metrics.k8s.io HPA应用。
rules: - seriesQuery: '{__name__=~"^container_.*",container_name!="POD",namespace!="",pod!=""}' seriesFilters: [] resources: overrides: namespace: resource: namespace pod: resource: pods name: matches: ^container_(.*)_seconds_total$ as: "" metricsQuery: sum(rate(<<.Series>>{<<.LabelMatchers>>,container_name!="POD"}[1m])) by (<<.GroupBy>>)
- seriesQuery: 用于筛选series;
seriesFilters: 用于过滤掉不关怀的series;
- is <regex>: 只获取regex匹配到的指标名称;
- isNot <regex>:
resource: 将series中的标签与指标资源类型关联起来
- namespace: 将series中的namespace字段,与资源中的namespace字段关联;
- pod: 将series中的pod字段,与资源中的pods字段关联;
name: 用于给指标重命名,比方以_total结尾的指标,去掉后缀
- matches: 匹配源指标名;
- as: 指标指标名称,默认=$1,即第一个分组;
metricsQuery: 查问语句
- <<.Series>>=seriesQuery的后果;
- LabelMatches,通常是pod/namespace;
- GroupBy,通常是pod名称;
参考:
1.https://juejin.cn/post/6844903967218991117
2.config介绍:https://github.com/kubernetes-sigs/prometheus-adapter/blob/master/docs/config.md