• signoz 开源apm 工具试用


    signoz 官方提供了demo ,我们基于docker 也可以快速的体验服务

    参考架构

    signoz 的架构还是比较简单的,利用了社区的标准(OpenTelemetry),同时集成了metrics 以及trace,类似的grafan tempo 也是一个全家桶的东西使用也比较简单

    运行

    注意对于docker-compose 启动的,官方的示例是需要一些调整的,不调整也没事,只是会有异常提示

    • clone 代码&&启动
    git clone -b main https://github.com/SigNoz/signoz.git && cd signoz/deploy/
    sudo docker-compose -f docker/clickhouse-setup/docker-compose.yaml up -d
    • 参考docker-compose 文件
    version: "3.9"
     
    services:
      clickhouse:
        image: yandex/clickhouse-server:21.12.3.32
        volumes:
          - ./clickhouse-config.xml:/etc/clickhouse-server/config.xml
          - ./data/clickhouse/:/var/lib/clickhouse/
        deploy:
          restart_policy:
            condition: on-failure
        healthcheck:
          # "clickhouse", "client", "-u ${CLICKHOUSE_USER}", "--password ${CLICKHOUSE_PASSWORD}", "-q 'SELECT 1'"
          test: ["CMD", "wget", "--spider", "-q", "localhost:8123/ping"]
          interval: 30s
          timeout: 5s
          retries: 3
     
      alertmanager:
        image: signoz/alertmanager:0.6.0
        volumes:
          - ./data/alertmanager:/data
        command:
          - --queryService.url=http://query-service:8080
          - --storage.path=/data
        depends_on:
          - query-service
        deploy:
          restart_policy:
            condition: on-failure
     
      query-service:
        image: signoz/query-service:0.7.4
        command: ["-config=/root/config/prometheus.yml"]
        ports:
          - "8080:8080"
        volumes:
          - ./prometheus.yml:/root/config/prometheus.yml
          - ../dashboards:/root/config/dashboards
          - ./data/signoz/:/var/lib/signoz/
        environment:
          - ClickHouseUrl=tcp://clickhouse:9000
          - STORAGE=clickhouse
          - GODEBUG=netdns=go
          - TELEMETRY_ENABLED=true
          - DEPLOYMENT_TYPE=docker-swarm
     
        deploy:
          restart_policy:
            condition: on-failure
        depends_on:
          - clickhouse
     
      frontend:
        image: signoz/frontend:0.7.4
        depends_on:
          - query-service
        ports:
          - "3301:3301"
        volumes:
          - ../common/nginx-config.conf:/etc/nginx/conf.d/default.conf
     
      otel-collector:
        image: signoz/otelcontribcol:0.43.0
        command: ["--config=/etc/otel-collector-config.yaml"]
        volumes:
          - ./otel-collector-config.yaml:/etc/otel-collector-config.yaml
        ports:
          - "4317:4317"     # OTLP gRPC receiver
          - "4318:4318"     # OTLP HTTP receiver
          # - "8889:8889"     # Prometheus metrics exposed by the agent
          # - "13133"         # health_check
          # - "14268:14268"   # Jaeger receiver
          # - "55678:55678"   # OpenCensus receiver
          # - "55679:55679"   # zpages extension
          # - "55680:55680"   # OTLP gRPC legacy receiver
          # - "55681:55681"   # OTLP HTTP legacy receiver
        depends_on:
          - clickhouse
     
      otel-collector-metrics:
        image: signoz/otelcontribcol:0.43.0
        command: ["--config=/etc/otel-collector-metrics-config.yaml"]
        volumes:
          - ./otel-collector-metrics-config.yaml:/etc/otel-collector-metrics-config.yaml
        deploy:
          restart_policy:
            condition: on-failure
        depends_on:
          - clickhouse
      hotrod:
        image: jaegertracing/example-hotrod:1.30
        command: ["all"]
        environment:
          - JAEGER_ENDPOINT=http://otel-collector:14268/api/traces
        logging:
          options:
            max-size: 50m
            max-file: "3"
     
      load-hotrod:
        image: "grubykarol/locust:1.2.3-python3.9-alpine3.12"
        hostname: load-hotrod
        environment:
          ATTACKED_HOST: http://hotrod:8080
          LOCUST_MODE: standalone
          NO_PROXY: standalone
          TASK_DELAY_FROM: 5
          TASK_DELAY_TO: 30
          QUIET_MODE: "${QUIET_MODE:-false}"
          LOCUST_OPTS: "--headless -u 10 -r 1"
        volumes:
          - ../common/locust-scripts:/locust

    使用&&效果

    打开http://localhost:3301


    调用链情况

    说明

    signoz 使用起来还是比较简单的,而且基于了标准的OpenTelemetry,其他东西集成也比较简单,比如spring boot 应用,我们直接在启动的时候配置agent 就可以了(基于OpenTelemetry agent 就可以了,但是此agent 有点偏大。。。。)
    参考配置(基于容器的部分)

     
    ENV OTEL_METRICS_EXPORTER=none 
    ENV OTEL_EXPORTER_OTLP_ENDPOINT=http://otel-collector:4317
    ENV OTEL_RESOURCE_ATTRIBUTES=service.name=mydemoapp
    ENTRYPOINT ["java","-javaagent:/opentelemetry-javaagent.jar","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

    参考资料

    https://signoz.io/docs/
    https://github.com/signoz/signoz

  • 相关阅读:
    js中的匿名函数
    js在函数中未定义的变量的处理
    js中的isNaN()函数
    js中boolean类型的理解
    instanceof关键字
    js
    toString 方法在数组中的使用
    java中public private protected default的区别
    韩信点兵(hanxin)
    阶乘之和 输入n,计算S=1!+2!+3!+…+n!的末6位(不含前导0)。n≤10 6 ,n!表示 前n个正整数之积。
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/16084012.html
Copyright © 2020-2023  润新知