vlambda博客
学习文章列表

轻量级日志系统Loki stack

↑ 点击上方“乔边故事”关注我们

轻量级日志系统Loki stack


11.4、轻量级日志系统Loki stack

Loki 是一个可水平伸缩的、高可用的以及多租户的日志集中系统,有这么多功能,唯独没有全文检索。在其简介中,自称是受到 Prometheus 的启发:仅保存和处理元数据,而对日志正文不闻不问。

和 EFK 类似,Loki Stack 也由采集端、服务端和交互端三个部分构成,其中采集端是可变的,目前支持 Promtail、FluentBit 和 Fluentd 三种,服务端和交互端分别使用的是 Loki 和 Grafana。

部署

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

(1)、安装grafana

helm install stable/grafana  \
    --set ingress.enabled=true \
    --set ingress.hosts={grafana.coolops.cn} \
    --generate-name

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

然后输出如下:

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的密码:

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

(2)、安装loki

添加loki仓库

helm repo add loki https://grafana.github.io/loki/charts && helm repo update

安装loki

helm install loki-server loki/loki  --set replicas=2

依然没有做持久化

安装日志采集端

helm install fluent-bit loki/fluent-bit \
--set "loki.serviceName=loki-server"

loki的service name以自己的为准

然后查看

# 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 按钮进入查询交互了。
轻量级日志系统Loki stack
轻量级日志系统Loki stack
点击Log labels就可以把当前系统采集的日志标签给显示出来,可以根据这些标签进行日志的过滤查询,也可直接输入过滤表达式,如图所示,过滤出job="fluent-bit"的日志

日志选择和过滤

日志选择器

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

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

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

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

例子:

{name=~"mysql.+"}
{name!~"mysql.+"}

日志过滤器

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

{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)。

这里仅仅是简单的搭建使用的一番,更多功能需要自己的探索了(因为我也不会)。

这里有几个坑。由于有那么一堵墙的原因,添加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



-----------------------

知乎: 乔边故事

博客:酷维-COOLOPS

永远不要高估自己,做一个谦逊又自信的人。

-----------------------


温馨提示