【GO】LGTM_Grafana_Tempo(2)_官方用例改后实操

这篇具有很好参考价值的文章主要介绍了【GO】LGTM_Grafana_Tempo(2)_官方用例改后实操。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近在尝试用 LGTM 来实现 Go 微服务的可观测性,就顺便整理一下文档。

Tempo 会分为 4 篇文章:

  1. Tempo 的架构
  2. 官网测试实操跑通
  3. gin 框架发送 trace 数据到 tempo
  4. go-zero 微服务框架使用发送数据到 tempo

根据官方文档实操跑起来 tempo,中间根据自己需要改了一些,按照纯官网会有些跑不起来。

本文档用 docker-compose 启动,单独启动组件的,会在其他的文档描述。本文档主要目的在于用起来,怎么用得好,我现在也没研究太深。

所有本文档用到的配置文件,均在:zxmfke/lgtm: LGTM可观测性实战 (github.com)

git clone https://github.com/zxmfke/lgtm.git

让架构告诉我们需要什么组件来完成

【GO】LGTM_Grafana_Tempo(1)—架构

第一篇讲了 tempo 的架构,分为 Distributor,Ingester,Quier,Quier Fontend,Stroage,Compator,Matrics Generator/Backend。Distributor 意味着输入,所以得有个东西来发送 traces 数据。我们通过 github,可以找到 grafana 用来测试的 k6-tracing(初次看到,感觉就很吊)。

可能这个地方,有些人会想,好麻烦呀还要造数据,又要写代码。但是这个步骤却又是很重要的一步,相当于自测。开发前,也应该要想要的我要怎么自测,怎么测试我提供给别人的服务。

Ingester,Storage,Comptor 组成(泛) 我们的 tmepo,所以 tempo 肯定是必不可少的了。既然我们把数据发到tempo了,那我们就得做存储,为了测试所以就用 fs 来作为存储。数据存完,tempo 提供 quier,就表示我们可以查。Grafana 必然就是首选,毕竟是其旗下,因此 Grafana 也是需要的。最后一个,Matrics 要记在哪里呢?嗯,还是得要 prometheus 用来监控。不过,不开 matrics 的话,也可以不用 prometheus。

这样,本文档需要用到的所有组件就是,grafana,tempo,prometheus,k6-tracing。


文档使用镜像
  • grafana:grafana/grafana:10.1.0

  • tempo:grafana/tempo:2.2.1

    去 docker hub 上看 tempo 的 tag 都是仓库名+commitid,其实直接拉取 github 上面最新 release 版本就行

  • prometheus:prom/prometheus:v2.46.0

  • k6-tracing:ghcr.io/grafana/xk6-client-tracing:v0.0.2


文档使用配置文件地址

都是在一个仓库,可以直接 clone 下来,等下直接 docker-compose 起就好

git clone https://github.com/zxmfke/lgtm.git

组件配置文件说明及重点修改说明

针对我跑的过程中碰到的几个点,简单说明下

grafana

grafana 的是 datasource 文件,这个文件可以减少使用者手动配置 tempo,prometheus 的步骤,这个值得自己在开发的时候借鉴。主要就是配置 tempo 和 prometheus,页面的配置也会在之后文档补上。

用 datasource 文件,创建的 source,在 grafana UI 上是不能编辑的,只能通过文件改了。

tempo
server:
  http_listen_port: 3200 # tempo 监听端口

distributor:  # 配置的是允许接入哪些类型的 trace 数据
  xxxxx

ingester:
  xxxxx

compactor:
  xxxxx
  
metrics_generator: # 配置的是 metrics 的数据往哪里发,主要就是写 promethus 的 URL
  registry:
    external_labels:
      source: tempo
      cluster: docker-compose
  storage:
    path: /tmp/tempo/generator/wal
    remote_write:
      - url: http://promethus:9090/api/v1/write
        send_exemplars: true

storage:
  trace:
    backend: local                     # backend configuration to use
    wal:
      path: /tmp/tempo/wal             # where to store the the wal locally
    local:
      path: /tmp/tempo/blocks

overrides:
  metrics_generator_processors: [service-graphs, span-metrics]

有看过第一篇架构的朋友,应该对配置文件里面的几个标题都很熟悉了。

解释(看的时候,查的资料)

wal

“wal” 是指 Write-Ahead Log(预写日志)。Write-Ahead Log 是一种持久化数据的技术,在系统发生崩溃或故障时,可以确保数据的可靠性和一致性。对于 Tempo 来说,“wal” 是一个配置项,用于指定预写日志文件的位置和设置。

通过使用 Write-Ahead Log,Tempo 可以将跟踪数据持久化到磁盘,以便在系统故障后能够恢复数据并保持数据的完整性。该日志文件记录了写入 Tempo 的跟踪数据的操作,以及相关的元数据。这种方式可以确保即使在系统崩溃时,跟踪数据也不会丢失,并且可以在系统恢复后重新加载。

overrides

