一、简 介

Loki是受Prometheus启发由Grafana Labs团队开源的水平可扩展,高度可用的多租户日志聚合系统。 开发语言: Google Go。它的设计具有很高的成本效益,并且易于操作。使用标签来作为索引,而不是对全文进行检索,也就是说,你通过这些标签既可以查询日志的内容也可以查询到监控的数据签,极大地降低了日志索引的存储。系统架构十分简单,由以下3个部分组成 :

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

只要在应用程序服务器上安装promtail来收集日志然后发送给Loki存储,就可以在Grafana UI界面通过添加Loki为数据源进行日志查询(如果Loki服务器性能不够,可以部署多个Loki进行存储及查询)。作为一个日志系统不关只有查询分析日志的能力,还能对日志进行监控和报警

二、系 统 架 构

  1. promtail收集并将日志发送给loki的 Distributor 组件

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

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

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

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

三、与 ELK 比 较

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

四、安 装 示 例

1)下载安装包以及获取默认配置文件

loki、promtail、grafana官网、loki-local-config.yaml、promtail-local-config.yaml

curl -O -L "https://github.com/grafana/loki/releases/download/v1.5.0/loki-linux-amd64.zip"
curl -O -L "https://github.com/grafana/loki/releases/download/v1.5.0/promtail-linux-amd64.zip"
wget https://dl.grafana.com/oss/release/grafana-7.1.1.linux-amd64.tar.gz
wget https://raw.githubusercontent.com/grafana/loki/master/cmd/loki/loki-local-config.yaml
wget https://raw.githubusercontent.com/grafana/loki/master/cmd/promtail/promtail-local-config.yaml

注:配置文件也可自行创建编写

2)解压安装包至指定目录(/data/software/loki/)
unzip -q loki-linux-amd64.zip -d /data/software/loki/
unzip -q promtail-linux-amd64.zip -d /data/software/loki/
3)将配置文件放置在指定目录(/data/software/loki/etc/)
mv loki-local-config.yaml /data/software/loki/etc/
mv promtail-local-config.yaml /data/software/loki/etc/
4)修改配置文件
vim loki-local-config.yaml
auth_enabled: falseserver:http_listen_port: 3100     #监听的端口ingester:lifecycler:address: 127.0.0.1ring:kvstore:store: inmemoryreplication_factor: 1final_sleep: 0schunk_idle_period: 5mchunk_retain_period: 30smax_transfer_retries: 0schema_config:configs:- from: 2020-07-29store: boltdbobject_store: filesystemschema: v11index:prefix: index_period: 168hstorage_config:boltdb:directory: /data/loki/index   #自定义boltdb目录filesystem:directory: /data/loki/chunks #自定义filesystem目录limits_config:enforce_metric_name: falsereject_old_samples: truereject_old_samples_max_age: 168hchunk_store_config:max_look_back_period: 0stable_manager:retention_deletes_enabled: falseretention_period: 0s
vim promtail-local-config.yaml
# Promtail服务配置
server:http_listen_port: 9080grpc_listen_port: 0# 记录读取日志的位置信息文件,Promtail重新启动时需要它
positions:filename: /tmp/positions.ymal# Loki的api服务的地址
clients:- url: http://192.168.8.110:3100/loki/api/v1/pushscrape_configs:
# ngxin日志收集并打标签- job_name: nginx     # 服务名称static_configs:- targets:- localhost   # 目标服务器名称labels:job: nginx-error  # 作业名称host: localhost   # 服务器地址__path__: /var/log/*log     #服务器日志路径
docker-composer.yml

vim docker-compose-monitor.yml (promtail采集程序不建议采用docker安装)

