简单说明

在镜像仓库的维护中,有时我们需要根据镜像仓库的使用情况进行及时的告警和扩容,避免镜像仓库容量满载时再进行扩容,这样会造成业务的阻塞。

这里我们使用Python简单写一个实现获取镜像仓库指定项目(也可以配置多个project)的容量使用情况,并且当容量达到设置的阈值,进行企业微信告警。

代码

$ cat alert_harbor_project.py
# -*- coding: utf-8 -*-
# author: yuhaohao
# describe:
# 获取指定镜像仓库的容量配额以及已使用容量
# 当容量利用率或者使用空间达到预定的阈值时, 进行企业微信的告警
import requests
from requests.auth import HTTPBasicAuth
import urllib3 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) def send_wechat_alert(webhook_url, message):
headers = {"Content-Type": "application/json"}
payload = {
"msgtype": "markdown",
"markdown": {
"content": message
}
}
try:
response = requests.post(webhook_url, json=payload, headers=headers)
if response.status_code == 200:
print("告警发送成功")
else:
print(f"告警发送失败: {response.text}")
except Exception as e:
print(f"发送告警异常: {e}") if __name__ == '__main__':
# 配置项
HARBOR_URL = "https://registry.test.com" # 替换成你实际的地址
PROJECT_NAME = "test"
USERNAME = "test" # 替换成实际用户名
PASSWORD = "test" # 替换成实际密码
WEBHOOK_URL = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=a18hjhhbjhjhjyuyuhu-a452-8b11b7e677b4" # 替换为企业微信的key # 请求 headers
headers = {
"Accept": "application/json"
} # API: 获取项目信息(包括 quota 使用情况)
url = f"{HARBOR_URL}/api/v2.0/projects/{PROJECT_NAME}/summary" response = requests.get(url, headers=headers, auth=HTTPBasicAuth(USERNAME, PASSWORD), verify=False) if response.status_code == 200:
data = response.json()
quota = data.get("quota", {}).get("hard", {}).get("storage")
used = data.get("quota", {}).get("used", {}).get("storage")
if quota and used:
used_gb = round(used / (1024 ** 3), 2)
quota_gb = round(quota / (1024 ** 3), 2)
availd_gb = round((quota_gb - used_gb), 2)
used_rate = used_gb / quota_gb
print(f"项目 {PROJECT_NAME} 已使用存储: {used_gb} GiB / {quota_gb} GiB")
if used_gb / quota_gb > 0.95 or availd_gb < 400:
message = (
f"### <font color=\"red\">**️ 镜像仓库容量告警**</font>\n"
f"> **Project名称:** {PROJECT_NAME}\n"
f"> **总容量:** {quota_gb}GB\n"
f"> **已用容量:** {used_gb}GB\n"
f"> **剩余容量:** {availd_gb}GB\n"
f"> **容量使用率:** {used_rate:.2%}\n"
f"> **请及时清理镜像或进行扩容!!!**"
)
send_wechat_alert(WEBHOOK_URL, message)
else:
print("未获取到有效的存储配额信息")
else:
print(f"获取失败,状态码: {response.status_code}, 响应: {response.text}")

