大家好,欢迎来到“运维工程师学编程”系列课程——运维开发七十二变的第四课。根据第三课的说明,从本节课开始,我们将进行第一阶段“运维体系框架”的学习。本节课,是第一阶段的第一个单元——数据可视化模块的学习。
本单元呢,我们主要学习grafana。
Grafana 是免费开源、跨平台的数据可视化监控平台,它不负责采集数据,只做一件事:把所有地方的数据拉到一张大屏,做成直观图表统一查看。
你可以把它理解成数据界的万能中控大屏,不用迁移、不用改造原有数据库,直接对接现有数据源。
Grafana有三个主要功能:
第一,超多数据源通吃。Prometheus、MySQL、Elasticsearch、Loki等五十多种数据源全部支持,监控、日志、链路追踪放同一个看板对比,不用来回切换工具。
第二,拖拽式自定义可视化。折线、热力图、仪表盘、地图、统计卡片随便搭,拖拽调整布局,上千套开源模板,服务器监控、网站性能、工厂的设备看板一键套用,小白半小时做出专业大屏。
第三,自动告警兜底。CPU 爆了、接口超时、数据库延迟飙升,提前设置阈值,钉钉、企业微信、邮件自动推送告警,不用 24 小时盯屏幕,异常第一时间通知你。
正因为Grafana给自己的定位就是可视化展示、多源数据整合、异常告警的统一视图中枢。
Prometheus才会选择Grafana作为搭配,形成一套有力的监控软件。Prometheus负责获取服务器和软件的原始监控数据,并存储起来。其他工作,交给了Grafana。
在正式构思这节课的内容之前,我专门花时间梳理、完整翻看了 B 站上热度排名前十的 Grafana教学视频。看完后,我发现这些视频很明显的特征:绝大多数相关教程,讲解方向高度同质化,内容基本都围绕运维监控场景展开,核心只教大家怎么用 Grafana 对接 Prometheus、Zabbix,聚焦运维监控场景,给监控做数据看板。
这类教程固然能满足监控需求,但对于有业务数据分析、报表可视化需求的运维工程师来说,实用性非常有限。很多运维工程师日常工作里不仅要看机器监控,还要统计业务日志、业务流水、业务数据,需要轻量化 BI 报表工具,而这部分内容缺少教程覆盖。
所以这节课我从一个全新的视角出发,跳出传统服务器监控的固有框架,把重心放在 Grafana 对接各类数据库、自主搭建业务数据可视化报表上。
整套课程采用落地实操路线,完整串联 Grafana 可视化面板、Python 数据处理脚本、SQLite3 数据库三者,从数据存储、数据处理、接口开发到看板搭建一步到位,带着大家从零制作多维度、可复用的轻量化 BI 业务报表,补齐运维工程师业务数据分析可视化这块短板。
关于Grafana部署,他是Go语言开发和编译的,因此可以跨平台。Windows、Linux、MacOS都支持。
安装Grafana,肯定是要原则服务器的。通常我们制作的报表看板,是要给其他同事查看的。部署到服务器上,最合适。
操作系统,推荐用Linux,比如说Ubuntu server版。推荐Linux的理由,有很多。但咱们说一个最实在的——省钱!Grafana是分企业版和开源社区版的,它有很多扩展、插件的,有些插件它限制只能安装在企业版。那有没有平替呢?有。你比如说Grafana直连Oracle数据库的扩展,就是企业版的。他有免费方案,用ClickHouse跳转,ClickHouse有一个开源的方案叫ODBC-Bridge,安装在Linux上的。
这种情况有很多。再一点,我们运维工程师做这种报表,肯定要搭数据库,把grafana、数据库放在一个机器上,节省资源。
配置呢,一般做运维的,都有虚拟机资源的,划一个4核CPU,8G内存的虚拟机先用着,不够再加资源即可。硬盘空间也是,先从500G的数据盘开始,不够在扩就行了。
说完了服务器配置,再就是安装了。我们直接说最简单的方法,安装官方提供的编译包。
https://grafana.com/grafana/download?edition=oss 官网的下载页,提供了下载和安装方法:

