• 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

  • 相关阅读:
    git使用总结
    将本地项目上传到git
    ASP.NET MVC中注册Global.asax的Application_Error事件处理全局异常
    SQLQueryStress
    SQL Server 触发器
    HTTP 错误 404.3
    HTTP 错误 500.19 Internal Server Error的解决方法
    windows server 2012 配置多用户ftp服务器配置注意点
    自定义Remote验证(对博客园文章“Asp.net MVC验证哪些事(3)-- Remote验证及其改进(附源码)”自定义验证的改进)
    [ASP.net教程]IIS服务器 远程发布(Web Deploy)配置
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/15913521.html
Copyright © 2020-2023  润新知