grafana备份脚本

news2025/2/25 0:18:56

备份思路

1、逐个dashboard备份配置

2、每个dashboard保存成一个文件

3、文件名定义为 目录名-dashboard名.json

4、使用python2

5、其中http_header中生成的Authorization API KEY已过期,请自己重新生成后替换使用。

6、保存文件部分适配的是windows,若需要linux使用,需要自己修改。

在这里插入图片描述

备份脚本

#!/usr/bin/python
# -*- coding:utf8 -*-
 
import requests
import json
import os
import datetime
 
 
class GrafanaHandler:
 
    def __init__(self):
        self.base_url = "http://127.0.0.1:3000"
        self.http_header = {"content-type": "application/json",
                            "Authorization": "Bearer xxxx"}
 
    def deal_req(self, req):
        if req.status_code == 200:
            return req.json()
        else:
            print "error_code:" + str(req.status_code)
            return
 
    def get(self, url, params={}):
        req = requests.get(url, params=params, headers=self.http_header)
        return self.deal_req(req)
 
    def post(self, url, params={}):
        pass
 
    def get_all_dashboard(self):
        api_url = "/api/search/"
        full_url = self.base_url + api_url
        params = {"type": "dash_db"}
        return self.get(full_url, params=params)
 
    def get_one_dashboard_conf_by_uid(self, uid):
        api_url = "/api/dashboards/uid/" + uid
        full_url = self.base_url + api_url
        return self.get(full_url)
 
 
if __name__ == "__main__":
    current_date = datetime.date.today().strftime("%Y%m%d")
    # 备份文件存放路径
    dir_path = "D:\\company\\grafana_backup\\" + current_date
    if not os.path.exists(dir_path):
        os.makedirs(dir_path)
 
    grafana_instance = GrafanaHandler()
    all_dashboard = grafana_instance.get_all_dashboard()
    for dashboard in all_dashboard:
        # 获取每个dashboard的配置
        dashboard_conf = grafana_instance.get_one_dashboard_conf_by_uid(dashboard["uid"])
        # 保存文件
        file_name = dashboard_conf["meta"]["folderTitle"] + "_" + dashboard_conf["dashboard"]["title"] + ".json"
        print file_name
        with open(dir_path + "\\" + file_name.replace("/", ""), "w") as f:
            f.write(json.dumps(dashboard_conf))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/768005.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用IDEA构建jar然后转执行程序exe的爬坑

https://download.csdn.net/download/leoysq/87939492 构建jar

【矩阵的创建与基本运算】——matlab基础

目录索引 创建矩阵:zeros():ones:eye():magic():引号创建序列矩阵: 加减与数乘:其他运算:指数运算:*exp():* 点式运算: 创建矩阵: 如…

同心筑梦 展翅翱翔 | 2023届GBASE新员工筑梦计划培训报道

为帮助新入职员工增进彼此了解,快速融入GBASE大家庭中,激发大家工作热情,为此设计了拓展训练课程。完成“抓住机遇,摆脱困境”“蛟龙出海”“破冰”等环节后,新员工们已完全没有开始时的紧张,在全新的环境中…

MyBatis的相关api

1. MyBatis的相关api 1.1 Resources org.apache.ibatis.io.Resources:加载资源的工具类。 核心方法 返回值方法名说明InputStreamgetResourceAsStream(String fileName)通过类加载器返回指定资源的字节流 1.2 构建器SqlSessionFactoryBuilder 建造者设计模式&…

思维决定发展,测试人也不例外

最近特别懒,不想码字,原本写作就很差,更是退化严重。社招和校招面试过很多人,从十年前自己还很弱的时候学着面试,到数百次面试积累之后,面对候选人的时候,我的内心依然有些许紧张,非…

MySQL原理探索——31 误删数据后除了跑路,还能怎么办

在前面几篇文章中,介绍了 MySQL 的高可用架构。当然,传统的高可用架构是不能预防误删数据的,因为主库的一个 drop table 命令,会通过 binlog 传给所有从库和级联从库,进而导致整个集群的实例都会执行这个命令。 虽然我…

文件IO 文件属性获取,目录操作

