zoukankan      html  css  js  c++  java
  • Kubernetes日志系统新贵Loki-Stack

    Loki简介

    Grafana Loki是可以组成功能齐全的日志记录堆栈的一组组件。
    与其他日志记录系统不同,Loki是基于仅索引有关日志的元数据的想法而构建的:标签(就像Prometheus标签一样)。 然后,日志数据本身被压缩并存储在对象存储(例如S3或GCS)中的块中,甚至存储在文件系统本地。 小索引和高度压缩的块简化了操作,并大大降低了Loki的成本。
    相较于EKL,Loki就显得很轻量级了;用了Loki以后,ELK突然不香了!哈哈~~~

    Loki-stack组件

    先放两张图

    • Promtail

    Promtail 是用来将容器日志发送到 Loki 或者 Grafana 服务上的日志收集工具,该工具主要包括发现采集目标以及给日志流添加上 Label 标签,然后发送给 Loki,另外 Promtail 的服务发现是基于 Prometheus 的服务发现机制实现的。

    • Loki

    Loki 是可以水平扩展、高可用以及支持多租户的日志聚合系统,使用了和 Prometheus 相同的服务发现机制,将标签添加到日志流中而不是构建全文索引。因此,从 Promtail 接收到的日志和应用的 metrics 指标就具有相同的标签集。它不仅提供了更好的日志和指标之间的上下文切换,还避免了对日志进行全文索引。

    • Grafana

    Grafana 是一个用于监控和可视化观测的开源平台,支持非常丰富的数据源,在 Loki 技术栈中它专门用来展示来自 Prometheus 和 Loki 等数据源的时间序列数据。还允许进行查询、可视化、报警等操作,可以用于创建、探索和共享数据 Dashboard

    接下来我们就来上手体验Loki-stack

    使用helm部署loki-stack

    1、前提,需要有一个k8s集群和安装好helm工具
    2、添加helm源

    helm repo add loki https://grafana.github.io/loki/charts
    
    下载到本地,也可以直接安装,因为需要修改存储类及其他一些配置,我习惯下载到本地,方便修改调试
    helm fetch loki/loki-stack
    tar -zxf loki-stack-0.38.1.tgz
    cd loki-stack/
    [root@ loki-stack]# ls -al
    drwxr-xr-x.  7 root root   85 Jul  2 07:25 charts
    -rwxr-xr-x.  1 root root  369 Jul  1 01:46 Chart.yaml
    -rwxr-xr-x.  1 root root  342 Jul  1 01:46 .helmignore
    -rwxr-xr-x.  1 root root 1662 Jul  1 01:46 README.md
    -rwxr-xr-x.  1 root root  533 Jul  1 01:46 requirements.lock
    -rwxr-xr-x.  1 root root  595 Jul  1 01:46 requirements.yaml
    drwxr-xr-x.  3 root root   80 Jul  2 08:46 templates
    -rwxr-xr-x.  1 root root  206 Jul 16 00:53 values.yaml
    

    3、修改loki-stack的values.yaml文件,我这里只安装了loki和promtail,而grafana和prometheus我就用集群已经部署好的prometheus-operator了

    [root@ ]# cat values.yaml
    loki:
      enabled: true
    promtail:
      enabled: true
    

    4、修改loki的values.yaml,
    主要修改storageClass和persistence size,开启serviceMonitor以便监控loki

    [root@  loki-stack]# cd charts/loki/
    [root@  loki]# ll
    total 20
    -rw-r--r-- 1 root root  367 Nov 28 00:31 Chart.yaml
    -rw-r--r-- 1 root root 1846 Nov 28 00:31 README.md
    drwxr-xr-x 2 root root 4096 Dec  1 09:14 templates
    -rw-r--r-- 1 root root 6695 Dec  1 09:15 values.yaml
    
    persistence:
      enabled: true
      storageClass: "rbd"
      accessModes:
      - ReadWriteOnce
      size: 100Gi
      annotations: {}
    
    serviceMonitor:
      enabled: true
      interval: ""
      additionalLabels: {}
      annotations: {}
      # scrapeTimeout: 10s
    

    5、修改promtail的values.yaml
    如果你想添加更多的日志目录,可以在这里添加

    # Extra volumes to scrape logs from
    volumes:
    - name: docker
      hostPath:
        path: /var/lib/docker/containers
    - name: pods
      hostPath:
        path: /var/log/pods
    

    6、执行部署

    cd loki-stack
    kubectl create ns loki
    helm install loki -n loki -f values.yaml .
    
    [root@ loki-stack]# helm ls -n loki
    NAME    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                   APP VERSION
    loki    loki            1               2020-12-01 09:15:22.971437761 +0800 CST deployed        loki-stack-2.1.0        v2.0.0
    

    7、登录到已有的grafana界面,添加loki源
    首先获取到loki的服务地址

    [root@ loki-stack]# kubectl get svc -n loki
    NAME            TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
    loki            NodePort    10.101.129.255   <none>        3100:30439/TCP   92m
    loki-headless   ClusterIP   None             <none>        3100/TCP         92m
    


    填好信息以后,点击Save&Test,确认grafana可以连接到loki

    8、点击Explore,就可以使用LogQL 查询日志,如下图

    当然也可以导入别人做好的模板,更多Dashboard可以到官网https://grafana.com/grafana/dashboards 查看

  • 相关阅读:
    public interface IBaseService<T> where T:class, new()含义
    mvc多条件查询
    jquery select下拉框和 easy-ui combox 选定指定项区别
    .net 中主框架的搭建(2种方式)
    linq ->sql & linq->lambda中的cud
    mvc中日志的原理和使用步骤
    Sprint.Net和Mvc结合使用
    2017.5.12总结
    c#前端验证和后台验证总结
    matlab根据url链接下载*.tar文件并解压
  • 原文地址:https://www.cnblogs.com/scofield666/p/14066963.html
Copyright © 2011-2022 走看看