logstash每天往es建好索引,按天生成,就目前的需求,需要清理不需要的数据,以保证最新日志的速度展示,哈哈,瞎搞了这个脚本,路过的大神批评。

  1. #!/usr/bin/env python
  2. # coding:utf8
  3. #author: shantuwqk@163.com
  4. import sys,datetime
  5. import os,time,commands
  6. HOST = '192.168.35.125'
  7. PORT = '9200'
  8. #排除不需要删除的索引列表
  9. NotDEL = ['g1_sms_collect']
  10. def Del_Indices(last4):
  11. TMP_LIST = []
  12. DEL_DAY_LIST = []
  13. file_info = '/tmp/es_indices_list.txt'
  14. CURLCMD = 'curl http://%s:%s/_cat/indices?v > %s'%(HOST,PORT,file_info)
  15. CURLINDEX_INFO = "cat /tmp/es_indices_list.txt | grep -v 'health status index'|egrep '*-%s'|awk '{print $3}'"%last4
  16. #DEL_DAY_INFO = "%s|awk '{print $3}'"%CURLINDEX_INFO
  17. s,v = commands.getstatusoutput(CURLCMD)
  18. if s == 0:
  19. with open(file_info,'r') as f:
  20. st,vi = commands.getstatusoutput(CURLINDEX_INFO)
  21. TMP_LIST.append(vi)
  22. #DEL_DAY_LIST.append(vi)
  23. else:
  24. print "\033[31;1m curl cmd execute faild\033[0m"
  25. # print DEL_DAY_LIST
  26. for i in TMP_LIST[0].split('\n'):
  27. DEL_DAY_LIST.append(i)
  28. #sd,vd = commands.getstatusoutput('curl -XDELETE http://%s:%s/%s'%(HOST,PORT,i))
  29. #print sd,vd,
  30. print DEL_DAY_LIST
  31. try:
  32. for t in NotDEL:
  33. DEL_DAY_LIST.remove("%s-%s"%(t,last4))
  34. except Exception:
  35. pass
  36. for index in DEL_DAY_LIST:
  37. sd,vd = commands.getstatusoutput('curl -XDELETE http://%s:%s/%s'%(HOST,PORT,index))
  38. if __name__ == '__main__':
  39. last4day = (datetime.date.today() - datetime.timedelta(days=3)).strftime('%Y.%m.%d')
  40. #print last4day
  41. Del_Indices(last4day)