这是Ubuntu的。

这是CentOS的。
很简单。我们要的效果就是开箱即用,而且,在工作中,除非遇到很严重的BUG或功能缺失,少了这块功能,我这个表格、我这个看板就是做不下去了。这种情况下,非升级不可了,很少见的一种情况。因此,没必要考虑添加仓库或者APT源,用三年能升级一次就不错了。
那么,新的问题来了,不加源,如何升级?很简单,还是上面这个下载界面,下载一个新版本的,执行一下安装命令,他会自动覆盖旧版本。
我们讲完了安装和更新。下一步,要讲如何启动。Grafana的启动命令就是systemctl start grafana-server.service。唯一的特殊点就是带着“-server”。这个要区分好了。
趁这个功夫啊,我们简单讲讲grafana的配置文件。配置文件的位置是在/etc/grafana/grafana.ini。

它的配置文件,是分为一小节一小节的,就是看到这个红框里的这种一行#号,中间有标题。这种形式,来分割。每个小节都代表一个功能的若干配置项。
比如paths这里,可以关注一下logs这个配置项。在grafana的使用过程中难免会遇到一些bug,我们可以找到这个日志路径,去查看日志中的报错信息。

Server这里,主要是http_port。我们默认访问grafana是127.0.0.1:3000端口,通过这个配置项,可以更换端口。还有http_addr修改服务的访问地址。
再往下,GRPC Server、Database、Cache Server、Data Proxy、Analytics等等这些都基本不用,跳过。
我们主要再看一下“Users”之后的功能。这是一些认证相关的功能模块。比如Anonymous Auth,这是匿名登录,说白了就是不认证。我最开始把grafana嵌入到网页中的时候,就是用匿名认证。后来改了,我用了JWT认证。这种认证方式更安全。
你看,再往后,可以接github、gitlab、谷歌、LDAP、亚马逊、微软的Azure。
后面这些配置项,基本不用,所以就讲到这。
Grafana的日常使用,涉及到配置修改的地方,主要是服务器端口号、再就是用户认证的方法。
配置相关的,就讲到这里。
现在,我们讲下一部分,安装数据源——data source。这一步的工作,是配置grafana要连接的数据库。我们现在右侧菜单栏里找到“connections”,选择“Add new connection”。这里列出了所有的、可以连接的数据源,也就是软件。要注意,如果这些软件名称的下方,有些小字。“Enterprise”代表这个插件只支持企业版的grafana,也就是收费的。

而像这种,就代表已经安装了,可以直接用。

要是什么都没有,就代表没有安装。

我们可以安装一个clickhouse为例子,直接点击clickhouse。
进入界面后,直接点击右上角的“install”即可。

安装完成后

很简单。
但是!
这是你安装的grafana能访问互联网的情况下,才会如此简单。如果你安装的服务器,不能访问互联网。你是看不到这些没有安装的数据源类型的。
这种情况下,我们还是要访问grafana的官网。打开这个网址https://grafana.com/grafana/plugins/data-source-plugins/

到这里来搜索要装的插件。比如SQLite3为例子。

点击进去

选择第二页,“installation”。往下翻。

他有一个连接“download”。会下载一个.zip文件。将该文件上传到安装grafana的Linux服务器上。解压缩,把里面这个文件夹名称不带版本号,同名文件夹,cp -R复制到/var/lib/grafana/plugins目录下。
利用sudo systemctl restart grafana-server.service重启服务。

