Loki怎么配置使用

发布时间:2021-12-30 14:50:19 作者:iii
来源:亿速云 阅读:509
# Loki怎么配置使用

## 目录
1. [Loki简介](#loki简介)
2. [核心组件](#核心组件)
3. [安装部署](#安装部署)
4. [基础配置](#基础配置)
5. [日志采集实战](#日志采集实战)
6. [查询与可视化](#查询与可视化)
7. [性能调优](#性能调优)
8. [常见问题](#常见问题)

---

## Loki简介
Loki是由Grafana Labs开源的轻量级日志聚合系统,专为云原生环境设计。与ELK相比具有以下特点:

- **架构精简**:采用"只索引元数据"的设计理念
- **存储高效**:原始日志以压缩形式存储,索引体积比ES小10倍
- **无缝集成**:原生支持Grafana可视化
- **成本优势**:相同数据量下资源消耗仅为传统方案的1/5

典型应用场景:
- Kubernetes集群日志收集
- 微服务架构的分布式日志
- 需要长期存储但查询频次低的日志

---

## 核心组件

### 1. Loki Server
包含三个主要模块:
- **Ingester**:接收并临时存储日志流
- **Querier**:处理查询请求
- **Distributor**:分发日志到Ingester

### 2. Promtail
日志采集代理,核心功能:
- 自动发现目标文件
- 添加标签(Labels)
- 推送日志到Loki

### 3. Grafana
可视化查询界面,支持LogQL语法

![Loki架构图](https://grafana.com/static/img/docs/loki/architecture.png)

---

## 安装部署

### 单机模式(开发环境)
```bash
# 使用Docker Compose
version: "3"
services:
  loki:
    image: grafana/loki:latest
    ports:
      - "3100:3100"
    command: -config.file=/etc/loki/local-config.yaml
  
  promtail:
    image: grafana/promtail:latest
    volumes:
      - /var/log:/var/log
    command: -config.file=/etc/promtail/config.yml

Kubernetes集群部署

helm repo add grafana https://grafana.github.io/helm-charts
helm install loki grafana/loki-stack \
  --set promtail.enabled=true \
  --set grafana.enabled=true

基础配置

Loki主配置(loki-config.yaml)

auth_enabled: false

server:
  http_listen_port: 3100

ingester:
  lifecycler:
    address: 127.0.0.1
    ring:
      kvstore:
        store: inmemory
      replication_factor: 1
    final_sleep: 0s
  chunk_idle_period: 5m
  chunk_retain_period: 30s

schema_config:
  configs:
    - from: 2020-10-24
      store: boltdb-shipper
      object_store: filesystem
      schema: v11
      index:
        prefix: index_
        period: 24h

storage_config:
  boltdb:
    directory: /tmp/loki/index
  filesystem:
    directory: /tmp/loki/chunks

limits_config:
  enforce_metric_name: false
  reject_old_samples: true
  reject_old_samples_max_age: 168h

Promtail配置示例

server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yaml

clients:
  - url: http://loki:3100/loki/api/v1/push

scrape_configs:
- job_name: system
  static_configs:
  - targets:
      - localhost
    labels:
      job: varlogs
      __path__: /var/log/*log

日志采集实战

1. 采集容器日志

# promtail容器日志配置
scrape_configs:
- job_name: kubernetes-pods
  kubernetes_sd_configs:
    - role: pod
  pipeline_stages:
    - docker: {}
  relabel_configs:
    - source_labels: [__meta_kubernetes_pod_name]
      target_label: pod

2. 多行日志处理

pipeline_stages:
- multiline:
    firstline: '^\d{4}-\d{2}-\d{2}'
    max_wait_time: 3s

3. 动态标签管理

relabel_configs:
- action: replace
  source_labels: [__meta_kubernetes_namespace]
  target_label: namespace

查询与可视化

基础LogQL语法

# 过滤包含error的日志
{job="myapp"} |= "error"

# 统计不同错误码出现次数
rate({job="nginx"} |~ "HTTP/1.1\" (\\d{3})" [1m])

Grafana面板配置

  1. 添加Loki数据源:http://loki:3100
  2. 创建Dashboard使用Logs面板
  3. 高级功能:
    • 日志高亮
    • 上下文查看
    • 时间范围选择

Loki怎么配置使用


性能调优

存储优化

# 调整chunk设置
ingester:
  chunk_block_size: 262144
  chunk_encoding: snappy

查询加速

query_range:
  parallelise_shardable_queries: true
  max_retries: 5
  cache_results: true

资源限制

limits_config:
  ingestion_rate_mb: 16
  ingestion_burst_size_mb: 32
  max_streams_per_user: 10000

常见问题

Q1: 日志延迟高

Q2: 查询超时

# 增加查询超时时间
query_server:
  http_server_read_timeout: 300s
  http_server_write_timeout: 300s

Q3: 存储空间不足

compactor:
  working_directory: /tmp/loki/compactor
  shared_store: filesystem

延伸阅读

”`

注:实际使用时请根据环境调整配置参数,生产环境建议: 1. 启用认证 2. 配置持久化存储 3. 设置资源限制 4. 建立监控告警体系

推荐阅读:
  1. samba 配置使用详解
  2. kong配置使用cassandra

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

loki

上一篇:OpenCV如何实现视频与图像之间的互转

下一篇:Windows 10 20H2是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》