前言

  • 简述:loki是由grafana开源的日志聚合系统,相较于ELK、EFK更轻量。
  • loki特性:
    • 不对日志进行全文索引。通过存储压缩非结构化日志和仅索引元数据,Loki 操作起来会更简单,更省成本。
    • 通过使用与 Prometheus 相同的标签记录流对日志进行索引和分组,这使得日志的扩展和操作效率更高,能对接 alertmanager;
    • 特别适合储存 Kubernetes Pod 日志;诸如 Pod 标签之类的元数据会被自动删除和编入索引;
    • Grafana原生支持
  • 版本:
    • 系统:centos7
    • loki:2.6.1
    • promtail:2.6.1
    • grafana: 8.3.3

本文以loki监控nginx日志为例。nginx日志所在目录为 /home/admin/apps/nginx/logs/

安装loki

docker方式

PS: 未经测试

docker pull grafana/loki
wget https://raw.githubusercontent.com/grafana/loki/v2.6.1/cmd/loki/loki-local-config.yaml -O loki-config.yaml
docker run --name loki -d -v $(pwd):/mnt/config -p 3100:3100 grafana/loki:2.6.1 -config.file=/mnt/config/loki-config.yaml

二进制方式

  1. 官方GitHub仓库的Release页下载压缩包并解压
  2. 编辑loki-config.yaml
auth_enabled: false

server:
http_listen_port: 3100
grpc_listen_port: 9096 ingester:
wal:
enabled: true
dir: /home/apps/loki/wal
lifecycler:
address: 127.0.0.1
ring:
kvstore:
store: inmemory
replication_factor: 1
final_sleep: 0s
chunk_idle_period: 1h # Any chunk not receiving new logs in this time will be flushed
max_chunk_age: 1h # All chunks will be flushed when they hit this age, default is 1h
chunk_target_size: 1048576 # Loki will attempt to build chunks up to 1.5MB, flushing first if chunk_idle_period or max_chunk_age is reached first
chunk_retain_period: 30s # Must be greater than index read cache TTL if using an index cache (Default index read cache TTL is 5m)
max_transfer_retries: 0 # Chunk transfers disabled schema_config:
configs:
- from: 2020-10-24
store: boltdb-shipper
object_store: filesystem
schema: v11
index:
prefix: index_
period: 24h storage_config:
boltdb_shipper:
active_index_directory: /home/apps/loki/boltdb-shipper-active
cache_location: /home/apps/loki/boltdb-shipper-cache
cache_ttl: 24h # Can be increased for faster performance over longer query periods, uses more disk space
shared_store: filesystem
filesystem:
directory: /home/apps/loki/chunks compactor:
working_directory: /home/apps/loki/boltdb-shipper-compactor
shared_store: filesystem limits_config:
reject_old_samples: true
reject_old_samples_max_age: 168h chunk_store_config:
max_look_back_period: 0s table_manager:
retention_deletes_enabled: false
retention_period: 0s ruler:
storage:
type: local
local:
directory: /home/apps/loki/rules
rule_path: /home/apps/loki/rules-temp
alertmanager_url: http://localhost:9093
ring:
kvstore:
store: inmemory
enable_api: true
  1. 启动
./loki -config.file=loki-config.yaml > /dev/null 2>&1 &

安装promtail

docker方式

PS: 未经测试

wget https://raw.githubusercontent.com/grafana/loki/v2.6.1/clients/cmd/promtail/promtail-docker-config.yaml -O promtail-config.yaml
docker run --name promtail -d -v $(pwd):/mnt/config -v /var/log:/var/log --link loki grafana/promtail:2.6.1 -config.file=/mnt/config/promtail-config.yaml

二进制方式

  1. 官方GitHub仓库Release页下载压缩包并解压
  2. 编辑promtail-config.yaml
