首页 > 其他分享 >Grafana将监控信息渲染成图片并且邮件发送的过程

Grafana将监控信息渲染成图片并且邮件发送的过程

时间:2024-03-15 14:46:24浏览次数:278  
标签:qq msgRoot img 渲染 grafana import Grafana com 邮件

Grafana将监控信息渲染成图片并且邮件发送的过程


背景

去年12月份时自己创建了一套Grafana监控
可以监控redis,hikari,启动时间,补丁更新时间等等事项.
但是因为后续的事情比较多, 一直有一点荒废了.

最近折腾阿里云, 让阿里云给自己发了一个简单的大屏展示.
突然想其实自己也可以做到, 不用非得通过阿里云的设置.
然后就花了一点时间来进行处理. 
提高工作效率,也算是对自己之前工作投入的一个总结和回顾.

原理

Grafana 通过 render 的方式将监控结果渲染成图片. 
然后通过python将图片发送到指定邮箱. 

第一步Grafana的渲染-安装插件

注意这里需要安装grafana的插件
grafana-cli plugins install grafana-image-renderer

需要注意,这个命令默认是安装到 /var/lib/grafana 目录中的.
我这边是离线安装的. 所以需要将目录放到
/grafana/plugins-bundled 目录中区
然后就可以看到 已安装组件中有了render的插件.

第二步创建api-key

需要说明, 我这边的版本是Grafana10 的版本
中文版的情况下创建api-key感觉与网上不一致. 

首页-管理-服务账户
创建服务账户
然后创建tokens 记录就可以了. 
注意token 只会展示一次, 需要牢记. 

第三步获取渲染页面

在某个需要发送邮件的页面点击 右上角的 三个点 打开设置界面

点击分享->

分享最下面有一个 直接连接至渲染后的图像
就会展示出来一个界面:
https://grafana.myapp.online/render/d-solo/ecc353a4-e59f-411a-bef5-5119073da22f/5Lqn5ZOB5ZCv5Yqo5pe26Ze05bGV56S6?
orgId=1&from=1710462091996&to=1710483691996&panelId=2&width=1000&height=500&tz=Asia%2FShanghai

需要注意 from to 的部分: &from=1710462091996&to=1710483691996
是指定时间的
如果想自动渲染, 建议去掉这一部分的时间 比如之后的为:
https://grafana.myapp.online/render/d-solo/ecc353a4-e59f-411a-bef5-5119073da22f/5Lqn5ZOB5ZCv5Yqo5pe26Ze05bGV56S6?
orgId=1&panelId=2&width=1000&height=1500&tz=Asia%2FShanghai

需要注意 &width=1000&height=1500 可以根据需要进行修改. 

第四步 python的方式命令行方式获取图片

直接仿照网上的资料进行处理. 

import urllib.request
def download_img(img_url, api_token):
    header = {"Authorization": "Bearer " + api_token} 
    request = urllib.request.Request(img_url, headers=header)
    try:
        response = urllib.request.urlopen(request)
        img_name = "summary.png"  
        filename = "/grafana/images/"+ img_name  
        if (response.getcode() == 200):
            with open(filename, "wb") as f:
                f.write(response.read()) 
            return filename
    except:
        return "failed"

if __name__ == '__main__':
    img_url = "$步骤三种的url"
    api_token = "glsa_hefKCHeCihkirNQSA4VXp39jPADsqXbh_4e8f3a4f"
    download_img(img_url, api_token)

第五步 发送邮件

继续仿照网上的资料进行处理
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.utils import parseaddr, formataddr

sender = '[email protected]'  
to_address = ['[email protected]', '[email protected]'] 
cc_reciver = ['[email protected]', '[email protected]'] 
reciver = to_address + cc_reciver

smtpserver = "mail.qq.com:30" 
username = '[email protected]' 
password = 'yourpassword' 

msgRoot = MIMEMultipart('related') 
msgRoot['Subject'] = '自动化应用服务器监控日报-应用判活' 
msgRoot['From'] = sender
msgRoot['To'] = ",".join( to_address ) # 发给多人
msgRoot['Cc'] = ";".join(cc_reciver) # 抄送人

# 以下为邮件正文内容,含有一个居中的标题和一张图片
content = MIMEText('<html><head><style>#string{text-align:center;font-size:25px;}</style><div id="string">自动化环境运行情况:<div></head><body><img src="cid:image1" alt="image1"></body></html>','html','utf-8')
content = content.decode('utf-8').encode('gbk')
msgRoot.attach(content)

