旅游营销型网站建设,四川建设网证书查询,wordpress 数据库爆炸,做网站和百度推广有什么不一样Loki安装部署
1、Loki介绍
Loki 是受 Prometheus 启发由 Grafana Labs 团队开源的水平可扩展#xff0c;高度可用的多租户日志聚合系统。开发语
言: Google Go。它的设计具有很高的成本效益#xff0c;并且易于操作。使用标签来作为索引#xff0c;而不是对全文进行检索高度可用的多租户日志聚合系统。开发语
言: Google Go。它的设计具有很高的成本效益并且易于操作。使用标签来作为索引而不是对全文进行检索
也就是说你通过这些标签既可以查询日志的内容也可以查询到监控的数据签极大地降低了日志索引的存储。
Loki 对标 EFK/ELK由于其轻量的设计备受欢迎Loki 相比 EFK/ELK它不对原始日志进行索引只对日志的
标签进行索引而日志通过压缩进行存储通常是文件系统存储所以其操作成本更低数量级效率更高。
由于 Loki 的存储都是基于文件系统的所以它的日志搜索时基于内容即日志行中的文本所以它的查询支持
LogQL在搜索窗口中通过过滤标签的方式进行搜索和查询。
Loki文档网址https://grafana.com/docs/loki/latest/
下载网址https://github.com/grafana/loki/releases
Github Lokihttps://github.com/grafana/helm-charts/tree/main/charts/loki-stack
2、Loki架构
Loki 架构如下图所示 Loki 分两部分Loki 是日志引擎部分Promtail 是收集日志端。
Loki 是主服务器负责存储日志和处理查询 。promtail 是代理负责收集日志并将其发送给 loki 。
promtail 是日志收集 clientloki 是日志收集 service它是一个时间序列数据库可以作为 Granfna 的数据源
(类似于prometheus)同时它也有 Alert Rule 规则功能可以向 Alertmanager 发送告警信息而 Alertmanager
是一个独立的组件专注于告警处理。
Loki 的数据可以通过Grafana进行展示。
只要在应用程序服务器上安装 promtail 来收集日志然后发送给 Loki 存储就可以在 Grafana UI 界面通过添加
Loki 为数据源进行日志查询如果 Loki 服务器性能不够可以部署多个 Loki 进行存储及查询。作为一个日志
系统不光只有查询分析日志的能力还能对日志进行监控和报警。
Promtail 客户端采集日志数据将其索引并存储在后端持久化存储中。
用户可以使用 LogQL 查询语言来过滤和检索特定的日志记录并通过 Grafana 的集成来进行可视化分析。
3、Loki工作流程 1、promtail 收集并将日志发送给 loki 的 Distributor 组件。
2、Distributor 会对接收到的日志流进行正确性校验并将验证后的日志分批并行发送到 Ingester。
3、Ingester 接受日志流并构建数据块压缩后存放到所连接的存储后端。
4、Querier 收到 HTTP 查询请求并将请求发送至 Ingester 用以获取内存数据 Ingester 收到请求后返回符合
条件的数据 如果 Ingester 没有返回数据Querier 会从后端存储加载数据并遍历去重执行查询 通过 HTTP 返
回查询结果。 Promtail采集器Loki 默认客户端负责采集并上报日志。 Distributor分发器 Distributor 是 Loki 的入口组件负责接收来自客户端的日志数据并将其分发给不 同的 ingester 节点。 Ingester摄取器 Ingester 负责接收并保存来自 Distributor 的日志数据。它将数据写入本地存储并将 索引相关的元数据发送给 index 组件。 Index索引 Index 组件负责管理和维护 Loki 中的索引数据结构。 Chunks块文件 Chunks 是 Loki 中日志数据的物理存储形式。 Querier查询器 Querier 是用于查询 Loki 中日志数据的组件。
4、LPG(LokiPromtailGrafana)与ELK比较优势
ELK 虽然功能丰富但规模复杂资源占用高操作苦难很多功能往往用不上有点杀鸡用牛刀的感觉。loki 不
对日志进行全文索引。通过存储压缩非结构化日志和索引元数据Loki 操作起来会更简单更省成本。通过使用
与 Prometheus 相同的标签记录流对日志进行索引和分组这使得日志的扩展和操作效率更高。安装部署简单快
速且受 Grafana 原生支持。
架构和组件
LokiLoki 是一个开源的水平可扩展日志聚合系统由 Promtail、Loki 和 Grafana 组成。EFKEFK 是一个集成的解决方案由 Elasticsearch、Fluentd 和 Kibana 组成。
存储和查询
LokiLoki 使用了基于日志流的存储方式将日志数据存储为可压缩的块文件并达到高度压缩效率。EFKEFK 使用 Elasticsearch 作为中心化的日志存储和索引引擎。
可扩展性和资源消耗
LokiLoki 的水平可扩展性非常好可以处理大规模的日志数据。EFKElasticsearch 是一个高度可扩展的分布式存储系统但它对硬件资源的要求较高特别是在存储大规模日志数据时。
配置和部署复杂性 LokiLoki 的配置和部署较为简单。通过使用 Promtail 收集日志并使用 Grafana 进行查询和可视化可以 相对快速地启动和使用。 EFKEFK 的配置和部署相对复杂一些。需要配置 Fluentd 的输入、过滤和输出插件以及 Elasticsearch 和 Kibana 的集群设置。
5、Loki安装
这里通过编译好的二进制可执行文件进行安装。
下载地址https://github.com/grafana/loki/releases/
配置文件参考地址https://grafana.com/docs/loki/latest/configure/
5.1 下载Loki
# 下载
$ curl -O -L https://github.com/grafana/loki/releases/download/v2.8.6/loki-linux-amd64.zip
# 解压
# 解压之后只有一个二进制文件loki-linux-amd64
$ unzip loki-linux-amd64.zip
# 授权
$ chmod ax loki-linux-amd64# 查看版本
$ ./loki-linux-amd64 --version
loki, version 2.8.6 (branch: HEAD, revision: 990ac685e)build user: root75d791293cbebuild date: 2023-10-17T14:27:04Zgo version: go1.20.10platform: linux/amd645.2 下载Promtail
# 下载
$ curl -O -L https://github.com/grafana/loki/releases/download/v2.8.6/promtail-linux-amd64.zip
# 解压
# 解压之后只有一个二进制文件promtail-linux-amd64
$ unzip promtail-linux-amd64.zip
# 授权
$ chmod ax promtail-linux-amd64# 查看版本
$ ./promtail-linux-amd64 --version
promtail, version 2.8.6 (branch: HEAD, revision: 990ac685e)build user: root75d791293cbebuild date: 2023-10-17T14:27:04Zgo version: go1.20.10platform: linux/amd64
5.3 Loki配置文件
loki 配置文件loki_config.yaml
auth_enabled: falseserver:# http监听端口,代理服务(promtail)会向此端口发送日志流http_listen_port: 3100# grpc监听端口grpc_listen_port: 3110# grpc最大接收消息值,默认4Mgrpc_server_max_recv_msg_size: 1073741824# grpc最大发送消息值,默认4Mgrpc_server_max_send_msg_size: 1073741824ingester:lifecycler:address: 192.168.151.195ring:kvstore:store: inmemoryreplication_factor: 1final_sleep: 0schunk_idle_period: 5mchunk_retain_period: 30smax_transfer_retries: 0# 一个timeseries块在内存中的最大持续时间,如果timeseries运行的时间超过此时间,则当前块将刷新到存储并创建一个新块max_chunk_age: 20mschema_config:configs:# 2020-10-24之后loki信息用下面的配置,这个主要是用来做兼容的- from: 2020-10-24# 索引使用哪种存储,还有boltdb-shipperstore: boltdb# 怎么存储,简单部署的话保存在本地文件系统object_store: filesystem# 版本schema: v11# 索引怎么更新和存储index: # 索引前缀prefix: index_# 索引期限168小时,每张表的时间范围7天period: 168hstorage_config:boltdb:# 索引文件存储地址directory: /data/loki/indexfilesystem:# 块存储地址directory: /data/loki/chunkslimits_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:# 最大日志可见时间,回看日志行的最大时间,只适用于即时日志# 最大可查询历史日期28天,这个时间必须是schema_config中的period的倍数,否则报错# max_look_back_period: 168hmax_look_back_period: 0stable_manager:# 日志保留周期开关,默认为falseretention_deletes_enabled: false# 日志保留周期# 表的保留期28天# retention_period: 672hretention_period: 0sruler:# 告警地址,简单部署沿用即可alertmanager_url: http://192.168.151.195:9093analytics:# 关闭向loki团队发送此配置文件reporting_enabled: false# 默认配置
common:# 默认的路径前缀path_prefix: /data/lokistorage:filesystem:# 压缩后的日志,存储在这个目录chunks_directory: /data/loki/chunks# 一些告警规则和查找规则,存储在这个目录,简单部署不用管rules_directory: /data/loki/rules# 简单部署不用管replication_factor: 1# 哈希环配置,简单部署不用管ring:# 一般为部署loki的机器的ipinstance_addr: 192.168.151.195kvstore:# 沿用即可store: inmemorycompactor:# compactor运行状态保存目录working_directory: /data/loki/compactorshared_store: filesystem# 启动日志删除retention_enabled: true# compactor每隔10分钟运行一次compaction_interval: 10m# 在compactor运行2小时后删除retention_delete_delay: 2h# 用150个worker删除chunksretention_delete_worker_count: 1505.4 Promtail配置文件
promtail 配置文件promtail_config.yaml
server:# 监听端口http_listen_port: 9080# gRPC服务监听的端口(表示随机)grpc_listen_port: 0# grpc最大接收消息值,默认4Mgrpc_server_max_recv_msg_size: 900000000000# grpc最大发送消息值,默认4Mgrpc_server_max_send_msg_size: 900000000000positions:# romtail保存文件的位置,服务异常关闭,启时可以继续在中断处继续采集,文件保存日志采集进度filename: ./ositions.yamlclients:# oki接收日志的地址- url: http://192.168.151.195:3100/loki/api/v1/pushbatchwait: 10sbatchsize: 40960000# 日志采集配置
scrape_configs:
# 这个随意配置
- job_name: test static_configs:- targets:- localhostlabels:# note,host,server,level自己定义的标签,根据自己需要改动note: gl01host: zsx1server: 192.168.151.195level: info# 从此文件采集的日志会被打上上面的4个标签,支持正则__path__: /opt/logs/info.log- targets:- localhostlabels:note: gl02host: zsx2server: 192.168.151.196level: error__path__: /opt/logs/error.log# 日志文件
$ cat /opt/logs/info.log
[INFO] Hello
[INFO] World$ cat /opt/logs/error.log
[ERROR] Bad
[ERROR] Now5.5 启动
# 启动loki
$ nohup ./loki-linux-amd64 --config.fileloki_config.yaml loki.out 21 # 启动promtail
$ nohup ./promtail-linux-amd64 --config.filepromtail_config.yaml promtail.out 21 # 查看进程
$ ps -ef | grep loki
$ ps -ef | grep promtail6、使用Grafana查询日志
Grafana的安装请参考
https://blog.csdn.net/qq_30614345/article/details/131261635
6.1 配置Grafana Loki数据源
访问Grafana 配置数据源 填写相关信息 点击测试连接 回到主页 6.2 进行查询
点击Explore 选择loki数据源 输入查询条件
{hostzsx1,notegl01,server192.168.151.195}# 对Hello进行筛选
{hostzsx1,notegl01,server192.168.151.195} | Hello6.3 标签筛选 红色框中生成的为查询 LogQL后面我们将对 LogQL 进行介绍。
也可以对时间进行筛选 至此Loki promtail Grafana 部署完毕。