server:
http_listen_port: 9080
grpc_listen_port: 0 positions:
filename: /tmp/positions.yaml clients:
- url: http://192.168.2.249:3100/loki/api/v1/push scrape_configs:
- job_name: nginx
static_configs:
- targets:
- 192.168.2.249
labels:
job: varlogs
__path__: /home/admin/apps/nginx/logs/*log
  1. 启动
nohup ./promtail -config.file=promtail-config.yaml > /dev/null 2>&1 &

安装grafana

  1. 创建容器并运行
docker pull 'grafana/grafana:latest'
docker run --name grafana -p 3000:3000 -d 'grafana/grafana:latest'
  1. 浏览器访问ip:3000,账密默认为:admin/admin
  2. 配置loki数据源

参考

[loki]轻量级日志聚合系统loki快速入门的更多相关文章

  1. 安装 loki 轻量级日志监控系统

    文章转载自:https://www.cnblogs.com/flypig666/archive/2004/01/13/14151801.html 从本文中学习到的是docker-compose相关命令 ...

  2. 搭建Loki、Promtail、Grafana轻量级日志系统(centos7)

    搭建Loki.Promtail.Grafana轻量级日志系统(centos7)--简称PLG 需求 公司项目采用微服务的架构,服务很多,每个服务都有自己的日志,分别存放在不同的服务器上.当查找日志时需 ...

  3. 10分钟学会使用 Loki 日志聚合系统

    Loki 是一个由Grafana Labs 开发的开源日志聚合系统,旨在为云原生架构提供高效的日志处理解决方案. Loki 通过使用类似 Prometheus 的标签索引机制来存储和查询日志数据,这使 ...

  4. Centos部署Loki日志聚合系统

    关于一些日志聚合由来及原理科普见我的另外一篇 <编程入门之日志聚合系统> https://www.cnblogs.com/uncleguo/p/15948763.html Loki日志聚合 ...

  5. 轻量级日志收集方案Loki

    先看看结果有多轻量吧 官方文档:https://grafana.com/docs/loki/latest/ 简介 Grafana Loki 是一个日志聚合工具,它是功能齐全的日志堆栈的核心. Loki ...

  6. 使用 Loki 进行日志报警(一)

    转载自:https://mp.weixin.qq.com/s?__biz=MzU4MjQ0MTU4Ng==&mid=2247492352&idx=1&sn=9c0cc7927b ...

  7. Grafana 系列文章(九):开源云原生日志解决方案 Loki 简介

    简介 Grafana Labs 简介 Grafana 是用于时序数据的事实上的仪表盘解决方案.它支持近百个数据源. Grafana Labs 想从一个仪表盘解决方案转变成一个可观察性 (observa ...

  8. 【xAsset框架】HFS 轻量级HTTP Server快速入门指南

    一.引子 最近马三有幸参与开发了一个简易轻量的Unity资源管理框架 xAsset ,xasset 提供了一种使用资源路径的简单的方式来加载资源,简化了Unity项目资源打包,更新,加载,和回收的作业 ...

  9. ELK快速入门(四)filebeat替代logstash收集日志

    ELK快速入门四-filebeat替代logstash收集日志 filebeat简介 Filebeat是轻量级单用途的日志收集工具,用于在没有安装java的服务器上专门收集日志,可以将日志转发到log ...

  10. ELK快速入门(二)通过logstash收集日志

    ELK快速入门二-通过logstash收集日志 说明 这里的环境接着上面的ELK快速入门-基本部署文章继续下面的操作. 收集多个日志文件 1)logstash配置文件编写 [root@linux-el ...

随机推荐

  1. .NET Core 离线生成 Tron 波场私钥和地址笔记

    NuGet 引入依赖库 PM> Install-Package Tron.Wallet.Net 随机生成私钥和对应的地址 using Tron.Wallet.Net; namespace Con ...

  2. SICP:元循环求值器(Python实现)

    求值器完整实现代码我已经上传到了GitHub仓库:TinySCM,感兴趣的童鞋可以前往查看.这里顺便强烈推荐UC Berkeley的同名课程CS 61A. 在这个层次结构的最底层是对象语言.对象语言只 ...

  3. drf——全局处理异常、接口文档、jwt介绍、based64编码与解码

    全局异常处理原理 # 对于前端来讲,后端即便报错,也要返回统一的格式,前端便于处理 {code:999,msg:'系统异常,请联系系统管理员'} # 只要三大认证,视图类的方法出了异常,都会执行一个函 ...

  4. 源码解析:django的CSRF认证

    详解Django的CSRF认证 1.csrf原理 csrf要求发送post,put或delete请求的时候,是先以get方式发送请求,服务端响应时会分配一个随机字符串给客户端,客户端第二次发送post ...

  5. rest-framework 视图类源码分析

    从miminx 类开始,依次有子类RetrieveModelMixin(单个get 请求)) ,ListModelMixin(LIST请求),CreateModelMixin(POST请求),Upda ...

  6. R 语言主成分分析(PCA)实战教程

    作者:落痕的寒假原文:https://blog.csdn.net/LuohenYJ/article/details/97950522 声明:本文章经原作者同意后授权转载. 主成分分析 Principa ...

  7. tryhackme-Agent Sudo

    描述:您在深海下发现了一个秘密服务器.你的任务是侵入服务器内部并揭露真相. 枚举 nmap -sV -T4 -v 10.10.123.164 NSE: Script scanning 10.10.12 ...

  8. [ARM汇编]计算机原理与数制基础—1.1.3 二进制补码

    在计算机中,为了表示有符号整数(即正数和负数),通常采用二进制补码表示法.二进制补码不仅可以表示负数,还能简化计算机的加法和减法运算.接下来,我们将介绍二进制补码的概念及其计算方法. 原码.反码和补码 ...

  9. JavaWeb中Servlet、web应用和web站点的路径细节("/"究竟代表着什么)

    JavaWeb中Servlet.web应用和web站点的路径细节("/"究竟代表着什么) 1 开门见山 新建一个tomcat web项目,配置tomcat的虚拟目录,取默认值(/项 ...

  10. k8s驱逐篇(7)-kube-controller-manager驱逐-taintManager源码分析

    概述 taintManager的主要功能为:当某个node被打上NoExecute污点后,其上面的pod如果不能容忍该污点,则taintManager将会驱逐这些pod,而新建的pod也需要容忍该污点 ...