k8s日志自动收集脚本

简介: k8s日志自动收集脚本

     k8s自带的日志方案一般需要集成专业的日志ELK才能快速检索出错误信息,为了编辑繁杂的集成操作,这里简单写了一个脚本把各个容器的日志收集存储到本地。便于定位发现程序错误。


一、 脚本功能

每天十一点定时执行脚本,批量获取工作空间中的所有pod当天的日志信息,存储到本地。同时删除七天前的日志。


最终形成一个日志工作空间的文件夹,文件夹中又各个pod的名字,每个pod中存放着最近七天的日志运行信息。便于快速查找k8s容器报错信息,快速定位错误。


二、 脚本流程

1. 获取工作空间springcloud的所有容器名称


2. 循环容器名称,滤除首行,截取得到准确的容器名称,和应用名称


3. 获取当前日期和七天前的日期


4. 存放日志的文件夹是否存在,如果不存在则创建


5. 把容器的日志导出成文件,文件名用应用名称加上当前日期


6. 删除七天前的日志信息


三、 定时任务

linux系统中可以把定时任务写在crontab中,通过crontab自定义cron表达式执行我们的脚本

vi /etc/crontab


20190606163623311.png

然后在这里添加进来我们的定时任务,每天晚上11点执行

0 0 23 * * ? root sh /home/springboot/log/log.sh

然后开启定时任务

1. systemctl start crond
2. systemctl restart crond


四、 脚本详情

#!bin/bash
#auth eric
#2020-12-02
#注意这里要声明环境变量,不然不识别kubectl命令
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
pod=$(kubectl get pod -n springcloud |awk '{print $1}');
for i in $pod;
do
  if [ $i = 'NAME' ]
  then
    continue
  fi
podname=$i;
appname=`echo $i|awk -F'-' '{print $2}'`;
timenow=$(date "+%Y%m%d");
timeago=$(date -d"7 day ago" +%Y%m%d);
dir=/home/springcloud/log/$appname
if [ ! -d "$dir" ];then
  mkdir $dir
fi
#删除7天前的日志
if [ -f "$dir/$appname$timeago.txt" ];then
 rm -f $dir/$appname$timeago.txt;
fi
#导出今天的日志
kubectl logs --since=24h $podname -n springcloud >$dir/$appname$timenow.txt
done;


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
26天前
|
Linux Shell
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
78 1
|
3月前
|
存储
优秀开源日志平台GrayLog5.0一键安装脚本
优秀开源日志平台GrayLog5.0一键安装脚本
90 0
|
4月前
|
Kubernetes Shell Linux
linux|shell脚本|有趣的知识---格式化输出日志和脚本调试方法以及kubernetes集群核心服务重启和集群证书备份脚本
linux|shell脚本|有趣的知识---格式化输出日志和脚本调试方法以及kubernetes集群核心服务重启和集群证书备份脚本
63 0
|
1月前
|
Prometheus 监控 Kubernetes
Kubernetes 集群监控与日志管理实践
【2月更文挑战第29天】 在微服务架构日益普及的当下,Kubernetes 已成为容器编排的事实标准。然而,随着集群规模的扩大和业务复杂度的提升,有效的监控和日志管理变得至关重要。本文将探讨构建高效 Kubernetes 集群监控系统的策略,以及实施日志聚合和分析的最佳实践。通过引入如 Prometheus 和 Fluentd 等开源工具,我们旨在为运维专家提供一套完整的解决方案,以保障系统的稳定性和可靠性。
|
1月前
|
Prometheus 监控 Kubernetes
Kubernetes 集群的监控与日志管理实践
【2月更文挑战第31天】 在微服务架构日益普及的今天,容器编排工具如Kubernetes已成为部署、管理和扩展容器化应用的关键平台。然而,随着集群规模的扩大和业务复杂性的增加,如何有效监控集群状态、及时响应系统异常,以及管理海量日志信息成为了运维人员面临的重要挑战。本文将深入探讨 Kubernetes 集群监控的最佳实践和日志管理的高效策略,旨在为运维团队提供一套系统的解决思路和操作指南。
27 0
|
1月前
|
Kubernetes Shell Docker
容器服务ACK常见问题之容器服务ACK kubectl命令写到shell脚本失败如何解决
容器服务ACK(阿里云容器服务 Kubernetes 版)是阿里云提供的一种托管式Kubernetes服务,帮助用户轻松使用Kubernetes进行应用部署、管理和扩展。本汇总收集了容器服务ACK使用中的常见问题及答案,包括集群管理、应用部署、服务访问、网络配置、存储使用、安全保障等方面,旨在帮助用户快速解决使用过程中遇到的难题,提升容器管理和运维效率。
|
2月前
|
Java Shell Perl
使用shell脚本给日志文件瘦身
使用shell脚本给日志文件瘦身
|
3月前
|
Linux Shell
开源日志平台GrayLog5.1.10 CentOS7一键安装脚本
开源日志平台GrayLog5.1.10 CentOS7一键安装脚本
101 0
|
3月前
|
Linux
开源日志平台GrayLog5.1.7 CentOS7一键安装脚本
开源日志平台GrayLog5.1.7 CentOS7一键安装脚本
83 1
|
3月前
开源日志平台GrayLog5.1.2一键安装脚本
开源日志平台GrayLog5.1.2一键安装脚本
61 0