grafana loki 2.4 简化服务部署

grafana loki 2.4 版本简化了集群部署的使用,实际上部署起来很简单了,而且系统扩容更方便了

环境准备

  • docker-compose 文件
---
version: "3"
 
networks:
  loki:
 
services:
  read:
    image: grafana/loki:2.4.2
    command: "-config.file=/etc/loki/config.yaml -target=read"
    ports:
      - 3100
      - 7946
      - 9095
    volumes:
      - ./loki-config.yaml:/etc/loki/config.yaml
    depends_on:
      - minio
    networks: &loki-dns
      loki:
        aliases:
          - loki
 
  write:
    image: grafana/loki:2.4.2
    command: "-config.file=/etc/loki/config.yaml -target=write"
    ports:
      - 3100
      - 7946
      - 9095
    volumes:
      - ./loki-config.yaml:/etc/loki/config.yaml
    depends_on:
      - minio
    networks:
      <<: *loki-dns
 
  promtail:
    image: grafana/promtail:2.4.2
    logging: &logging
      driver: grafana/loki-docker-driver:main
      options:
        loki-url: "http://localhost:3100/loki/api/v1/push"
        loki-retries: "1"
        loki-tenant-id: "tenant1"
    volumes:
      - /var/log:/var/log
      - ./promtail-config.yaml:/etc/promtail/config.yaml:ro
    command: -config.file=/etc/promtail/config.yaml
    depends_on:
      - gateway
    networks:
      - loki
 
  minio:
    image: minio/minio
    entrypoint:
      - sh
      - -euc
      - |
        mkdir -p /data/loki-data && \
        mkdir -p /data/loki-ruler && \
        minio server /data
    environment:
      - MINIO_ACCESS_KEY=loki
      - MINIO_SECRET_KEY=supersecret
      - MINIO_PROMETHEUS_AUTH_TYPE=public
      - MINIO_UPDATE=off
    logging:
      <<: *logging
    ports:
      - 9000
    volumes:
      - ./.data/minio:/data
    networks:
      - loki
 
  grafana:
    image: grafana/grafana:latest
    logging:
      <<: *logging
    environment:
      - GF_PATHS_PROVISIONING=/etc/grafana/provisioning
      - GF_AUTH_ANONYMOUS_ENABLED=true
      - GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
    depends_on:
      - gateway
    entrypoint:
      - sh
      - -euc
      - |
        mkdir -p /etc/grafana/provisioning/datasources
        cat <<EOF > /etc/grafana/provisioning/datasources/ds.yaml
        apiVersion: 1
        datasources:
          - name: Loki
            type: loki
            access: proxy
            url: http://gateway:3100
            jsonData:
              httpHeaderName1: "X-Scope-OrgID"
            secureJsonData:
              httpHeaderValue1: "tenant1"
        EOF
        /run.sh
    ports:
      - "3000:3000"
    networks:
      - loki
 
  gateway:
    logging:
      <<: *logging
    image: nginx:latest
    depends_on:
      - read
      - write
    entrypoint:
      - sh
      - -euc
      - |
        cat <<EOF > /etc/nginx/nginx.conf
        user  nginx;
        worker_processes  5;  ## Default: 1
 
        events {
          worker_connections   1000;
        }
 
        http {
          resolver 127.0.0.11;
 
          server {
            listen             3100;
 
            location = / {
              return 200 'OK';
              auth_basic off;
            }
 
            location = /api/prom/push {
              proxy_pass       http://write:3100\$$request_uri;
            }
 
            location = /api/prom/tail {
              proxy_pass       http://read:3100\$$request_uri;
              proxy_set_header Upgrade \$$http_upgrade;
              proxy_set_header Connection "upgrade";
            }
 
            location ~ /api/prom/.* {
              proxy_pass       http://read:3100\$$request_uri;
            }
 
            location = /loki/api/v1/push {
              proxy_pass       http://write:3100\$$request_uri;
            }
 
            location = /loki/api/v1/tail {
              proxy_pass       http://read:3100\$$request_uri;
              proxy_set_header Upgrade \$$http_upgrade;
              proxy_set_header Connection "upgrade";
            }
 
            location ~ /loki/api/.* {
              proxy_pass       http://read:3100\$$request_uri;
            }
          }
        }
        EOF
        /docker-entrypoint.sh nginx -g "daemon off;"
    ports:
      - "3100:3100"
    networks:
      - loki
  • 安装loki docker log driver
    注意使用新版本的docker desktop 可能会有问题,解决方法是自己购进啊一个
 
docker plugin install  grafana/loki-docker-driver:main --alias loki-compose --grant-all-permissions

使用

  • 启动服务
docker-compose up- d

 

 


 

 

说明

新版本loki 的模式是越来越简单了,我们只需要一个minio (s3) 就可以方便的部署了,

参考资料

https://grafana.com/docs/loki/latest/fundamentals/architecture/#modes-of-operation
https://grafana.com/docs/loki/latest/release-notes/v2-4/
https://github.com/rongfengliang/grafana-loki-learning

posted on   荣锋亮  阅读(646)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2021-02-19 airbyte 整体架构
2021-02-19 plop 方便的micro-generator framework
2021-02-19 jsdelivr 工作原理
2020-02-19 cube.js 集成opendistro elasticsearch bug 的原因说明
2020-02-19 cube.js opendistro elasticsearch 试用以及几个bug
2016-02-19 微服务架构下的服务发现

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示