轻量级日志系统——Loki

目录

一、loki简介

二、Loki 快速上手

第一步安装 Loki

 第二步安装 Promtail

第三步安装granafa

三、LogQL 语法 

 四、Loki收集nginx日志

1、修改nginx配置

2、nginx服务器上安装promtail

3、添加doshbarod 


一、loki简介

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

二、Loki 快速上手

        Loki 作为日志系统的后起之秀,设计上可以说非常优秀,设计的理念就是为了让日志聚合更简单,它被设计为非常经济高效且易于操作。它不索引日志的内容,而是为每个日志流设置一组标签。它主要由三部分组成。
与其他日志聚合系统相比, Loki 具有下面的一些特性:
不对日志进行全文索引。通过存储压缩非结构化日志和仅索引元数据, Loki 操作起来会更简
单,更省成本。
通过使用与 Prometheus 相同的标签记录流对日志进行索引和分组,这使得日志的扩展和操
作效率更高。
特别适合储存 Kubernetes Pod 日志 ; 诸如 Pod 标签之类的元数据会被自动删除和编入索引

各日志收集组件简单对比

名称
安装的组件
优点
ELK/EFK
elasticsearch logstash
kibana filebeat kafka/redis
支持自定义 grok 正则解析复杂日志内容;
dashboard 支持主富的可视化展示
Loki
grafana loki promtail
占用资源小; grafana 原生支持;查询速度快

 官方地址:https://grafana.com/oss/loki/

文档地址: https://grafana.com/docs/grafana/latest/features/datasources/loki/
git 地址: https://github.com/grafana/loki/blob/master/docs/README.md
下载地址: Releases · grafana/loki (github.com)

第一步安装 Loki

简单介绍下 Loki
Grafana Loki 是一个日志聚合工具,它是功能齐全的日志堆栈的核心。
Loki 是一个为有效保存日志数据而优化的数据存储。日志数据的高效索引将 Loki 与其他日志系统区分开来,
与其他日志系统不同, Loki 索引是根据标签构建的,原始日志消息未编入索引。
yum install -y https://github.com/grafana/loki/releases/download/v2.9.8/loki-2.9.8.x86_64.rpm# 配置文件详解
[root@k8s-master01 ~]# cat /etc/loki/config.yml 
auth_enabled: falseserver:http_listen_port: 3100    #http访问端口grpc_listen_port: 9096    #rpc访问端口common:instance_addr: 192.168.186.100    #修改为自己的IP或localhostpath_prefix: /tmp/lokistorage:filesystem:chunks_directory: /tmp/loki/chunks    #记录块存储目录,默认chunks块上的日志数量或
到期后,将chunks数据打标签后存储rules_directory: /tmp/loki/rules    #规则配置目录replication_factor: 1ring:kvstore:store: inmemoryquery_range:        #查询规则results_cache:    #结果缓存cache:embedded_cache:    #默认开启后会有提示,未配置缓存项,可以暂不开启enabled: truemax_size_mb: 100schema_config:    #配置索引信息configs:- from: 2020-10-24store: boltdb-shipperobject_store: filesystemschema: v11index:prefix: index_    #索引前缀period: 24h        #索引时长ruler:alertmanager_url: http://localhost:9093# By default, Loki will send anonymous, but uniquely-identifiable usage and configuration
# analytics to Grafana Labs. These statistics are sent to https://stats.grafana.org/
#
# Statistics help us better understand how Loki is used, and they show us performance
# levels for most users. This helps us prioritize features and documentation.
# For more information on what's sent, look at
# https://github.com/grafana/loki/blob/main/pkg/usagestats/stats.go
# Refer to the buildReport method to see what goes into a report.
#
# If you would like to disable reporting, uncomment the following lines:
#analytics:
#  reporting_enabled: false# 启动服务
systemctl enable --now loki

 第二步安装 Promtail

