洛基(Loki),是北欧神话中的恶作剧和谎言之神,亦是火神。他是巨人法布提(Farbauti)和女巨人劳菲(Laufey)的儿子,阿萨神族主神奥丁(Odin)的义兄弟,虽然他比奥丁要年轻许多。但他的个性狡猾奸诈,经常出言不逊,与其他神祇争吵不休。他是北欧神话体系里极为重要的神祇之一,他在诸神黄昏扮演重要角色。

简介

Loki是受Prometheus启发由Grafana Labs团队最新的开源项目,是水平可扩展,高可用性,多租户的日志聚合系统。 Google go语言开发。它的设计非常经济高效且易于操作,因为它不会为日志内容编制索引,而是为每个日志流编制一组标签。官方的介绍就是:Like Prometheus, but for logs.,类似于 Prometheus 的日志系统。

特性

  • 不对日志进行全文索引。Loki中存储的是压缩后的非结构化日志,并且只对元数据建立索引,因此Loki 具有操作简单、低成本的优势。
  • 使用与 Prometheus 相同的标签。Loki通过标签对日志进行索引和分组,这使得日志的扩展和操作效率更高。
  • 特别适合储存 Kubernetes Pod 日志。诸如 Pod 标签之类的元数据会被自动删除和编入索引。
  • Grafana 原生支持。

Loki 日志系统由以下3个部分组成:

  • loki是主服务器,负责存储日志和处理查询。
  • promtail是专为loki定制的代理,负责收集日志并将其发送给 loki
  • Grafana用于 UI展示。

系统架构

  1. Promtail收集并将日志发送给Loki的 Distributor 组件

  2. Distributor会对接收到的日志流进行正确性校验,并将验证后的日志分批并行发送到Ingester

  3. Ingester 接受日志流并构建数据块,压缩后存放到所连接的存储后端

  4. Querier 收到HTTP查询请求,并将请求发送至Ingester 用以获取内存数据 ,Ingester 收到请求后返回符合条件的数据 ;

    如果 Ingester 没有返回数据,Querier 会从后端存储加载数据并遍历去重执行查询 ,通过HTTP返回查询结果。

Loki与ELK比较

  • ELK功能丰富,但是架构复杂,资源占用高,很多功能系统用不上,造成很多资源浪费。
  • ELK进行全文索引。安装部署复杂。
  • Loki不对日志全文索引。通过存储压缩非结构化日志和仅索引元数据,Loki 操作起来会更简单,更省成本。
  • Loki通过使用与 Prometheus 相同的标签记录流对日志进行索引和分组,这使得日志的扩展和操作效率更高。
  • Loki安装部署简单快速,且受 Grafana 原生支持。

假如系统依赖于ES,建议使用ELK作为日志系统。若系统不依赖ES,选择用Loki。

安装部署Loki

使用docker-compose安装

编写docker-compose.yaml文件

version: "3"

networks:
loki: services:
loki:
container_name: loki
image: grafana/loki:1.5.0
ports:
- "3100:3100"
command: -config.file=/etc/loki/local-config.yaml
networks:
- loki promtail:
container_name: promtail
image: grafana/promtail:1.5.0
volumes:
- /home/chinda/logs:/var/log
- /mydata/loki/promtail/promtail.yaml:/etc/promtail/docker-config.yaml
command: -config.file=/etc/promtail/docker-config.yaml
networks:
- loki grafana:
container_name: grafana
image: grafana/grafana:latest
ports:
- "3000:3000"
networks:
- loki

注意: 数据卷需将promtail.yaml文件创建出来。

配置promtail.yaml