最近由于es shard 老出问题, 在网上看有优化的功能,所以又扩展了以下脚本:做日常定时任务,主要保含清理和优化索引功能

  1. #!/usr/bin/env python
  2. # coding:utf8
  3. #author:shantuwqk@163.com
  4.  
  5. import sys,datetime
  6. import os,time,commands
  7. import sys,os
  8.  
  9. HOST = 'localhost'
  10. PORT = '9200'
  11. #ES_ROOT = os.path.dirname(os.path.dirname(__file__))
  12. ES_ROOT = '/'.join(os.getcwd().split('/')[:-1])
  13. ES_BIN = ES_ROOT + '/bin'
  14. ES_INDICES = ES_ROOT + '/data/elasticsearch/nodes/0/indices'
  15. ES_OPTIMIZE = "_optimize"
  16. ES_DEL_VAL = "_optimize?only_expunge_deletes=true"
  17. print ES_ROOT
  18. print ES_BIN
  19. print ES_INDICES
  20.  
  21. def Indiceslist(date):
  22. indiceslist = []
  23. s,v = commands.getstatusoutput("ls %s -l| awk '{print $9}'|egrep \"*-%s\""%(ES_INDICES,date))
  24. #print "#########indices",s,v
  25. if s == 0:
  26. for i in v.split('\n'):
  27. indiceslist.append(i)
  28. return indiceslist
  29. #print indiceslist
  30.  
  31. def Del_Indices(date):
  32. NotDEL = ['g1_sms_collect']
  33. DEL_DAY_LIST = []
  34. print date,
  35. print Indiceslist(date)
  36. for i in Indiceslist(date):
  37. print i,
  38. DEL_DAY_LIST.append(i)
  39. try:
  40. for t in NotDEL:
  41. DEL_DAY_LIST.remove("%s-%s"%(t,date))
  42. except Exception:
  43. pass
  44. print DEL_DAY_LIST
  45. for index in DEL_DAY_LIST:
  46. sd,vd = commands.getstatusoutput('curl -XDELETE http://%s:%s/%s'%(HOST,PORT,index))
  47. if sd == 0:
  48. print "DEL indices Sucess !!"
  49. else:
  50. print "DEL indices Failed !!"
  51. ds,dv = commands.getstatusoutput('curl -XPOST http://%s:%s/%s/%s'%(HOST,PORT,index,ES_DEL_VAL))
  52. if ds == 0:
  53. print "Cel indices Sucess !!"
  54. else:
  55. print "Cel indices Failed !!"
  56.  
  57. def es_optimize(date):
  58. #print Indiceslist(date)
  59. for i in Indiceslist(date):
  60. print "curl -XPOST \"http://%s:%s/%s/%s\""%(HOST,PORT,i,ES_OPTIMIZE)
  61. s,v = commands.getstatusoutput("curl -XPOST \"http://%s:%s/%s/%s\""%(HOST,PORT,i,ES_OPTIMIZE))
  62. print s,v,
  63. if s == 0:
  64. print "\033[32;1mES Optimize Success !!!\033[0m"
  65. else:
  66. print "\033[31;1m Es Optimze Failed!!!\033[0m"
  67.  
  68. def handle_cluster_status():
  69. clustet_status = "curl -XGET \'http://localhost:9200/_cluster/health?pretty=true\'"
  70.  
  71. def help_prompt():
  72. print """
  73. This program prints files to the standard output.
  74. Options include:
  75. --version : Prints the version number
  76. --help : Helpful tips
  77. --task : To operate on missions [delindices|optimze]
  78. sample : python es_manage.py --task delindices
  79. : python es_manage.py --task optimze
  80. """
  81.  
  82. def error_prompt():
  83. print '\033[31;1mUnknown option.Please refer to the help...\033[0m'
  84. print "==============================================================="
  85. help_prompt()
  86. print "---------------------------------------------------------------"
  87. sys.exit(1)
  88.  
  89. if __name__ == '__main__':
  90.  
  91. if len(sys.argv) == 1:
  92. print "\033[31;1m No action specified.\033[0m"
  93. help_prompt()
  94. sys.exit(1)
  95. if len(sys.argv) == 2 and sys.argv[1].startswith('--'):
  96. if sys.argv[1][2:] == 'version':
  97. print 'Version 1.0'
  98. sys.exit(1)
  99. elif sys.argv[1][2:] == 'help':
  100. help_prompt()
  101. if len(sys.argv) == 3 and sys.argv[1][2:] == 'task' and sys.argv[2] == "delindices":
  102. DelDay = (datetime.date.today() - datetime.timedelta(days=3)).strftime('%Y.%m.%d')
  103. Del_Indices(DelDay)
  104. elif len(sys.argv) == 3 and sys.argv[1][2:] == 'task' and sys.argv[2] == "optimze":
  105. yesterday = (datetime.date.today() - datetime.timedelta(days=1)).strftime('%Y.%m.%d')
  106. today = (datetime.date.today() - datetime.timedelta(days=0)).strftime('%Y.%m.%d')
  107. print es_optimize(yesterday)
  108. es_optimize(today)
  109. else:
  110. error_prompt()
  111. exit(1)

