Loki安装使用方式

news/2024/11/20 21:33:37/

Distributor 收到 HTTP 请求,用于存储流数据
通过 hash 环对数据流进行 hash
Distributor将数据流发送到对应的Ingester及其副本上
Ingester 新建 Chunk 或将数据追加到已有Chunk 上
Distributor通过 HTTP连接发送响应信息

Loki 日志系统由以下3个部分组成:
loki是主服务器,负责存储日志和处理查询。
promtail是专为loki定制的代理,负责收集日志并将其发送给 loki 。
Grafana用于 UI展示。
四种安装方式
在这里插入图片描述
Promtail收集并将日志发送给Loki的 Distributor 组件
Distributor会对接收到的日志流进行正确性校验,并将验证后的日志分批并行发送到Ingester
Ingester 接受日志流并构建数据块,压缩后存放到所连接的存储后端
Querier 收到HTTP查询请求,并将请求发送至Ingester 用以获取内存数据 ,Ingester 收到请求后返回符合条件的数据 ;
如果 Ingester 没有返回数据,Querier 会从后端存储加载数据并遍历去重执行查询 ,通过HTTP返回查询结果。
Loki与ELK比较
ELK功能丰富,但是架构复杂,资源占用高,很多功能系统用不上,造成很多资源浪费。
ELK进行全文索引。安装部署复杂。
Loki不对日志全文索引。通过存储压缩非结构化日志和仅索引元数据,Loki 操作起来会更简单,更省成本。
Loki通过使用与 Prometheus 相同的标签记录流对日志进行索引和分组,这使得日志的扩展和操作效率更高。
Loki安装部署简单快速,且受 Grafana 原生支持。
假如系统依赖于ES,建议使用ELK作为日志系统。若系统不依赖ES,选择用Loki。

https://github.com/grafana/loki/blob/v1.5.0/docs/installation/README.md

我选择 Installing Loki with Docker or Docker Compose

docker-compose.yml

version: "3"services:loki:image: grafana/loki:1.5.0restart: alwaysports:- "3100:3100"command: -config.file=/etc/loki/local-config.yamlvolumes:- loki-config:/etc/lokinetworks:- lokipromtail:image: grafana/promtail:1.5.0restart: alwaysvolumes:# promtail 采集日志的目录(宿主机的目录)  /root/log 也可以直接采集容器目录- /var/log:/var/log #挂载到宿主机的/var/log- /mnt/config/docker-config.yaml:/etc/promtail/docker-config.yaml #配置文件拷贝到宿主机挂载到容器- promtail-config:/etc/promtailcommand: -config.file=/etc/promtail/docker-config.yamlnetworks:- lokigrafana:image: grafana/grafanarestart: alwaysports:- "3000:3000"depends_on:- loki- promtailvolumes:- grafana-storage:/var/lib/grafananetworks:- lokinetworks:loki:volumes:loki-config:promtail-config:grafana-storage:

启动
docker cp 0d0a90b5b7fa:/etc/promtail/docker-config.yaml /mnt/config/
docker-compose up -d
http://ip:3000/
登录密码admin/admin

  1. 部署
    本篇通过目前最新版微服务架构进行部署,部署工具是helm
    需要一套k8s集群,客户端,helm工具
    helm repo资源
https://barrett0828.com/%E6%9E%84%E5%BB%BAloki%E6%97%A5%E5%BF%97%E7%B3%BB%E7%BB%9F/
helm repo add grafana https://grafana.github.io/helm-charts
grafana/grafana
grafana/loki-distributed
grafana/promtail
kubectl create ns lokihelm pull grafana/loki-distributed
helm pull grafana/promtail
helm pull kubectl create ns loki
helm upgrade --install loki --namespace=loki ./loki-distributed
helm install promtail -n loki grafana/promtail --set config.clients[0].url=http://loki-loki-distributed-gateway/loki/api/v1/push
helm install loki-grafana --namespace=loki grafana/grafana

