如何将Kafka消费者的数据存储至Nagios系统并实现地图可视化
向Nagios写入JSON位置数据并实现地图展示方案
写入Nagios Log Server(适合存储全量JSON位置数据)
你可以直接用已有的Kafka消费者完成数据写入,两种可选方式:
- 调用日志服务器官方写入API
向地址http://<你的日志服务器IP/域名>/nagioslogserver/index.php/api/elasticsearch/log发送POST请求,请求头添加Authorization: Token <你的API Token>,请求体直接传入你从Kafka拿到的完整JSON即可,所有自定义地理位置字段会被自动存储,无需提前配置字段规则。
API Token可在日志服务器后台管理 > 全局配置 > API访问路径下生成,需开通写入权限。 - 高吞吐量场景下用Logstash中转
配置Logstash消费Kafka数据后,直接输出到Nagios日志服务器底层的Elasticsearch 9200端口,操作逻辑和写入普通Elasticsearch集群完全一致。
写入Nagios XI(仅适合和已有监控对象绑定的位置数据)
如果你的位置数据需要和Nagios XI中已有的主机/服务监控项关联,可以用被动检查API写入自定义变量:
向地址 http://<你的Nagios XI IP/域名>/nagiosxi/api/v1/config/service 发送POST请求,携带参数 apikey=<你的XI API密钥>,将经纬度等位置信息写入对应服务的 _LAT、_LON 自定义变量即可,后续可直接读取变量调用。
XI的API密钥可在后台 用户管理 > 我的账号 > API密钥 路径下获取。
地图展示实现
- 数据存在日志服务器时:使用自带的自定义仪表盘功能,添加HTML组件,调用日志服务器的查询API拉取指定范围的位置数据,接入开源地图渲染组件即可完成点位展示,所有地理位置字段可直接从查询结果中获取。
- 数据存在Nagios XI时:可基于自带的网络状态地图组件扩展,修改模板读取服务的自定义位置变量渲染点位即可。
内容的提问来源于stack exchange,提问作者Emad Helmi
相关产品推荐
相关产品推荐

