03-Loki 日志监控

news/2024/9/29 17:28:18

1 Loki

1.1 简介

功能强大;轻量级,可以在配置更低的设备上部署;完全契合现代化部署方式;

github

Loki是受Prometheus启发的水平可扩展、高可用、多租户日志聚合系统。它的设计非常具有成本效益且易于操作。它不索引日志的内容,而是索引每个日志流的一组标签。

1.2 优点

与其他日志聚合系统相比,Loki优势在于:

不对日志进行全文索引。通过存储压缩的非结构化日志和仅索引元数据,Loki 更易操作且运行成本更低。

使用你已经在 Prometheus 中使用的相同标签对日志流进行索引和分组,让你能使用你已在 Prometheus 中使用的相同标签在指标和日志之间无缝切换。

尤其适合存储 Kubernetes Pod 日志。Pod 标签等元数据会被自动抓取和索引。

在 Grafana 中有本机支持(需要 Grafana v6.0)。

1.3 Loki日志栈

  • promtail,代理,收集日志并发给Loki

  • loki,主服务器,存储日志和处理查询

  • Grafana,查询和显示日志

Loki 像 Prometheus,但对于日志:我们更喜欢基于多维标签的索引方法,并想要单二进制、易于os且没有依赖关系的系统。Loki 与 Prometheus 不同在于专注日志而非指标,并通过push而非pull交付日志。

1.4 下载及安装

Github:

① 解压loki的安装包至指定目录(/data/software/loki/)

mkdir /data/software/loki/unzip -q loki-linux-amd64.zip -d /data/software/loki/

② 新建或上传loki配置文件到指定目录(/data/software/loki/etc)

mkdir /data/software/loki/etcvim /data/software/loki/etc/loki-local-config.yaml
配置文件内容
# 认证配置
auth_enabled: false# 端口配置
server:# 监听的端口http_listen_port: 3100ingester: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: 168h# 存储位置配置
storage_config:# 流文件存储地址boltdb:# 自定义boltdb目录directory: /data/software/loki/data/index# 索引存储地址filesystem:# 自定义filesystem目录directory: /data/software/loki/data/chunks# 采集限制配置
limits_config:enforce_metric_name: falsereject_old_samples: truereject_old_samples_max_age: 168h# 修改每用户摄入速率限制,即每秒样本量,默认值为4Mingestion_rate_mb: 30# 修改每用户摄入速率限制,即每秒样本量,默认值为6Mingestion_burst_size_mb: 15# 日志回看配置
chunk_store_config:#  max_look_back_period: 0s# 回看日志行的最大时间,只适用于即时日志,7天max_look_back_period: 168h# 表的保留期配置
#table_manager:
#  retention_deletes_enabled: false
#  retention_period: 0stable_manager:# 日志保留周期开关,默认falseretention_deletes_enabled: true# 日志保留周期retention_period: 168h  

1.5 启动loki

[root@service-monitoring etc]# nohup /data/software/loki/loki-linux-amd64 -config.file=/data/software/loki/etc/loki-local-config.yaml &
[1] 10508
[root@service-monitoring etc]# nohup: ignoring input and appending output to ‘nohup.out’

1.6 验证是否启动成功

[root@service-monitoring etc]# ps -ef|grep loki
root     10508  9405  0 17:27 pts/4    00:00:00 /data/software/loki/loki-linux-amd64 -config.file=/data/software/loki/etc/loki-local-config.yaml
root     10535  9405  0 17:27 pts/4    00:00:00 grep --color=auto loki

2 安装promtail

Grafana可以和loki部署在同一台服务器。

而promtail需安装在每台有日志输出文件的应用服务器。

2.1 解压安装包至指定目录

unzip -q promtail-linux-amd64.zip -d /data/software/promtail/

2.2 新建或上传loki配置文件到指定目录

/data/software/promtail/etc/

