开源版
夜莺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
夜莺V5
企业版
智能告警
夜莺开源生态
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。