Docker(七): 安装Loki
洛基(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展示。
系统架构

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。
安装部署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
- 登录到Grafana实例。 如果这第一次运行Grafana,则用户名和密码均默认为admin。
- 在Grafana中,通过左侧栏中的齿轮图标提添加数据源。
- 选择Loki数据源
- 添加监听接口http://loki:3100
- 左侧栏中的Explore中选择labels查看日志。
UI控制台
http://localhost:3000
账号:admin
密码: admin
Docker(七): 安装Loki的更多相关文章
- Docker - CentOS 安装 Docker 和 Docker-Compose
目录 介绍 Docker Docker-Conpose 安装 Docker CE 系统要求 使用 YUM 安装 配置加速器 安装 Docker-Compose 介绍 Docker Docker 是一个 ...
- docker容器使用loki收集日志
docker-compose安装loki套件(loki+promtail+grafana) loki进行日志聚合处理 类似elk中的es promtail是日志收集,类似elk中的logstash ...
- docker——容器安装tomcat
写在前面: 继续docker的学习,学习了docker的基本常用命令之后,我在docker上安装jdk,tomcat两个基本的java web工具,这里对操作流程记录一下. 软件准备: 1.jdk-7 ...
- docker 启动安装等命令
确认是否安装url whereis curl 启动docker服务: sudo service docker start sudo service docker stop 安装curl sudo ap ...
- DOCKER windows安装
DOCKER windows安装 1.下载程序包 2. 设置环境变量 3. 启动DOCKERT 4. 分析start.sh 5. 利用SSH工具管理 6. 下载镜像 6.1 下载地址 6.2 用FTP ...
- 在docker里面安装部署应用
最近一直在做docker的安装打包工作,学到不少东西,在博客里记一下. 环境centos6 ,docker 基础镜象centos6 1.创建本地基础镜象,安装基础命令包 (1)Dockerfile,D ...
- Docker Centos安装Redis以及问题处理
之前一篇文章 Redis安装及主从配置 介绍了redis的安装配置,另一篇文件介绍了 Docker Centos安装Openssh .今天将两篇文件结合一下——在Docker Centos环境下搭建r ...
- Docker Centos安装Mysql5.6
之前一篇随笔<Docker Centos安装Openssh> 写的是如何在基础的centos镜像中搭建ssh服务,在此基础上再搭建其他服务.本文继续介绍在centos_ssh基础上搭建my ...
- Docker的安装及简单使用
1. Docker的安装 (这里的“安装docker”其实就是安装Docker Engine) $ sudo apt-get intasll docker.io note: apt-get是ubun ...
随机推荐
- ABBYY FineReader 与尚书七号OCR的对比
ABBYY FineReader 与尚书七号OCR都是帮助我们识别文字的工具,使用的都是OCR技术,如今文字识别工具是我们学习和工作经常会使用的,它们的功能是否实用和好用?现在通过对比的方式来探讨. ...
- 两种方式教你搞定在mac中格式化磁盘的问题
mac怎么格式化u盘?想必这是大部分苹果用户都会关心的一个问题.格式化u盘在我们日常工作中算是一个比较常规的操作了.但是在mac中随着系统版本不一样,格式化的方式也略有差别.今天,小编将以Mac OS ...
- NOIP2012 解题报告
TG Day1 T3 开车旅行 1. 预处理出从每座城市两人分别会到达的两座城市. 用 set 可以轻松实现. 2. 用倍增优化 DP 令 \(f_{i,j,k}\) 表示从城市 \(j\) 出发,行 ...
- 2016年第七届蓝桥杯【C++省赛B组】F、G、H、J 题解
F. 方格填数 #深搜 题意 有\(10\)个格子,填入0~9的数字.要求:连续的两个数字不能相邻.(左右.上下.对角都算相邻),求可能的填数方案数. +--+--+--+ | | | | +--+- ...
- Grakn Forces 2020 ABCDE题解
看到老外评论区中说,这场的难度估计是\(div.1\)和\(div.1.5\)的合并 A. Circle Coloring #构造 题目链接 题意 给定三个长度为\(n\)数组\(a,b,c\),要你 ...
- @Transactional自调用问题
- dubbo起停之服务注解
开始之前建议先去了解spring的BeanDefinition可以参考下这里:https://www.jianshu.com/p/56e42e82e9a0 当用户使用注解@DubboComponent ...
- 利用Postman和Chrome的开发者功能探究项目
利用Postman和Chrome的开发者功能探究项目 controller层研究 前两天忙着写开题报告,没有来得及做项目,今天继续研究一下这个项目. 上次研究到后端的DAO层,研究了一下后端和数据库交 ...
- JDk8的新特性-流和内部iteration
JDK8到今天已经出了好几年了 但是在公司能用到新特性的地方还是很少, 去年的时候当时项目老大要求我们用最新的写法来写Java 刚开始看到用stream写出来的代码一脸懵逼,内心就在想 这是Jav ...
- Ubuntu\Linux 下编写及调试C\C++
一.在Ubuntu\Linux 下编写及调试C\C++需要配置基本的环境,即配置gcc编译器.安装vim编译器,具体配置安装步骤我在这里就不多说了. 二.基本环境配置完了我们就可以进入自己的程序编写了 ...