获取Harbor镜像仓库指定Project的容量使用并进行企业微信告警的更多相关文章

  1. harbor镜像仓库-02-https访问配置

    harbor镜像仓库-02-https访问配置 harbordockerhttps harbor搭建部署参考上一章节 harbor镜像仓库-01-搭建部署 Harbor默认使用http,给harbor ...

  2. harbor镜像仓库-01-搭建部署

    harbor镜像仓库-01-搭建部署 dockerregistryharbor安装部署docker-compose harbor的https配置参考另一章节harbor镜像仓库-02-https访问配 ...

  3. Harbor镜像仓库

    Harbor镜像仓库 作者 刘畅 时间 2020-7-11 微信 目录 1.下载离线安装包 1 2.安装docker 1 3.安装docker-compose 2 4.自签TLS证书 2 4.1.创建 ...

  4. harbor镜像仓库-https访问配置

    1. 证书的生成 在测试或开发环境中,您可以选择使用自签名证书,而不是来自受信任的第三方CA的证书.以下内容将向您展示如何创建自己的CA,并使用您的CA签署服务器证书和客户端证书.   1.1 生成c ...

  5. CentOS部署Harbor镜像仓库

    关于Harbor Harbor是用于存储和分发Docker镜像的镜像仓库服务,相比Docker Registry,Harbor在安全.标识.管理等方面做了增强,更适合企业使用: 官方网站:https: ...

  6. 企业级 Harbor 镜像仓库

    Harbor是由VMWare公司开源的容器镜像仓库.事实上,Harbor是在Docker Registry上进行了相应 的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管理用户界面,基 ...

  7. File类_常见的方法(获取系统根目录与指定目录的容量)

    获取系统根目录 import java.io.File; public class File_ListRoots { public static void main(String[] args) { ...

  8. docker登录没有配置https的harbor镜像仓库

    已经搭建harbor 仓库 ,域名  172.16.1.99 出现问题: 客户端尝试登录 仓库 [root@localhost docker]# docker login 172.16.1.99:80 ...

  9. Docker镜像仓库Harbor搭建及配置

    一.harbor简介 Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全.标识和管理等,扩展了开源Docker Distribut ...

  10. 搭建docker镜像仓库(二):使用harbor搭建本地镜像仓库

    目录 一.系统环境 二.前言 三.Harbor 四.使用harbor搭建私有镜像仓库 4.1 环境介绍 4.2 k8smaster节点安装配置harbor 4.2.1 安装harbor离线包 4.2. ...

随机推荐

  1. Escalate_Linux靶机提权学习

    靶机下载 https://www.vulnhub.com/entry/escalate_linux-1,323/ 用VMware打开 扫描端口 nmap -sS -sV -n -T4 -p- 192. ...

  2. 深度剖析 StarRocks 读取 ORC 加密文件背后的技术

    作者:vivo 互联网大数据团队 - Zheng Xiaofeng 本文介绍了StarRocks数据库如何读取ORC加密文件,包括基础概念以及具体实现方案.深入探讨了利用ORC文件的四层结构和三层索引 ...

  3. Linux性能分析-CPU上下文切换

    前言 在Linux性能分析-平均负载中,提到过一种导致平均负载升高的情况,就是有大量进程或线程等待cpu调度. 为什么大量进程或者线程等待CPU调度会导致负载升高呢? 当大量进程或者线程等待调度时,c ...

  4. CH9121default与classical设置方法

    SYN发送间隔调整方法: 网口连接设备后双击设备列表中要配置的设备在扩展参数中单击获取扩展参数,在超时处理模式选项选择Classical然后执行设置扩展参数,最后点击复位模块后生效(仅TCP CLIE ...

  5. soapUI参数化总结

    1.新建项目目录 以获取用户贡献等级为例,目录如下: 2.添加DataSource和DataSource Loop 选中Test Step右键分别新建DataSource和DataSource Loo ...

  6. 🎀GitHub Pages静态文件发布

    简介 GitHub Pages是GitHub提供的一项服务,允许用户和组织从存储库中的静态文件创建和托管网站.这些静态文件可以是HTML.CSS.JavaScript文件或任何其他可以在浏览器中直接渲 ...

  7. Git的基础使用(一)

    Git版本管理工具的作用: (1)完整的记录项目代码变化的过程 (2)备份每一个变化过程的代码版本 (3)多人协同开发 1.配置全局变量 (1)配置用户名 git config --global us ...

  8. 康谋方案 | 康谋BRICK2与车载以太网设备轻松集成

    导读:在当下,汽车行业在安全性.舒适性.智能和万物互联等方面彻底改变了传统车辆的定义.随着这一趋势,汽车行业逐渐开始采用车载以太网来进行车内数据通讯,比如100Base-T1.1000Base-T1, ...

  9. JVM 的 TLAB(Thread-Local Allocation Buffer)是什么?

    JVM 的 TLAB(Thread-Local Allocation Buffer)是什么? TLAB(Thread-Local Allocation Buffer)简介 TLAB(Thread-Lo ...

  10. 题解:P10858 [HBCPC2024] Long Live

    给你两个数 x,yx,yx,y 让你找到一组 a,ba,ba,b,使 lcm⁡(x,y)gcd⁡(x,y)=ab\sqrt{\frac{\operatorname{lcm}(x,y)}{\gcd(x, ...