[转帖]Shell 脚本实现应用服务日志入库 Mysql

shell,脚本,实现,应用服务,日志,入库,mysql · 浏览次数 : 0

小编点评

**Shell 脚本工具用于将错误日志信息入库到 mysql 表中** ```shell # Set MySQL configuration parameters hostName="l-beta.io" dbPort=3306 dbUser="beta" dbPassword="123456" dbName="test_log" tableName="beta_error_log_record" # Enter a infinite loop to process files in the base directory while true; do # Loop through files in the base directory for name in `ls -v "$base"`; do # Determine if it's a directory if -d "$base/$name"; then # Define the previous minute's time before=`date -d "-\d{1,2} minute" "$base/$name/logs/catalina.out"` # Extract exception and error logs from the file result=`grep -C5 "^\d{1,2} Exception:\s*$result$" "$base/$name/logs/catalina.out" | grep -vE "DEBUG|skywalking|10.8.0.37:8800"` # Remove leading and trailing whitespace from the result result="$(sed -E 's/\\'/\\\"/g' "$result")" # Skip this loop if there is no result if -z "$result"; then continue fi # Insert the log entry into the database insert_sql = "insert into $tableName ($env, project_name, content) values('$env', '$name', '$result')" echo "$insert_sql" > tmp.sql echo "****************start*************" echo "$insert_sql" echo "****************end************" fi done # Sleep for 60 seconds before continuing sleep 60s done ``` **公众号信息** * **无量测试之道**公众号:关注大数据测试、功能测试,测试开发,API接口自动化、测试运维、UI自动化测试等领域。 * **Python编程学习资源**:免费送 Python 编程学习资源,包括 Python、Appium、Selenium、Unittest 等框架的学习资源。

正文

今天给大家分享一个 shell 脚本工具,通过 shell 脚本与 mysql 的结合,将某个具体服务的错误输出日志入库到指定的 mysql 表中,以便于进行错误问题的定位与分析。

日常工作中,经常需要和 linux 系统打交道,例如:服务部署、日志和服务状态查看等,而 shell 脚本是和 linux 交互的一种常见方法。以下代码实例为在 shell 脚本中嵌入 mysql 配置信息将错误日志信息落入到数据库中。

shell脚本如下:

  1. #!/usr/bin/env bash
  2. hostName="l-beta.io"
  3. dbPort=3306
  4. dbUser="beta"
  5. dbPassword="123456"
  6. dbName="test_log"
  7. tableName="beta_error_log_record"
  8. env="test1"
  9. base="/home/q/www"
  10. #进入死循环
  11. while [[ 1 ]]; do
  12.     #循环去遍历base目录下的文件夹,-vE 后面两个是要排除掉的项
  13.     for name in `ls $base | grep -vE "default|genesis"`;
  14.     do
  15.         #echo $base/$name
  16.         #判断是否是目录
  17.         if [[ -d $base/$name ]]; then
  18.            #定义当前时间的前一分钟,用于对日志内容进行过滤匹配使用
  19.            before=`date -d "-1 minute" "+%Y-%m-%d %H:%M:"`
  20.            # echo "Watching log $name in $before"
  21.            #过滤获取对应目录下的catalina.out文件中的上一分钟的Exception and Error日志
  22.            result=`grep -C5 "$before" $base/$name/logs/catalina.out | grep -vE "DEBUG|skywalking|10.8.0.37:8800" | grep -C5 -E "Exception|ERROR" | sed $'s/\'/\"/g' `
  23.            #如果result为零就跳过本次循环
  24.            if [[ -z "$result" ]]; then
  25.                 continue;
  26.            fi
  27.            echo "-------------------------->"
  28.            #拼接insert sql 语句
  29.            insert_sql="insert into $tableName (environment,project_name,content) values('$env','$name','\n\nException:\n\n$result')"
  30.            echo $insert_sql > tmp.sql
  31.            echo "***********start*************"
  32.            echo $insert_sql
  33.            #开始执行sql语句
  34.            mysql -h$hostName  -P$dbPort  -u$dbUser -p$dbPassword $dbName -e "source tmp.sql"
  35.            echo "************end************"
  36.         fi
  37.     done
  38.     #输入休眠60s
  39.     echo -e "sleep 60 seconds\n"
  40.     sleep 60s
  41. done

以上 shell 脚本中关键信息都标有对应的注释,如需实操,可将 mysql 对应的配置信息及监控的日志服务路径进行更改和替换为目标信息即可。

