夜莺-Nightingale
夜莺V7
项目介绍 功能概览
部署升级 部署升级
数据接入 数据接入
告警管理 告警管理
数据查看 数据查看
功能介绍 功能介绍
API FAQ
夜莺V6
项目介绍 架构介绍
快速开始 快速开始
黄埔营
安装部署 安装部署
升级
采集器 采集器
使用手册 使用手册
API API
数据库表结构 数据库表结构
FAQ FAQ
开源生态
Prometheus
版权声明
第1章:天降奇兵 第1章:天降奇兵
第2章:探索PromQL 第2章:探索PromQL
第3章:Prometheus告警处理 第3章:Prometheus告警处理
第4章:Exporter详解 第4章:Exporter详解
第5章:数据与可视化 第5章:数据与可视化
第6章:集群与高可用 第6章:集群与高可用
第7章:Prometheus服务发现 第7章:Prometheus服务发现
第8章:监控Kubernetes 第8章:监控Kubernetes
第9章:Prometheus Operator 第9章:Prometheus Operator
参考资料

cadvisor采集插件

cadvisor

通过cadvisor采集容器基础资源数据,如果是采集kubeletmetrics/cadvisor接口,会自动附加podlabelannotation

Configuration

# # collect interval
# interval = 15

[[instances]]
# 填写kubelet的ip和port
url = "https://1.2.3.4:10250/metrics/cadvisor"
# # 如果path为空, 会自动补齐为/metrics/cadvisor
# url = "https://1.2.3.4:10250"
# 如果是通过kubelet采集,可以附加pod的label和annotation
type = "kubelet"

# # 直接采集cadvisor , type 设置为cadvisor
# url = "http://1.2.3.4:8080/metrics"
# type = "cadvisor"

# # url_label_key 和 url_label_value 用法参加下面说明
url_label_key = "instance"
url_label_value = "{{.Host}}"
# # 认证的token 或者token file
# bearer_token_string = "eyJhblonglongXXX.eyJplonglongYYY.oQsXlonglongZ-Z-Z"
bearer_token_file = "/path/to/token/file"

# 需要忽略的label key
ignore_label_keys = ["id","name", "container_label*"]
# 只采集那些label key, 建议保持为空,采集所有的label。 优先级高于ignore_label_keys。
#choose_label_keys = ["*"]

timeout = "3s"

# # Optional TLS Config
# # 想跳过自签证书,use_tls 记得要配置为true
use_tls = true
# tls_min_version = "1.2"
# tls_ca = "/etc/categraf/ca.pem"
# tls_cert = "/etc/categraf/cert.pem"
# tls_key = "/etc/categraf/key.pem"
## Use TLS but skip chain & host verification
insecure_skip_verify = true

url_label_key 和 url_label_value 用法

# 从URL中提取Host部分,放到instance label中 
# 假设 url =https://1.2.3.4:10250/metrics/cadvisor 
# 最终附加的label为 instance=1.2.3.4:10250

url_label_key = "instance" 
url_label_value = "{{.Host}}"
  • 这样采集http://1.2.3.4:10250/metrics 的指标中会附加一个instance=1.2.3.4:10250的标签

如果 scheme 部分和 path 部分都想取,可以这么写:

url_label_value = "{{.Scheme}}://{{.Host}}{{.Path}}"
  • 这样采集http://1.2.3.4:10250/metrics 的指标中会附加一个 instance=http://1.2.2.4:10250/metrics 的标签

相关变量是用这个方法生成的,供大家参考:

func (ul *UrlLabel) GenerateLabel(u *url.URL) (string, string, error) {
	if ul.LabelValue == "" {
		return ul.LabelKey, u.String(), nil
	}

	dict := map[string]string{
		"Scheme":   u.Scheme,
		"Host":     u.Host,
		"Hostname": u.Hostname(),
		"Port":     u.Port(),
		"Path":     u.Path,
		"Query":    u.RawQuery,
		"Fragment": u.Fragment,
	}

	var buffer bytes.Buffer
	err := ul.LabelValueTpl.Execute(&buffer, dict)
	if err != nil {
		return "", "", err
	}

	return ul.LabelKey, buffer.String(), nil
}

http://1.2.3.4:8080/search?q=keyword#results 为例, 变量及其值如下:

variable value
{{.Scheme}} http
{{.Host}} 1.2.3.4:8080
{{.Hostname}} 1.2.3.4
{{.Port}} 8080
{{.Path}} search
{{.Query}} q=keyword
{{.Fragment}} results

从url中提取多个变量作为标签(新版本 推荐)

从categraf 0.3.28 开始,支持从url中提取多个变量作为标签,比如

url_label_pair = {hostname="{{.Hostname}}", port="{{.Port}}"}

最终生成的label 会包含hostname=1.2.3.4port=8080两个标签

快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云
OpenSource
开源版
Flashcat
Flashcat