server:
http_listen_port: 9080
grpc_listen_port: 0 positions:
filename: /tmp/positions.yaml clients:
- url: http://loki:3100/loki/api/v1/push scrape_configs:
- job_name: system
static_configs:
- targets:
- localhost
labels:
job: varlogs
__path__: /var/log/*log

运行容器

docker-compose -f docker-compose.yaml up -d

配置Grafand

  1. 登录到Grafana实例。 如果这第一次运行Grafana,则用户名和密码均默认为admin。
  2. 在Grafana中,通过左侧栏中的齿轮图标提添加数据源。
  3. 选择Loki数据源
  4. 添加监听接口http://loki:3100
  5. 左侧栏中的Explore中选择labels查看日志。

UI控制台

http://localhost:3000

账号:admin

密码: admin

Docker(七): 安装Loki的更多相关文章

  1. Docker - CentOS 安装 Docker 和 Docker-Compose

    目录 介绍 Docker Docker-Conpose 安装 Docker CE 系统要求 使用 YUM 安装 配置加速器 安装 Docker-Compose 介绍 Docker Docker 是一个 ...

  2. docker容器使用loki收集日志

    docker-compose安装loki套件(loki+promtail+grafana) loki进行日志聚合处理  类似elk中的es promtail是日志收集,类似elk中的logstash ...

  3. docker——容器安装tomcat

    写在前面: 继续docker的学习,学习了docker的基本常用命令之后,我在docker上安装jdk,tomcat两个基本的java web工具,这里对操作流程记录一下. 软件准备: 1.jdk-7 ...

  4. docker 启动安装等命令

    确认是否安装url whereis curl 启动docker服务: sudo service docker start sudo service docker stop 安装curl sudo ap ...

  5. DOCKER windows安装

    DOCKER windows安装 1.下载程序包 2. 设置环境变量 3. 启动DOCKERT 4. 分析start.sh 5. 利用SSH工具管理 6. 下载镜像 6.1 下载地址 6.2 用FTP ...

  6. 在docker里面安装部署应用

    最近一直在做docker的安装打包工作,学到不少东西,在博客里记一下. 环境centos6 ,docker 基础镜象centos6 1.创建本地基础镜象,安装基础命令包 (1)Dockerfile,D ...

  7. Docker Centos安装Redis以及问题处理

    之前一篇文章 Redis安装及主从配置 介绍了redis的安装配置,另一篇文件介绍了 Docker Centos安装Openssh .今天将两篇文件结合一下——在Docker Centos环境下搭建r ...

  8. Docker Centos安装Mysql5.6

    之前一篇随笔<Docker Centos安装Openssh> 写的是如何在基础的centos镜像中搭建ssh服务,在此基础上再搭建其他服务.本文继续介绍在centos_ssh基础上搭建my ...

  9. Docker的安装及简单使用

    1.  Docker的安装 (这里的“安装docker”其实就是安装Docker Engine) $ sudo apt-get intasll docker.io note: apt-get是ubun ...

随机推荐

  1. Druid配置和初始化参数 转发地址图片有

    配置数据源 1.添加上 Druid 数据源依赖. <!-- https://mvnrepository.com/artifact/com.alibaba/druid --> <dep ...

  2. 3dmax利用静止静态对象功能,制作精准击碎效果

    一般情况下,当我们在3D建模中使用RayFire破碎插件来制作一些精准击碎效果时,需要将物体的击中部分定义为休眠对象,将其他未击中的部分定义为静态对象,以实现击中部分出现碎片的效果.但这种方式必须精准 ...

  3. 怎么用导图软件iMindMap整理C语言知识点

    C语言是一门非常基础的编程语言,学习它的难点不在于语言的理解,而在于繁琐的记忆点,而当我们使用思维导图将细碎的知识点拉到框架中去后,C语言的难度就大大降低了. 接下来就为大家介绍一下我使用iMindM ...

  4. python中操作excel数据 封装成一个类

    本文用python中openpyxl库,封装成excel数据的读写方法 from openpyxl import load_workbook from openpyxl.worksheet.works ...

  5. symfony框架学习

    http://mozilla.com.cn/thread-52722-1-1.html安装网页翻译插件 symfony2是基于php的web框架 http://www.chrisyue.com/sym ...

  6. Vuex form表单处理, 比官网更好的办法

    Vuex form表单处理, 比官网更好的办法 问题, 当使用vuex的state作为表单的v-model元素, 虽然简单粗暴, 但这种修改没有经过mutation方法. 在严格模式下会抛出错误 目录 ...

  7. 【海思】Hi3531A SPI功能的详细配置以及使用

    目录 一.前言 二.SPI管脚信息获取 2.1 SPI_SCLK.SPI_SDI.SPI_SDO管脚复用寄存器 2.2 片选SPI_CSN0-SPI_CSN3管脚寄存器 三.配置和使能与SPI相关的管 ...

  8. Win搭建JAVA环境

    一:下载JDK 下载链接:https://www.oracle.com/java/technologies/javase-downloads.html 选择你的系统环境进行下载 二:安装JDK 直接运 ...

  9. Spring 源码阅读环境的搭建

    前言 本文记录了 Spring 源码环境的搭建方式,以及踩过的那些坑!​当前版本:5.3.2-SNAPSHOT. 环境准备 Git JDK master 分支需要 JDK 11 5.2.x 分支, J ...

  10. Java蓝桥杯——排序练习:选美大赛

    选美大赛 在选美大奖赛的半决胜赛现场,有一批选手参加比赛,比赛的规则是最后得分越高,名次越低.当半决决赛结束时,要在现场按照选手的出场顺序宣布最后得分和最后名次,获得相同分数的选手具有相同的名次,名次 ...