loki es选型 loki和elk_正则表达式

近期loki挺?的,一篇去年的技术博文被几个公众号转烂了都。

心疼了一下ELK集群的巨大成本,浅浅尝试之后。

就这?爱了爱了

1 Loki 简介

  • Loki是受Prometheus启发的高可用多租户日志聚合系统
  • Loki不对日志进行全文本索引。通过压缩日志并索引元数据
  • 特别适合存储Kubernetes Pod日志。诸如Pod标签之类的元数据会自动被抓取并建立索引
  • 可在Grafana中引入

2 Loki组件

  • promtail:代理服务,负责收集日志并发送给Loki
  • Loki:主要服务,负责存储日志和处理查询
  • Grafana:用于查询和显示日志

loki es选型 loki和elk_正则表达式_02

3 关于日志收集器

Loki支持多种日志收集器:

Promtail Fluentd Docker插件等等!

这里主要介绍一下原装Promtail

Promtail
  • Promtail可以从两个来源跟踪日志:本地日志文件和systemd日志
  • Prometheus借用了相同的服务发现机制

https://github.com/grafana/loki/blob/master/docs/clients/promtail/configuration.md

  • 它目前仅支持static和kubernetes服务发现
  • relabel_configs允许对要抓取的日志进行更细化的控制
  • 参考官方配置文档

4. 部署

4.1 这里使用helm部署

#添加loki仓库
helm repo add loki https://grafana.github.io/loki/charts
helm repo update
#部署loki
helm upgrade --install loki --namespace=loki loki/loki

原chart包也支持安装grafana以及prometheus

4.2 从grafana中引入数据源



loki es选型 loki和elk_loki es选型_03

loki es选型 loki和elk_elk 搜索 语法_04

loki es选型 loki和elk_正则表达式_05

<<< 左右滑动见更多 >>>

官方强烈建议使用 grafana 6.3 或更高版本,附带了对Loki的内置支持
数据源URL填写SVC地址 https://loki:3100
单击Explore侧栏查看日志,然后使用Log labels按钮选择日志标签



loki es选型 loki和elk_kafka_06

5. 日志选择和过滤

5.1 日志选择器

[键值语法选择标签]。多个标签表达式用逗号分隔:

对于查询表达式的标签部分,将其用大括号括起来{},然后使用键值语法选择标签[1]。多个标签表达式用逗号分隔:

{app="mysql",name="mysql-backup"}

当前支持以下标签匹配运算符:

  • = 完全相等。
  • != 不相等。
  • =~ 正则表达式匹配。
  • !~ 不进行正则表达式匹配。
举个栗子
{name=~"mysql.+"}
{name!~"mysql.+"}

5.2 日志过滤器

编写日志流选择器后,您可以通过编写搜索表达式来进一步过滤结果。搜索表达式可以只是文本正则表达式

查询示例:
{job="mysql"} |= "error"
{name="kafka"} |~ "tsdb-ops.*io:2003"
{instance=~"kafka-[23]",name="kafka"} != kafka.server:type=ReplicaManager

过滤器运算符可以被链接,并将顺序过滤表达式-结果日志行将满足每个过滤器。

例如:

{job="mysql"} |= "error" != "timeout"
已实现以下过滤器类型:
  • |= 行包含字符串。
  • != 行不包含字符串。
  • |~ 行匹配正则表达式。
  • !~ 行与正则表达式不匹配。regex表达式接受RE2语法。默认情况下,匹配项区分大小写,并且可以将regex切换为不区分大小写的前缀(?i)。

6. 体验后

除了上述的基础日志功能外,Loki 还支持认证、监控、跟踪、多租户等丰富的功能

( 重点!!敲黑板!全部免费!)

并且因为使用了Grafana的功能,还会有一些骚操作,比如说可以使用分割按钮同时比较性能图表和日志来排查问题



loki es选型 loki和elk_loki es选型_07

吹完了来说说不足之处
  • 如果对全量日志索引有需求,或者要对日志数据进行分析bi之类可以放弃了,搞这玩意儿就是?同?讲了
  • 官方文档对promtail的描述比较粗糙,部分功能还是要靠自己摸索
  • 中小型公司对于日志的需求仅仅是便于收集查看,并且使用了k8s云原生技术栈的话可以尝试,和Prometheus搭配效果拔群

好了网瘾发作了,该去上(diao)分了

参考资料


[1]

https://github.com/grafana/loki/