基于 SQL 的日志工具 myselect,最大的亮点就是把日志文件当数据库来。每一行日志就是一条记录,你直接写 SQL 语句查就行了,比起 awk 那些工具,用起来顺手多了。尤其是 Nginx 这种格式规整的访问日志,几条 SQL 就能搞定大部分统计需求。
日志的 SQL方式,比较适合你已经习惯 SQL 语法的人。不用写复杂的脚本,直接一句select count($1), $1 from accesstest.log group by $1 order by count($1) desc limit 10
,就能找出 IP 访问最多的 Top 10。是不是比写个 awk 还带管道的命令行清爽多了?
myselect 的几个常用模式也挺直观的:
$ myselect 'select ...'; // 对整个日志跑 SQL
$ myselect -s 'log line'; // 分割日志行
$ myselect -n 'log line' 'sql'; // 直接对一行用 SQL 解析
$ myselect -c 'sql'; // 看 SQL 计算过程
对于那种你只想随手看下某行的字段序号分布,用-s
选项就行。开发阶段排查日志,或者做轻量的任务,比上 ELK 轻多了。
啦,如果你对日志感兴趣,也可以顺手看看这些相关的工具:
- Log Parser 日志工具,Windows 上也好用
- ELK Stack 日志解析初步认识,适合做大数据量
- Nginx 日志可视化,做图表也挺方便
- LogExplore SQL 日志查看工具,SQL 控应该会喜欢
myselect 不算庞大,但胜在轻巧灵活,适合你平时调试或快速做统计用。如果你对 SQL 熟,又懒得折腾复杂环境,可以直接下来试试:myselect.zip
。