Grafna +Loki +Promtail GLP日志可视化企业级实战( 四 )


【Grafna +Loki +PromtailGLP日志可视化企业级实战】举个例子来说,假设有一个 Loki 集群,其中包含 3 个 LRU 缓存服务器和 2 个存储引擎 。每个 LRU 缓存服务器都具有 16 GB 的缓存容量,而每个存储引擎都能处理 1000 个并发查询请求 。
现在,有一个用户发出一个查询请求,该请求需要访问 50 GB 的日志数据 。在此查询之前,索引网关上没有任何日志数据的缓存 。在这种情况下,Loki 的索引网关会先尝试在本地缓存中查找是否有符合条件的索引数据 。如果本地缓存中没有任何数据,则索引网关将转向索引网关缓存,查询最近访问的索引数据 。如果索引网关缓存中没有任何数据,则索引网关将向远程存储缓存发送查询请求 。
由于 Loki 可以利用的横向扩展能力,它们可以轻松地处理大量并发查询请求,并在 k8s 集群中实现高性能和高可用性 。由此可见,Loki 的索引网关是如何优化大流量的查询请求以提高性能 。
测试loki
就像k8s中空跑一样不像loki推送,只是空跑一次
cat info.log | promtail --stdin --dry-run --client.url http://10.50.10.25:3100/loki/api/v1/push
启动loki
不知为何无法启动,先使用loki 命令行启动.
nohup loki -config.file /etc/loki.yml > /nfs/data/prometheus/lokidata/log/loki.log &
参考
loki日志配置
loki 原理:
【2】 收集组件 是什么?
is aagent
是负责收集日志发送给 loki 的代理程序 。默认通过一个 .yaml 文件进行配置,其中包含服务端信息、存储位置以及如何从文件中抓取日志等配置 。
部署
os: 7
curl -O 10.50.10.25/pigsty/promtail-2.4.2-1.el7.x86_64.rpm && yum -y install promtail-2.4.2-1.el7.x86_64.rpm && rm -rf ./promtail-2.4.2-1.el7.x86_64.rpm
配置
配置为收集node上的三大log(、cron、dmesg) 和nginx日志
# cat /etc/promtail.yml#==============================================================## File:promtail.yml# Ctime:2022-10-03# Mtime:2022-10-13# Desc:Promtail logging collector agent# Path:/etc/promtail.yml# Copyright (C) 2018-2022 ninesun 注释版本#==============================================================#server:# server 属性配置了 Promtail 作为 HTTP 服务器的行为 。http_listen_port: 9080grpc_listen_port: 9097positions:# positions 属性配置了 Promtail 保存文件的位置,表示它已经读到了文件什么程度 。当 Promtail 重新启动时需要它,以允许它从中断的地方继续读取日志 。filename: ${PROMTAIL_POSITIONS:/var/log/positions.yaml}sync_period: 10s# How often to update the positions fileignore_invalid_yaml: true# Whether to ignore & later overwrite positions files that are corruptedclients: # client 属性配置了 Promtail 如何连接到 Loki 的实例 。- url: http://10.50.10.25:3100/loki/api/v1/pushexternal_labels: # 添加到所有发送到 Loki 的日志中的静态标签ip:10.50.10.204cls: qms-cls#ins: qms1scrape_configs: # scrape_configs 属性配置了 Promtail 如何使用指定的发现方法从一系列目标中抓取日志 。#################################################################Nodes Logs################################################################## collect /var/log/messages dmesg cron logs on all nodes- job_name: nodes # 用于在 Promtail 中识别该抓取配置的名称 。static_configs: # 抓取日志静态目标配置- targets: # 配置发现在当前节点上查找这是 Prometheus 服务发现代码所要求的,但并不适用于Promtail,它只能查看本地机器上的文件 。因此,它应该只有 localhost 的值,或者可以完全移除它,Promtail 会使用 localhost 的默认值 。- localhostlabels: # 定义一个要抓取的日志文件和一组可选的附加标签,以应用于由__path__定义的文件日志流 。src: syslogins: qmsjob: nodes__path__: /var/log/messages# 要加载日志的路径,可以使用 glob 模式(e.g., /var/log/*.log).- targets:- localhostlabels:src: crontabins: qmsjob: nodes__path__: /var/log/cron- targets:- localhostlabels:src: dmesgins: qmsjob: nodes__path__: /var/log/dmesg#################################################################infra Log################################################################## collect nginx & qms ap logs on 204 nodes- targets:- localhostlabels:ins: qmssrc: info-logjob: infra__path__: /aplog/qms/8086/info.log- targets:- localhostlabels:src: error-logins: qmsjob: infra__path__: /aplog/qms/8086/error.log- targets:- localhostlabels:src: info-logins: qmsjob: infra__path__: /aplog/qms/8087/info.log- targets:- localhostlabels:ins: qmssrc: error-logjob: infra__path__: /aplog/qms/8087/error.log# collect rpt ap logs on 204 nodes- targets:- localhostlabels:ins: rptsrc: info-logjob: infra__path__: /lichkin-logs/chot-report_*.debug.log- targets:- localhostlabels:src: error-logins: rptjob: infra__path__: /lichkin-logs/chot-report_*.error.log# collect fileloader log- targets:- localhostlabels:ins: fileLoadersrc: info-logjob: infra__path__: /aplog/file-loader/current/info.log- targets:- localhostlabels:src: error-logins: fileLoaderjob: infra__path__: /aplog/file-loader/current/error.log