[root@localhost config]# mkdir -p /opt/loki/index
[root@localhost config]# mkdir -p /opt/loki/chunks
docker-compose -f docker-compose-loki.yml up -d     #启动
docker-compose -f docker-compose-loki.yml down      #关闭
docker restart lokidocker logs prometheus
docker logs node-exporter
docker logs cadvisor
docker logs grafana
docker logs alertmanager
docker logs loki
docker logs promtail
#检查端口是否开启
ss -ntlp | grep -E '9090|9100|8080|3000|9093|3100'
version: '3.1'
networks:monitor:driver: bridge
services:prometheus:image: prom/prometheuscontainer_name: prometheushostname: prometheusrestart: alwaysenvironment:- TZ=Asia/Shanghai- LANG=zh_CN.UTF-8volumes:- /opt/prometheus/config/prometheus.yml:/etc/prometheus/prometheus.yml- /opt/prometheus/config/node_down.yml:/etc/prometheus/node_down.ymlports:- "9090:9090"networks:- monitoralertmanager:image: prom/alertmanagercontainer_name: alertmanagerhostname: alertmanagerrestart: alwaysenvironment:- TZ=Asia/Shanghai- LANG=zh_CN.UTF-8volumes:- /opt/prometheus/config/alertmanager.yml:/etc/alertmanager/alertmanager.ymlports:- "9093:9093"networks:- monitorgrafana:image: grafana/grafanacontainer_name: grafanahostname: grafanarestart: alwaysenvironment:- TZ=Asia/Shanghai- LANG=zh_CN.UTF-8ports:- "3000:3000"networks:- monitornode-exporter:image: quay.io/prometheus/node-exportercontainer_name: node-exporterhostname: node-exporterrestart: alwaysenvironment:- TZ=Asia/Shanghai- LANG=zh_CN.UTF-8ports:- "9100:9100"networks:- monitorcadvisor:image: google/cadvisor:latestcontainer_name: cadvisorprivileged: truehostname: cadvisorrestart: alwaysenvironment:- TZ=Asia/Shanghai- LANG=zh_CN.UTF-8volumes:- /:/rootfs:ro- /var/run:/var/run:ro- /sys:/sys:ro- /var/lib/docker/:/var/lib/docker:ro- /dev/disk/:/dev/disk:ro ports:- "8080:8080"networks:- monitorloki:image: grafana/loki:latestcontainer_name: lokihostname: lokirestart: alwaysenvironment:- TZ=Asia/Shanghai- LANG=zh_CN.UTF-8volumes:- /opt/loki/config/loki-local-config.yaml:/etc/loki/loki-local-config.yaml- /opt/loki/index :/data/loki/index- /opt/loki/chunks:/data/loki/chunksports:- "3100:3100"command: -config.file=/etc/loki/loki-local-config.yamlnetworks:- monitorpromtail:image: grafana/promtailcontainer_name: promtailhostname: promtailrestart: alwaysenvironment:- TZ=Asia/Shanghai- LANG=zh_CN.UTF-8volumes:- /opt/prometheus/config/promtail-local-config.yaml:/etc/promtail/promtail-local-config.yamlcommand: -config.file=/etc/promtail/promtail-local-config.yamlnetworks:- monitor
5)Grafana安装:
tar -xf grafana-7.1.1.linux-amd64.tar.gz -C /data/software/
6)启动服务(先启loki):
nohup /data/software/loki/loki-linux-amd64 -config.file=/data/software/loki/etc/loki-local-config.yaml &nohup /data/software/loki/promtail-linux-amd64 -config.file=/data/software/loki/etc/promtail-local-config.yaml &nohup /data/software/grafana-7.1.1/bin/grafana-server web &

注:每次启动完可以查看所在目录的nohup.out,查看启动情况

五、使 用 示 例

1)浏览器登陆地址:http://127.0.0.1:3000 访问Grafana,首次登陆默认用户名和密码都是 admin,登录后会提示修改密码。http://192.168.8.110:3100

2)进入Data Sources添加数据源,选择Loki,URL为loki的地址: http://127.0.0.1:3100 ,Name自己定义

3)然后进入Explore就可以搜索查询日志了,日志查询由两部分组成:日志流选择器搜索表达式。出于性能原因,需要先通过选择日志标签来选择日志流。查询字段Log labels旁边的按钮显示了可用日志流的标签列表

标签匹配符:

  • = 完全相等。

  • != 不相等。

  • =~ 正则表达式匹配。

  • !~ 不进行正则表达式匹配。

    例:{job=“UMG-log”,filename=“/home/zoehuawang/loki/UMG.07.18.15-40-07.log”}

搜索表达式:

  • |= 行包含字符串。

  • != 行不包含字符串。

  • |~ 行匹配正则表达式。

  • !~ 行与正则表达式不匹配。

    例:{job=“UMG-log”} |= “07.18” |= “[-973]” != “0xffffffff”

点击了解适用于Loki的logstash插件使用方法

