通过goaccess分析出nginx的访问量保存到数据库
两个文件在同一个目录
[root@minion246 242]# ls
cut-nginx.sh insert-mysql.sh
执行sh insert-mysql.sh
1、访问goaccess将结果进行分行
[root@minion246 242]# cat cut-nginx.sh
#!/bin/bash
#string=$(cat $1)
string=$(curl -s -u user:password http://100.98.100.242:9999/index.html)
#对IFS变量 进行替换处理
OLD_IFS="$IFS" #保存当前shell默认的分割符,一会要恢复回去
IFS="," #将shell的分割符号改为,“”
array=($string) #分割符是“,”,"hello,shell,split,test" 赋值给array 就成了数组赋值
IFS="$OLD_IFS" #恢复shell默认分割符配置
for var in ${array[@]}
do
echo $var
done
2、对切分的文件处理获取需要的字段值并保存到数据库
[root@minion246 242]# more insert-mysql.sh
#!/bin/bash
id=$(date +%Y%m%d%H%M%S)
total_requests=$(sh cut-nginx.sh $1|grep -C 1 total_requests|tail -n 1)
valid_requests=$(sh cut-nginx.sh $1|grep -C 1 valid_requests|tail -n 1)
Unique_visitors=$(sh cut-nginx.sh $1|grep -C 1 unique_visitors|tail -n 1)
d=$(sh cut-nginx.sh $1|grep last-updated|awk -F \> '{print $2}')
echo "insert into nginx_table values("$id","$total_requests","$valid_requests","$Unique_visitors",'$d')"
mysql -uroot -h100.98.100.100 -P 3306 -ppwd -e "insert into nginx_info.nginx_table values($id,$total_requests,$valid_requests,$Unique_visitors,'$d')"
3、mysql表结构
CREATE TABLE `nginx_table` (
`id` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`total_requests` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
`valid_requests` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
`unique_visitors` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
`count_date` datetime(0) DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
4、数据结果显示

做一个决定,并不难,难的是付诸行动,并且坚持到底。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了