Grafana+Collectd+InfluxDB监控Openwrt-玩

2025-03-23 17:43:37 3点赞 3收藏 0评论

背景

之前编译的时候,把OP上的监控面板去掉了,只留下了Collectd,但是又没Web看数据。Grafana+Collectd+InfluxDB监控Openwrt-玩

刚好最近在弄些Docker的东西,就看上了Grafana,弄着试试,纯记录贴。


介绍

主要会用到以下几个应用,其中Telegraf因为现在InfluxDB不是很直接获取Collectd数据,作为中转的存在,另外为什么用Collectd而不用Prometheus,主要是Collectd够轻量,单机服务也足够,说实话就是不想装Prometheus插件,麻烦

Collectd一个轻量级的系统性能统计守护进程(daemon),用于定期收集服务器、应用和服务的性能数据(如 CPU内存、磁盘、网络等)。

InfluxDB一个开源的时间序列数据库(Time Series Database, TSDB) ,专门用于高效存储和查询带有时间戳的数据(如监控指标、传感器数据等)。

TelegrafInfluxData 公司开发的数据收集代理,属于 TICK Stack(Telegraf、InfluxDB、Chronograf、Kapacitor)的一部分。

Grafana:一个开源的数据可视化与监控平台,支持多种数据源(如 InfluxDB、Prometheus、Elasticsearch 等)。

Grafana+Collectd+InfluxDB监控Openwrt-玩

准备

主要准备是在OP上的Collectd,装好需要监控设备的插件就行,需要什么就装什么

Grafana+Collectd+InfluxDB监控Openwrt-玩

安装好后,需要再Collectd设置中启用这些插件,还是那句话,需要监控什么就装什么

Grafana+Collectd+InfluxDB监控Openwrt-玩

其中最重要插件是Network,后面能否进行数据交互就靠它了

Grafana+Collectd+InfluxDB监控Openwrt-玩

tips:如果除Collectd外,其他应用都在另一个服务器上,需要将types.db从OP共享出来,可以用Ksmbd等网络共享插件实现,然后在另一个系统上挂载就行,后面Telegraf配置的时候会用上

Grafana+Collectd+InfluxDB监控Openwrt-玩

在Network编辑,设置服务器接口,其中服务器主机为Telegraf所在IP,端口随意,后面Telegraf设置监听这个端口

Grafana+Collectd+InfluxDB监控Openwrt-玩

在OP上设置防火墙,放行端口和转发到Telegraf上

Grafana+Collectd+InfluxDB监控Openwrt-玩

InfluxDB、Telegraf、Grafana部署

这里选择比较简单的部署方式,用portainer部署,用maclan网络,统一网络,容器名互指访问,至于宿主机怎么访问,后面在开贴了。

services:

influxdb:

image: influxdb:latest

container_name: influxdb

restart: always

networks:

ipv6_maclan: #这里用maclan ,其他桥接也简单

ipv4_address: 192.168.x.x

ipv6_address: 240e:xx:xx:xx::1

volumes:

- /usr/docker/influxdb2:/var/lib/influxdb2

environment:

- DOCKER_INFLUXDB_INIT_MODE=setup

- DOCKER_INFLUXDB_INIT_USERNAME=admin #可自定义

- DOCKER_INFLUXDB_INIT_PASSWORD=admin #可自定义

- DOCKER_INFLUXDB_INIT_ORG=myorg

- DOCKER_INFLUXDB_INIT_BUCKET=mybucket

ports:

- "8086:8086" #maclan网络下其实可以不用写,留着后面怕忘了端口

grafana:

image: grafana/grafana-enterprise:main

container_name: grafana

user: "472:472" #设置与宿主机映射路径相同权限

restart: always

networks:

ipv6_maclan:

ipv4_address: 192.168.x.x

ipv6_address: 240e:xx:xx:xx::2

volumes:

- /you_dir/grafana:/var/lib/grafana #/you_dir/grafana,需要设置472权限

environment:

- GF_SERVER_HTTP_ADDR=0.0.0.0

- GF_SERVER_HTTP_PORT=3000

depends_on:

- influxdb

ports:

- "3000:3000"

telegraf:

image: telegraf:latest

container_name: telegraf

restart: always

networks:

ipv6_maclan:

ipv4_address: 192.168.x.x

ipv6_address: 240e:xx:xx:xx::3

volumes:

- /you_dir/telegraf.conf:/etc/telegraf/telegraf.conf #这里可能需要先创建一个空telegraf.conf配置文件,不然可能会报错。

- /you_dir/types.db:/usr/share/collectd/types.db # 挂载 types.db

environment:

- INFLUXDB_TOKEN=INFLUXDB_TOKEN # 使用 InfluxDB 初始化时设置的 Token,需要先进InfluxDB 拿到token后设置

- INFLUXDB_ORG=myorg

- INFLUXDB_BUCKET=collectd

depends_on:

- influxdb

ports:

- "25826:25826/udp"