https://artifacthub.io/packages/helm/grafana/promtail #日志收集配置文件参考地址
mkdir -p /promtail/ci/test
vi promtail/ci/test/values.yaml

config:snippets:extraScrapeConfigs: |# Add an additional scrape config for syslog- job_name: journaljournal:path: /var/log/journalmax_age: 12hlabels:job: systemd-journalrelabel_configs:- source_labels:- __journal__hostnametarget_label: hostname# example label values: kubelet.service, containerd.service- source_labels:- __journal__systemd_unittarget_label: unit# example label values: debug, notice, info, warning, error- source_labels:- __journal_priority_keywordtarget_label: level# Mount journal directory and machine-id file into promtail pods
extraVolumes:- name: journalhostPath:path: /var/log/journal- name: machine-idhostPath:path: /etc/machine-idextraVolumeMounts:- name: journalmountPath: /var/log/journalreadOnly: true- name: machine-idmountPath: /etc/machine-idreadOnly: true

更新升级
helm upgrade promtail ./promtail -f ./promtail/ci/test/values.yaml -i -n loki
查看admin密码

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
添加数据源
http://loki-loki-distributed-gateway
查询日志
在这里插入图片描述
在这里插入图片描述


http://www.ppmy.cn/news/103480.html

相关文章

OFGF光流引导特征:用于视频动作识别的快速且稳健的运动表示【含源码】

论文地址:https://openaccess.thecvf.com/content_cvpr_2018/papers/Sun_Optical_Flow_Guided_CVPR_2018_paper.pdf 这个 repo 包含论文的实现代码: Optical Flow Guided Feature: A Fast and Robust Motion Representation for Video Action Recognition,Shuyang Sun,Zh…

Java泛型 <T> T、 T、<T>的用法

我们聊聊Java泛型中的 T 是什么? T 在Java泛型中,被称作类型变量。那么什么又是类型变量? 类型变量在整个类的定义中用于指定方法的返回类型,同时也可以指定字段和局部变量的类型,我们可以用具体的类型来替换类型变量…

VimGvim基本操作

Vim教程(超强记事本) shift按住选中终端文本然后再执行复制命令可复制文本 CRTLL清空但保存 reset 清空不保存 一定英文输入法,不然键位可能冲突 功能: (1) 命令行模式下的文本编辑器。 (2) 根据文件扩展名自动判别编程语言。支持代码缩进、代码高亮…

Vue 脚手架(打包工具)的理解 - 配置文件理解

序言 Vue 脚手架是 Vue 作为一个前端开发项目的最核心点,将JavaScript、CSS、HTML这几种前端自动整合,极大的简化了前端开发工作。 没有 Vue 脚手架,就没有 Vue ,这是一定的,Java 语言和C语言都需要编译,…

JavaEE进阶(5/29)SpringMVC

目录 1.复习 2.URL传参PathVariable 3.上传文件RequestPart 4.获取Cookie/Session/header 5.传统/维新获取cookies 6.传统/维信获得Header 7.获取Session(非常重要) 8.不加ResponseBody 9.如何获取Json数据,RequestBody 10.想…

cmake终极奥义

一、初识cmake cmake集中开源,跨平台,能够管理大型项目,简化编译构建过程和编译过程,高效率,可扩展于一体,简单而强大的项目构建工具 二,安装cmake 一般不需要安装,cmake目前已经成…

宿主启动插件中的BroadCastReceiver和ContentProvider

BroadcastReceiver插件化解决方案 静态广播和动态广播仅区别于注册方式的不同。静态广播的注册信息保存在PMS中,动态广播的注册信息保存在AMS中 发送广播,也就是Context的sendBroadcast方法,最终会调用ActivityManager.getService().broadca…

快速上手 SpringBoot 单元测试

✏️作者:银河罐头 📋系列专栏:JavaEE 🌲“种一棵树最好的时间是十年前,其次是现在” 目录 什么是单元测试?单元测试有哪些好处SpringBoot 单元测试使用单元测试的实现步骤生成单元测试类添加单元测试代码 …