一、认识 Grafana

Grafana 是一款强大的开源数据可视化与监控平台,它可以将各种数据源(如 Prometheus、ElasticSearch、MySQL、InfluxDB 等)汇总到统一的可视化界面中。
通过仪表盘、折线图、饼图等方式展示系统运行状态,实现数据驱动的监控与决策。

一句话总结:Grafana 是“监控的眼睛”,让数据说话。

核心特性:

  • 支持多种数据源

  • 丰富的图表类型

  • 灵活的告警系统

  • 权限管理与团队协作

  • 支持动态变量、自动刷新


二、安装 Grafana

Ubuntu / Debian

sudo apt update sudo apt install -y adduser libfontconfig1 wget https://dl.grafana.com/oss/release/grafana_10.3.1_amd64.deb sudo dpkg -i grafana_10.3.1_amd64.deb sudo systemctl enable grafana-server sudo systemctl start grafana-server

CentOS / RHEL

sudo yum install -y https://dl.grafana.com/oss/release/grafana-10.3.1-1.x86_64.rpm sudo systemctl enable grafana-server sudo systemctl start grafana-server

访问控制台:


http://localhost:3000

默认登录:


用户名:admin 密码:admin


三、Grafana 基础概念

概念 说明
Data Source 数据源,如 Prometheus、MySQL、ElasticSearch 等
Dashboard 仪表盘,一个由多个图表组成的可视化界面
Panel 单个可视化组件,如折线图、饼图
Query 查询语句,用于提取数据
Variable 动态参数,可实现下拉选择与自动过滤
Alert 告警规则设置,可与邮件、Slack、企业微信等集成

四、配置数据源

  1. 登录 Grafana → 左侧菜单点击 “Connections” → “Data Sources”

  2. 选择数据源类型(如 Prometheus)

  3. 输入连接地址:

    
      

    http://localhost:9090

  4. 点击 “Save & Test”,出现绿色提示即连接成功。

支持的数据源包括:

  • Prometheus

  • MySQL / PostgreSQL

  • ElasticSearch

  • InfluxDB

  • Loki(日志)

  • OpenTelemetry


五、创建仪表盘(Dashboard)

  1. 左侧点击 “Dashboards → New → New Dashboard”

  2. 点击 “Add Visualization” 添加图表

  3. 选择数据源(如 Prometheus)

  4. 输入查询语句(PromQL 或 SQL)

  5. 选择可视化类型(折线图、柱状图、Gauge 等)

  6. 点击 “Apply” 保存。


六、可视化类型示例

类型 场景 说明
Time Series 系统性能、请求速率 连续时间序列数据展示
Gauge CPU、内存占用率 仪表盘形式
Bar Chart 错误统计、访问量 直观比较
Pie Chart 资源占比 比例关系
Heatmap 请求延迟分布 多维度热度可视化

七、Prometheus + Grafana 集成示例

假设 Prometheus 已运行在 localhost:9090

在 Grafana 中添加面板:


rate(node_cpu_seconds_total{mode!="idle"}[1m]) * 100

显示实时 CPU 使用率。
可添加多个面板展示内存、磁盘、网络使用情况。

参考案例:www.xvblkv.cn


八、MySQL 数据源可视化

添加 MySQL 数据源:


Host: localhost:3306 Database: testdb User: grafana Password: ****

示例查询:


SELECT time AS "time", users_online AS "Users Online" FROM user_stats WHERE $__timeFilter(time) ORDER BY time

Grafana 自动识别 $__timeFilter() 并与时间控件绑定。


九、ElasticSearch 数据源

配置:


URL: http://localhost:9200 Index name: logs-* Time field name: @timestamp

查询:


{ "find": "avg", "field": "response_time" }

可用于日志延迟分析、HTTP 状态分布展示。


十、变量(Variables)实现动态筛选

创建变量:


Dashboard Settings → Variables → New

类型:Query
名称:server
查询语句(Prometheus):


label_values(node_exporter_build_info, instance)

