轻量级日志系统Loki stack

2020-06-01 11:55:58 浏览数 (1)

11.4、轻量级日志系统Loki stack

Loki 是一个可水平伸缩的、高可用的以及多租户的日志集中系统,有这么多功能,唯独没有全文检索。在其简介中,自称是受到 Prometheus 的启发:仅保存和处理元数据,而对日志正文不闻不问。 和 EFK 类似,Loki Stack 也由采集端、服务端和交互端三个部分构成,其中采集端是可变的,目前支持 Promtail、FluentBit 和 Fluentd 三种,服务端和交互端分别使用的是 Loki 和 Grafana。

部署

使用helm安装部署非常方便。前提是安装好helm,helm2和helm3都可以。 (1)、安装grafana

代码语言:javascript复制
helm install stable/grafana  
    --set ingress.enabled=true 
    --set ingress.hosts={grafana.coolops.cn} 
    --generate-name

注意这里没有做数据持久化。如果需要做数据持久化,需要开启--set persistence.enabled=true

然后输出如下:

代码语言:javascript复制
NAME: grafana-1590559431
LAST DEPLOYED: Wed May 27 14:03:55 2020
NAMESPACE: default
STATUS: deployed
REVISION: 1
NOTES:
1. Get your 'admin' user password by running:

   kubectl get secret --namespace default grafana-1590559431 -o jsonpath="{.data.admin-password}" | base64 --decode ; echo

2. The Grafana server can be accessed via port 80 on the following DNS name from within your cluster:

   grafana-1590559431.default.svc.cluster.local

   If you bind grafana to 80, please update values in values.yaml and reinstall:
   
   securityContext:
     runAsUser: 0
     runAsGroup: 0
     fsGroup: 0

   command:
   - "setcap"
   - "'cap_net_bind_service= ep'"
   - "/usr/sbin/grafana-server &&"
   - "sh"
   - "/run.sh"
   
   Details refer to https://grafana.com/docs/installation/configuration/#http-port.
   Or grafana would always crash.

   From outside the cluster, the server URL(s) are:
     http://grafana.coolops.cn


3. Login with the password from step 1 and the username: admin
#################################################################################
######   WARNING: Persistence is disabled!!! You will lose your data when   #####
######            the Grafana pod is terminated.                            #####
#################################################################################

然后在浏览器登录。http://grafana.coolops.cn ,用户名和密码按着提示操作。 获取admin的密码:

代码语言:javascript复制
# kubectl get secret --namespace default grafana-1590559431 -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
jscu09wdW1mjeVdsIFMTHJVt82ufcywJHOQawtef

(2)、安装loki 添加loki仓库

代码语言:javascript复制
helm repo add loki https://grafana.github.io/loki/charts && helm repo update

安装loki

代码语言:javascript复制
helm install loki-server loki/loki  --set replicas=2

依然没有做持久化

安装日志采集端

代码语言:javascript复制
helm install fluent-bit loki/fluent-bit 
--set "loki.serviceName=loki-server"

loki的service name以自己的为准

然后查看

代码语言:javascript复制
# helm list
NAME               NAMESPACE REVISION UPDATED                                 STATUS   CHART            APP VERSION
fluent-bit         default   1        2020-05-28 15:19:52.806057415  0800 CST deployed fluent-bit-0.1.3 v1.5.0     
grafana-1590559431 default   1        2020-05-27 14:03:55.071077667  0800 CST deployed grafana-5.0.26   6.7.3      
loki-server        default   1        2020-05-28 15:18:19.600836531  0800 CST deployed loki-0.29.0      v1.5.0  

(3)、登录grafana添加数据源 接下来登入 Grafana,添加 Loki 作为数据源,由于没有开启认证,因此只需要设置 URL 即可,例如:http://loki-server:3100。添加之后,就可以点击 Explore 按钮进入查询交互了。

点击Log labels就可以把当前系统采集的日志标签给显示出来,可以根据这些标签进行日志的过滤查询,也可直接输入过滤表达式,如图所示,过滤出job="fluent-bit"的日志

日志选择和过滤

日志选择器

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

代码语言:javascript复制
{app="mysql",name="mysql-backup"}

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

  • = 完全相等。
  • != 不相等。
  • =~ 正则表达式匹配。
  • !~ 不进行正则表达式匹配。

例子:

代码语言:javascript复制
{name=~"mysql. "}
{name!~"mysql. "}

日志过滤器

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

代码语言:javascript复制
{job="mysql"} |= "error"
{name="kafka"} |~ "tsdb-ops.*io:2003"
{instance=~"kafka-[23]",name="kafka"} != kafka.server:type=ReplicaManager

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

代码语言:javascript复制
{job="mysql"} |= "error" != "timeout"

已实现以下过滤器类型:

  • |= 行包含字符串。
  • != 行不包含字符串。
  • |~ 行匹配正则表达式。
  • !~ 行与正则表达式不匹配。

regex表达式接受RE2语法。默认情况下,匹配项区分大小写,并且可以将regex切换为不区分大小写的前缀(?i)。

这里仅仅是简单的搭建使用的一番,更多功能需要自己的探索了(因为我也不会)。 这里有几个坑。由于有那么一堵墙的原因,添加repo和下载chat的时候下载不下来,所以我就用梯子自己下载了。如果你也遇到这个问题,可以考虑一下~~! 还有下载镜像的问题,也是一样。不过我已经把我安装的这个版本的镜像放到阿里云了。有兴趣的就用我的镜像把。loki:registry.cn-hangzhou.aliyuncs.com/rookieops/loki:1.5.0 loki-fluent-bit:registry.cn-hangzhou.aliyuncs.com/rookieops/fluent-bit-plugin-loki:1.5.0-amd64

0 人点赞