文件属性获取 int stat(const char *path, struct stat *buf); 功能:获取文件属性参数: path:文件路径名 buf:保存文件属性信息的结构体返回值: 成功:0 失败:-1struct stat {ino_t st_ino;…

springboot项目创建整个完成过程和注意事项

1:application.yml文件配置 server:port: 8088servlet:context-path: /test spring:datasource:name: text #????url: jdbc:mysql://localhost:3306/dsdd?serverTimezoneGMT&useUnicodetrue&characterEncodingutf-8&useSSLtrueusername: root #…

java模拟MQTT客户端发送消息及EMQX配置

EMQX配置 登录地址 首先打开EMQX的管理界面,界面的地址如下, http://192.168.1.110:18083/ 规则是IP就是MQTT的IP,端口是固定的18083,输入该地址后,展示界面如下: 然后输入用户名和密码,用户…

0132 数据的表示和运算1

目录 2.数据的表示和运算 2.1数制与编码 2.1部分习题 2.数据的表示和运算 2.1数制与编码 2.1部分习题 1.若定点整数为64位,含1位符号位,则采用补码表示的最大值最大的负数为() A. B. C. D. 2.若x的补…

戴佩妮《随风所遇》世界巡回演唱会内地首站八月启动,乘风归来,相遇之约!

今日,戴佩妮(Penny)《随风所遇2023 Drift World Tour》世界巡回演唱会正式官宣内地首站,8月26日登陆南京太阳宫剧场。自2016年《贼》世界巡回演唱会之后,华语乐坛唱作人戴佩妮乘著所有粉丝期待的“风”回来,并带来曲目、造型等方面…

如何理解操作系统?(Operator System)

文章目录 一.什么是操作系统二.操作系统的层状结构三.操作系统如何管理 一.什么是操作系统 先入为主,操作系统是一款管理软件 操作系统分为两部分 操作系统本身,主要做一些进程管理、内存管理、文件管理、驱动管理等工作,这种核心部分叫做…

归并排序递归与非递归

基本思想 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide andConquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序&a…

Jenkins (二)

Jenkins (二) 使用pipeline script 简单编译 发布war工程到远程tomcat中 配置所需 下载 apache-maven-3.9.3.tar.gz 解压 apache-maven-3.9.3-bin.tar.gz 拷贝到 docker jenkins 镜像里 $ docker cp apache-maven-3.9.3 37259c708ca1:/home/下载apache-tomcat-8.5.91.tar.gz …

压测工具之JMeter使用

文章目录 前言压测工具如何使用启动JMeter工具开始创建测试环境1、创建线程组2、配置元件3、构造HTTP请求4、添加HTTP请求头信息 5、添加断言6、添加查看结果树7、添加聚合报告信息8、测试计划创建完成了 执行测试计划 前言 最近公司项目需要进行压测,查验S A A S …

7.18训练总结

考场错误: 今天是一套neerc的题,难度相对较大,我犯的低级错误比较少,但是对于题目顺序的把握能力,应该提高,尝试去做自己擅长的题目,而不是跟着别人的开题顺序,这样能够更顺畅吧。 …

实验室LIMS系统检测工作流程

LIMS系统检测工作流程 检测工作流程是LIMS核心内容,通过检测工作管理可加强协同工作能力、进一步强化质量控制环节、提高数据报出速度,提高工作效率、减低数据出错率,保证质量记录的完整、监控规范的执行;检测流程以样品检测为主…

Jenkins | 获取凭证密码

目录 方法一:查看所有账号及密码 方法二:查看指定账号密码 方法一:查看所有账号及密码 Jenkins > 系统管理 > 脚本命令行 com.cloudbees.plugins.credentials.SystemCredentialsProvider.getInstance().getCredentials().forEach{i…

element-ui message消息提示组件 ①延长提示消息在页面停留时间②提示消息换行

以实现下面的效果为示例 完整代码&#xff1a; let msgList ["数据1被引用", "数据2被引用"];// 使用html的换行标签拼接信息&#xff0c;默认行距太小&#xff0c;此处用两个<br/><br/>let message 以下数据不能删除&#xff0c;原因是&…

【Spring core学习四】Bean作用域和生命周期

目录 一、Bean的作用域 &#x1f308;1、被修改的Bean值现象 &#x1f308;2、 Bean 的 6 种作⽤域 &#x1f308;3、设置作用域 二、Spring的执行流程 三、Bean的生命周期 &#x1f308;1、Bean生命周期的过程 &#x1f308;2、演示生命周期 一、Bean的作用域 &…