当前位置: 首页 > article >正文

清理skywalking历史索引

import requests
from datetime import datetime, timedelta
import os
import re# 配置参数
ES_HOST = os.getenv("ES_HOST", "http://192.168.0.250:9200")  # ES地址
ES_USER = os.getenv("ES_USER", "")                      # 用户名(无认证则留空)
ES_PASS = os.getenv("ES_PASS", "")                      # 密码(无认证则留空)
RETENTION_DAYS = 3                                     # 保留天数
INDEX_PATTERN = r"^(.*)-(\d{8})$"                       # 匹配所有以日期结尾的索引(兼容SkyWalking所有类型)def get_indices():"""获取所有Elasticsearch索引"""auth = (ES_USER, ES_PASS) if ES_USER and ES_PASS else Noneurl = f"{ES_HOST}/_cat/indices?format=json"try:response = requests.get(url, auth=auth, timeout=30)response.raise_for_status()return [idx["index"] for idx in response.json()]except Exception as e:print(f"获取索引失败: {e}")return []def is_skywalking_index(index_name):"""判断是否为SkyWalking索引(名称格式:任意前缀-8位日期)"""return re.match(INDEX_PATTERN, index_name) is not Nonedef parse_index_date(index_name):"""从索引名称中提取日期"""match = re.match(INDEX_PATTERN, index_name)return match.group(2) if match else None  # group(2) 对应日期部分def delete_indices(indices_to_delete):"""删除指定索引(同上个版本,保持不变)"""auth = (ES_USER, ES_PASS) if ES_USER and ES_PASS else Nonefor index in indices_to_delete:try:url = f"{ES_HOST}/{index}"response = requests.delete(url, auth=auth, timeout=30)if response.status_code == 200:print(f"已删除索引: {index}")else:print(f"删除失败({response.status_code}): {index}")except Exception as e:print(f"删除异常: {index} - {e}")def main():# 计算15天前的日期cutoff_date = (datetime.utcnow() - timedelta(days=RETENTION_DAYS)).strftime("%Y%m%d")print(f"清理SkyWalking索引,保留日期 >= {cutoff_date}")# 获取并过滤索引all_indices = get_indices()skywalking_indices = [idx for idx in all_indices if is_skywalking_index(idx)]indices_to_delete = []for index in skywalking_indices:index_date = parse_index_date(index)if index_date and index_date < cutoff_date:indices_to_delete.append(index)# 执行删除if indices_to_delete:print(f"待删除索引: {', '.join(indices_to_delete)}")delete_indices(indices_to_delete)else:print("无符合清理条件的索引")if __name__ == "__main__":main()
http://www.lryc.cn/news/2393665.html

相关文章:

  • 用nz-tabel写一个合并表格
  • matlab计算转子系统的固有频率、振型、不平衡响应
  • leetcode hot100刷题日记——29.合并两个有序链表
  • 【机器人】具身导航 VLN 最新论文汇总 | Vision-and-Language Navigation
  • Windows 安装 WSL2 并运行 Ubuntu 22.04 指南
  • AI情感陪伴在医疗领域的核心应用潜力
  • 【计算机网络】第1章:概述—分组延时、丢失和吞吐量
  • Python Day38
  • DeepSeek R1 模型小版本升级,DeepSeek-R1-0528都更新了哪些新特性?
  • 线路板厂家遇到的PCB元件放置的常见问题有哪些?
  • 【C/C++】无限长有序数组中查找特定元素
  • SQL正则表达式总结
  • 力扣经典算法篇-13-接雨水(较难,动态规划,加法转减法优化,双指针法)
  • STM32 -- USB虚拟串口通信
  • uni-app开发特殊社交APP
  • Linux中Shell脚本的常用命令
  • RabbitMQ项目实战
  • 安卓开发用到的设计模式(3)行为型模式
  • 生成模型:从数据学习到创造的 AI 新范式
  • 尚硅谷redis7 90-92 redis集群分片之集群扩容
  • RabbitMQ性能调优:关键技术、技巧与最佳实践
  • 系统架构中的组织驱动:康威定律在系统设计中的应用
  • TypeScript 中高级类型 keyof 与 typeof的场景剖析。
  • Android LiveData 详解
  • 为什么共现矩阵是高维稀疏的
  • 离散化算法的二分法应用
  • IntelliJ IDEA 中进行背景设置
  • Dart语言学习指南「专栏简介」
  • AWS之AI服务
  • Docker 部署项目