zoukankan      html  css  js  c++  java
  • grafana tempo 分布式追踪框架学习试用

    环境基于了官方的docker-compose demo

    环境准备(基于docker-compose 运行)

    • docker-compose 文件
    version: "3"
    services:
      tempo:
        image: grafana/tempo:latest
        command: 
          - "-storage.trace.backend=local"                  # tell tempo where to permanently put traces
          - "-storage.trace.local.path=/tmp/tempo/traces"   
          - "-storage.trace.wal.path=/tmp/tempo/wal"        # tell tempo where to store the wal
          - "-auth.enabled=false"                           # disables the requirement for the X-Scope-OrgID header
          - "-server.http-listen-port=3100" 
        volumes:
          - ./example-data/tempo:/tmp/tempo
        ports:
          - "14268"  # jaeger ingest
        logging:
          driver: loki
          options:
            loki-url: 'http://localhost:3100/api/prom/push'
      tempo-query:
        image: grafana/tempo-query:latest
        command: ["--grpc-storage-plugin.configuration-file=/etc/tempo-query.yaml"]
        volumes:
          - ./etc/tempo-query.yaml:/etc/tempo-query.yaml
        ports:
          - "16686:16686"  # jaeger-ui
        logging:
          driver: loki
          options:
            loki-url: 'http://localhost:3100/api/prom/push'
      minio:
        image: minio/minio
        environment:
          - MINIO_ACCESS_KEY=tempo
          - MINIO_SECRET_KEY=supersecret
        command:  minio server /data
        ports:
          - "9000:9000"
      prometheus:
        image: prom/prometheus:latest
        volumes:
          - ./etc/prometheus.yaml:/etc/prometheus.yaml
        entrypoint:
          - /bin/prometheus
          - --config.file=/etc/prometheus.yaml
        ports:
          - "9090:9090"
        logging:
          driver: loki
          options:
            loki-url: 'http://localhost:3100/api/prom/push'
      synthetic-load-generator:
        image: omnition/synthetic-load-generator:1.0.25
        volumes:
          - ./etc/load-generator.json:/etc/load-generator.json
        environment:
          - TOPOLOGY_FILE=/etc/load-generator.json
          - JAEGER_COLLECTOR_URL=http://tempo:14268
      grafana:
        image: grafana/grafana:7.3.6
        volumes:
          - ./example-data/datasources:/etc/grafana/provisioning/datasources
          - ./example-data/dashboards-provisioning:/etc/grafana/provisioning/dashboard
        ports:
          - "3000:3000"
        logging:
          driver: loki
          options:
            loki-url: 'http://localhost:3100/api/prom/push'
      loki:
        image: grafana/loki:2.1.0
        command: -config.file=/etc/loki/local-config.yaml
        ports:
          - "3100:3100"                                
        environment:
          - JAEGER_AGENT_HOST=tempo
          - JAEGER_ENDPOINT=http://tempo:14268/api/traces # send traces to Tempo
          - JAEGER_SAMPLER_TYPE=const
          - JAEGER_SAMPLER_PARAM=1
        logging:
          driver: loki
          options:
            loki-url: 'http://localhost:3100/api/prom/push'
    • 依赖的组件说明
      依赖了loki,grafana,prometheus,synthetic-load-generator(生成metrics)
      tempo 包含的组件(engine,以及query),容器的日志基于了loki plugin,相关prometheus
      以及grafana datasource 还有dashboard 配置,参考github 配置

    运行

    • 首先安装docker loki log plugin
     
    docker plugin install grafana/loki-docker-driver:latest --alias loki --grant-all-permissions
    • 运行
    docker-compose up -

    效果

    注意需要输入一个traceid,可以同loki 查找

    说明

    grafana 的tempo 是一个很不错的工具,至少目前来看比使用jaeger的技术原生方案至少会简化好多,当然tempo 也是在巨人的肩
    膀上成长的,grafana 的agent 也是一个很不错的工具,集成了log,metrics,trace,好处是保证了各种元数据的一致

    参考资料

    https://github.com/rongfengliang/grafana-tempo-learning
    https://github.com/grafana/tempo/tree/master/example/docker-compose

  • 相关阅读:
    51 Nod 1086 多重背包问题(单调队列优化)
    51 Nod 1086 多重背包问题(二进制优化)
    51 Nod 1085 01背包问题
    poj 2559 Largest Rectangle(单调栈)
    51 Nod 1089 最长回文子串(Manacher算法)
    51 Nod N的阶乘的长度 (斯特林近似)
    51 Nod 1134 最长递增子序列(经典问题回顾)
    51 Nod 1020 逆序排列
    PCA-主成分分析(Principal components analysis)
    Python中cPickle
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/14242689.html
Copyright © 2011-2022 走看看