ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

grafana自动截图

2022-02-17 20:35:39  阅读:503  来源: 互联网

标签:-% 截图 url image grafana 自动 renderer time


    Grafana支持将面板自动呈现为PNG图像。这允许Grafana自动生成面板的图像,以便将其包含在警报通知中。需要安装grafana-image-renderer插件,安装可以参考官网https://grafana.com/grafana/plugins/grafana-image-renderer/

 

docker模式运行yml

  grafana:
    container_name: grafana
    depends_on:
      - prometheus
    image: grafana/grafana:7.5.7
    volumes:
      - type: bind
        source: /etc/localtime
        target: /etc/localtime
      - type: volume
        source: grafana
        target: /var/lib/grafana
    environment:
      GF_SERVER_DOMAIN: 127.0.0.1
      GF_RENDERING_SERVER_URL: http://127.0.0.1:8081/render
      GF_RENDERING_CALLBACK_URL: http://127.0.0.1:7000/
      GF_LOG_FILTERS: rendering:debug
    ports:
      - "7000:3000"
    networks:
      - prom

  renderer:
    container_name: renderer
    image: grafana/grafana-image-renderer:latest
    ports:
      - "8081:8081"
    networks:
      - prom
View Code

 

然后打开grafan,选择share,点击 Direct link rendered image,可以看到图片和对应的url

 

 在呈现图像时,PNG图像被临时写入文件系统。当图像呈现时,PNG图像被临时写入Grafana数据文件夹中的PNG文件夹。

url格式如下

http://127.0.0.1:8300/render/d-solo/ZypwSrZnz/xxxx?orgId=1&from=1645077536501&to=1645099136501&panelId=30&width=1000&height=500&tz=Asia%2FShanghai

然后就可以通过python请求下载和保存图片,下载时需要认证,可以通过grafana生成api key,用来做认证授权

# 获取时间戳
def get_time():
    t = datetime.datetime.now()
    # 当前日期
    t1 = t.strftime('%Y-%m-%d %H:%M:%S')
    # 转为秒级时间戳
    ts1 = time.mktime(time.strptime(t1, '%Y-%m-%d %H:%M:%S'))
    # 转为毫秒级
    end_time = int(str(ts1 * 1000).split(".")[0])

    # 1小时前
    t2 = (t - datetime.timedelta(hours=1)).strftime("%Y-%m-%d %H:%M:%S")
    # 转为秒级时间戳
    ts2 = time.mktime(time.strptime(t2, '%Y-%m-%d %H:%M:%S'))
    # 转为毫秒级
    start_time = int(str(ts2 * 1000).split(".")[0])
    return str(start_time), str(end_time)

# 下载pic
def download_pic():

    grafana_server = "xxxxx"
    url = (grafana_server + '/render/d-solo/xxx' +
                '?orgId=1&from=' +
               get_time()[0] + '&to=' + get_time()[1] +
                 "&panelId=30&width=1000&height=500&tz=Asia%2FShanghai"
                )
    print(url)
 
    header = {"Content-Type": "application/json","Authorization": "Bearer  xxxx"} # 用管理员去Grafana生成API Key
    res = requests.get(url,headers=header)
    time_now = int(time.time())
    time_local = time.localtime(time_now)
    dt = time.strftime("%Y-%m-%d",time_local)
    img_name = "img"+dt+".jpg"
    filename =  img_name
    with open(filename, "wb") as f:
        f.write(res.content)

        return filename


download_pic()
View Code

 

标签:-%,截图,url,image,grafana,自动,renderer,time
来源: https://www.cnblogs.com/quanloveshui/p/15906241.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有