当前位置:   article > 正文

通过阿里云日志服务SDK更新logstore_/logstores/dnscache-all/shards/lb

/logstores/dnscache-all/shards/lb


由于公司后端业务使用的微服务,大小服务有上百个服务,每个服务使用对应的日志服务的logstore,这么多的数量通过控制台鼠标点击,太繁琐,效率太低,调研了下阿里云日志服务的sdk,实现了此功能,可以通过该脚本更改日志服务的一个project 下的所有logstore.

安装阿里云的日志服务的SDK

  • pip install aliyun-log-python-sdk

脚本代码

  • 日志天数:
    会更该排除这个列表里logsystem_logstore_list 的所有的logstore
  • 索引
    对未建立content的logstore,先删除该logstore 的全文索引,在对content 字段创建索引
#encoding: utf-8
from aliyun.log import *
import  sys

def get_log_index(day):
    logIndex = {'index_mode': 'v2',
                'keys': {'content':
                             {'alias': '', 'caseSensitive': False, 'chn': False, 'doc_value': True,
                              'token': [',', ' ', "'", '"', ';', '=', '(', ')', '[', ']', '{', '}', '?', '@', '&', '<',
                                        '>', '/', ':', '\n', '\t', '\r'], 'type': 'text'}
                         },
                'log_reduce': False,
                'max_text_len': 2048,
                'storage': 'pg',
                'ttl': day,
                'lastModifyTime': 1578536382
                }
    return  logIndex

def update_log(logstore):
    if "order" in logstore:
        day = 60
    elif "lover" in logstore:
        day = 15
    elif "kong" in  logstore:
        day =3
    elif "dns" in  logstore:
        day =1
    else:
        day = 7
    client.update_logstore(project, logstore, ttl=day)
    print("%s,日志保存天数已更新%d" % (logstore, day))
    return  day

def update_index(logstore,day):
    res = client.get_index_config(project, logstore)
    try:
        get_index = res.body["keys"]
        if "content" not in get_index.keys() and logstore not in logsystem_logstore_list:
            request = IndexConfig()
            request.from_json(get_log_index(day))
            client.delete_index(project, logstore)
            client.create_index(project, logstore, request)
            print("%s,索引已删除重新创建" % logstore)
    except Exception as  e:
        print(e)
        
def  main():
    print("start ...")
    for logstore in logstore_list:
        if logstore in  logsystem_logstore_list:
            print("log:",logstore)
            continue
        else:
             print(logstore)
             day = update_log(logstore)
             update_index(logstore,day)
    print("finish  ...")


if __name__ == '__main__':
    logsystem_logstore_list = ["k8s-event","internal-alert-history"]
    endpoint = 'https://cn-hangzhou.log.aliyuncs.com'  # 选择与上面步骤创建Project所属区域匹配的Endpoint
    access_key_id = '********************************'  # 使用您的阿里云访问密钥AccessKeyId
    access_key = '**********************************'  # 使用您的阿里云访问密钥AccessKeySecret
    #project =  "k8s-log-cc0a555aae9254132b45d06792c3eaa99"  #test 集群
    project = sys.argv[1]
    client = LogClient(endpoint, access_key_id, access_key)
    req1 = ListLogstoresRequest(project)
    res1 = client.list_logstores(req1)
    logstore_list = res1.logstores
    main()
  • 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
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72

最后把该脚本加入定时任务,再也不用手动修改了

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/297765?site
推荐阅读
相关标签
  

闽ICP备14008679号