夜莺-Nightingale
夜莺V6
项目介绍
架构介绍
快速开始
黄埔营
安装部署
升级
采集器
使用手册
API
数据库表结构
users
target
user_group
user_group_member
task_tpl
task_tpl_host
task_record
sso_config
role
role_operation
recording_rule
notify_tpl
metric_view
datasource
configs
chart_share
busi_group
busi_group_member
builtin_cate
board
board_payload
alerting_engines
alert_subscribe
alert_rule
alert_mute
alert_his_event
alert_cur_event
alert_aggr_view
FAQ
转发数据给多个时序库
机器列表数据异常
数据流图
监控数据时有时无
查询原始监控数据
快捷视图详解
告警自愈模块使用
仪表盘里只展示我的机器
仪表盘里图表数据缺失
设置自定义告警通知方式
target_up指标的问题
夜莺可以监控 x 么
告警和恢复的判断逻辑
容量规划问题
connection refused
登录与认证
数据采集器Categraf
日志写到`/var/log/messages`
告警规则&告警模板如何引用变量
采集到的数据是字符串怎么处理
管理员密码忘记了
制作大盘如何添加图片
添加loki数据源报错
v6小版本升级有什么 sql 要执行吗
机器列表有展示,但采集数据查询不到
n9e 启动异常报错
n9e集群部署配置修改
推送 Promethus 报错 OOO
机器列表怎么忽略云资源
告警规则仅在本业务组生效失败
categraf 启动 oracle 插件报错
告警自愈不生效
n9e查询时序库EOF报错
手动编译项目报错
promQL 使用函数标签信息丢失
内存使用率+可用率不等于100
夜莺仪表盘有哪些内置变量
categraf配置文件支持热加载吗
导入 Grafana 仪表盘无效数据源
如何查看报错消息
采集器-Categraf
开源生态
Telegraf
Prometheus
版权声明
第1章:天降奇兵
第2章:探索PromQL
开篇
理解时间序列
Metrics类型
初识PromQL
PromQL操作符
PromQL聚合操作
PromQL内置函数
在HTTP API中使用PromQL
最佳实践:4个黄金指标和USE方法
小结
第3章:Prometheus告警处理
开篇
Prometheus告警简介
自定义Prometheus告警规则
部署Alertmanager
Alertmanager配置概述
基于标签的告警处理路由
使用Receiver接收告警信息
告警模板详解
屏蔽告警通知
使用Recoding Rules优化性能
小结
第4章:Exporter详解
第5章:数据与可视化
第6章:集群与高可用
第7章:Prometheus服务发现
第8章:监控Kubernetes
开篇
初识Kubernetes
在Kubernetes下部署Prometheus
Kubernetes下的服务发现
使用Prometheus监控Kubernetes集群
基于Prometheus的弹性伸缩
小结
第9章:Prometheus Operator
参考资料
cadvisor采集插件
cadvisor
通过cadvisor采集容器基础资源数据,如果是采集kubelet
的metrics/cadvisor
接口,会自动附加pod
的label
和annotation
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.4
和 port=8080
两个标签