懒人Shell脚本》之四——日志条数动态实时统计

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 本文是《懒人Shell脚本》之四——日志条数动态实时统计详解

1、需求点

1)输入:日志实时更新:当前日志表以秒级更新日志,每秒有多条日志更新。格式如下:

2016-08-11 11:02:09
2016-08-11 11:02:09
2016-08-11 11:02:09
2016-08-11 11:02:09
2016-08-11 11:02:10
2016-08-11 11:02:10
2016-08-11 11:02:10
2016-08-11 11:02:10
2016-08-11 11:02:10
2016-08-11 11:02:10
2016-08-11 11:02:10
2016-08-11 11:02:10
2016-08-11 11:02:11
2016-08-11 11:02:11
2016-08-11 11:02:11

2)实时输出:每个时刻值对应的2016-08-11 11:06:56 47

2016-08-11 11:06:57 18 
2016-08-11 11:06:58 44 
2016-08-11 11:06:59 22 
2016-08-11 11:07:00 42 
2016-08-11 11:07:01 44 
2016-08-11 11:07:02 12 
2016-08-11 11:07:03 37 
2016-08-11 11:07:04 18 
2016-08-11 11:07:05 18 
2016-08-11 11:07:06 38 
2016-08-11 11:07:07 48 
2016-08-11 11:07:08 38 
2016-08-11 11:07:09 21 
2016-08-11 11:07:10 31 
2016-08-11 11:07:11 18 
2016-08-11 11:07:12 20 
2016-08-11 11:07:13 3 
2016-08-11 11:07:14 43

要求:一行脚本完成统计。

2、脚本实现原理

1)循环产生时间值,并写入文件。

时刻值的产生需要注意时间和时间戳的#时间形式打印

[root@laoyang zq_testing]# tcurtime=date "+%F %T"
[root@laoyang zq_testing]# echo $tcurtime
2016-08-11 11:15:06

2)时间转化为时间戳

[root@laoyang zq_testing]# scurtime=date -d "$tcurtime" +%s
[root@laoyang zq_testing]# echo $scurtime
1470885306

3)时间戳转化为时间

[root@laoyang zq_testing]# tcurtime=date -d @$scurtime "+%F %T"
[root@laoyang zq_testing]# echo $tcurtime
2016-08-11 11:15:06

4)循环环读取文件,使用awk的词频统计功能完成频率统计。

3、脚本实现

#构造时间脚本
[root@laoyang zq_testing]# cat build_time.sh
#!/bin/sh
#generate random values
function random()
{
  min=$1;
  max=$2
  randomval=$((RANDOM%$max+$min))
  echo $randomval
}

#generate time values
function build_conn_time()
{
  rm -rf ./output.log
  touch ./output.log
  cat /dev/null > ./output.log

  tflag=0
  nextsecond=0
  while :
  do
  if [[ $tflag -eq 0 ]];then
  tcurtime=`date "+%F %T"`
  echo "xtcurtime="$tcurtime
  tflag=1
  else
  #时间戳转化为时间
  tcurtime=`date -d @$nextsecond "+%F %T"`
  echo "next tcurtime="$tcurtime
  fi

  #时间格式化 为时间戳
  scurtime=`date -d "$tcurtime" +%s`

  #产生2-50之间的随机数
  cyccnt=$(random 2 50);
  if [[ -z $cyccnt ]]; then
  cyccnt=10
  fi
  echo "cyccnt="$cyccnt
  i=0
  while (( $i<$cyccnt))
  do
  echo $tcurtime >> output.log
  i=$(($i+1))
  done

  #更新下一秒 ,时间戳可以求和操作
  nextsecond=$(($scurtime+1))
  sleep 1
  done
}

build_conn_time;

一行指令完成统计

root@laoyang zq_testing]# while : ; do cat output.log | sort | awk '{ count[$0]++ }\
END { printf("%-14s %s\n","curtime","Count");\
for(ind in count)\
{ printf("%-14s %d\n",ind,count[ind]); } }' | sort ; sleep 1 ; done

作者:铭毅天下
转载请标明出处,原文地址:
http://blog.csdn.net/laoyang360/article/details/52188384

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
3月前
|
Shell
一个用于添加/删除定时任务的shell脚本
一个用于添加/删除定时任务的shell脚本
134 1
|
3月前
|
Java Shell
「sh脚步模版自取」测试线排查的三个脚本:启动、停止、重启、日志保存
「sh脚步模版自取」测试线排查的三个脚本:启动、停止、重启、日志保存
55 1
|
2月前
|
Shell Linux 测试技术
6种方法打造出色的Shell脚本
6种方法打造出色的Shell脚本
81 2
6种方法打造出色的Shell脚本
|
2月前
|
监控 数据挖掘 数据安全/隐私保护
Python脚本:自动化下载视频的日志记录
Python脚本:自动化下载视频的日志记录
|
2月前
|
XML JSON 监控
Shell脚本要点和难点以及具体应用和优缺点介绍
Shell脚本在系统管理和自动化任务中扮演着重要角色。尽管存在调试困难、可读性差等问题,但其简洁高效、易于学习和强大的功能使其在许多场景中不可或缺。通过掌握Shell脚本的基本语法、常用命令和函数,并了解其优缺点,开发者可以编写出高效的脚本来完成各种任务,提高工作效率。希望本文能为您在Shell脚本编写和应用中提供有价值的参考和指导。
98 1
|
2月前
|
Ubuntu Shell 开发工具
ubuntu/debian shell 脚本自动配置 gitea git 仓库
这是一个自动配置 Gitea Git 仓库的 Shell 脚本,支持 Ubuntu 20+ 和 Debian 12+ 系统。脚本会创建必要的目录、下载并安装 Gitea,创建 Gitea 用户和服务,确保 Gitea 在系统启动时自动运行。用户可以选择从官方或小绿叶技术博客下载安装包。
93 2
|
3月前
|
监控 网络协议 Shell
ip和ip网段攻击拦截系统-绿叶结界防火墙系统shell脚本
这是一个名为“小绿叶技术博客扫段攻击拦截系统”的Bash脚本,用于监控和拦截TCP攻击。通过抓取网络数据包监控可疑IP,并利用iptables和firewalld防火墙规则对这些IP进行拦截。同时,该系统能够查询数据库中的白名单,确保合法IP不受影响。此外,它还具备日志记录功能,以便于后续分析和审计。
71 6
|
2月前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
2月前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
739 31
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
1月前
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。