基于 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 轻多了

啦,如果你对日志感兴趣,也可以顺手看看这些相关的工具:

myselect 不算庞大,但胜在轻巧灵活,适合你平时调试或快速做统计用。如果你对 SQL 熟,又懒得折腾复杂环境,可以直接下来试试:myselect.zip