关于loki:受Prometheus启发的开源日志工具Loki

前言提及日志收集搜寻框架,最常看到的解决方案就是 ELK。尽管当初有 Docker、k8s 帮咱们简化了部署流程,但 ELK 对硬件的要求却很高。光是 Elasticsearch 官网就提及到须要 8 GB 内存以上的机器部署,可见占据的资源之多。为了能降本增效(穷~~~),在网上看到了 Grafana 团队的日志框架: Loki。为此进行了深刻的理解并利用在了一些我的项目上。 Loki 介绍Loki 是 Grafana 团队开源的一款高可用、高拓展、多租户的日志聚合零碎,和 ELK 的组件性能一样,Loki 有负责日志存储查问的主服务,有在客户端负责收集日志并推送的代理服务,还有 Grafana 最拿手的可视化面板展现。 不同的是,Loki 不再依据日志内容去建设大量的索引,而是借鉴了 Prometheus 外围的思维,应用标签去对日志进行特色标记,而后归集统计。这样的话,能防止大量的内存资源占用,转向便宜的硬盘存储。当然 Loki 会对日志进行分块存储并压缩,保留大量的元数据索引,兼顾硬盘的查问效率。 除此之外,Loki 还有以下个性: 一个 Loki 实例容许面向多个租户,不同租户的数据齐全与其余租户隔离。LogQL:Loki 本人的日志查询语言,很容易上手应用的。高拓展性,Loki 的所有组件能够跑在同一个程序里,也能够按微服务的形式去部署它们。反对市面上许多风行的日志客户端插件,能较好的汇合在一起。说白了,Loki 吸引人的中央就在于领有和 Prometheus 相似机制的时序数据库以及不便拓展的硬盘资源。 Loki 架构上面,咱们来意识下 Loki 的总体架构。就像后面提及到的,Loki 次要分为了三局部: agent client:日志代理客户端,负责收集日志发送到主服务 Loki,目前官网有本人的 client: Promtail,也反对支流的组件,如 Fluentd、Logstash、Fluent Bit 等。loki:日志主服务,负责存储收集到的日志以及对日志查问解析。grafana:日志数据展现面板。 能够看到,外围的组件其实是 Loki 这个主服务,对于它的外部组成,其实还能够细分为几局部: Distributor:负责解决客户端发送过去的日志数据,测验正确性后将其分发给后续组件。Ingester:负责将日志按块存储。Query frontend:可选服务,对外提供查问 API,负责一些查问调整和整合。 Loki 的简略应用Loki 的装置对于 Loki 的装置十分的简略,大伙能够看官网的连贯:Install Grafana Loki with Docker or Docker Compose。自己实际了一下,应用了上面的 yaml 文件,以 docker-compose 形式进行了部署: ...

February 28, 2022 · 2 min · jiezi