再去add new connection功能中,搜索sqlite,就会看到已经安装。
这就是手动安装插件的方法。
我们一共讲了两种方法,如果你安装grafana的电脑有互联网,直接在grafana中在线安装即可。如果没有互联网,你需要手动去grafana的官网,找到插件管理网页,从上面手动下载插件。解压缩到指定的目录,然后重启grafana服务。
我们以本地的clickhouse数据库为例,给大家展示一下如何添加数据源。
直接点击clickhouse数据源,右上角“增加新的数据源”。进入设置界面。我本地的clickhouse服务器是开发环境,没有密码。

填上数据库连接地址,填上数据库用户

点击最下方的save & test

弹出提示,证明连接成功了。

我们讲完了如何连接数据库,添加数据源。下一步,我们要讲grafana的一些基本功能。
首先是explore。前面我们添加完了clickhouse数据源,末尾添加成功的提示中,提到了,让我们去explore中验证一下,能否查询数据。
我们就照着grafana的提示,去操作一下。
从侧边栏里,找到explore,点击它。

在开始之前呢,我已经让大模型帮我在clickhouse中增加一个数据库测试实例。
这个库叫test_db。里面有一个表,用来统计2025年,每个月公司电脑的中病毒情况,表名是virus_month_stat。
大模型也给我select语句,查询里面大模型制造数据。正好,直接复制到这个语言框中。点击“Run Query”

往下拉,就是查询的结果

这里还有一个Query Builder模式,顾名思义,查询生成器。

它这里面给了你很多选项,包括选择那个数据库、那个表,“Columns”就是选择表中的字段。最下面“SQL Preview”,你选好了后,grafana自动给你生成SQL语句。你在这里预览,他生成的语句对不对。

这个功能,虽然看似很友好。但是你熟悉了SQL语句后,不如直接用SQL Editor。
这就是Explore功能,一个简单的数据查询器。
光说不练假把式。我们开始做一个条形图,带领大家学习一下grafana的表单制作过程。
Grafana中,一个图标,叫做一个panel。而一个panel必须放在看板中,也就是Dashboards中。
换句话说,即便,你做的这个工具,里面只有一个图表,也要创建一个Dashboard。
还是侧边栏,找到Dashboards功能。
点击,出现一个列表页。当前是空的,中间一个很大的按钮“Create dashboard”,点击它,新建一个dashboard。

看板,进来一看,内容很多。常用的,“也很多”。哈哈哈,以为我会说少吗?不会的,要想做好一个看板,这个页面上的功能,都要用一个遍。

不过,今天我们先讲最简单的流程。本节课的目的,就是在于把流程跑通。给大家展示,完整的使用grafana是什么样子的。
至于这些功能,下一节课,我会结合实际的案例,去交。
好了,正式开始:
布局,咱们先用最傻瓜的布局,正中间选择“auto grid”。

最右边的侧边栏,选择上面第一个“+”号按钮。在选择侧边栏左边弹出来的功能栏,里面Panel下的“+”按钮。

弹出一个“New panel”来。选择第一个按钮“Configure visualization”。

好了,我们正式进入panel编辑界面了。

网页的正中间位置,这就是图表区域,你配置好的图表,会显示在这个位置。现在什么也没做,是空的。

图表的上方,这个时间选择框,和Dashboard是通的。Dashboard的右上角也有一个。
这个框,在这里先简单提一句。这个选择框选择的时间,可以通过$from和$to参数,在SQL语句中作为占位符使用。你选择时间,grafana会自动替换上面这两个参数,形成一个新的查询语句,然后图表会刷新。我们也放在后面实战讲解时,去具体研究功能。

和它同一行的,有一个“Table View”选项。这个选项,是常用的。当我们制作饼形图、条形图等等,图形的形式展示数据时,其实并不直观。Grafana中这些图形和你写的SQL语句中查询出来的字段,是有内在规律的。嘿嘿,内在规律,也可以叫做玄学。每一种图形有一种规则。你SQL语句简单,图形显示会很快,填上SQL点击Query,图形立马出来。如果,你搞一个复杂的SQL语句。Grafana无法判断,你到底要怎么显示图形。点击“Query”后,就是个空的,或者图形走样了,和你想象的不一样。
这时候,你就要点击“Table view”选项。看看,你SQL语句查询的真实数据长什么样。

