Nightingale 接入 Meraki 网络设备:从 0 到 1 的完整采集配置
【免费下载链接】nightingaleNightingale is to monitoring and alerting what Grafana is to visualization.项目地址: https://gitcode.com/GitHub_Trending/ni/nightingale
你手里的设备早已托管在 Meraki 云平台,可告警大屏上只见服务器 CPU 和磁盘,链路状态却毫无抓手,怎么把这些网络设备指标拉进监控系统?本文以开源监控告警系统 Nightingale 内置的 Meraki 集成组件为例,给出一份可直接落地的 Categraf 采集配置,并把每个字段"是干什么的、怎么填"讲透。
先给蓝图:一份文件看全 Meraki 采集配置
接入要用的全部信息都在 meraki.toml 这一个文件里。组件目录下的 README.md 与英文版只放了下面这份配置示例,没有其他内容,可以直接照抄:
interval=60 [[instances]] #api_key="xxxxx" #base_url="https://api.meraki.cn/api/v1" #network_result_per_page=100000 #rate_limit=5 [instances.signal_4g] url="xxx" app_key="" app_secret="" app_id="" [instances.extra_info] url="xxxx" query=''' probe_success{cluster="hedan-prod-elk",job="icmp",isOpen="True"} '''先扫一眼全貌,配置分三块:
- 顶层
interval=60:全局采集周期,作用于本文件所有实例; [[instances]]主实例:对接 Meraki API,四个参数默认全部被注释;[instances.signal_4g]与[instances.extra_info]两个子实例:挂在主实例下的两个可选"附加采集目标"。
这份配置被谁读取?在哪里生效?
integrations/里的文件不是"只给人看的文档",服务端有两条消费链路。
链路一:集成中心。center/integration/init.go 的Init函数在启动时扫描integrations/下每个子目录,把每个目录注册为内置组件BuiltinComponent:读取icon/下的 logo(对外路径形如/api/n9e/integrations/icon/<组件名>/<文件>)、读取markdown/下的 README 作为组件详情页,并装载alerts/、dashboards/、metrics/模板。系统配置项disable_integration_init一旦设置,会跳过整个初始化。Meraki 组件比较精简,只有 collect/icon/markdown 三个子目录,没有告警规则与仪表盘模板,属于"文档+采集模板"型。
链路二:AI 文档索引。aiagent/tools/integrations_loader.go 扫描同一个目录:每个组件的markdown/README.md生成一条[integration-doc]条目,每个collect/*/*.toml生成一条[integration-config]条目(内容用 ```toml 围栏包裹,避免 LLM 把配置当散文改写);ghBlobURL再为每条索引生成指向上游仓库对应文件的稳定链接供 Agent 溯源。文件头注释写得很直白:integrations/下每个组件是 Categraf 配置语法和指标命名的权威 ground truth,LLM 经search_n9e_docs检索时能直接搜到真实的[[instances]]写法。
换句话说:你在集成中心"Components"页面能看到的 Meraki 卡片,和 AI 检索时命中的那份配置,源头都是这一份 TOML。
主实例参数为什么默认全部注释?
因为四行全是"取消注释才生效"的可选项,模板不强制任何值。README 未提供字段说明,下表按参数命名与 Meraki Dashboard API 的通行惯例推断,实际接入时请以你控制台的字段描述为准:
| 参数 | 是什么 | 怎么填 |
|---|---|---|
interval | 全局采集周期(秒),作用于本文件全部实例 | 示例为 60,网络设备监控的稳妥起点 |
api_key | 主实例唯一必需的凭据,Meraki Dashboard API 密钥 | Meraki 控制台生成后取消注释填入 |
base_url | API 服务地址,示例为中国区.cn端点 | 其他区域组织换用对应端点,路径保留/api/v1 |
network_result_per_page | 分页请求单次返回的网络记录条数 | 网络多保持大值减少请求次数;网络少可调小 |
rate_limit | API 请求速率限制(示例值 5),用于规避限流 | 按配额与网络规模调整:太小拖慢采集,太大被限流 |
interval 该设多少秒
顶层interval=60是 Categraf 插件配置的通用顶层约定,表示采集器每隔 60 秒执行一次本插件的抓取任务。Meraki 属于"拉全量网络列表再逐层下钻"的采集方式,60 秒足够;想调快时先确认rate_limit不会被撞穿。
base_url 区域选择速查
示例值https://api.meraki.cn/api/v1用的是.cn域名,对应中国区端点。其他区域的组织请按控制台展示的端点填写(一般惯例为 api.meraki.com,以你的控制台为准),注意路径含/api/v1版本段,别只填域名。
一个插件为什么挂两个子实例?
两个子实例在语法上都是instances数组末项的子表,相当于给主实例"按需再挂一组采集目标",且两者数据源完全不同。
signal_4g:4G 信号数据的独立凭据组
[instances.signal_4g]采集 4G 信号相关数据(信号强度、连接状态一类),但它不用 Meraki 的api_key,而是自带url + app_key + app_secret + app_id一组凭据——数据来自一个独立的 4G 设备/平台接口。"应用 ID + 密钥对"是开放平台常见的鉴权形态,与钉钉、飞书等开放平台应用凭据组合形态一致(本仓库告警通知模块对接飞书时使用的就是app_id/app_secret这类应用凭据)。模板里url是占位符xxx、其余三项为空串,需填真实接口地址与凭据才能工作。
extra_info:用另一个数据源补充设备指标
[instances.extra_info]用url指向另一个查询接口,用 PromQLquery拉取附加信息,与主实例采到的设备原始数据互补。示例查询:
probe_success{cluster="hedan-prod-elk",job="icmp",isOpen="True"}probe_success是黑盒探针(blackbox_exporter)的标准指标,示例按标签过滤出某集群的 ICMP 探测结果。⚠️ 查询里的标签值是模板编写者环境的具体数据,必须替换成你自己环境的标签,才能把探活结果与 Meraki 设备的链路状态关联起来。
两个子实例什么时候能省
都是"按需"模块。你的场景不涉及 4G 信号、也不需要关联探活数据时,删掉这两块子实例、只保留顶层interval与主实例即可,这就是最小可用配置;留着占位值不改动,则两个数据源相当于未启用。
落地清单:核对、填写、验证
分三组勾完,一次接通。
核对:前提
- Categraf 采集端已装好并在运行,能确定插件采集配置目录的位置
- 已把 meraki.toml 复制进该目录,或以它为模板新建插件配置
- 想要最新模板的话,可克隆仓库获取:
git clone https://gitcode.com/GitHub_Trending/ni/nightingale,文件位于integrations/Meraki/下
填写:凭据与参数
- 取消
api_key注释,填入 Meraki Dashboard API 密钥 - 核对
base_url区域:示例为中国区.cn端点,海外组织换成对应端点 - 按网络数量调整
network_result_per_page与rate_limit - 需要 4G 信号采集时,补全
signal_4g的url与app_key/app_secret/app_id三件套 - 需要探活关联时,把
extra_info的url与query标签替换为自身环境
✅ 验证:数据
- 重启 Categraf 使配置生效
- Nightingale 指标查询页能检索到 Meraki 插件上报的指标
- 集成中心"Components"页面出现 Meraki 组件卡片,且 README 正常展示
看懂这一份,就懂了大部分集成
"顶层 interval + 主实例 + 按需子实例"是 integrations 目录下上百个集成组件的通用范式:顶层管节奏,主实例接核心数据源,子实例按需挂载。换个监控对象,只需替换数据源与凭据,骨架不变;Cloudflare、Redis 等兄弟组件的采集模板都可以按同样方式直接上手。
【免费下载链接】nightingaleNightingale is to monitoring and alerting what Grafana is to visualization.项目地址: https://gitcode.com/GitHub_Trending/ni/nightingale
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考