通过阿里云日志服务SDK更新logstore

6 篇文章 0 订阅
6 篇文章 0 订阅


由于公司后端业务使用的微服务,大小服务有上百个服务,每个服务使用对应的日志服务的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()

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值