python 脚本定时删除 elk索引

脚本如下

一、python 脚本如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#! /usr/bin/python
# -*- coding=utf-8 -*-
 
import urllib
import urllib.request
import re
import datetime
import time
import codecs
from urllib.request import urlopen
import requests
 
def match(urlGet):
    urlGet1 = urllib.request.urlopen(urlGet).read()
    #去除空格
    urlGet2 = codecs.getdecoder("unicode_escape")(urlGet1)[0]
    urlGet3 = re.sub(' +','|',urlGet2)
    #已换行为分隔符
    urlGet4 = urlGet3.split('\n')
    return urlGet4
 
def indexGet(urlGet4):
    for indexFull in urlGet4:
        try:
            #获取索引名称
            indexpattern = indexFull.split('|')[2::9]
            #正则匹配年月日
            pattern = re.compile(r'\d{4}\.\d{1,2}\.\d{1,2}')
            #将j列表转成字符串,获取匹配的索引
            resMatch = pattern.findall("".join(indexpattern))
            # print(resMatch)
            #30天以前索引
            dataNow = datetime.date.today()
            daysBefore30 = dataNow - datetime.timedelta(days=30)
            dateFormat = daysBefore30.__format__('%Y.%m.%d')
            if dateFormat in resMatch:
                httpDelete(dateFormat)
            else:
                pass
        except:
            pass
 
def httpDelete(urlDeleteDate):
    indexFonts = ['ngx-','tom-','hap-','switch-']
    for indexFont in indexFonts:
        urlDelete = 'http://192.168.1.198:9200/%s%s' % (indexFont,urlDeleteDate)
        print(urlDelete)
        # responseDelete = requests.delete(urlDelete)
 
if __name__ == '__main__':
    urlGet = 'http://192.168.1.198:9200/_cat/indices'
    indexGet(match(urlGet))

二、linux crontab 

1
2
#每天凌晨1点执行。删除30天前的索引
00 01 * * * /usr/bin/python /home/shell/delIndex.py

 

posted @   MR__Wang  阅读(327)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示