Grafana全家桶部署指南:Agent + Loki + Grafana 生产环境配置详解

2024-12-11 21:33   湖南  

🚀 Grafana全家桶部署指南:Agent + Loki + Grafana 生产环境配置详解

📢 本文将详细介绍如何在生产环境中部署和配置 Grafana 全家桶,帮助你构建一个完整的日志监控系统!

一、架构概览 🏗️

二、Grafana-Agent 配置 🔧

1. 基础配置文件 (agent.yaml)

server:            
  log_level: info            
  http_listen_port: 12345            

# 📊 指标采集配置            
metrics:            
  global:            
    scrape_interval: 60s            
    remote_write:            
      - url: "http://prometheus:9090/api/v1/write"            
        basic_auth:            
          username: ${PROMETHEUS_USER}            
          password: ${PROMETHEUS_PASSWORD}            

# 📝 日志采集配置            
logs:            
  configs:            
  - name: default            
    positions:            
      filename: /tmp/positions.yaml            
    clients:            
      - url: http://loki:3100/loki/api/v1/push            
        tenant_id: tenant1            
        batchwait: 1s            
        batchsize: 1048576            
        timeout: 10s            
        backoff_config:            
          min_period: 500ms            
          max_period: 5m            
          max_retries: 10            

    # 🔍 日志采集规则            
    scrape_configs:            
      # 系统日志            
      - job_name: system            
        static_configs:            
          - targets: [localhost]            
            labels:            
              job: system            
              env: prod            
              __path__: /var/log/*.log            
        pipeline_stages:            
          - timestamp:            
              source: time            
              format: RFC3339            
              location: Asia/Shanghai            

      # 应用日志            
      - job_name: application            
        static_configs:            
          - targets: [localhost]            
            labels:            
              job: app            
              env: prod            
              service: myapp            
              __path__: /app/logs/*.log            

2. Docker 部署配置 🐳

docker run -d \            
  --name grafana-agent \            
  --restart=unless-stopped \            
  --network monitoring \            
  -v /etc/grafana-agent:/etc/grafana-agent \            
  -v /var/log:/var/log:ro \            
  -v /app/logs:/app/logs:ro \            
  -e TZ=Asia/Shanghai \            
  grafana/agent:latest \            
  --config.file=/etc/grafana-agent/agent.yaml            

三、Loki 配置 📦

1. 配置文件 (loki.yaml)

auth_enabled: true            

server:            
  http_listen_port: 3100            

# 💾 存储配置            
storage_config:            
  boltdb_shipper:            
    active_index_directory: /loki/index            
    cache_location: /loki/cache            
    cache_ttl: 24h            
    shared_store: filesystem            
  filesystem:            
    directory: /loki/chunks            

# ⚙️ 系统限制配置            
limits_config:            
  retention_period: 30d            
  enforce_metric_name: false            
  max_entries_limit_per_query: 5000            

# 📊 Schema 配置            
schema_config:            
  configs:            
    - from: 2023-01-01            
      store: boltdb-shipper            
      object_store: filesystem            
      schema: v11            
      index:            
        prefix: index_            
        period: 24h            

2. Docker 部署 🐳

docker run -d \            
  --name loki \            
  --restart=unless-stopped \            
  --network monitoring \            
  -p 3100:3100 \            
  -v loki-data:/loki \            
  -v /etc/loki:/etc/loki \            
  grafana/loki:latest \            
  -config.file=/etc/loki/loki.yaml            

四、Grafana 配置 📊

1. 数据源配置

apiVersion: 1            
datasources:            
  - name: Loki            
    type: loki            
    access: proxy            
    url: http://loki:3100            
    jsonData:            
      maxLines: 1000            
      timeout: 30            

2. Docker 部署 🐳

docker run -d \            
  --name grafana \            
  --restart=unless-stopped \            
  --network monitoring \            
  -p 3000:3000 \            
  -v grafana-data:/var/lib/grafana \            
  -v /etc/grafana:/etc/grafana \            
  -e "GF_SECURITY_ADMIN_PASSWORD=your_secure_password" \            
  grafana/grafana:latest            

五、生产环境最佳实践 💡

1. 高可用配置

·✨ 使用多副本部署

·🔄 配置负载均衡

·💾 定期数据备份

2. 性能优化

# Loki 性能优化配置            
chunk_store_config:            
  max_look_back_period: 720h  # 30天            
  chunk_cache_config:            
    enable: true            
    size: 1GB            

# Agent 性能优化            
logs:            
  configs:            
    - name: default            
      positions:            
        sync_period: 10s            
      clients:            
        - batchsize: 1048576  # 1MB            
          batchwait: 1s            

3. 监控告警配置

# Grafana 告警规则示例            
groups:            
  - name: LogAlerts            
    rules:            
      - alert: HighErrorRate            
        expr: |            
          sum(rate({job="app"} |= "error" [5m])) > 10            
        for: 5m            
        labels:            
          severity: critical            
        annotations:            
          summary: "错误日志率过高"            

六、常见问题排查 🔍

1.Agent 无法采集日志

o✅ 检查文件权限

o✅ 验证日志路径配置

o✅ 查看 Agent 日志

2.Loki 写入失败

o✅ 检查存储空间

o✅ 验证网络连接

o✅ 查看错误日志

3.Grafana 查询超时

o✅ 优化查询范围

o✅ 调整超时设置

o✅ 检查索引配置

七、总结 📝

通过以上配置,我们搭建了一个完整的日志监控系统。记住:

·🔐 重要配置要加密存储

·📊 定期检查系统性能

·🔄 保持组件版本更新

·💾 做好数据备份计划

🎯 关注我,获取更多运维干货!

💡 有任何问题都可以在评论区留言,我会及时回复的!

#Grafana #监控系统 #运维技术 #Docker

博闻简书
以简驭繁,书写博闻
 最新文章