在面板中使用变量:


node_memory_MemAvailable_bytes{instance=~"$server"}

仪表盘可动态切换不同主机。


十一、图表联动与模板化

在 Dashboard 中:

  1. 打开 “Settings → Templating”

  2. 使用 $variable 引用

  3. 各面板共享同一变量,实现全局联动切换。

例如:选择不同服务、不同环境(dev/prod),图表自动更新。


十二、告警配置

  1. 进入任意 Panel → 点击 “Alert → Create Alert Rule”

  2. 设定条件:

    
      

    WHEN avg() OF query (A, 5m, now) IS ABOVE 80

  3. 添加通知渠道(Notification channel):

    • Email

    • Slack

    • Webhook

    • 企业微信

  4. 保存后可在 “Alert Rules” 页面查看触发记录。


十三、设置通知渠道

Email 通知配置:
编辑 /etc/grafana/grafana.ini


[smtp] enabled = true host = smtp.gmail.com:587 user = grafana@example.com password = yourpassword from_address = grafana@example.com

重启服务:


sudo systemctl restart grafana-server


十四、Loki 日志可视化

安装 Loki 与 Promtail:


docker run -d --name=loki -p 3100:3100 grafana/loki docker run -d --name=promtail -v /var/log:/var/log -p 9080:9080 grafana/promtail

Grafana 数据源:


Type: Loki URL: http://localhost:3100

查询日志:


{job="nginx"} |= "error"

实时展示系统日志趋势。


十五、Grafana 数据共享与导出

  • 导出仪表盘:
    “Dashboard → Settings → JSON Model → Export JSON”

  • 导入仪表盘:
    “Dashboards → Import → 上传 JSON 文件”

  • 分享链接:
    “Share → Copy Link” 或生成嵌入代码 <iframe>


十六、用户与权限管理

创建团队:


Configuration → Teams → New Team

创建用户:


Configuration → Users → Invite

权限级别:

  • Viewer(只读)

  • Editor(可编辑)

  • Admin(管理仪表盘)

支持 LDAP / OAuth2 登录集成。


十七、自动刷新与时间范围控制

在页面右上角设置:

  • 自动刷新:5s / 10s / 1m / 5m

  • 时间范围:

    • Last 5 minutes

    • Last 24 hours

    • Custom range

Grafana 将周期性拉取最新数据,保证仪表盘实时更新。


十八、Grafana API 使用

获取所有 Dashboard:


curl -X GET http://admin:admin@localhost:3000/api/search

导入 Dashboard:


curl -X POST http://admin:admin@localhost:3000/api/dashboards/db -H "Content-Type: application/json" -d @dashboard.json

可与 Jenkins、Ansible 集成实现自动化监控更新。


十九、Grafana 性能与安全优化

优化项 建议
缓存层 启用 query caching
数据源限流 控制请求频率
仪表盘分组 按业务模块拆分
数据归档 超过 30 天数据迁移
HTTPS 启用 TLS 加密
备份 导出 JSON 定期保存

二十、完整实战项目:DevOps 综合监控平台

目标:
构建一个集成 Prometheus + Grafana + Loki 的全栈监控系统。

架构图:

┌────────────┐ ┌────────────┐ │ NodeExporter│──────▶ Prometheus │ │ cAdvisor │──────▶ │ └────────────┘ └────────────┘ │ │ ▼ ▼ ┌────────────┐ ┌────────────┐ │ Loki日志 │──────▶ Grafana面板 │ └────────────┘ └────────────┘

Prometheus 监控:

- job_name: 'server' static_configs: - targets: ['192.168.1.10:9100']

Grafana 仪表盘:
  • CPU、内存实时曲线图

  • 磁盘使用率仪表盘

  • HTTP 请求速率

  • 容器运行状态

  • 告警与日志联动视图

运行效果:

  • 所有主机与容器实时监控

  • 异常触发邮件通知

  • 日志自动关联错误指标

  • 管理员可一键切换环境与服务

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