夜莺-Nightingale
采集器-Categraf
夜莺V7
夜莺V6
项目介绍
架构介绍
快速开始
黄埔营
安装部署
升级
采集器
使用手册
API
数据库表结构
alert_aggr_view
alert_cur_event
alert_his_event
alert_mute
alert_rule
alert_subscribe
alerting_engines
board
board_payload
builtin_cate
busi_group
busi_group_member
chart_share
configs
datasource
metric_view
notify_tpl
recording_rule
role
role_operation
sso_config
target
task_record
task_tpl
task_tpl_host
user_group
user_group_member
users
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 仪表盘无效数据源
夜莺V5
夜莺专业版
Flashcat企业版
智能告警插件
开源生态
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
参考资料
snmp插件
snmp
snmp 插件之前秦老师已经整理过很详细的文章了,这里就不再赘述了,直接访问:
新特性
categraf从v0.3.9版本开始,支持
- 正则过滤端口号、端口类型等
- 支持批量设置label
过滤
在table section中设置如下
[[instances.table]]
oid = "IF-MIB::ifTable"
name = "interface"
inherit_tags = ["source"]
filters = ["A:ifIndex:^2$","B:ifDescr:^eno*", "C:ifOperStatus:1"]
filters_expression = "(A && B) || C"
oid
定义了采集的对象IF-MIB::ifTable
name
定义指标名称inherit_tags
定义了要继承的标签,这里继承了source标签 就是把前面的source=xxxx
附加到指标上filters
定义表达式A 是匹配ifIndex == 2
, 表达式B是匹配ifDescr
为eno
开头的对象,C是匹配ifOperStatus
为1的对象,filters_expression
定义了过滤表达式,表示filters
中表达式的逻辑关系, 这里是A和B的结果取交集,再和C取并集
假设oid对应的数据如下,
IF-MIB::ifIndex.1 = INTEGER: 1
IF-MIB::ifIndex.2 = INTEGER: 2
IF-MIB::ifIndex.3 = INTEGER: 3
IF-MIB::ifIndex.6 = INTEGER: 6
IF-MIB::ifIndex.7 = INTEGER: 7
IF-MIB::ifIndex.9 = INTEGER: 9
IF-MIB::ifIndex.10 = INTEGER: 10
IF-MIB::ifIndex.1210 = INTEGER: 1210
....
IF-MIB::ifDescr.1 = STRING: lo
IF-MIB::ifDescr.2 = STRING: eno1
IF-MIB::ifDescr.3 = STRING: eno2
IF-MIB::ifDescr.6 = STRING: virbr0
IF-MIB::ifDescr.7 = STRING: tun0
IF-MIB::ifDescr.9 = STRING: macvtap1
IF-MIB::ifDescr.10 = STRING: docker0
IF-MIB::ifDescr.1210 = STRING: tun1
....
IF-MIB::ifOperStatus.1 = INTEGER: up(1)
IF-MIB::ifOperStatus.2 = INTEGER: up(1)
IF-MIB::ifOperStatus.3 = INTEGER: down(2)
IF-MIB::ifOperStatus.6 = INTEGER: down(2)
IF-MIB::ifOperStatus.7 = INTEGER: up(1)
IF-MIB::ifOperStatus.9 = INTEGER: down(2)
IF-MIB::ifOperStatus.10 = INTEGER: down(2)
IF-MIB::ifOperStatus.1210 = INTEGER: up(1)
A
匹配到的是ifIndex
为2的对象B
是匹配eno
开头的对象, 也就是ifIndex
为2 或者3A&&B
最终匹配的是eno1
这块网卡C
匹配的是所有UP的对象 ,对应的是ifIndex
为1、2、7、1210的对象A&&B || C
最终匹配的是lo
eno1
和tun0
tun1
这些网卡
注意: v0.3.7 和 v0.3.8 版本中用的是include_filter
这个配置,并且只支持 两段式的配置 ifIndex:2
这种,不支持正则表达式,而且默认是所有表达式做OR(||)运算。
v0.3.9 版本,使用filters
代替 include_filter
。虽然依然支持include_filter
并且兼容两段式配置,但是建议使用filters
+三段式配置,这样可以使用更丰富的逻辑运算。
批量设置label
[mappings]
"udp://192.168.11.102:161" = { name = "switch001.bj", region = "beijing", ip = "192.168.11.102"}
"udp://192.168.11.103:161" = { name = "switch002.bj", region = "shanghai", ip = "192.168.11.103"}
[[instances]]
agents = [
"udp://192.168.11.102.161",
...
]
[[instances]]
agents = [
"udp://192.168.11.103.161",
...
]
可以通过mappings
给每个agent设置label,采集的时候,就会自动带上这些label。