您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 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语法

---
## 安装部署
### 单机模式(开发环境)
```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
helm repo add grafana https://grafana.github.io/helm-charts
helm install loki grafana/loki-stack \
--set promtail.enabled=true \
--set grafana.enabled=true
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
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
# 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
pipeline_stages:
- multiline:
firstline: '^\d{4}-\d{2}-\d{2}'
max_wait_time: 3s
relabel_configs:
- action: replace
source_labels: [__meta_kubernetes_namespace]
target_label: namespace
# 过滤包含error的日志
{job="myapp"} |= "error"
# 统计不同错误码出现次数
rate({job="nginx"} |~ "HTTP/1.1\" (\\d{3})" [1m])
http://loki:3100
# 调整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
positions
文件是否正常更新chunk_idle_period
# 增加查询超时时间
query_server:
http_server_read_timeout: 300s
http_server_write_timeout: 300s
compactor:
working_directory: /tmp/loki/compactor
shared_store: filesystem
”`
注:实际使用时请根据环境调整配置参数,生产环境建议: 1. 启用认证 2. 配置持久化存储 3. 设置资源限制 4. 建立监控告警体系
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。