前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >轻量级日志系统Loki stack

轻量级日志系统Loki stack

作者头像
极客运维圈
发布2020-06-01 11:55:58
1.9K0
发布2020-06-01 11:55:58
举报
文章被收录于专栏:乔边故事乔边故事

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 乔边故事 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 11.4、轻量级日志系统Loki stack
  • 部署
  • 日志选择和过滤
    • 日志选择器
      • 日志过滤器
      相关产品与服务
      Grafana 服务
      Grafana 服务(TencentCloud Managed Service for Grafana,TCMG)是腾讯云基于社区广受欢迎的开源可视化项目 Grafana ,并与 Grafana Lab 合作开发的托管服务。TCMG 为您提供安全、免运维 Grafana 的能力,内建腾讯云多种数据源插件,如 Prometheus 监控服务、容器服务、日志服务 、Graphite 和 InfluxDB 等,最终实现数据的统一可视化。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档