通过rancher部署loki-distributed loki日志高可用集群 helm方式部署
本人最近一直在找loki高可用部署的文档,一直没找到有效的部署文档,后面依照官方文档和自己摸索,部署出了以下一套loki高可用方案。
Distributor:Distributor是Loki日志写入的最前端,当它收到日志时会验证其正确性,之后会将日志切成块(chunk)后,转给Ingester负责存储。
Ingester:Ingester主要负责将收到的日志数据写入到后端存储,如DynamoDB,S3,Cassandra等),同时它还会将日志信息发送给Querier组件。
Querier:Querier主要负责从Ingester和后端存储里面提取日志,并用LogQL查询语言处理后返回给客户端。
Query Frontend:Query frontend主要提供查询API,它可以将一条大的查询请求拆分成多条让Querier并行查询,并汇总
后返回。它是一个可选的部署组件,通常我们部署它用来防止大型查询在单个查询器中引起内存不足的问题。
Gateway:gateway是一个外部自定义的nginx负载均衡器,主要是将Loki的日志写入和查询请求做负载均衡。
相关镜像:docker.io/grafana/loki:2.2.0
docker.io/nginxinc/nginx-unprivileged:1.19-alpine
以下使用rancher部署,使用的fluent-bit作为日志收集器,存储使用的minio、grafana作为日志UI展示界面,本文没有部署grafana和minio的步骤,这个很简单,不多描述:
1、从应用商店部署loki-distributed,选择版本是0.28.1,使用helm v3方式部署,部署后将会创建如下pod,创建出来的pod副本数默认均为一个:
2、修改loki-distributed的配置映射(需要修改的内容为存储的相关配置信息storage_config):
auth_enabled: false
server:
http_listen_port: 3100
distributor:
ring:
kvstore:
store: memberlist
memberlist:
join_members:
- loki-distributed-memberlist
ingester:
lifecycler:
ring:
kvstore:
store: memberlist
replication_factor: 1
chunk_idle_period: 3m
chunk_block_size: 262144
chunk_encoding: snappy
chunk_retain_period: 1m
max_transfer_retries: 0
limits_config:
enforce_metric_name: false
reject_old_samples: true
reject_old_samples_max_age: 168h
max_cache_freshness_per_query: 10m
schema_config:
configs:
- from: 2020-09-07
store: boltdb-shipper
object_store: s3
schema: v11
index:
prefix: loki_index_
period: 24h
# 使用的minio存储
storage_config:
aws:
access_key_id: gdfgd1fgddffsdf3g3 # minio存储的access_key,在minio控制台手动创建生成
bucketnames: lokitest # loki使用的minio存储桶名称,在minio控制台手动创建生成
endpoint: minio.loki-test:9000 # loki访问minio的方式,minio服务名称.部署minio的命名空间:minio数据传输端口
insecure: true
s3forcepathstyle: true
secret_access_key: wJalrXUtnFFSUFSFHKEFSBGJKDSMARHL # minio存储的secret_key,在minio控制台手动创建生成
boltdb_shipper:
shared_store: filesystem
active_index_directory: /var/loki/index
cache_location: /var/loki/cache
cache_ttl: 168h
filesystem:
directory: /var/loki/chunks
chunk_store_config:
max_look_back_period: 0s
table_manager:
retention_deletes_enabled: false
retention_period: 0s
query_range:
align_queries_with_step: true
max_retries: 5
split_queries_by_interval: 15m
cache_results: true
results_cache:
cache:
enable_fifocache: true
fifocache:
max_size_items: 1024
validity: 24h
frontend_worker:
frontend_address: loki-distributed-query-frontend:9095
frontend:
log_queries_longer_than: 5s
compress_responses: true
compactor:
shared_store: filesystem
ruler:
storage:
type: local
local:
directory: /etc/loki/rules
ring:
kvstore:
store: memberlist
rule_path: /tmp/loki/scratch
alertmanager_url: https://alertmanager.xx
external_url: https://alertmanager.xx
3、修改日志收集器fluent-bit的配置fluent-bit.conf和parsers.conf(修改output中loki的配置),在fluent-bit中使用loki-distributed-distributor此服务名称:
fluent-bit.conf:
[SERVICE]
HTTP_Server On
HTTP_Listen 0.0.0.0
HTTP_PORT 2020
Flush 1
Daemon Off
Log_Level warn
Parsers_File parsers.conf
[INPUT]
Name tail
Tag kube.*
Path /var/log/containers/*.log
Multiline On
Parser_Firstline multilinejson
Parser docker
DB /run/fluent-bit/flb_kube.db
Mem_Buf_Limit 4000MB
[FILTER]
Name kubernetes
Match kube.*
Kube_URL https://kubernetes.default.svc:443
Merge_Log On
K8S-Logging.Exclude Off
K8S-Logging.Parser Off
[Output]
Name grafana-loki
Match kube.*
Url http://loki-distributed-distributor.loki-test:3100/api/prom/push
TenantID ""
BatchWait 1
BatchSize 1048576
Labels {job="fluent-bit"}
RemoveKeys kubernetes,stream
AutoKubernetesLabels true
LabelMapPath /fluent-bit/etc/labelmap.json
LineFormat json
LogLevel warn
parsers.conf(作用于日志展示格式):
[PARSER]
Name docker
Format json
Time_Key time
Time_Format %Y-%m-%dT%H:%M:%S.%L
[PARSER]
Name multilinejson
Format regex
Regex /(?<data>\${2}.+)/
Time_Key time
Time_Format %Y-%m-%dT%H:%M:%S.%L
关键配置是这个:Url http://loki-distributed-distributor.loki-test:3100/api/prom/push,loki-distributed-distributor作为loki服务的最前端,需要把loki-distributed-distributor服务名称配置在日志收集器fluent-bit中,修改好fluent-bit配置后,重启fluent-bit服务。
4、在grafana中添加loki的Data Source,测试日志查询(在grafana中使用loki-distributed-querier此服务名称):
关键配置:http://loki-distributed-querier.loki-test:3100 ,此处配置loki-distributed-querier这个服务名称,Querier主要负责从Ingester和后端存储里面提取日志,并用LogQL查询语言处理后返回给客户端(即grafana)。
5、增加pod副本数实现高可用(副本数为1时,loki-distributed-distributor会报错找不到成员列表,是因为此时pod数为1,成员列表为0,增加副本数量即可解决此报错,此报错不影响日志使用)。本次部署将loki-distributed-querier和loki-distributed-distributor设置为了双副本数(根据实际内存/CPU资源情况,设置成三副本也没问题),以实现高可用,loki-distributed-gateway内置的nginx提供负载均衡。
通过rancher部署loki-distributed loki日志高可用集群 helm方式部署相关推荐
- 基于Kubeadm部署Kubernetes1.13.3 HA 高可用集群
Table of Contents 目录 基于Kubeadm部署Kubernetes1.13.3 HA 高可用集群 01. 部署目的 1.1 Kubernetes的特性 1.2 贴微服务,开发环境快速 ...
- Kubeadm HA 1.9 高可用 集群 本地离线部署
Kubeadm HA 1.9 高可用 集群 本地离线部署 k8s介绍 k8s 发展速度很快,目前很多大的公司容器集群都基于该项目,如京东,腾讯,滴滴,瓜子二手车,北森等等. kubernetes1.9 ...
- k8s(一)、 1.9.0高可用集群本地离线部署记录
一.部署说明 1.节点 master1: IP:192.168.0.170/24 hostname:171 master2: IP:192.168.0.171/24 hostname:172 VIP: ...
- k8s高可用集群_搭建高可用集群(初始化和部署keepalived)---K8S_Google工作笔记0055
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后我们来部署keepalived,搭建高可用集群. 然后我们这里需要master,155, ma ...
- k8s高可用集群_搭建高可用集群(实现方式介绍)---K8S_Google工作笔记0054
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后我们来说搭建高可用集群,为什么要搭建高可用集群. 因为,首先我们说master节点是用来管理其 ...
- CapitalOne - Artifactory高可用集群的自动化部署实践
背景 本文为大家介绍Capital One如何利用自动化流水线实现Artifactory HA集群进行自动化运维.Capital One银行是美国最大的数字化银行之一,在Capital One的dev ...
- kubernetes高可用集群web页面部署
前言: 前面几篇博客演示了k8s的二进制部署,这篇博客做k8s页面部署 搭建部署 1.下载官方文档 2.创建资源(master01) #创建dashboard工作目录 [root@localhost ...
- Helm部署rancher 高可用集群
Helm部署rancher 高可用集群 Helm简介 Helm是Kubernetes的一个包管理工具,用来简化Kubernetes应用的部署和管理.可以把Helm比作CentOS的yum工具. Hel ...
- s19.基于 Kubernetes v1.25 (kubeadm) 和 Docker 部署高可用集群(一)
基于 Kubernetes v1.25 和 Docker 部署高可用集群 主要内容 Kubernetes 集群架构组成 容器运行时 CRI Kubernetes v1.25 新特性 Kubernete ...
最新文章
- GDCM:生成标准SOP类的测试程序
- 苏老师首播3小时!超500人观看!录屏!源码!PPT……你要的都在这里!
- 使用两个队列实现一个栈
- python中集合运算_入门 | 一文带你了解Python集合与基本的集合运算
- 异构平台同步(Mysql到Oracle)
- DataList:HTML5中的input输入框自动提示宝器
- 样本量很少如何获得最佳的效果?最新小样本学习工具包来啦!
- 电脑合上盖子不锁屏_笔记本电脑合上盖子或台式机离开后黑屏是“休眠”还是“睡眠”...
- 处理收到的Stanzas
- java中vector和list_java中vector和list的区别
- STM32 - L4系列芯片手册: 总线架构
- matlab许可证_MATLAB校园许可证更新指南
- 参考文献编号[9]之后出现空格解决方法
- 二维码的制作之根据Excel数据批量制作二维码
- TE TM TEM模的区别
- Flixel横板游戏制作教程(四)— RandomLevels
- 宇视科技实习生笔试面试经历
- Excel VBA一行代码搞定分组排序
- 电话,手机,微信账号,邮箱正则表达式校验
- 金三银四过后整理出的阿里最新Java程序员面试题目(2018.4月)