loki简介

一、简介

​ Grafana Loki是一组日志收集组件,由go语言开发。与ELK、EFK不同,loki的构建理念受到prometheus的启发,是对有关日志的元数据进行索引。日志数据本身会被压缩并以块的形式存储在本地或者对象存储中。小索引和高度的压缩的块,简化了操作和降低了loki的成本。

1、概述

loki是一个水平可扩展、高可用、多租户的日志聚合系统。
在这里插入图片描述

loki的组件构成:

agent:收集日志,可以使用自带的Promtail,也支持filebeat、fluentd、fluen-bit等多个日志收集组件。agent抓取日志,通过添加指标的形式,将日志转为流,并通过HTTP api推送给loki。

loki:主服务器,负责摄取和存储日志以及日志查询。它可以部署在三种不同的配置中。

Grafana:用于查询和显示日志数据。或者可以使用命令行进行查询。

2、架构

在这里插入图片描述

loki进程包含以下四种角色:

  • querier:查询器
  • inester:日志存储器
  • query-frontend:前置查询器
  • distributor:写入分发器

可以通过loki的二进制命令-target参数指定运行角色,默认为all

3、标签

类似于prometheus的标签,可以配置动态标签,类似于prometheus在k8s中的服务发现那样配置,但是官方建议不要使用太多的动态标签,尽量使用静态标签,因为loki可以根据日志中的关键字进行模糊匹配查询。

二、安装loki

1、通过yum进行安装loki

nano /etc/yum.repos.d/grafana.repo
[grafana]
name=grafana
baseurl=https://rpm.grafana.com
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://rpm.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt

#安装loki
yum install loki
#启动loki
systemd start loki && systemd enable loki

修改部分默认配置,以下是将数据保存在本地

cat /etc/loki/config.yml
auth_enabled: false
server:
  http_listen_port: 3100
  grpc_listen_port: 9096
  grpc_server_max_recv_msg_size: 419430400
  grpc_server_max_concurrent_streams: 1000
limits_config:
#每个用户每秒的摄取速率
  ingestion_rate_mb: 10
#每个用户每秒的摄取突发流量大小
  ingestion_burst_size_mb: 20
  max_label_name_length: 2048
  max_label_value_length: 4096
  reject_old_samples: true
  per_stream_rate_limit: 10MB
  per_stream_rate_limit_burst: 30MB
  max_chunks_per_query: 2000000  
common:
  instance_addr: 127.0.0.1
  path_prefix: /opt/loki
  storage:
    filesystem:
      chunks_directory: /opt/loki/chunks
      rules_directory: /opt/loki/rules
  replication_factor: 1
  ring:
    kvstore:
      store: inmemory

query_range:
  results_cache:
    cache:
      embedded_cache:
        enabled: true
        max_size_mb: 100

schema_config:
  configs:
    - from: 2020-10-24
      store: boltdb-shipper
      object_store: filesystem
      schema: v11
      index:
        prefix: index_
        period: 24h
ruler:
  alertmanager_url: http://localhost:9093

还可以将日志存储到公有云购买的对象存储中。

例如存储到谷歌云的桶中,需要实例对桶有读取权限

auth_enabled: false
server:
  http_listen_port: 3100
  grpc_listen_port: 9096
  grpc_server_max_recv_msg_size: 419430400
  grpc_server_max_concurrent_streams: 1000
limits_config:
#每个用户每秒的摄取速率
  ingestion_rate_mb: 20
#每个用户每秒的摄取突发流量大小
  ingestion_burst_size_mb: 50
  max_label_name_length: 2048
  max_label_value_length: 4096
  reject_old_samples: true
  per_stream_rate_limit: 20MB
  per_stream_rate_limit_burst: 50MB
  max_chunks_per_query: 2000000  
common:
  instance_addr: 127.0.0.1
  path_prefix: /opt/loki
  storage:
    filesystem:
      chunks_directory: /opt/loki/chunks
      rules_directory: /opt/loki/rules
  replication_factor: 1
  ring:
    kvstore:
      store: inmemory

query_range:
  results_cache:
    cache:
      embedded_cache:
        enabled: true
        max_size_mb: 100
storage_config:
  boltdb_shipper:
    active_index_directory: /opt/loki/boltdb-shipper-active
    cache_location: /opt/loki/boltdb-shipper-cache
    cache_ttl: 24h         # Can be increased for faster performance over longer query periods, uses more disk space
    shared_store: gcs
  gcs:
      bucket_name: test-loki
schema_config:
  configs:
    - from: 2020-10-24
      store: boltdb-shipper
      object_store: gcs
      schema: v11
      index:
        prefix: index_
        period: 24h
ruler:
  alertmanager_url: http://localhost:9093

2、客户端配置fluentd

因为已有的其他数据的日志收集是基于fluend,避免有多个日志收集工具,所以继续使用fluentd。

具体的安装步骤不再详细描述,
安装loki插件

fluent-gem install fluent-plugin-grafana-loki

fluentd配置如下

<source>
  @type tail
  tag loki-gamex-61
  path /opt/supervisor/log/gamex/gamexlogiclog_*_%Y-%m-%d_%H.log
  refresh_interval 10s
  read_from_head true
  pos_file /var/log/td-agent/gamexlogiclog.log.pos
  path_timezone "+08"
  <parse>
    @type json
    time_key time
    time_format %N
  </parse>
  @log_level info
</source>


<match loki-gamex-61>
  @type loki
  url "http://10.0.0.2:3100"
  extra_labels {"env":"mirror","gid":"61","app":"gamex"}
  <buffer>
    flush_interval 10s
    chunk_limit_size 32m
    chunk_limit_records 20000
    flush_at_shutdown true
  </buffer>
  line_format json
  buffer_type memory
  buffer_chunk_limit 500m
  @log_level info
</match>

三、查询日志

1、配置grafana数据源

在这里插入图片描述

2、查询实例

通过标签进行查询
在这里插入图片描述

通过标签加日志里的关键字进行查询,还支持正则表达式

具体表达时参考官方文档:https://grafana.com/docs/loki/latest/query/log_queries/

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值