日志系统Loki安装部署相关推荐

  1. 轻量级日志分析PLG平台Loki安装部署及使用(promtail+loki+Grafana)

    轻量级日志分析PLG平台Loki安装部署及使用(promtail+loki+Grafana) Loki简介 简介 ​ Loki是 Grafana Labs 团队最新的开源项目,是一个水平可扩展,高可用 ...

  2. RHEL6 最小化系统 编译安装部署zabbix (mysql)

    RHEL6 最小化系统 编译安装部署zabbix (mysql) 官方说明详细见:https://www.zabbix.com/documentation/4.0/manual/installatio ...

  3. 交通数据分析系统:安装部署

    文章目录 交通数据分析系统:安装部署 1.实验描述 2.实验环境 3.相关技能 4.知识点 5.效果图 6.实验步骤 7.总结 交通数据分析系统:安装部署 1.实验描述 出租车数据分析实验环境安装部署 ...

  4. loki 日志管理的安装部署使用

    loki介绍 Loki是 Grafana Labs 团队最新的开源项目,是一个水平可扩展,高可用性,多租户的日志聚合系统.它的设计非常经济高效且易于操作,因为它不会为日志内容编制索引,而是为每个日志流 ...

  5. 轻量级日志系统Loki原理简介和使用

    前言 这篇文章应朋友的要求,让写一篇loki日志系统,咱定义不容辞 一定要好好写 开干! 现实中的需求 公司的容器云运行的应用或某一个节点出现了问题,解决的思路 问题首先被prometheus监控 1 ...

  6. 日志系统----Loki日志新贵

    Loki 一.Loki简介(译) 二.helm部署Loki 1.环境准备 2.helm部署Loki 三.grafana使用简单说明 一.Loki简介(译) Like Prometheus, but f ...

  7. [运维] 在CentOS7系统上安装部署wok

    系统环境说明 系统:CentOS-7-x86_64-2009 平台:x86-64 使用到的工具安装 git安装 yum install git 软件下载 采用编译安装,源代码获取 git clone ...

  8. 创业公司 互联网架构方案 整体技术栈 基础设施 数据库 服务治理 消息中间件 日志系统 ELK 自动化部署

    欢迎关注博主公众号:[矿洞程序员]文章由陈晓阳原创. 本人微信:chenxiaoyangzxy. 免费提供本人大量学习资料. 从零开始搭建创业公司后台技术栈 原创: 潘锦 说到后台技术栈,脑海中是不是 ...

  9. weblogic12 linux部署,linux系统中安装部署weblogic12.1.3

    问题: 此 Oracle 软件未经当前操作系统认证. 建议案: 确保在正确的平台上安装软件. 警告: 检查:CertifiedVersions 失败. 开始检查: CheckJDKVersion 预期 ...

最新文章

  1. Java后台 自动 翻页查询
  2. 面试题:一条 sql 语句是如何经过 MySQL 的体系结构的?
  3. lisp不是函授型语言_【神奇的函数式编程语言的独特功能】Lisp 的运行期修改、编译代码,并替换当前运行版本的试验...
  4. Qt中QTableWidget用法总结
  5. python语言是非跨平台语言吗_python是跨平台的语言吗
  6. cms安装教程Linux,DoraCMS安装教程(linux)
  7. 在BingoCC上面解析域名实现智能路由
  8. ISO9126软件质量模型
  9. Spring包的方法WebUtils.getParametersStartingWith(request,String)
  10. websocket 带头部信息请求 header_BeetleX之Websocket协议分析详解
  11. (图论)51NOD 1298 圆与三角形
  12. java旅游管理系统(带文档
  13. Maven 教程:IDEA开发环境中maven 项目配置JDK9,JDK10,JDK11,JDK12..等EA版本的配置方法 系列教程二
  14. code405是什么意思_HTTP协议状态码详解(HTTP Status Code)
  15. 洛谷P2668 斗地主
  16. mongoose 更新保存数据的时候自动插入__v
  17. MSYS 1.0.11 + MinGW安装方法
  18. 机器翻译与编码-解码模型 Machine Translation and Encoder-Decoder Models
  19. 奉劝那些刚参加工作的学弟学妹们:要想进大厂,这些并发编程知识是你必须要掌握的!完整学习路线!!(建议收藏)
  20. eeepc 运用本领

热门文章

  1. AI智能外呼电销机器人厂家哪家好
  2. 隐藏文件无法取消隐藏属性的解决[转]
  3. LCP创建bond接口
  4. 2021道路运输安全员考试判断练习题库
  5. java面试基础问题答不上来怎么办,快来看鸭~
  6. 随笔.记忆是有味道的
  7. 客服打字速度慢怎么提高效率
  8. 2012年半程最佳Android应用盘点
  9. 西安科技大学计算机图形学课程设计,长方体体的光照效果计算机图形学课程设计...
  10. TiUP部署 TiDB 数据库集群