day9 : logging集中(下)

昨天完成k8s log的来源设定,但是查找log如果都要到vector查说实在有点麻烦,因此今天就来完成最後一哩路,把log收到网页介面上,log集中的专案非常的多,为了统一管理,就用grafana loki来统一。

grafana loki架构复杂度相当的高,机制上会运用到以下元件

  1. 提供log读写的nginx介面。
  2. 查询使用的frontend元件。
  3. 做为缓存功能的redis。
  4. 作为index资料查询的nosql资料库(like cassanfra)。
  5. 保存集群状态的kv资料库(like etcd or consul)。
  6. 真实储存空间(like minio)。
  7. 负责资料一制性的loki 元件Distributor。
  8. 处理chunk的loki 元件Ingester。
  9. 与frontend做资料匹配的loki 元件Querier。

依据元件,可以得到以下的架构图
https://ithelp.ithome.com.tw/upload/images/20210909/20139661P7H4BDRUDX.png
但是这样的架构中要考虑到loki的分散运算性质,所以无状态的Distributor、frontend、Querier会有很多个,负责读写资料的Ingester也可以有好多个,要能够驾驭这样的分布式运算就要有良好的load balnce管理读写的流量,然後藉由高可用又轻量的管理服务(like key-valueDB)管理loki元件的资讯,以及高可用的储存空间和database,看起来难度高又复杂。

因此我简化了大部分的元件,调整成下图
https://ithelp.ithome.com.tw/upload/images/20210909/20139661w6nowoPttl.png
不将元件拆开全部放在loki之中,由member list处理loki状态,储存放在minio以及boltdb-shipper,同样透过gateway入口以及redis做cache。

我这边在内部元件上参考了git文章https://github.com/CloudXiaobai/loki-cluster-deploy 做部署,运用其中的installation.sh并配置足够的pv即可轻松安装完成,因为我储存空间使用minio所以s3的部分要改写为minio的,sed就直接mark起来,调整於loki-system/loki-system/configmap.yaml内的s3: s3://minioadmin:minioadmin@minio_ip:9000/logchunks ,loki完成後就可以在grafana的datasource上选择loki加入,之後再调整vector使用loki为sink的目标,范例如下

[sinks.out]
type = "loki" 
inputs = ["in"] 
endpoint = "http://localhost:3100"

labels.key = "value" 
labels.key = "{{ event_field }}" 

就可以正常丢到loki并且开始查询log罗。


<<:  Chapter1-DJ最爱的音频动感图像(I)基本流程图 & 操作DOM介面

>>:  【Day 6】BERT由Transformer模型构建而成

成熟度模型( A maturity model)

-CMM 和 CMMI 成熟度水平比较 成熟度模型“可以”(而不是应该或必须)定义五个成熟度级别,...

【第一天 - Leetcode 介绍】

Q1. 什麽是 Leetcode ? Leetcode 是一个线上练程序网站,收集了许多软件工程师面...

Mikrotik RouterOS从入门到实战系列-Mikrotik入门第五课

Mikrotik RouterOS从入门到实战系列-Mikrotik入门第五课 课程大纲: 1.In...

postman

昨天介绍了API,今天要介绍一个postman的应用程序,它是一个可以让我们检查和实作API的app...

[Day 25] - 『转职工作的Lessons learned』 - Cube.js(I)

今天要介绍一下工作上有使用的到的另一项工具 - Cube.js。 Cube.js 是一个开源的API...