欢迎关注【无量测试之道】公众号,回复【领取资源】
Python编程学习资源干货、
Python+Appium框架APP的UI自动化、
Python+Selenium框架Web的UI自动化、
Python+Unittest框架API自动化、
资源和代码 免费送啦~
文章下方有公众号二维码,可直接微信扫一扫关注即可。

备注:我的个人公众号已正式开通,致力于测试技术的分享,包含:大数据测试、功能测试,测试开发,API接口自动化、测试运维、UI自动化测试等,微信搜索公众号:“无量测试之道”,或扫描下方二维码:

在这里插入图片描述
添加关注,让我们一起共同成长!  

文章知识点与官方知识档案匹配,可进一步学习相关知识
CS入门技能树Linux入门初识Linux32800 人正在系统学习中

与[转帖]Shell 脚本实现应用服务日志入库 Mysql相似的内容:

[转帖]Shell 脚本实现应用服务日志入库 Mysql

今天给大家分享一个 shell 脚本工具,通过 shell 脚本与 mysql 的结合,将某个具体服务的错误输出日志入库到指定的 mysql 表中,以便于进行错误问题的定位与分析。 日常工作中,经常需要和 linux 系统打交道,例如:服务部署、日志和服务状态查看等,而 shell 脚本是和 lin

[转帖]连shell的基本输出都不会,还写什么脚本?echo和printf命令总结

https://zhuanlan.zhihu.com/p/438957797 在 Linux 系统中使用 echo 命令和 printf 命令都可以实现信息的输出功能,下面我们分别看这两个命令的应用案例。 echo 1.使用 echo 命令创建一个脚本文件菜单功能描述:echo 命令主要用来显示字符

[转帖]shell脚本之awk命令——按列求平均值、最大值、最小值

文章目录 写在前面awk求平均值awk求最大值awk求最小值awk求极值、均值的实际应用 写在前面 awk命令求极值和均值需要熟悉该命令的基本用法,如果你不熟悉该命令,请先阅读shell脚本之awk命令——分隔符介绍一文。本篇博文带你熟悉求平均值、最大值、最小值的方法,并以实际的应用带你进一步掌握a

[转帖]shell编程之循环语句

目录 一、循环语句for循环for语句的结构嵌套循环 while语句的结构while语句应用示例 until语句的结构until语句示例 二、跳出循环continue跳出循环break跳出循环 三、常用循环脚本实例循环打印9*9乘法表数字累加脚本(1-100)常用转义字符购物shell 计算器正等腰

[转帖]shell脚本实现文本内容比较交互程序

背景介绍 脚本基于Comm命令进行功能封装,考虑到命令执行前需要对文本进行排序,并且在多文件需要比较内容时可能会导致多个文本混乱,因此使用Shell封装成了一个交互式程序,快速对文件内容进行判断和输出想要的内容内容结果。 脚本介绍 文件内容校验(是否一致内容)定制化输出文本(1.仅文本单独出现内容;

[转帖]Shell脚本数组(实现冒泡排序,直接选择排序,反转排序)

目录 数组数组定义方法数组包括的数据类型获取数组长度读取某下标赋值 数组遍历数组切片数组替换删除数组追加数组中的元素从函数返回数组加法传参运算乘法传参运算 数组排序算法冒泡排序直接选择排序反转排序 数组 数组中可以存放多个值(bash 只支持一维数组)数组元素的索引从0开始数组在括号内指定数组的值,

[转帖]通过Shell脚本自动监控JAVA进程中线程cpu使用率

https://gitee.com/jialy/auto-monitor-java-process/tree/master 本文主要介绍在 show-busy-java-threads.sh 脚本的功能基础上,通过 process-cpu-monitor.sh 脚本实现Linux平台上Java进程或

[转帖]shell脚本循环查询数据库实现数据输出到csv

https://blog.csdn.net/m0_46897923/article/details/125906115?spm=1001.2014.3001.5501 可以利用这个思路高点事情吧.. 一、shell脚本和数据文件 1.shell脚本 cat data.txt|while read l

[转帖]Shell脚本中利用expect实现非交互式

https://developer.aliyun.com/article/885723?spm=a2c6h.24874632.expert-profile.295.7c46cfe9h5DxWK 简介: expect非交互式 expect可以在脚本中完成一些交互式的操作,例如远程登录时要输入yes或者

[转帖]shell脚本使用expect自动化交互登录远程主机进行批量关机

前文 1.目标主机登录用户都为root,且密码一致 2.目标主机开放启动了SSH服务且22号端口可访问(防火墙未进行拦截) 软件介绍 expect Expect是一个用来实现自动和交互式任务进行通信的免费编程工具语言。由Don Libes在1990年开始编写。 结合Shell Script实现自动和