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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

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;

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

一行指令完成统计

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

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
3天前
|
存储 运维 监控
API明细日志及运维统计日志全面提升API可运维性
在数字化转型的大潮中,数据已成为企业最宝贵的资产之一。而数据服务API可快速为数据应用提供数据接口。面对越来越多的API以及越来越多的应用调用,如何快速查看API的服务情况、异常情况及影响范围,以及查看API的调用详情,进行API的性能优化、错误排查变得越来越重要,本文将介绍如何配置和开通API运维统计及明细日志,以及如何查看日志进行介绍。
|
1月前
|
Shell
一个用于添加/删除定时任务的shell脚本
一个用于添加/删除定时任务的shell脚本
75 1
|
17天前
|
Shell Linux 测试技术
6种方法打造出色的Shell脚本
6种方法打造出色的Shell脚本
40 2
6种方法打造出色的Shell脚本
|
3天前
|
XML JSON 监控
Shell脚本要点和难点以及具体应用和优缺点介绍
Shell脚本在系统管理和自动化任务中扮演着重要角色。尽管存在调试困难、可读性差等问题,但其简洁高效、易于学习和强大的功能使其在许多场景中不可或缺。通过掌握Shell脚本的基本语法、常用命令和函数,并了解其优缺点,开发者可以编写出高效的脚本来完成各种任务,提高工作效率。希望本文能为您在Shell脚本编写和应用中提供有价值的参考和指导。
13 1
|
8天前
|
Ubuntu Shell 开发工具
ubuntu/debian shell 脚本自动配置 gitea git 仓库
这是一个自动配置 Gitea Git 仓库的 Shell 脚本,支持 Ubuntu 20+ 和 Debian 12+ 系统。脚本会创建必要的目录、下载并安装 Gitea,创建 Gitea 用户和服务,确保 Gitea 在系统启动时自动运行。用户可以选择从官方或小绿叶技术博客下载安装包。
22 2
|
22天前
|
监控 网络协议 Shell
ip和ip网段攻击拦截系统-绿叶结界防火墙系统shell脚本
这是一个名为“小绿叶技术博客扫段攻击拦截系统”的Bash脚本,用于监控和拦截TCP攻击。通过抓取网络数据包监控可疑IP,并利用iptables和firewalld防火墙规则对这些IP进行拦截。同时,该系统能够查询数据库中的白名单,确保合法IP不受影响。此外,它还具备日志记录功能,以便于后续分析和审计。
43 6
|
18天前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
1月前
|
监控 Unix Shell
shell脚本编程学习
【10月更文挑战第1天】shell脚本编程
65 12
|
1月前
|
存储 运维 监控
自动化运维:使用Shell脚本简化日常任务
【9月更文挑战第35天】在IT运维的日常工作中,重复性的任务往往消耗大量的时间。本文将介绍如何通过编写简单的Shell脚本来自动化这些日常任务,从而提升效率。我们将一起探索Shell脚本的基础语法,并通过实际案例展示如何应用这些知识来创建有用的自动化工具。无论你是新手还是有一定经验的运维人员,这篇文章都会为你提供新的视角和技巧,让你的工作更加轻松。
49 2
|
2月前
|
Shell
shell脚本变量 $name ${name}啥区别
shell脚本变量 $name ${name}啥区别