我们再来看图表区域的下方,有两个Tab,一个是Queries,一个是Transformations。
同样,我们只讲Queries,Transformations放在下一节课讲。

这个Queries,其实和我们上面讲的Explore是一样的东西。关于data source一行,如果你配置了多个数据源,或者说不同的数据库。你可以在这个下拉菜单里选择。
还有一点,不同的数据库软件,在grafana中他的data source扩展不一样,引申而来的是,这个SQL填写菜单,细节上会有些变化。
在这里直接填SQL语句。点击“Run Query”就可以在上方形成图表了。
最下方,有两个按钮。
这两个按钮在这里简单提一下,详细的放下一节课。
“Add query”按钮,可以增加一个一模一样的SQL查询区域。这个东西的用法,主要体现在折线图里,画多条折线的时候,可以用它。

我们再看图表的右侧。这个区域,同样有两个TAB。Suggestions,很有意思。当你没有选择合适的图表形状时,它会给你展示,不同形状的图形,展示出来的数据时什么样子的。你可以直接选择。

不过,这里面并没有我想要的柱状图。所以,我选择第二个TAB。All visualizations全部的视图。

第二个“Bar chart”条形图,就是我想要的了。
点击后,这个区域就变成了Bar chart的属性框。

同时,我们的查询数据,也是显示出来了。

我们的SQL语句,很简单,所以很顺利的就出现了一个柱状图。
下一步,我们一个一个的看panel的属性。看右边。
首先,是最基本的,标题和描述。

Links这个选项。这里可以配置一些超链接。在dashboard中,会显示出来。

比如,我们增加一个链接,写百度的地址吧

你返回到看板界面,在panel标题的旁边,会有个小图标。点击进能直接跳转网页。

这个功能,通常是,你这里放置的表格比如说像这个,是年度数据,只能显示12月,每个月。当用户想要看某个月内,每天或者每周的情况。这在另一个看板里面。就可以用link功能。用户直接点击这里,跳转到看板就可以了。不需要重新做一个。重复利用了。
这个,hide rules,这个功能,是在dashboard中,前面不是说了,有个time range吗,当你选择的时间范围,这个panel没有数据,就可以直接隐藏这个panel。

坐标系功能区。这个功能主要的作用,首先是明确你SQL中的哪个字段作为X轴,还有调节坐标轴的一些信息显示情况。还要强调一点啊,不同的图形,他这个地方的设置是不一样的。

再往下,设置图形宽度

设置提示框的Tooltip;Legend,图示,告诉你什么颜色代表什么意思;还能设置字体大小;下面还有个坐标轴设置,这就是Y轴的功能了。
再往下,“standard options”,通用的选项,就是所有的图形,都会有的一些设置。
Unit单位,就是Y轴数字的单位是什么,千克、米之类的。Min、Max,Y轴显示的最大、最小值。
再往下有个“Display name”这个在表格table中比较常用。我们查询SQL语句时候,显示出来的数据,表头,就是SQL中字段。可以靠着这个属性,把他显示为中文名称。这个功能,要和最下面的按钮“Add field override”配置。
这个地方多说两句。不用最后这个override按钮的话,直接改上面这些配置,先这种二维的图形,是没有影响的。如果,你直接显示table。一般table肯定是有很多列的,你一改,所有的列都会生效。这时,就可以用这个override按钮了。它会先让你关联一个列,然后再去配置上面这些属性。这样,就只能在一列生效了。

再往下,“Data links and actions”这个功能,也是我最喜欢的功能。它同样是在表格table中好用。它的作用是,把表格中特定一列单元格中的数据,变为超链接。你可以点击这个数据跳转到另一个页面。比如你用flask写一个简单的form表单,你点击这个数据的时候,跳转到form,可以修改表中这一行数据。改完,保存。回来一看,数据刷新成你刚刚在form中提交的了。