“overrides” 是用于覆盖默认配置的配置项。它允许您对 Tempo 的行为进行细粒度的定制,以满足特定的需求和场景。

通过使用 “overrides” 配置项,您可以在 Tempo 中针对某些特定的组件、服务或操作进行个性化配置。这些覆盖配置可以覆盖全局配置中的默认设置,以便对特定组件或场景进行定制化设置。


Docker Compose YAML
# 如果有 git clone 的话,直接 cd tempo/docker-compose/local 即可
wget https://github.com/zxmfke/lgtm/blob/main/tempo/docker-compose/local/docker-compose.yaml -O docker-compose.yaml
version: "3"

networks:
  grafana-net:
    driver: bridge

services:
  tempo:
    image: grafana/tempo:2.2.1
    networks:
      - grafana-net
    command: [ "-config.file=/etc/tempo.yaml" ]
    volumes:
      - ./tempo.yaml:/etc/tempo.yaml
    ports:
      - "14268:14268"  # jaeger ingest
      - "3200:3200"    # tempo
      - "9095:9095"    # tempo grpc
      - "4317:4317"    # otlp grpc
      - "4318:4318"    # otlp http
      - "9411:9411"    # zipkin

  k6-tracing:
    image: ghcr.io/grafana/xk6-client-tracing:v0.0.2
    networks:
      - grafana-net
    environment:
      - ENDPOINT=tempo:4317
    restart: always
    depends_on:
      - tempo

  prometheus:
    image: prom/prometheus:v2.46.0
    networks:
      - grafana-net
    command:
      - --config.file=/etc/prometheus.yaml
      - --web.enable-remote-write-receiver
      - --enable-feature=exemplar-storage
    volumes:
      - ./prometheus.yaml:/etc/prometheus.yaml
    ports:
      - "9090:9090"

  grafana:
    image: grafana/grafana:10.1.0
    networks:
      - grafana-net
    volumes:
      - ./grafana-datasources.yaml:/etc/grafana/provisioning/datasources/datasources.yaml
    environment:
      - GF_FEATURE_TOGGLES_ENABLE=traceqlEditor
    ports:
      - "3000:3000"

注意事项

  1. tempo 的 ports 是根据配置文件中 distributor 来的,开放哪些 receiver 就开哪些端口。

    单点部署 tempo 的有一个很容易出错的地方,docker run 的时候只知道开放 3200 端口,以为 tempo 就起好了,但是往里面发 traces 数据的时候又写不进去。

  2. k6-tracing 是往 tempo 发数据,所以必须得等 tempo 启动好


配置文件改动位置
grafana-dataresources.yaml
# 如果有 git clone 的话,直接 cd tempo/docker-compose/local 即可
wget https://github.com/zxmfke/lgtm/blob/main/tempo/docker-compose/local/grafana-dataresources.yaml -O grafana-dataresources.yaml

L9:prometheus.ip,改成部署的服务器IP

L20:tempo.ip,改成部署的服务器IP

prometheus.yaml
# 如果有 git clone 的话,直接 cd tempo/docker-compose/local 即可
wget https://github.com/zxmfke/lgtm/blob/main/tempo/docker-compose/local/prometheus.yaml -O prometheus.yaml

L11:tempo.ip,改成部署的服务器IP

tempo.yaml
# 如果有 git clone 的话,直接 cd tempo/docker-compose/local 即可
wget https://github.com/zxmfke/lgtm/blob/main/tempo/docker-compose/local/tempo.yaml -O tempo.yaml

L34:promethus.ip,改成部署的服务器IP

我是本地 docker-compose 起,所以改的都是部署的服务器IP地址。后面部署在别的地方 ,或者用创建docker network,都是可以的。


启动

docker-compose 的安装就不在这边描述了,Install Docker Desktop on Debian | Docker Docs,有完整的教程。

docker-compose up -d

启动过程可能会出现如下画面:

【GO】LGTM_Grafana_Tempo(2)_官方用例改后实操,微服务,Go,LGTM,golang,grafana,tempo,trace

容器名称可能会不一样,这个没关系。启动完成后,执行 docker ps,就可以看到我们想要启动的 4 个容器。

【GO】LGTM_Grafana_Tempo(2)_官方用例改后实操,微服务,Go,LGTM,golang,grafana,tempo,trace

停止
docker-compose down
页面访问

在通过之前描述,k6-tracing 是定时往 tempo 里面发数据,我们就来看一下 grafana 上面怎么看。

登入 grafana

浏览器请求 IP:3000,访问 grafana 的主页。第一次登入的话,账号密码是 admin/admin。

【GO】LGTM_Grafana_Tempo(2)_官方用例改后实操,微服务,Go,LGTM,golang,grafana,tempo,trace

进入 explore 页面

【GO】LGTM_Grafana_Tempo(2)_官方用例改后实操,微服务,Go,LGTM,golang,grafana,tempo,trace

选择一个 trace 查看