vim /data/software/promtail/etc/promtail-local-config.yaml
配置文件内容
# 端口配置
server:http_listen_port: 9080grpc_listen_port: 0# 记录游标位置
positions:# 游标记录上一次同步位置filename: /data/software/promtail/tmp/positions.yaml# 每10s同步一次sync_period: 10s# Loki服务器地址
clients:- url: http://ip:3100/loki/api/v1/push# 日志文件配置
scrape_configs:
- job_name: monitor-platform-task-test-job-namestatic_configs:- targets:- localhostlabels:job: monitor-platform-task-test-job__path__: /usr/local/javaedge/monitor-platform/task/logs/monitor-platform-task.log

2.3 启动promtail

[root@service-monitoring etc]# nohup /data/software/promtail/promtail-linux-amd64 -config.file=/data/software/promtail/etc/promtail-local-config.yaml &
[1] 12772
[root@service-monitoring etc]# nohup: ignoring input and appending output to ‘nohup.out’

2.4 验证promtail是否启动成功

[root@service-monitoring etc]# ps -ef|grep promtail
root     12772 12231  0 17:48 pts/1    00:00:00 /data/software/loki/promtail-linux-amd64 -config.file=/data/software/loki/etc/promtail-local-config.yaml
root     12796 12231  0 17:48 pts/1    00:00:00 grep --color=auto promtail

重启

# 1 查找正在运行的 Promtail 进程的 PID
[root@javaedge-car-receiver-test etc]# ps aux | grep promtail
root     12711  0.0  0.0 112712   964 pts/0    S+   16:26   0:00 grep --color=auto promtail
root     14423  0.4  0.8 1150788 65720 ?       Sl   Apr02 274:46 /data/software/promtail/promtail-linux-amd64 -config.file=/data/software/promtail/etc/promtail-local-config.yaml
# 这将显示所有包含 promtail 的进程。找到与你之前启动的 Promtail 实例对应的进程,记下其 PID。# 2 停止正在运行的 Promtail 进程:
[root@javaedge-car-receiver-test etc]# kill PID
# 使用与原始启动命令相同的命令来重新启动 Promtail
[root@javaedge-car-receiver-test etc]# nohup /data/software/promtail/promtail-linux-amd64 -config.file=/data/software/promtail/etc/promtail-local-config.yaml &
[1] 12779
[root@javaedge-car-receiver-test etc]# nohup: ignoring input and appending output to ‘nohup.out’[root@javaedge-car-receiver-test etc]# ps aux | grep promtail
root     12779 44.7  0.8 1150980 70088 pts/0   Sl   16:28   0:04 /data/software/promtail/promtail-linux-amd64 -config.file=/data/software/promtail/etc/promtail-local-config.yaml
root     12795  0.0  0.0 112712   968 pts/0    S+   16:29   0:00 grep --color=auto promtail
[root@javaedge-car-receiver-test etc]# 

3 在Grafana中添加Loki数据源

进入Grafana,选择 Configuration -> Data sources -> Add data source 进入选择页面,找到 Loki

选择数据源:

填写 loki 地址:

保存成功之后,切换到 Explore 菜单,在顶部选择数据源中就能找到 Loki 了,选中它:

4 查看日志

进入链接:http://graphna部署ip:3000/explore:点击 Log browser 展开面板,在下面可以看见我们在 promtail 配置文件中配置的标签在这里面出现了,并且中间有很多日志文件

选择日志文件:

在右侧随意选择一个标签就可以过滤中间的文件,只显示到对应的服务的日志文件。
选择一个文件,然后可以看到下面有查询语句,这个是 Loki 的查询语言,与 Prometheus 查询语言 PromQL 类似,可实现强大的搜索过滤等查询。

点击下面的 Show log 按钮,即可查看该日志文件最新的日志内容:

常用功能说明:

5 日志选择和过滤

1 日志选择器

对于查询表达式的标签部分,将其用大括号括起来 {},然后使用键值语法选择标签。多个标签表达式用逗号分隔。
例如下面这个查询语句表示的就是查询 job 标签为 gps_server 中的 /var/log/gps_server/request.log 文件

{filename="/var/log/gps_server/request.log",job="gps_server"}

支持以下标签匹配运算符:

  • = 完全相等。
  • != 不相等。
  • =~ 正则表达式匹配。
  • !~ 不进行正则表达式匹配。

2 日志过滤器

