1.Loki
loki是grafana公司的另外一款主打产品,目前是grafana公司继prometheus,grafana,cortex之后的第四款比较知名的产品。这是一款支持垂直扩展,支持高可用,多租户日志聚合的系统。他和我们前面讲的ES就在于降低了成本,操作简单。Loki并没有对日志的内容进行索引,而是对于每个日志流进行打标签的工作。这样,对于小规模的日志存取都非常方便,也就更加适合于我们对于日志监控的要求,让产品定位在了日志监控。而ES在日志监控方面的功能虽然也非常强大,但是操作复杂度和昂贵的价格会让我们望而生畏,因此,轻量且开源的Loki让我们有了另外的选择。
但是Loki的缺点也是非常明显的,这也是大部分开源的云原生产品的共性:没有认证功能。如果想做认证,就需要通过其他的方式来实现,比如nginx,或者k8singress的认证,或者其他三方的工具来实现。
2.架构图
一般来说,我们会通过logagent(比如promtail或者fluentd)挖掘日志,然后发送给Loki服务器,最后通过grafana进行展示。而主要的功能都集中在了loki服务器上
modes_of_operation.png
2.1.组件
ZmFuZ3poZW5naGVpdGk.png
Distributer分发器,负责接收来自于客户端的日志,通过批处理来构建压缩数据
Ingester捕获器,负责构建和刷新chunks,满足特定条件在刷新到存储中去
Querier查询器,根据时间和标签选择器,去索引查找并且匹配到指定的数据,同时去Ingester里面查找尚未刷新到存储中的数据
2.2.逻辑架构图
Loki同样是使用标签作为索引,一切的数据都是通过筛选标签来得到结果的。实际上,我们真正需要安装的只有grafana,loki和promtail
.png
Grafana:用于最终的展示,并且借助于官方网站上的dashboard来实现nginx日志的展示与监控
Loki:我们上面介绍了Loki的主要组件,但是实际上Loki还包含了queryfrontend和存储相关的组件,数据的存储方式可以选择本地,也可以选择公有云存储或对象存储
promtail:日志的agent,一般安装在需要采集日志的主机上来挖掘日志。
3.单机安装
为了实现我们上面看到的效果,我们需要借助于nginx+GeoIP。我们选用的是AWS,实例是AmazonLinux2,选用Centos或者RHEL原理基本相同,需要注意的是,nginx需要一个叫做ngx_