下面还有个Thresholds阈值选项。我们这个图中有个是绿色条,其他都是红色的,就是这配置造成的。

好了,到这里panel中的选项基本讲完了。具体的作用,我们放在下节课,实战项目中进行讲解。
现阶段,基本使用方法,你掌握,如何新建dashboard、新建panel,在哪里填写SQL查询语句,如何选择不同的图形,就可以了。
设置完了之后,要记得点击“save”保存。位置在右上角。

然后,点击“back to dashboard”返回到看板界面。

现在,我们这个看板,就有一个报表了。点击“save”保存,这个看板才会生效。
好了,我们从左侧的侧边栏,点击“Home”到grafana的主页。

Grafana的首页实际上也是一个dashboard。为了方便显示呢,我们点击“remove this panel”把这个咨询panel删除掉。没连接网络,不需要这种东西,何况我们也不升级软件。

删除之后,我们就可以看到首页上出现了一个“dashboards”的小panel。这样我们就可以从这里直接访问常用的看板了。

接下来,我们再看看侧边栏的dashboards中,是如何显示的。这次,他就变成了一个列表。

好的,这就是两种访问dashboard的途径,一种从home主页直接访问。一种是从侧边栏的dashboards中找。
说完访问途径,我们继续讲dashboard的几处主要功能。
进入dashboard后,顶部的工具栏。Timerange之前提过了,下一个Refresh,如果你的数据是实时更新的,你可以设置自动刷新功能。这样,你可以把看板一直开着,数据不断的刷新。方便你盯数据。
Save功能,无论是你改过dashboard的设置、布局,还是改过panel中的设置,都要记得保存。
Edit功能,修改dashboard的时候点击它。

点击后,右侧的竖直分布的工具栏,会多出几个按钮来。第二个“设置”按钮。

会弹出一个侧边窗口来,里面是一些基本的设置。包括看板的名称、描述、布局等。

我们要点击最上方的“View all settings”按钮,进入看板的设置界面。里面的相关设置,在我们下一节课中,会根据实战项目,讲一下常用的设置。

今天在这里,我主要讲Permissions,权限设置。

我们做看板,数据报表,最终是为了给用户看的。
用户访问的过程中,我们要保护数据,他们不能随便动。
所以,做完看板后,我们要设置用户。
这是,看板默认的设置。他是靠角色来配置的。Admin、Editor这都是可以修改看板的。Viewer是只读看板的。那么,我们建普通用户的时候,就是给他赋予Viewer权限。
添加用户,是在“administration”的Users and access中设置的。

直接点击Users,进入用户列表页。

点击New User,新建用户。这里让你设置用户名、密码和邮箱。创建完毕后,自动进入用户属性设置界面。这里很多需要设置的地方。我们只看下面的Organizations。
Grafana很特别,它是二级权限结构。一级是组织Organization,所有的dashboard可以分属于不同的Organization。二级是角色,就是editor、viewer。

这就建立普通访问用户了。
这种建立方式,存在一个问题。我们运维工程师,做的报表。往往只是小范围分享的。如果按照上面这种方式设置用户,用户是可以看到所有的报表的。很不安全。
这就需要permission中的第二个设置方式了,User,直接按用户账户设置。

我们直接点击“Add a permission”。选择User,在选择具体的用户,权限设为View。这样,可以直接指定那些用户访问这个报表。当然,这里要注意,要把上方Role中的Editor、Viewer两个角色的设置删除。

最后,不要忘记保存看板即可。
好了,运维开发七十二变第四课,到此结束了。
本节课,我们重点学习了grafana的安装和基本使用方法。
大家记得在课后安装一下。
第五节课开始,我们进入grafana+python+sqlite的项目实战环节。
我会通过实战案例的形式,带领大家学习python如何操作数据库。一级grafana的常用的高级设置和技巧。
感谢参与学习,再见!