【GO】LGTM_Grafana_Tempo(2)_官方用例改后实操,微服务,Go,LGTM,golang,grafana,tempo,trace

查看 service Graph

详细可看,Service graph view | Grafana Tempo documentation

【GO】LGTM_Grafana_Tempo(2)_官方用例改后实操,微服务,Go,LGTM,golang,grafana,tempo,trace

Metrics

我们在 tempo 的配置项里面开启了 metrics_generator,所以可以通过 explore 里面选择 prometheus 来当做数据源,查看。在筛选器里面的 Metric 里面有非常多可选项。

【GO】LGTM_Grafana_Tempo(2)_官方用例改后实操,微服务,Go,LGTM,golang,grafana,tempo,trace文章来源地址https://www.toymoban.com/news/detail-691649.html

到了这里,关于【GO】LGTM_Grafana_Tempo(2)_官方用例改后实操的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • go-elasticsearch 官方包操作合集

    2024年02月11日
    浏览(25)
  • Skywalking 的Docker部署测试-Tempo替代方案

    如果监控系统用的是Prometheus+Grafana,那么链路监控可以使用Grafana家族产品Grafana Tempo,但部署比较麻烦,涉及组件较多,文章可以参考《Grafana,Loki,Tempo,Prometheus,Agent搭建日志链路监控平台》,如果只需要简单的监控+链路跟踪,我觉得使用Skywalking是一个好选择 Docker 启动用户要

    2024年01月15日
    浏览(27)
  • GoZero微服务个人探究之路(二)Go-Zero官方api demo示例探究

    api demo 代码生成 | go-zero Documentation 编辑 demo-api.yaml 编辑 服务名称:demo-api HOST地址:0.0.0.0监听所有可用网络接口 Port地址:服务运行在8888端口 config/config.go 编辑 存储config信息,这里rest.RestConf是RESTful API的结构体,此外还可以添加数据库,缓存配置信息 handler/demohandler.go 编辑

    2024年01月18日
    浏览(38)
  • GoZero微服务个人探索之路(三)Go-Zero官方rpc demo示例探究

    两个文件均为protoc-gen-go-grpc自动生成 构成一个完整的 gRPC 服务的定义和实现 demo.go goctl生成的客户端代码 Request 和 Response 别名: 定义了 Request 和 Response 两个别名,实际上是从 demo 包中导入的对应的消息类型。 Demo 接口: 定义了一个 Demo 接口,其中包含了调用 gRPC 服务中 P

    2024年01月18日
    浏览(39)
  • 【Grafana】【一】Grafana 简介

    Grafana 是一个可视化工具,简单点说就是用来展示数据的。它和Zabbix、Prometheus 有本质区别,在于它不能解决监控问题,仅用于展示。也就是说,在监控领域,Grafana 需要配合 Zabbix、Prometheus 等工具一起使用,以获取数据源。 Grafana 官方是这么介绍 Grafana 的:Grafana是用于可视化

    2024年01月19日
    浏览(25)
  • Grafana集成prometheus(2.Grafana安装)

    检查防火墙3000端口是否开启 admin/admin http://ip:3000

    2024年02月14日
    浏览(30)
  • Docker安装Grafana以及Grafana应用

    安装 1、 卸载旧的版本 2、需要的安装包 3、设置镜像的仓库 更新yum软件包索引 4、安装docker相关的源 docker-ce 社区 ee 企业版 5、启动docker 6、使用docker version 查看是否安装成功 运行实例: 卸载 1、依赖卸载 2、删除资源 # /var/lib/docker docker的默认工作路径 基本操作 安装镜像

    2024年02月13日
    浏览(23)
  • Grafana集成prometheus(4.Grafana添加预警)

    上文已经完成了grafana对prometheus的集成及数据导入,本文主要记录grafana的预警功能(以内存为例) databorard面板点击edit,下方有个Alert的tab,创建Alert rules依赖contact points,可以先随便填写再修改 Alerting 上面入口创建后也会同步到此处 添加推送名称 选择DingDing, 钉钉URL获取参考

    2024年02月14日
    浏览(28)
  • Grafana集成prometheus(3.Grafana添加promethus数据)

    选择Connections - Datasources,点击Add New data source,填写Promitheus Server Url,点击 save test完成配置 选择prometheus数据库 选择code 填入对应的查询公式(监控公式参考Prometheus监控公式) 修改面板名称Title 点击save 百度可以获取常见用途的公式,mark备用。

    2024年02月14日
    浏览(44)
  • Grafana(三)Grafana 免密登录-隐藏导航栏-主题变换

    Grafana 的常用方式: 将配置好的Grafana图嵌入到系统页面中 为了实现可免登录访问,可以通过如下方式进行设置: 1. 修改Grafana配置文件 在Grafana的配置文件 /etc/grafana/grafana.ini 中,找到 [auth.anonymous] 配置块,将其下的匿名访问控制 enabled 设置为 true,组织权限设置为 Viewer。

    2024年01月21日
    浏览(23)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包