Grafana 和 influxDB 是什么?两者如何结合使用?

Grafana 是开源可视化与监控平台 ,InfluxDB 是开源时序数据库 ;两者是监控/物联网/DevOps 领域的黄金组合:InfluxDB 存时序数据,Grafana 做可视化与告警


一、Grafana 是什么

Grafana 是一款开源、跨平台的数据可视化与监控分析平台,专注于时序数据的展示、查询与告警。

核心定位
  • 不存储数据,只做数据展示层,连接各类数据源并生成仪表盘。
  • 擅长时间序列数据(带时间戳的连续指标,如 CPU、温度、流量)。
核心能力
  1. 多数据源支持:原生对接 InfluxDB、Prometheus、MySQL、Elasticsearch、云监控等。
  2. 丰富可视化:折线图、柱状图、仪表盘、热力图、地图、表格等。
  3. 灵活仪表盘:拖拽式面板、变量、模板、多数据源混合展示。
  4. 告警系统:阈值告警、多渠道通知(邮件、钉钉、企业微信、Slack)。
  5. 团队协作:仪表盘共享、权限管理、版本控制。
典型场景
  • 服务器/容器监控
  • IoT 设备数据可视化
  • 应用性能监控(APM)
  • 业务指标大盘
  • 实时日志/指标分析

二、InfluxDB 是什么

InfluxDB 是 InfluxData 开发的开源时序数据库(TSDB) ,专为高吞吐、高压缩、时间优先的时序数据设计。

核心定位
  • 专门存储时间序列数据(如监控指标、传感器数据、日志、事件)。
  • 高性能写入、高效存储、快速时间范围查询。
核心特点
  1. 时序优化:纳秒级时间戳,按时间分片(Shard),时间索引优先。
  2. 高性能写入 :每秒可处理数百万数据点,适合高频采集。
  3. 无模式设计:无需预定义 Schema,灵活写入不同结构数据。
  4. 高效存储 :列式存储 + 高压缩(LZ4/TSM),压缩比可达 10:1+
  5. 数据生命周期:Retention Policy(保留策略)自动清理/降采样旧数据。
  6. 查询语言:InfluxQL(类 SQL)、Flux(更强大的函数式查询)。
  7. 生态完整:Telegraf(采集)→ InfluxDB(存储)→ Grafana(可视化)→ Kapacitor(告警)。
数据模型(核心概念)
  • Bucket(2.x)/ Database(1.x):数据容器(类似数据库)。
  • Measurement :类似表,如 cpu_usagetemperature
  • Tag :索引键(如 host=server01region=gz),用于快速过滤。
  • Field :数值/字符串(如 usage_idle=95.2),存储实际指标。
  • Time:时间戳(必填,纳秒级)。

三、两者如何结合使用(完整流程)

1. 整体架构
复制代码
数据采集(Telegraf/脚本/SDK) → InfluxDB(存储) → Grafana(可视化+告警)
  • InfluxDB :负责(高吞吐写入、压缩、时间查询)。
  • Grafana :负责(查询、绘图、告警、共享)。
2. 快速部署(Docker 最便捷)
bash 复制代码
# 1. 启动 InfluxDB 2.x
docker run -d -p 8086:8086 --name influxdb influxdb:2.7