编写日志流选择器后,可以通过编写搜索表达式来进一步过滤结果。搜索表达式可以是文本或正则表达式。
示例:查询所有请求 /v1/web/monitor/statistics 接口的日志

{filename="/var/log/gps_server/request.log"}|="/v1/web/monitor/statistics"

匹配到结果之后还有高亮显示

过滤器可以多个连续使用,例如:在错误中查找关于邮件发送失败的日志

{filename="/var/log/gps_server/runtime.log",job="gps_server"}|="ERRO"|="邮件"

可用的过滤器类型:

  • |= 行包含字符串。
  • != 行不包含字符串。
  • |~ 行匹配正则表达式。
  • !~ 行与正则表达式不匹配。 regex表达式接受RE2语法。默认情况下,匹配项区分大小写,并且可以将regex切换为不区分大小写的前缀(?i)。

本文由博客一文多发平台 OpenWrite 发布!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

基于软件在环的飞控机建模仿真

​安全关键系统(Safety-Critical System,SCS)是指由于某些行为或组合行为能够引发整体系统失效,继而导致财物损失、人员受伤等严重影响的系统,诸多安全关键领域如航空航天、核电系统、医疗设备、交通运输等领域的系统都属于安全关键系统,而这些系统中大部分核心功能是由软…

AIRIOT助力全国大学生物联网设计竞赛高校巡回宣讲会

为了进一步增强赛事影响力、促进校企交流与合作、推动物联网教育与创新,由2024全国大学生物联网设计竞赛组委会主办全国巡回技术讲座暨赛题宣讲活动于2024年5月在湖南大学、深圳技术大学、四川大学、武汉大学、西安交通大学、郑州大学、中国石油大学、山东商业职业技术学院全国…

2024出游记录

日常记录 2024-01-08 凤华红汤牛肉面(古城小街)菜品 星级(1-5) 评价 价格拉面 4.5 胡萝卜很脆,但是削的粗细不一导致口感不好,汤底非常浓郁有很明显的肉香味,是那种单尝能喝一整碗的汤底,面条没好巧嫂子筋道,但也还行中规中矩 12小 14大总结 4.5 环境一般,小店很挤,辣椒也很…

EF 初始化数据库

初始化数据库命令: 删除Migrations文件夹自己重新生成请使用 Add-Migration Update-database 不删除直接更新请使用 Update-database 设置需要初始化的项目为启动项,并配置默认项目为初始化项目看到 Done 后就成功了 参考文档: https://www.cnblogs.com/djd66/p/16899185.ht…

NAS服务器两块硬盘损坏无法访问恢复实例

状态灯是黄灯,DISC4也是亮黄灯,机器一直在报警群辉型号DS415+,是一种典型的硬盘损坏的情况,这是一台四盘位的一个群辉NAS,第一时间把每个硬盘取下来编个编号,WD的红盘也就是nasVR专用硬盘,型号是WD401F2X的,生产日期有三块是2015年,有一块是比较新。差不多三年前就是损…

Confluence是否免费?获取方法及可能问题

本文将详细介绍Confluence产品指南。根据Atlassian官方信息,可以确定的是 Confluence 并不免费,但为10人以下团队提供了免费版本。免费版可以使用不限量的页面、空间,但只有2GB的存储空间和3个活动白板。但国内有不少公司通过使用破解版的方式来免费使用Cofluence。下面本文…

MQTT如何使用

1. 下载并安装客户端 访问路径:https://mqttx.app/zh 切换成中文 2. 配置环境链接 开发环境 服务器地址:emqdev.zxy168.cn,端口:18830 用户名:test,密码:test 测试环境:emqx1.zxy168.cn 生产环境:emqx1.xbzl.cc3. 订阅消息 订阅硬件发来的消息 Topic填Gateway/XBDGN…

解决在Windows 11下Visual Studio部分快捷键失效的问题

今天装了一台测试机,用的Windows 11家庭版,打开Visual Studio 2022,发现 【参数提示】 Shift + Ctrl + Space 【快速操作】Ctrl + . 功能无法使用快捷键。在Windows 10的电脑上又是可以的,我还以为是Visual Studio设置的问题,迁移了设置,发现还是不行。后面找了一下,发…