半自动添加Grafana 模板之 ---- POST提交
目前我们生产环境,每次新加DB机器都要人肉去添加模板,这种方式显然不是一个IT从业人员应该做的。急需完善流程。
看了 grafana官网自带的http api说明也不够清晰,于是自己琢磨了下。有了这篇博客。
1、去grafana里面生成一个api key,用于和grafana进行http交互。
因为很多时候,公司内有很多组织的,处于权限控制考虑,我们的监控模板需要放到对应的组织下,只允许对应的业务人员查看。
这里,我们先新建个组织,例如叫做“会员系统”
然后,去生成1个api key
注意,这个api keys界面只会出现一次,因此需要记住这个key,后续是无法查看到的。
这里,我们记录下关键信息如下:
Authorization: Bearer eyJrIjoiRDd2SXkxU01PUkk4TFVYT0xsM1lQQ1dFaW92dEJIekMiLCJuIjoiZ3JhZmFuYV9hdXRvIiwiaWQiOjE0fQ==
2、添加grafana的数据源,我这里取名为prom25:
3、制作一个标准模板,后面会用到它,我这里简单起见,只用了一个5分钟负载图。(实际生产环境这个模板会展示很多指标,操作方法是一样的)。
这个模板没问题后,我们来导出json格式的模板文件,如下图所示:
我这里导出的json文件全文如下:
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": "-- Grafana --",
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"type": "dashboard"
}
]
},
"editable": true,
"gnetId": null,
"graphTooltip": 0,
"hideControls": false,
"id": 36,
"links": [],
"rows": [
{
"collapse": false,
"height": "250px",
"panels": [
{
"aliasColors": {},
"bars": false,
"dashLength": 10,
"dashes": false,
"datasource": "prom25",
"decimals": 2,
"fill": 3,
"id": 1,
"legend": {
"alignAsTable": true,
"avg": false,
"current": true,
"max": true,
"min": true,
"show": true,
"total": false,
"values": true
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "null",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"span": 12,
"stack": false,
"steppedLine": false,
"targets": [
{
"expr": "node_load5{instance=\"10.0.20.25:9100\"}",
"format": "time_series",
"intervalFactor": 1,
"legendFormat": "{{instance}}",
"refId": "A"
}
],
"thresholds": [],
"timeFrom": null,
"timeShift": null,
"title": "5分钟负载",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
]
}
],
"repeat": null,
"repeatIteration": null,
"repeatRowId": null,
"showTitle": false,
"title": "Dashboard Row",
"titleSize": "h6"
}
],
"schemaVersion": 14,
"style": "dark",
"tags": [],
"templating": {
"list": []
},
"time": {
"from": "now-30m",
"to": "now"
},
"timepicker": {
"refresh_intervals": [
"5s",
"10s",
"30s",
"1m",
"5m",
"15m",
"30m",
"1h",
"2h",
"1d"
],
"time_options": [
"5m",
"15m",
"1h",
"6h",
"12h",
"24h",
"2d",
"7d",
"30d"
]
},
"timezone": "",
"title": "test_dashboard",
"version": 1
}
此外我们可以将这个模板文件导出作为备份,然后删除这个模板。后续会通过http api来添加这个模板。
4、修改上面的这个json文件,修改后的如下:
注意标记红色的第1、2行还有最后3行,都是新加了的内容。
{
"dashboard":
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": "-- Grafana --",
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"type": "dashboard"
}
]
},
"editable": true,
"gnetId": null,
"graphTooltip": 0,
"hideControls": false,
"id": null,
"links": [],
"rows": [
{
"collapse": false,
"height": "250px",
"panels": [
{
"aliasColors": {},
"bars": false,
"dashLength": 10,
"dashes": false,
"datasource": "prom25",
"decimals": 2,
"fill": 3,
"id": 1,
"legend": {
"alignAsTable": true,
"avg": false,
"current": true,
"max": true,
"min": true,
"show": true,
"total": false,
"values": true
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "null",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"span": 12,
"stack": false,
"steppedLine": false,
"targets": [
{
"expr": "node_load5{instance=\"10.0.20.25:9100\"}",
"format": "time_series",
"intervalFactor": 1,
"legendFormat": "{{instance}}",
"refId": "A"
}
],
"thresholds": [],
"timeFrom": null,
"timeShift": null,
"title": "5分钟负载",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
]
}
],
"repeat": null,
"repeatIteration": null,
"repeatRowId": null,
"showTitle": false,
"title": "Dashboard Row",
"titleSize": "h6"
}
],
"schemaVersion": 14,
"style": "dark",
"tags": [],
"templating": {
"list": []
},
"time": {
"from": "now-30m",
"to": "now"
},
"timepicker": {
"refresh_intervals": [
"5s",
"10s",
"30s",
"1m",
"5m",
"15m",
"30m",
"1h",
"2h",
"1d"
],
"time_options": [
"5m",
"15m",
"1h",
"6h",
"12h",
"24h",
"2d",
"7d",
"30d"
]
},
"timezone": "",
"title": "test_dashboard",
"version": 1
}
,
"overwrite": true
}
5、使用chrome的插件restlet_client模拟POST提交操作
如下图,关键点都用红色框起来了。 BODY部分填的就是上面第4步的修改后的json内容。
如果返回值是200OK,则表示post提交成功了。然后去grafana界面查看下吧。没啥问题的话,就可以将这个post请求弄出来了。
点击上图界面的右上角“save as”旁边的小箭头,点击“copy as curl”,即可导出curl格式的命令明细。
我们可看下这个curl的内容,实际上变化的就是3个地方:
1、curl的header部分的认证字段(用来区分属于哪个grafana组织)
2、http的data部分,实际上就是我们的dashboard的全部内容。
3、dashboard的名称。
6、后期
通过上面的几个步骤,我们就可以再努力下,用python搞个web界面,传一个grafana的组织,需要的主机IP即可完成添加。
【grafana里的组织和apikey存在对应关系。 对于http的data部分,实际上只要每次改成一个IP就是一个新的模板(咱DBA的机器,都是一个IP对应一个模板)】
转载于:https://blog.51cto.com/lee90/2071548
半自动添加Grafana 模板之 ---- POST提交相关推荐
- OA系统添加审批模板
1.列表页面 1.1.动态添加路由 在"系统管理"->"菜单管理"添加"审批设置"->"审批类型" 对于菜单 ...
- ASP.NET 2.0 中动态添加 GridView 模板列
ASP.NET 2.0 中动态添加 GridView 模板列的例子 动态添加列,关键是实现 ITemplate.InstantiateIn 方法.下面是一个添加 GridView 模板列的例子. ...
- 为监控主机添加SNMPv3模板
转载来源 : 为监控主机添加SNMPv3模板 本次以监控主机华为E9000为例. 1.关于snmpwalk v3命令详解 参考网站: https://blog.csdn.net/ivnetware/a ...
- Phpcms黄页yp如何添加企业模板
在模块->企业黄页 ->企业模板管理 这里,添加新模板 (首先要安装企业黄页,才有这个模块出来) 如果使用上传压缩包方式,请将模板文件放置在upload文件中,css及图片文件放置于upl ...
- GBase 8d条目添加到模板
此操作是指把条目objectclass及属性保存为模板.用户可以在添加条目时选择"基于摸板添加",就可以看到已经添加的模板,并且可以选择模板进行条目添加. ※首先选中要添加到模板的 ...
- latex安装教程(texlive+texstudio)并添加IEEE模板
@[TOC]latex安装教程(texlive+texstudio)并添加IEEE模板 texlive安装 网址:https://tug.org/texlive/ texlive可以选择线上安装也可以 ...
- 为Visual Studio添加项目模板及项模板
1 问题的引入 在做项目的时候,需要代码规范,版本信息不可或缺,但是每次在文件头COPY版本信息很麻烦,而且也不太容易控制.为了更好.更规范的去完成项目,需对项目文件做统一的格式来处理. 2 环境描述 ...
- nhmicro添加合同模板管理功能
nhmicro添加合同模板管理功能 在合同模板列表中创建记录,上传word(2003版)合同模板文件,点击编译后就可以下载pdf了.在编写word文件是可以使用${somekey}作为占位符,下载pd ...
- 【VUE项目实战】56、商品添加功能(六)-提交添加的商品
接上篇<55.商品添加功能(五)-商品内容模块> 上一篇我们完成了商品内容编辑模块的开发,也即是完成了商品所有的信息编辑,本篇我们就来开发提交商品所有信息到后台的功能. 一.要实现的效果 ...
最新文章
- IT十八掌作业_java基础第十八天_项目完善
- Unity3D安卓程序中常用静态方法封装
- linux 双网卡绑定(bonding)实现负载均衡或故障转移
- c++11 继承构造
- [react] 请说说什么是useRef?
- face-recognition库(人脸识别库)安装,使用
- HBase错误解决(启动Hbase出现错误的替换,启动hbase shell出现ERROR KeeperErrorCode=NoNode for /hbase/master)
- JNI开发笔记(一)--Android Studio安装与环境搭建
- js获取单选框里面的值
- eclipse里面配置热部署,tomcat配置
- Eclipse 常用快捷键(动画讲解)
- 呐,一个苹果洞赚10万美元的详细经验都在这里了~
- 服务器打包文件命令,nuxt构建项目打包部署服务器二(打包部署)
- 运用CNN对ImageNet进行图像分类
- 谷歌浏览器查看版本信息及个人资料路径的命令方法
- Python_作图添加水平线和垂直线_linspace语句介绍
- PWM(脉冲宽度调制)的工作原理、分类及其应用
- 利用CC2530单片机的蜂鸣器播放音乐的代码
- MySQL学生综合测评系统_大学生综合测评系统的设计和实现(MySQL)
- 为什么敬业签绑定了微信提醒不了?