【docker】docker 运行日志清理脚本,保留ELK最新30天日志

本文介绍了一个用于定期清除ELK集群中超过30天日志的Shell脚本,并将其封装进Docker容器中实现自动化管理。通过定时任务,脚本能够查找并删除指定日期前的所有日志,确保系统资源得到有效利用。文章还提供了Dockerfile示例,展示了如何配置用户权限及执行脚本。

# cat clean_log.sh

##################################################################

#!/bin/sh

#删除ELK30天前的日志

while true

do

  DATE=`date -d "30 days ago" +%Y.%m.%d`

  Xs=`curl -s -X GET http://xx.xx.xx.xx:9200/_cat/indices?v| grep $DATE | awk -F '[ ]+' '{print $3}'`

  for X in ${Xs[@]}

  do

    curl -s -X DELETE  "http://xx.xx.xx.xx:9200/$X"

  done

  sleep 24h

done

##################################################################

 

 

# cat Dockerfile

######################################################

FROM centos:centos7.5.1804

COPY clean_log.sh  /

RUN groupadd -g 2020 test && \

    useradd -u 2020 -g test test && \

    chown test:test /clean_log.sh

USER test

CMD ["sh","/clean_log.sh"]

######################################################

 

 

 

 

参考

 

Shell脚本中让进程休眠的方法

https://www.jb51.net/article/57198.htm

 

ELK定时删除30天前日志

https://blog.youkuaiyun.com/weixin_34357928/article/details/89617286

 

Docker为什么刚运行就退出了

http://viabugs.com/2017/01/12/2017/docker-just-run-away

 

Docker容器一起动就退出的解决方案

https://blog.51cto.com/7603402/2304133

 

Gracefully Stopping Docker Containers

http://coinfaces.me/posts/gracefully-stop-docker-init-bash-script

通常,日志被分散的储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。开源实时日志分析ELK平台能够完美的解决日志收集日志检索、分析的问题,ELK就是指ElasticSearch、Logstash和Kiabana三个开源工具。 因为ELK是可以跨平台部署,因此非常适用于多平台部署的应用。 二 环境准备 1. 安装JDK1.8环境 2. 下载ELK软件包 logstash: https://artifacts.elastic.co/downloads/logstash/logstash-5.5.0.zip elasticsearch:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.0.zip kibana: https://artifacts.elastic.co/downloads/kibana/kibana-5.5.0-windows-x86.zip 分别解压下载的软件,elasticsearch,logstash,kibana 可以放在一个统一文件夹下 三 部署 1.配置logstash 在logstash文件夹的下bin目录创建配置文件logstash.conf ,内容如下: input { # 以文件作为来源 file { # 日志文件路径 path => "F:\test\dp.log" } } filter { #定义数据的格式,正则解析日志(根据实际需要对日志日志过滤、收集) grok { match => { "message" => "%{IPV4:clientIP}|%{GREEDYDATA:request}|%{NUMBER:duration}"} } #根据需要对数据的类型转换 mutate { convert => { "duration" => "integer" }} } # 定义输出 output { elasticsearch { hosts => ["localhost:9200"] #Elasticsearch 默认端口 } }   在bin目录下创建run.bat,写入一下脚本: logstash.bat -f logstash.conf 执行run.bat启动logstash。 2. 配置Elasticsearch elasticsearch.bat即可启动。 启动后浏览器访问 127.0.0.1:9200 ,出现以下的json表示成功。 3.配置kibana Kibana启动时从文件kibana.yml读取属性。默认设置配置Kibana运行localhost:5601。要更改主机或端口号,或者连接到在其他机器上运行的Elasticsearch,需要更新kibana.yml文件。 kibana.bat启动Kibana。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值