networks:

ipv6_maclan:

external: true


influxdb配置

Load Data -->Buckets,右边点CREATE BUCKET创建新的(bucket)“桶”

Grafana+Collectd+InfluxDB监控Openwrt-玩

设置名称,数据存储时间(OLDER THAN),根据自己需求设置,设置完点“CREATE”,“桶”创建完成

Grafana+Collectd+InfluxDB监控Openwrt-玩

刚创建完的“桶”里面没有数据的

Grafana+Collectd+InfluxDB监控Openwrt-玩

Load Data --> API Token,选择“API TOKENS”,点击“GENERATE API TOKEN”创建给Telegraf、Grafana用的toekn,可以创建一个,另外嫌麻烦可以直接选第一个来创建token

Grafana+Collectd+InfluxDB监控Openwrt-玩

都是填写名称,第二个稍微麻烦点,需要自己选择开放的权限,设置好后点“SAVE”

Grafana+Collectd+InfluxDB监控Openwrt-玩Grafana+Collectd+InfluxDB监控Openwrt-玩

把这里的token记录复制即可

Grafana+Collectd+InfluxDB监控Openwrt-玩

Load Data --> Telegraf 创建Telegraf 的配置文件,默认会有很多示例,根据自己需求创建,这个就是telegraf.conf配置,容器路径/etc/telegraf/telegraf.conf,如果映射出来可以直接填写,然后重启生效

Grafana+Collectd+InfluxDB监控Openwrt-玩

influxdb配置

Load Data -->Buckets,右边点CREATE BUCKET创建新的(bucket)“桶”

Grafana+Collectd+InfluxDB监控Openwrt-玩

设置名称,数据存储时间(OLDER THAN),根据自己需求设置,设置完点“CREATE”,“桶”创建完成

Grafana+Collectd+InfluxDB监控Openwrt-玩

刚创建完的“桶”里面没有数据的

Grafana+Collectd+InfluxDB监控Openwrt-玩

Load Data --> API Token,选择“API TOKENS”,点击“GENERATE API TOKEN”创建给Telegraf、Grafana用的toekn,可以创建一个,另外嫌麻烦可以直接选第一个来创建token

Grafana+Collectd+InfluxDB监控Openwrt-玩

都是填写名称,第二个稍微麻烦点,需要自己选择开放的权限,设置好后点“SAVE”

Grafana+Collectd+InfluxDB监控Openwrt-玩Grafana+Collectd+InfluxDB监控Openwrt-玩

把这里的token记录复制即可

Grafana+Collectd+InfluxDB监控Openwrt-玩

Load Data --> Telegraf 创建Telegraf 的配置文件,默认会有很多示例,根据自己需求创建,这个就是telegraf.conf配置,容器路径/etc/telegraf/telegraf.conf,如果映射出来可以直接填写,然后重启生效

[agent] interval = "10s" round_interval = true metric_batch_size = 1000 metric_buffer_limit = 10000 collection_jitter = "0s" flush_interval = "10s" flush_jitter = "0s" precision = "" hostname = "" omit_hostname = false [[outputs.influxdb_v2]] urls = ["http://influxdb:8086"] #这里根据环境填,桥接127.0.0.1:8086,其他环境就要具体ip和端口, token = 'influxdb_token' #前面创建的token,在docker-compose的配置文件也需要用这个 organization = "myorg" bucket = "you_bucket" #存储数据用的Buckets [[inputs.socket_listener]] service_address = "udp://0.0.0.0:25826" #op上Collectd开放的server服务器 data_format = "collectd" collectd_typesdb = ["/usr/share/collectd/types.db"] #根据docker-compose设置的映射路径填 collectd_parse_multivalue = "split"


telegraf配置

telegraf主要就是把上面示例配置放进telegraf.conf文件中,重启即可,如果通了的话,influxdb这边会有数据

Grafana+Collectd+InfluxDB监控Openwrt-玩

Grafana设置

设置中文:在Grafana右边点击头像,选择ProFile

Grafana+Collectd+InfluxDB监控Openwrt-玩

在Language选择中文,点save

Grafana+Collectd+InfluxDB监控Openwrt-玩

连接-->添加新连接,搜索influxdb,点击进去

Grafana+Collectd+InfluxDB监控Openwrt-玩

在点击右边按钮,添加新数据源

Grafana+Collectd+InfluxDB监控Openwrt-玩

Query language填写flux(influxdb2.x选择)

HTTP填写influxdb的IP地址

Organization填写influxdb信息,可以去看看是什么,根据自己信息填写

Token填写influxdb创建的api token

default bucket填写influxdb存储“桶”

Grafana+Collectd+InfluxDB监控Openwrt-玩

这里可以直接创建关联仪表盘

Grafana+Collectd+InfluxDB监控Openwrt-玩

成果

Grafana+Collectd+InfluxDB监控Openwrt-玩

总结

没多大用

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
3
扫一下,分享更方便,购买更轻松