yum install -y https://github.com/grafana/loki/releases/download/v2.9.8/promtail-2.9.8.x86_64.rpm# 配置文件详解 /etc/promtail/config.yml
[root@k8s-master01 ~]# cat /etc/promtail/config.yml 
# This minimal config scrape only single log file.
# Primarily used in rpm/deb packaging where promtail service can be started during system init process.
# And too much scraping during init process can overload the complete system.
# https://github.com/grafana/loki/issues/11398server:http_listen_port: 9080grpc_listen_port: 0positions:filename: /tmp/positions.yaml    #用于记录每次读取日志文件的索引行数,如:promtail重启后从该配置中恢复日志文件的读取位置clients:
- url: http://192.168.186.100:3100/loki/api/v1/push    #推送日志流到Loki中的apiscrape_configs:        #发现日志文件的位置并从中提取标签
- job_name: system    #任务名称static_configs:    # 目录配置- targets:        # 标签- localhostlabels:job: varlogs    #子任务名称,通常以项目命令#NOTE: Need to be modified to scrape any additional logs of the system.__path__: /var/log/messages    #要读取的日志文件的位置,允许使用通配符/*log或/**/*.log- targets:- localhostlabels:job: securelogs#NOTE: Need to be modified to scrape any additional logs of the system.__path__: /var/log/secure         # 定义不同的日志文件路径#赋予权限
[root@k8s-master01 ~]# setfacl -m u:promtail:r /var/log/secure 
[root@k8s-master01 ~]# setfacl -m u:promtail:r /var/log/messages # 启动服务
systemctl enable --now promtail
# 检查 promtial 配置
http://IP:9080/targets

第三步安装granafa

yum install -y https://dl.grafana.com/enterprise/release/grafana-enterprise-
10.0.2-1.x86_64.rpm
# 启动服务
systemctl enable --now grafana-server
访问 granafa http://IP:3000 默认用户密码为 admin
修改语言和时区

添加完成后点击保存
保存完成后,切换到 grafana 左侧区域的 Explore ,即可进入到 Loki 的页面:

三、LogQL 语法 

选择器
对于查询表达式的标签部分,将放在 {} 中,多个标签表达式用逗号分隔:
{app="mysql",name="mysql-backup"}
支持的符号有:
= :完全相同。
!= :不平等。
=~ :正则表达式匹配。
!~ :不要正则表达式匹配。
过滤表达式
编写日志流选择器后,您可以通过编写搜索表达式进一步过滤结果。搜索表达式可以文本或正则表达式。 如
{job=“mysql”} |= “error”
{name=“kafka”} |~ “tsdb-ops.*io:2003”
{instance=~“kafka-[23]”,name=“kafka”} != kafka.server:type=ReplicaManager
支持多个过滤:
{job=“mysql”} |= “error” != “timeout”
目前支持的操作符
|= line 包含字符串。
!= line 不包含字符串。
|~ line 匹配正则表达式。
!~ line 与正则表达式不匹配。

 四、Loki收集nginx日志

为了方便grafana dashbord展示,我们把日志格式修改为json

1、修改nginx配置

vim nginx.conf ,增加如下配置:
log_format json escape=json '{''"remote_addr": "$remote_addr", ''"request_uri": "$request_uri", ''"request_length": "$request_length", ''"request_time": "$request_time", ''"request_method": "$request_method", ''"status": "$status", ''"body_bytes_sent": "$body_bytes_sent", ''"http_referer": "$http_referer", ''"http_user_agent": "$http_user_agent", ''"http_x_forwarded_for": "$http_x_forwarded_for", ''"http_host": "$http_host", ''"server_name": "$server_name", ''"upstream": "$upstream_addr", ''"upstream_response_time":                                                      "$upstream_response_time", ''"upstream_status": "$upstream_status", '#'"geoip_country_code": "$geoip2_data_country_code", '#'"geoip_country_name": "$geoip2_data_country_name", '#'"geoip_city_name": "$geoip2_data_city_name"''}';access_log  /var/log/nginx/json_access.log json;参数 描述
remote_addr 客户端的IP地址
request_uri 客户端请求的URI
request_length 请求的内容长度
request_time 请求处理时间
request_method 请求方法(GET、POST等)
status HTTP响应状态码
body_bytes_sent 发送给客户端的字节数
http_referer 请求中的Referer头部
http_user_agent 客户端的User-Agent头部
http_x_forwarded_for X-Forwarded-For头部,客户端真实IP
http_host 请求的Host头部
server_name 服务器名称
upstream 后端服务器的地址
upstream_response_time 后端服务器响应时间
upstream_status 后端服务器响应的HTTP状态码
geoip_country_code GeoIP国家代码(已注释)
geoip_country_name GeoIP国家名称(已注释)
geoip_city_name GeoIP城市名称(已注释)

