k8s的efk指定删除某一天内容而不删除索引本身

脚本内容删除3个月前一天的数据,每天执行一遍减少合并压力 

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: cronjob-es-index                 # 起名
  namespace: pot                         # 指定名称空间
spec: 
  schedule: "* * */1 * *"                # 每天执行一次
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: busybox-container      
            image: xxx                   # 任意镜像,但是需支持date -d选项(coreutils)
            command:
              - "bin/bash"
              - "-c"
              - |
                #!/bin/bash
                elk_ip=elasticsearch-master          # 直接用svc的名称就可以使用
                del_data=$(date -d "-3 month -1 day" +"%Y-%m-%d")  # 定义三个月之前的一天
                remove=()                            # 定义数组用来存索引                         
                remove[${#remove[*]}]=$(curl -s -XGET "http://${elk_ip}:9200/_cat/indices" | grep "tapd"| grep "log" | awk '{print $3}'| uniq)
                function del_index(){                # 定义函数
                        for index in ${remove[@]}    # 循环函数内的索引
                        do
                             a=$(curl -s -XGET "http://${elk_ip}:9200/${index}/_search?pretty" -H 'Content-Type: application/json' -d "{\"query\": {\"match\": {\"@timestamp\" : \"${del_data}\"}}}" | grep -A 1 "value")           # 查出来搜索到的有条数的行
                             sum=$(echo $a | awk '{print $3}' | sed 's/,$//g')  # 提取条数
                             if [ $sum -gt 0 ];then   # 当条数等于0时则不执行
                                    curl -s -XPOST "http://${elk_ip}:9200/${index}/_delete_by_query" -H 'Content-Type: application/json' -d "{\"query\": {\"match\": {\"@timestamp\" : \"${del_data}\"}}}"    # 把指定时间内的数据打上删除标签,注意这里不会删除数据
                                    curl -XPOST "http://${elk_ip}:9200/${index}/_forcemerge"           # 合并,把打上删除标签的数据删除
                             fi
                        done
                }
                del_index
          restartPolicy: OnFailure
  startingDeadlineSeconds: 10                          # 执行等待时间
  concurrencyPolicy: Allow                             # 支持并行
  successfulJobsHistoryLimit: 1                         # 保留历史1个
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值