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


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

文章插图
配置优化
1、grpc 优化
grpc_server_max_recv_msg_size: 1079741824 # 远程调用最大接受的大小grpc_server_max_send_msg_size: 1079741824 # 远程调用最大发送的大小
per_stream_rate_limit: 1GB per_stream_rate_limit设置太小会报错: error sending batch, will retry" status=429 error="server returned HTTP status 429 Too Many Requests (429): Ingestion rate limit exceeded for user fake
2、优化error 日志显示多行的问题.
参考MFG 配置
3、使用s3存储 loki数据
server:http_listen_port: 3100grpc_listen_port: 9095storage_config:boltdb_shipper:active_index_directory: /data/loki/boltdb-shipper-activecache_location: /data/loki/boltdb-shipper-cachecache_ttl: 24h# 将缓存存储时间设置为24小时shared_store: s3# 设置Loki的存储后端为s3shared_store_config:endpoint: http://s3.example.comaccess_key_id: YOUR_ACCESS_KEYsecret_access_key: YOUR_SECRET_KEYindex:prefix: /data/loki/indexperiod: 24h# 设置索引段(块)的持久周期为24小时queue_config:enabled: true# 启用索引转发wait_time: 10ms# 设置队列的等待时间capacity: 10000# 用于配置索引队列的容量properties:wal:compress: true# 启用WAL压缩storage:type: boltdbboltdb:open_options:timeout: 10s# 设置BoltDB打开时间的透明超时
4、loki的 为什么可以提高性能
Loki 是一个开源的日志聚合和查询系统,用于管理大规模分布式日志数据 。Loki 的索引网关()使用了一个可扩展的分布式缓存来存储最近访问的索引数据以及查询元数据,从而提高了查询性能 。
Loki 的索引网关使用了一个三层缓存架构,包括本地缓存、索引网关缓存和远程存储缓存 。当一个查询请求到达索引网关时,索引网关将会首先检查本地缓存中是否有相应的索引数据,如果有,则立即返回结果 。如果本地缓存中没有数据,索引网关将查询它的分布式缓存服务器,以查找最近访问的索引数据 。这些缓存服务器可以运行在不同的主机中,并且它们之间可以相互同步,从而实现真正的高可用性和可扩展性 。
如果索引网关缓存中也没有符合要求的数据,则索引网关会将查询发送到远程存储引擎,例如、 等 。在这里,Loki 可以利用存储引擎的横向扩展能力,可以轻松地适应不断增长的日志数据量 。
通过这个三层缓存架构,Loki 的索引网关能够确保最近访问的索引数据始终处于高速缓存中,并且可以快速响应查询请求,提高了查询性能 。此外,Loki 的索引网关具有可扩展性和容错性,可以轻松地适应不断增长的日志数据量和查询请求量,从而支持高性能和高可用的日志分析和查询 。
假设我们有一个 Loki 集群,其中包含多个 LRU 缓存服务器和一些存储引擎 。当用户发出一个日志查询请求时,Loki 索引网关会使用以下步骤来响应该请求:
在本地缓存中查找:Loki 的索引网关使用本地缓存来存储最近访问的索引数据和查询元数据 。首先,索引网关会在本地缓存中查找是否存在符合当前查询的索引数据 。如果有,则立即返回查询结果 。在索引网关缓存中查找:如果本地缓存中没有符合查询条件的索引数据,则索引网关会查询它的分布式缓存服务器,以寻找最近访问的索引数据 。如果索引网关缓存中有符合查询条件的索引数据,则将结果返回给用户 。在远程存储缓存中查找:如果索引网关缓存中没有符合查询条件的索引数据,则索引网关会将查询请求发送到远程存储引擎,例如、 等 。在这里,Loki 可以利用存储引擎的横向扩展能力,以快速响应查询请求,并将结果返回给用户 。同时,索引网关会将查询结果缓存到索引网关缓存中,以便下次查询时可以快速响应 。