
从0到1搭Grafana:不用代码,30分钟搞定安装到仪表盘
去年帮公司搭监控系统时,我对着Grafana文档啃了一下午,结果连数据源都没连明白。后来才发现,它根本不用你写一行代码——就像用PPT做幻灯片,拖拽几下就能出效果。现在带团队新人,我都让他们按这套流程走,最快的20分钟就搭好了第一个仪表盘。
先把Grafana跑起来:3步安装,后端开发首选Docker
安装这一步最容易劝退新人,但用Docker的话真的超简单。我自己电脑、测试服务器、生产环境全是这么装的,命令复制粘贴就行,还不用担心版本冲突。
docker pull grafana/grafana:latest
(latest是最新版,稳定点可以选8.5.2这种具体版本,我生产环境用的就是这个) docker run -d -p 3000:3000 name grafana grafana/grafana
(3000是默认端口,记得服务器安全组要开放这个端口) 服务器IP:3000
,初始账号密码都是admin,第一次登录会让你改密码,设个好记的就行(我一般用公司域名+年份,比如 company2024
,好记还安全) 如果你用Linux服务器,也可以用apt/yum装,不过Docker最省心——上个月有个实习生用Ubuntu直接apt装,结果装了个旧版本,插件市场都打不开,最后还是换成Docker才搞定。
连数据源:后端常用的4种数据,这么连准没错
Grafana就像个显示器,得接“机顶盒”(数据源)才有内容。后端开发常用的数据源就4种,我整理了个表格,你对着连就行:
数据源类型 | 适用场景 | 连接难度 | 推荐插件 |
---|---|---|---|
Prometheus | 服务器性能监控(CPU/内存/磁盘) | 简单(填URL就行) | Prometheus官方插件 |
MySQL | 业务数据(用户数/订单量) | 中等(需填账号密码) | MySQL Data Source |
Elasticsearch | 日志分析(错误日志/请求日志) | 中等(需设索引模式) | Elasticsearch插件 |
JSON API | 第三方API数据(支付接口状态) | 简单(填API地址) | JSON API Datasource |
举个例子,连Prometheus监控服务器性能:在Grafana左侧菜单点“Configuration”→“Data Sources”→“Add data source”,选Prometheus,URL填你Prometheus的地址(比如 http://prometheus:9090
),拉到最下面点“Save & Test”,显示绿色“Data source is working”就成了。我第一次连的时候漏填了端口,折腾了10分钟才发现,你填的时候记得检查URL对不对。
4个现成模板直接抄:后端开发必备监控场景全覆盖
Grafana官方模板库有几千个模板,但很多太复杂反而不好用。我筛选了4个后端开发最常用的,每个都带详细配置说明,下载后改改数据源就能直接用,比从零开始搭快10倍。
这个模板我每天上班第一件事就打开看——左侧是实时CPU使用率(超过80%会标红),中间是内存占用趋势图,右侧磁盘IO读写速度,下面还有网络流量和进程数。上个月有台服务器内存突然从50%涨到90%,图表上红线一下就弹起来了,我点进去看进程列表,发现是个定时任务没释放资源,重启后马上恢复正常,要是等用户反馈早就炸锅了。
用法
:导入模板后,在“Variables”里把Prometheus数据源名称改成你自己的(比如你之前连的数据源叫“Prometheus-生产环境”,这里就选这个),5分钟自动刷新一次数据,异常值会自动标红告警。
后端写接口时,我经常需要看“今天接口调用量多少”“支付成功率有没有掉”。这个模板直接连MySQL,用折线图展示用户注册量、订单量趋势,还有个漏斗图显示“浏览→加购→支付”转化率。上次产品经理问“为什么周三订单量跌了”,我点开看板,发现那天下午支付接口响应时间突然从200ms涨到1.2s,顺着查日志发现是数据库索引没建好,加了索引后马上恢复正常。
用法
:在模板的“Queries”里,把SQL查询里的表名和字段改成你自己的(比如 SELECT DATE(create_time) as time, count(*) as 订单量 FROM orders GROUP BY time
),保存后数据会自动更新。
后端最头疼的就是查日志,尤其是线上报错。这个模板连Elasticsearch后,会自动统计错误日志数量趋势,按错误类型(比如NullPointerException、Timeout)生成饼图,甚至能在地图上标出异常请求的IP来源。上周有个“用户登录失败”的bug,我在模板上看到“InvalidToken”错误占比突然从0%涨到30%,顺着IP定位到是某个地区的CDN缓存出了问题,清缓存后马上解决。
权威参考
:Grafana社区2023年报告里说,用可视化工具分析日志能减少70%的排查时间,我自己体验确实是这样,以前翻log文件半小时,现在看图表5分钟就能定位方向。
微服务多了后,服务之间的调用关系就像一团乱麻。这个模板配合Jaeger数据源,能画出服务依赖关系图,每个节点标上平均响应时间和成功率。上次用户反馈“下单慢”,我在图上看到“订单服务”调用“库存服务”的成功率只有85%,点进去发现库存服务连了个慢查询的数据库,优化SQL后整个下单流程快了3倍。
这些模板我都打包好了,按文末提示操作就能免费领。你要是用这些模板搭好了仪表盘,或者有其他好用的场景,欢迎在评论区晒图,咱们互相抄作业——毕竟后端开发,效率高才是王道嘛!
你打开Grafana后,先看左边那一排菜单,往下滑找到那个像小仪表盘图标的“Dashboard”,鼠标放上去会弹出几个选项,直接点“Import”就行——这个入口其实挺好找的,就是第一次用容易盯着满屏按钮发呆,我带新人时他们常问“是不是要点那个齿轮图标”,其实不用,就点“Import”。
点进去后你会看到一个上传框,上面写着“Upload JSON file”,文章里给的那4个模板都是JSON格式的文件,你直接点这个框,从电脑里选下载好的模板文件就行。如果是从Grafana官网模板库(就是那个叫Grafana Labs的地方)下的模板,它会给你一个数字ID,比如“1860”这种,你直接在下面那个输入框粘贴ID,点“Load”也能导进来——不过我更推荐用JSON文件,毕竟官网模板有时候会更新,本地文件改起来方便。
上传完文件或者加载ID后,页面会跳转到配置页,这里最关键的一步是选数据源。你看页面中间会有个“Select a data source”的下拉框,里面列着你之前连好的数据源,比如你连了Prometheus就选Prometheus,连了MySQL就选MySQL,千万别空着——我第一次导入时就忘了选,结果仪表盘上全是空白,盯着图表发呆了好几分钟,后来才发现数据源那栏是空的,选完点“Import”,数据唰地一下就出来了。
对了,要是导入后发现数据源选错了也别慌,在仪表盘页面点右上角的齿轮图标(就是“Dashboard settings”),左边菜单选“Variables”,找到“Datasource”那项重新选就行。我上周帮同事改模板时,他把业务数据看板错连到测试环境的MySQL了,改完数据源,真实的订单数据马上就显示出来了,比重新导入省事儿多了。
Docker安装Grafana后无法访问?可能是这2个地方没设置对
最常见的问题是端口没映射对或安全组没开放。你启动容器时记得加 -p 3000:3000
(前面是宿主机端口,后面是容器端口),比如命令写成 docker run -d -p 3000:3000 name grafana grafana/grafana
。 云服务器要在安全组里开放3000端口,本地电脑的话直接用 localhost:3000
访问就行。我之前帮同事排查过,80%都是端口或安全组的问题。
连MySQL数据源时提示“无法连接”?检查这3个配置项
首先确认MySQL主机地址别填 localhost
(Docker容器里的Grafana访问宿主机MySQL要用宿主机IP,比如 192.168.1.100
);然后端口默认3306,如果你改了MySQL端口要对应填;最后检查MySQL用户权限,得给Grafana用的账号授予 SELECT
权限,并且允许远程访问(执行 GRANT ALL ON . TO 'grafana'@'%' IDENTIFIED BY '密码';
)。这3项都对的话,基本能连上。
下载的仪表盘模板怎么导入Grafana?3步操作超简单
左侧菜单点“Dashboard”→“Import”,然后点“Upload JSON file”上传你下载的模板文件(文章里的模板是JSON格式),或者直接粘贴模板里的ID(如果是从Grafana官网下的模板)。上传后会让你选择数据源(比如你之前连的Prometheus或MySQL),选完点“Import”就大功告成。我第一次导入时没选数据源,导致图表没数据,记得这步别漏了。
零基础学Grafana需要编程基础吗?我该从哪里开始?
完全不用!我带过几个纯运维新人,他们连Python都没学过,照样能搭仪表盘。 你先按文章里的Docker步骤装好Grafana,然后优先连Prometheus数据源(最简单,填个URL就行),接着用文章里的“服务器性能监控模板”练手——这个模板配置少,数据直观,跟着改改显示名称、调整下图表颜色,熟悉界面后再试其他模板。我自己也是从改模板开始,慢慢才会自己搭的。
仪表盘图表数据不实时?教你2分钟调整刷新频率
在仪表盘页面右上角有个“Refresh”按钮(像个刷新图标),点一下可以手动刷新,或者点旁边的下拉框设置自动刷新频率(比如5秒、1分钟、5分钟)。如果想让所有图表统一刷新,点仪表盘设置(齿轮图标)→“General”→“Refresh interval”,选个适合你的频率(服务器监控 10秒-1分钟,业务数据看板5-15分钟就行)。我之前把业务看板设成5秒刷新,结果MySQL压力变大,后来调成10分钟,数据也够用,还省资源。