2nginx服务器上安装promtail

yum install -y https://github.com/grafana/loki/releases/download/v2.9.8/promtail- 2.9.8.x86_64.rpm

[root@k8s-node02 ~]# cat /etc/promtail/config.yml 
# This minimal config scrape only single log file.
# Primarily used in rpm/deb packaging where promtail service can be started during system init process.
# And too much scraping during init process can overload the complete system.
# https://github.com/grafana/loki/issues/11398

server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yaml

clients:
- url: http://192.168.186.100:3100/loki/api/v1/push

scrape_configs:
- job_name: nginx
  static_configs:
  - targets:
      - localhost
    labels:
      job: nginxlogs
      host: 192.168.186.100
      #NOTE: Need to be modified to scrape any additional logs of the system.
      __path__: /var/log/nginx/*.log

# 注意,日志目录权限
[root@localhost ~] # setfacl -R -m u:promtail:rx /var/log/nginx/
[root@localhost ~] # systemctl restart promtail

3、添加doshbarod 

id 16101

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/359153.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RERCS系统开发实战案例-Part05 FPM Application的Feeder Class搜索组件的实施

1、通过事务码 SE24对Feeder Class实施 1)接口页签的简单说明: ① IF_FPM_GUIBB:通用UI构建块,整个UIBB模块的基础接口; ② IF_FPM_GUIBB_SEARCH:通用搜索UI构建块,搜索组件UIBB的基础接口&…

中东文明史

转自:想要了解完整的中东文明史?这篇文章成全你 - 知乎 (zhihu.com) 写在前面 中东文明是人类历史上最古老的文明。人类祖先从东非大裂谷走出之后,首先选择定居在中东地区的新月沃土上,并建立了人类历史上有文字记载的第一个文明…

Mybatis-映射文件中select标签resultType属性的使用

数据库的最最基本操作“增删改查”,“查”是最复杂的,有各种各样的查询,所以对应到Mybatis中的select标签也是这四个操作中最复杂的 resultType属性的使用 1.返回的结果是List集合的类型 select标签里的resultType类型设置为List集合里的元…

关于正点原子stm32f103精英板v1的stlink通信失败问题解决方案

由于最新的固件不适配,我们要想其工作要下载007的固件。 https://www.st.com/en/development-tools/stsw-link007.html?dlredirect 版本选择最低的。然后选择windows文件夹,更新程序 然后进keil就能正常识别到了

mediasoup源码分析(三)channel创建及信令交互

mediasoup源码分析--channel创建及信令交互 概述跨职能图业务流程图代码剖析tips 概述 在golang实现mediasoup的tcp服务及channel通道一文中,已经介绍过信令服务中tcp和channel的创建,本文主要讲解c中mediasoup的channel创建,以及信令服务和…

【C++高阶】掌握AVL树:构建与维护平衡二叉搜索树的艺术

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C “ 登神长阶 ” 🤡往期回顾🤡:STL-> map与set 🌹🌹期待您的关注 🌹🌹 ❀AVL树 📒1. AVL树…

MySQL理解-下载-安装

MySQL理解: mysql:是一种关系型数据库管理系统。 下载: 进入官网MySQLhttps://www.mysql.com/ 找到download 滑动到最下方:有一个开源社区版的链接地址: 然后就下载完成了 安装: 双击: 一直next 一直next这一步&…

Spire.PDF for .NET【文档操作】演示:设置 PDF 文档的 XMP 元数据

XMP 是一种文件标签技术,可让您在内容创建过程中将元数据嵌入文件本身。借助支持 XMP 的应用程序,您的工作组可以以团队以及软件应用程序、硬件设备甚至文件格式易于理解的格式捕获有关项目的有意义的信息(例如标题和说明、可搜索的关键字以及…

java基于ssm+jsp 美食推荐管理系统

1前台首页功能模块 美食推荐管理系统,在系统首页可以查看首页、热门美食、美食教程、美食店铺、美食社区、美食资讯、我的、跳转到后台等内容,如图1所示。 图1前台首页功能界面图 用户注册,在注册页面可以填写用户名、密码、姓名、联系电话等…

仓库管理系统01--数据库介绍

1、表结构 1)UserInfo 用户表 2)Supplier供应商表 3)Store 仓库表 4)其他表 Customer 客户表,Spec 规格表,GoodsType 货物类别表,Goods 货物表,InStore 入库表,OutSto…

LearnOpenGL - Android OpenGL ES 3.0 绘制纹理

系列文章目录 LearnOpenGL 笔记 - 入门 01 OpenGLLearnOpenGL 笔记 - 入门 02 创建窗口LearnOpenGL 笔记 - 入门 03 你好,窗口LearnOpenGL 笔记 - 入门 04 你好,三角形OpenGL - 如何理解 VAO 与 VBO 之间的关系LearnOpenGL - Android OpenGL ES 3.0 绘制…

有趣的 Oracle JDBC 驱动包命名问题 - ojdbc6 和 ojdbc14 哪个新?!

有趣的 Oracle JDBC 驱动包命名问题 - ojdbc6 和 ojdbc14 哪个新?! 1 背景概述 最近协助一个小兄弟排查了某作业使用 sqoop 采集 oracle 数据的失败问题,问题现象,问题原因和解决方法都挺直观,但在此过程中发现了一个有趣的 Oracle JDBC 驱…

特氟龙深水采样器FEP贝勒管水质取样器密封性好

贝勒管深水采样器(bailers tube),是一种经济型便携式水质采样器,操作简单,使用方便,性价比高,能大限度的保证样品的真实性。采样管直径很小,能够采取小口径的深水井水样。是一款简单实用,性价比高的水质采样…

C语言入门课程学习笔记8:变量的作用域递归函数宏定义交换变量

C语言入门课程学习笔记8 第36课 - 变量的作用域与生命期(上)第37课 - 变量的作用域与生命期(下)实验—局部变量的作用域实验-变量的生命期 第38课 - 函数专题练习第39课 - 递归函数简介实验-递归小结 第40课 - C 语言中的宏定义实…

C语言 while循环1

在C语言里有3种循环:while循环 do while 循环 for循环 while语句 //while语法结构 while(表达式)循环语句; 比如在屏幕上打印1-10 在while循环中 break用于永久的终止循环 在while循环中,continue的作用是跳过本次循环 …

如何安全进行亚马逊、沃尔玛测评?

在亚马逊、沃尔玛、速卖通、阿里国际站等电商平台上,测评已成为一种高效的推广手段,但伴随的风险也不容忽视。这些风险主要源于平台严格的大数据风控机制,它涵盖了多个方面,以确保评价的真实性和合规性。 首先,硬件参数…

Avalonia 常用控件二 Menu相关

1、Menu 添加代码如下 <Button HorizontalAlignment"Center" Content"Menu/菜单"><Button.Flyout><MenuFlyout><MenuItem Header"打开"/><MenuItem Header"-"/><MenuItem Header"关闭"/&…

Unity贪吃蛇改编【详细版】

Big and small greedy snakes 游戏概述 游戏亮点 通过对称的美感&#xff0c;设置两条贪吃蛇吧&#xff0c;其中一条加倍成长以及加倍减少&#xff0c;另一条正常成长以及减少&#xff0c;最终实现两条蛇对整个界面的霸占效果。 过程中不断记录两条蛇的得分情况&#xff0c…

如何配置taro

文章目录 step1. 全局安装wepacksetp2. 使用npm安装tarostep3. 项目初始化 使用taro时需要在本地配置好nodejs环境&#xff0c;关于如何配置nodejs可参考我的这篇博文 如何配置nodejs环境 step1. 全局安装wepack 使用指令npm install webpack -g即可 安装完成后可看到有wepa…

十大经典排序算法——选择排序和冒泡排序

一、选择排序 1.基本思想 每一次从待排序的数据元素中选出最小&#xff08;或最大&#xff09;的一个元素&#xff0c;存放在序列的起始位置&#xff0c;直到全部待排序的数据全部排完。 2.直接选择排序 (1) 在元素集合arr[i] — arr[n - 1]中选择关键妈的最大&#xff08;小…