文章较长,建议关注后再读:
er
介绍
Grafana as Code的意思是将Grafana的所有的配置——包括Dashboard——都通过代码来声明。通过代码来声明的方式有如下好处:
所有的代码都可版本化。就意味着可以进行Code Review。也就是意味我们可以得到Code Review带来的所有的好处;
减少手工配置量。如果一个环境有30个Dashboard,存在3个环境,你就必须手工配置 30*3个Dashboard;
无痛重建。就是重建一套新的Grafana,对你的团队来说是毫无压力的。
方便与其它系统集成。比如根据业务系统,自动生成新的配置。
可对dashboard的代码进行单元测试。
本文是我们的一些实践经验的总结。
整体步骤
我们将Grafana的配置可以分成两部分来看:
部署配置部分:部署Grafana应用过程的配置,如应用内存大小、使用的域名、插件安装等。说白了就是一个”空“的Grafana;
应用配置部分:Grafana应用本身的配置,如包含的folder列表、dashboard、LDAP配置等等。
部署配置部分,很大一部分程度取决于你的部署方式。我们建议是通过docker的方式运行。如果你还没上线Kubernetes,那么,我们推荐你使用docker-compose的方式部署。而Kubernetes,我们推荐你使用Helm进行部署。Chart推荐官方的chart:https://github.com/grafana/helm-charts/tree/main/charts/grafana 。这两种方式都支持配置的方式部署。
使用Helm部署时,我们有以下建议:
指定Grafana的镜像的版本,而不是使用latest版本。使用latest的后果是,不知道哪天,你的Grafana就可能因为Grafana版本与插件版本不一致而不可用。
通过配置Values中的plugins字段,实现Grafana自动化下载依赖。如果你的部署环境有网络问题,可能需要你修改chart以实现从指定的地方下载插件。
虽然Values中有提供数据源和dashboard的配置,但是,我们建议把它放在应用配置部分。
而应用配置部分,Grafana应用本身的配置,我们建议通过Terraform实现。Terraform大多数时候被认为是基础设施的工具。其实,它是一款声明式的状态管理工具。本文使用它来管理Grafana的状态。
采用Terraform进行部署Grafana配置的步骤如下:
准备存储Terraform状态数据的后端。我们使用PostgreSQL作为后端;
在编辑器中,写Te