# 2. 启动 Grafana
docker run -d -p 3000:3000 --name grafana grafana/grafana-oss
3. InfluxDB 初始化(2.x)
  1. 访问 http://localhost:8086,完成初始设置:
    • 创建 Organization (如 myorg
    • 创建 Bucket (如 metrics,保留 7 天)
    • 生成 Token(读写权限,保存备用)
4. Grafana 配置 InfluxDB 数据源
  1. 访问 Grafana:http://localhost:3000,默认账号 admin/admin
  2. 左侧菜单 → Configuration → Data Sources → Add data source
  3. 选择 InfluxDB ,配置:
    • Name:自定义(如 InfluxDB-Metrics)
    • Query Language :选 Flux (2.x 推荐)或 InfluxQL(1.x)
    • URLhttp://influxdb:8086(Docker 内部通信)或 http://localhost:8086
    • Auth :开启 Basic Auth 或直接填 Token
    • Organization :填 InfluxDB 中的组织名(如 myorg
    • Token:粘贴 InfluxDB 生成的 Token
    • Default Bucket :填 metrics
  4. 点击 Save & test,提示"Data source is working"即成功。
5. 写入测试数据(可选)

用 InfluxDB CLI 或 Python 写入示例数据:

python 复制代码
# Python 示例(influxdb-client 库)
from influxdb_client import InfluxDBClient, Point
from influxdb_client.client.write_api import SYNCHRONOUS

client = InfluxDBClient(url="http://localhost:8086", token="你的Token", org="myorg")
write_api = client.write_api(write_options=SYNCHRONOUS)

# 写入 CPU 数据
point = Point("cpu") \
    .tag("host", "server01") \
    .field("usage_idle", 95.2) \
    .field("usage_system", 3.5)

write_api.write(bucket="metrics", record=point)
client.close()
6. Grafana 创建仪表盘与面板
  1. 左侧菜单 → Dashboards → New dashboard → Add panel

  2. 数据源选择 InfluxDB-Metrics ,查询语言选 Flux

  3. 编写查询(示例:查询最近 1 小时 CPU 空闲率):

    flux 复制代码
    from(bucket: "metrics")
      |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
      |> filter(fn: (r) => r._measurement == "cpu" and r._field == "usage_idle")
      |> aggregateWindow(every: 1m, fn: mean)
  4. 选择可视化类型(如 Time series),调整样式、标题、单位。

  5. 保存仪表盘,即可看到实时折线图。

7. 配置告警(示例)
  1. 在面板右上角 → Alert → Create alert rule
  2. 设置条件:如 usage_idle < 80 持续 5 分钟。
  3. 配置通知渠道:邮件、钉钉机器人、企业微信等。
  4. 触发时自动发送告警。

四、版本差异与注意事项

InfluxDB 1.x vs 2.x
  • 1.x :Database/Retention Policy,查询用 InfluxQL,连接用用户名/密码。
  • 2.x :Organization/Bucket,查询用 Flux ,连接用 Token,功能更强。
  • Grafana 均支持,配置时注意选择对应查询语言。
最佳实践
  • 数据采集 :优先用 Telegraf(InfluxData 官方采集器,支持数百种插件)。
  • 查询优化:用 Tag 过滤、时间范围限定、降采样(Downsampling)提升性能。
  • 存储规划:设置合理的 Retention Policy,避免无限增长。
  • 安全:生产环境务必启用 HTTPS、Token 权限控制、防火墙限制 8086/3000 端口。

五、总结

  • Grafana可视化+监控+告警,连接一切数据源,做"数据的眼睛"。
  • InfluxDB时序数据存储,高吞吐、高压缩、时间优先,做"数据的仓库"。
  • 结合价值 :快速搭建实时监控系统,从数据采集 → 存储 → 可视化 → 告警全链路打通,广泛用于 DevOps、IoT、APM 等场景。

相关推荐
moxiaoran57534 天前
Linux搭建轻量级日志系统Loki+Grafana+Promtail
grafana
㳺三才人子4 天前
認識 Grafana
grafana
是阿楷啊11 天前
Java大厂面试场景:音视频场景中的Spring Boot与微服务实战
spring boot·redis·spring cloud·微服务·grafana·prometheus·java面试
xixingzhe212 天前
Prometheus+Grafana监控服务器
grafana·prometheus
南宫乘风13 天前
Loki 日志采集落地:从单机 Helm 部署到 Promtail 采集与 Grafana 查询
grafana
wei_shuo13 天前
70 倍性能碾压 + SQL 全兼容!金仓数据库终结 InfluxDB 的复杂时序场景统治
influxdb·金仓数据库
码农小卡拉14 天前
Prometheus 监控 SpringBoot 应用完整教程
spring boot·后端·grafana·prometheus
咖啡啡不加糖15 天前
Grafana 监控服务指标使用指南:打造可视化监控体系
java·后端·grafana