ELK+grafana 做分布式日志收集,grafana 功能比较完善,体验比较好,主要是给非技术人员使用容易接受。
在做 nginx 日志分析时,除了常规的曲线图、饼图以外,有类似这样的场景:
统计响应最慢的 TOP20 请求的详细数据,给开发人员用,目前实现的方法和效果:
用 elasticsearch 做数据源的时候,查询只能用一个字段,然后做一些统计,如果要实现统计完 max、count 等的同时去取数据的其它字段,就没法实现了,找了很多资料无果。。
目前这个表格的 url.keyword 字段,收集 nginx 日志存入到 elasticsearch 时,做了冗余拼接("url":"[$request_method]$scheme://$host$request_uri"),其中的 request_method,scheme,host,request_uri 在单条数据里都是存在的,没法查询才这么处理的。
这样处理会冗余重复很多数据,而且使用起来特别不方便,开发人员在看这种数据时,很多字段要展示出来。grafana+elasticsearch,能否实现类似 grafana+关系型数据 /时序数据库那种多字段或复杂的统计效果呢,还是我理解使用的姿势不对,或者把 elasticsearch 换成类似 InfluxDB 的时序数据库?