fp = open('/grafana/images/summary.png', 'rb')
msgImage = MIMEImage(fp.read())
fp.close()
msgImage.add_header('Content-ID', 'image1') # 这个id用于上面html获取图片
msgRoot.attach(msgImage)

# 连接邮件服务器,因为使用SMTP授权码的方式登录,必须是465端口
# 如果是SSL需要用 ssl 如果不是 SMTP就可以了. 
# smtp = smtplib.SMTP_SSL('mail.qq.com:465')
smtp = smtplib.SMTP('mail.qq.com:30')
smtp.login(username, password)
smtp.sendmail(sender, reciver, msgRoot.as_string())
smtp.quit()

第六步 计划任务

cd /grafana/images
python3 getimage
sleep 5
python3 sendemail

保存为 auto shell 脚本:
计划任务
crontab -e
59 22 * * * /grafana/images/auto

每天晚上自动报告情况

第七步 效果

image

标签:qq,msgRoot,img,渲染,grafana,import,Grafana,com,邮件
From: https://www.cnblogs.com/jinanxiaolaohu/p/18075355

相关文章

  • 性能数据Grafana数据面板实战
    一、安装Grafanahttps://grafana.com/zh-cn/grafana/?pg=graf&plcmt=hero-btn-1二、修改配置默认为3000,若被占用,就修改默认启用端口修改为中文界面3、启用服务或者在控制面板-服务中启动四、访问服务......
  • 二进制部署 Prometheus+Alertmanager+Grafana
    从官网手动安装Prometheus采集、存储数据Grafana用于图表展示alertmanager用于接收Prometheus发送的告警信息node-exporter用于收集操作系统和硬件信息的metrics二进制部署#切换到root用户sudo-i#创建一个专门的prometheus用户:useradd-M-s/usr/sbin/nologi......
  • 配置MogDB openGauss的grafana 的dashboard
    配置MogDB/openGauss的grafana的dashboard本文出处:https://www.modb.pro/db/188684概述我们已经介绍了prometheus+grafana+opengauss_exporter完成对MogDB/openGauss数据库的监控,但这只是第一步,我们还需要通过grafana的dashboard查看各个关注的指标项,本文主要......
  • 云渲染农场的推荐:为什么自建农场不是最佳方案?
    使用云渲染服务的好处在于其灵活性和避免了高昂的初始投资。另一方面,拥有私有渲染农场使得用户可以对硬件和软件有更深入的管理。然而,建立和维护一个私人渲染基地不仅需要大量的起始资金,还伴随着持续的运营成本,这对很多组织和个体而言,可能构成了一大挑战。一、云渲染农场与自建......
  • docker-compose部署prometheus+grafana进行服务器监控
    1、创建prometheus【prometheus.yml】配置global:scrape_interval:15sevaluation_interval:15sscrape_configs:-job_name:'prometheus'static_configs:-targets:['192.168.2.216:9090']ViewCode2、创建【docker-com......
  • 微信小程序(七)条件渲染
    wx:if.wx:elif,wx:else  ......
  • VRay渲染动画怎么快一点?提升VRay动画渲染方法
    ​随着动画和视觉效果行业对高品质渲染的需求日益增长,V-Ray作为一款领先的渲染工具,面临着提升渲染效率的挑战。项目规模和复杂度的扩大导致渲染时间延长,对交付期限造成影响。探索加速V-Ray渲染流程的方法变得尤为关键。一、动画渲染的常见瓶颈动画渲染过程中的每一帧都需要执......
  • 提速电商效果图云渲染:优势与策略
    云渲染为电商效果图提供了快速、高效的解决方案,利用其庞大的计算能力和并行处理优势,即便是复杂场景也能迅速渲染完成,大幅提高工作效率和加快产品上市节奏。一、电商效果图有什么用?电商效果图在电商行业中扮演着至关重要的角色,它不仅能够生动地展示产品的外观和特性,还能增强消费......
  • python实现发送邮件
    python实现自动化邮件发送测试环境:os:windows10编译软件:pycharm,python发送端:[email protected]接收端:[email protected],[email protected] 1.发送端需开启POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务。我这里使用的是QQ,需要去mail.qq.com开启此服务:【登录】-【设置】-【账号】-【OP3/IMA......
  • 渲染农场:大规模渲染任务的高效处理方式
    在当今的数字内容创作领域,渲染农场是处理大规模渲染任务的关键技术,它利用多台计算机的集群来分担复杂的渲染工作,大大提高了效率和速度。这篇文章将深入探讨渲染农场的工作原理、技术架构,以及如何根据需求选择合适的渲染农场。一、渲染农场简介渲染农场是由众多计算机组成的网络......