kle 日志收集系统维护之清理索引及索引优化脚本的更多相关文章

  1. 用fabric部署维护kle日志收集系统

    最近搞了一个logstash kafka elasticsearch kibana 整合部署的日志收集系统.部署参考lagstash + elasticsearch + kibana 3 + kafk ...

  2. Docker搭建EFK日志收集系统,并自定义es索引名

    EFK架构图 一.EFK简介 EFK不是一个软件,而是一套解决方案,并且都是开源软件,之间互相配合使用,完美衔接,高效的满足了很多场合的应用,是目前主流的一种日志系统. EFK是三个开源软件的缩写,分 ...

  3. 基于Flume的美团日志收集系统 架构和设计 改进和优化

    3种解决办法 https://tech.meituan.com/mt-log-system-arch.html 基于Flume的美团日志收集系统(一)架构和设计 - https://tech.meit ...

  4. Docker日志收集最佳实践

    传统日志处理 说到日志,我们以前处理日志的方式如下: · 日志写到本机磁盘上 · 通常仅用于排查线上问题,很少用于数据分析 ·需要时登录到机器上,用grep.awk等工具分析 那么,这种方式有什么缺点 ...

  5. K8S学习笔记之k8s日志收集实战

    0x00 简介 本文主要介绍在k8s中收集应用的日志方案,应用运行中日志,一般情况下都需要收集存储到一个集中的日志管理系统中,可以方便对日志进行分析统计,监控,甚至用于机器学习,智能分析应用系统问题, ...

  6. 用ELK搭建简单的日志收集分析系统【转】

    缘起 在微服务开发过程中,一般都会利用多台服务器做分布式部署,如何能够把分散在各个服务器中的日志归集起来做分析处理,是一个微服务服务需要考虑的一个因素. 搭建一个日志系统 搭建一个日志系统需要考虑一下 ...

  7. 日志收集系统搭建-BELK

    前言 日志是我们分析系统运行情况.问题定位.优化分析等主要数据源头.目前,主流的业务系统都采用了分布式.微服务的形式.如果想要查看日志,就需要从不同的节点上去查看,而且对于整个业务链路也非常不清晰.因 ...

  8. ELK+kafka构建日志收集系统

    ELK+kafka构建日志收集系统   原文  http://lx.wxqrcode.com/index.php/post/101.html   背景: 最近线上上了ELK,但是只用了一台Redis在 ...

  9. [转载] 一共81个,开源大数据处理工具汇总(下),包括日志收集系统/集群管理/RPC等

    原文: http://www.36dsj.com/archives/25042 接上一部分:一共81个,开源大数据处理工具汇总(上),第二部分主要收集整理的内容主要有日志收集系统.消息系统.分布式服务 ...

随机推荐

  1. 团队Alpha冲刺(九)

    目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:凯琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示 ...

  2. lintcode-198-排列序号II

    198-排列序号II 给出一个可能包含重复数字的排列,求这些数字的所有排列按字典序排序后该排列在其中的编号.编号从1开始. 样例 给出排列[1, 4, 2, 2],其编号为3. 思路 和 lintco ...

  3. 在.net项目中使用Consul

    1.创建.net core web程序并运行 2.在Consul中注册该服务 Consul支持两种服务注册的方式,一种是通过Consul的服务注册HTTP API,由服务自身在启动后调用API注册自己 ...

  4. shader language学习(1)——shader language简介背景

    shader language,称为着色语言,shade在英语是阴影.颜色深浅的意思.shader language基于物体本身属性和光照条件,计算美格橡塑的颜色值. 实际上这种解释具有明显的时代局限 ...

  5. CentOS6.5 重启网络报错:Bringing up interface eth0: Error: Connection activation failed: Device not managed by NetworkManager or unavailable

    CentOS6.5 重启网络报错: Bringing up interface eth0: Error: Connection activation failed: Device not manage ...

  6. IIS部署时未能加载程序集"System.Web.Http.WebHost"解决方法

    问题如下 服务器没有安装MVC,下载以下dll覆盖到bin目录下,即可免安装运行程序. 下载地址:https://pan.baidu.com/s/1mhCo5mS

  7. HttpHandler与HttpModule的理解与应用

    问题1:什么是HttpHandler? 问题2:什么是HttpModule? 问题3:什么时候应该使用HttpHandler什么时候使用HttpModule? 答案1:HttpHandler,Http ...

  8. 【前端】JS截取字符串常用方法详细整理

    函数:split() 功能:使用一个指定的分隔符把一个字符串分割存储到数组 例子: str=”jpg|bmp|gif|ico|png”; arr=theString.split(”|”); //arr ...

  9. FTP安装

    FTP 一.安装,挂第3张光驱 1.挂盘 2.进入cdrom中,路径:cd /mnt/cdrom 3.进入RPMS中,路径:cd /mnt/cdrom/RedHat/RPMS 4.查看版本为:vsft ...

  10. Python中int()函数的用法浅析

      int()是Python的一个内部函数 Python系统帮助里面是这么说的 >>> help(int)  Help on class int in module __builti ...