当前位置:网站首页>Shell 脚本实现应用服务日志入库 Mysql
Shell 脚本实现应用服务日志入库 Mysql
2022-07-04 21:58:00 【Wu_Candy】
今天给大家分享一个 shell 脚本工具,通过 shell 脚本与 mysql 的结合,将某个具体服务的错误输出日志入库到指定的 mysql 表中,以便于进行错误问题的定位与分析。
日常工作中,经常需要和 linux 系统打交道,例如:服务部署、日志和服务状态查看等,而 shell 脚本是和 linux 交互的一种常见方法。以下代码实例为在 shell 脚本中嵌入 mysql 配置信息将错误日志信息落入到数据库中。
shell脚本如下:
#!/usr/bin/env bash
hostName="l-beta.io"
dbPort=3306
dbUser="beta"
dbPassword="123456"
dbName="test_log"
tableName="beta_error_log_record"
env="test1"
base="/home/q/www"
#进入死循环
while [[ 1 ]]; do
#循环去遍历base目录下的文件夹,-vE 后面两个是要排除掉的项
for name in `ls $base | grep -vE "default|genesis"`;
do
#echo $base/$name
#判断是否是目录
if [[ -d $base/$name ]]; then
#定义当前时间的前一分钟,用于对日志内容进行过滤匹配使用
before=`date -d "-1 minute" "+%Y-%m-%d %H:%M:"`
# echo "Watching log $name in $before"
#过滤获取对应目录下的catalina.out文件中的上一分钟的Exception and Error日志
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' `
#如果result为零就跳过本次循环
if [[ -z "$result" ]]; then
continue;
fi
echo "-------------------------->"
#拼接insert sql 语句
insert_sql="insert into $tableName (environment,project_name,content) values('$env','$name','\n\nException:\n\n$result')"
echo $insert_sql > tmp.sql
echo "***********start*************"
echo $insert_sql
#开始执行sql语句
mysql -h$hostName -P$dbPort -u$dbUser -p$dbPassword $dbName -e "source tmp.sql"
echo "************end************"
fi
done
#输入休眠60s
echo -e "sleep 60 seconds\n"
sleep 60s
done
以上 shell 脚本中关键信息都标有对应的注释,如需实操,可将 mysql 对应的配置信息及监控的日志服务路径进行更改和替换为目标信息即可。
end
边栏推荐
- Why should garment enterprises talk about informatization?
- QT - plot other problems
- 傳智教育|如何轉行互聯網高薪崗比特之一的軟件測試?(附軟件測試學習路線圖)
- How can the advertising system of large factories be upgraded without the presence of large models
- i.MX6ULL驱动开发 | 24 - 基于platform平台驱动模型点亮LED
- MongoDB中的索引操作总结
- PostgreSQL基本结构——表
- HDU - 1078 fatmouse and cheese (memory search DP)
- MySQL存储数据加密
- 大厂的广告系统升级,怎能少了大模型的身影
猜你喜欢
Machine learning notes mutual information
使用 BlocConsumer 同时构建响应式组件和监听状态
Energy momentum: how to achieve carbon neutralization in the power industry?
Xiangjiang Kunpeng joined the shengteng Wanli partnership program and continued to write a new chapter of cooperation with Huawei
能源势动:电力行业的碳中和该如何实现?
30余家机构联合发起数字藏品行业倡议,未来会如何前进?
KDD2022 | 什么特征进行交互才是有效的?
Scala download and configuration
Common open source codeless testing tools
Visual task scheduling & drag and drop | scalph data integration based on Apache seatunnel
随机推荐
Kdd2022 | what features are effective for interaction?
File read write
传智教育|如何转行互联网高薪岗位之一的软件测试?(附软件测试学习路线图)
Cadre WebGIS - kalrry
What is the stock account opening process? Is it safe to use flush mobile stock trading software?
30余家机构联合发起数字藏品行业倡议,未来会如何前进?
Éducation à la transmission du savoir | Comment passer à un test logiciel pour l'un des postes les mieux rémunérés sur Internet? (joindre la Feuille de route pour l'apprentissage des tests logiciels)
How to transfer to software testing, one of the high paying jobs in the Internet? (software testing learning roadmap attached)
服装企业为什么要谈信息化?
常用的开源无代码测试工具
VS2019 C# release下断点调试
力扣98:验证二叉搜索树
抖音实战~评论数量同步更新
1807. 替换字符串中的括号内容
Energy momentum: how to achieve carbon neutralization in the power industry?
B站大量虚拟主播被集体强制退款:收入蒸发,还倒欠B站;乔布斯被追授美国总统自由勋章;Grafana 9 发布|极客头条
PostgreSQL JOIN实践及原理
Redis has three methods for checking big keys, which are necessary for optimization
Solve the problem of data disorder caused by slow asynchronous interface
如何实现轻松管理1500万员工?