【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 数据xxxxxingester:xxxxxcompactor:xxxxxmetrics_generator: # 配置的是 metrics 的数据往哪里发,主要就是写 promethus 的 URLregistry:external_labels:source: tempocluster: docker-composestorage:path: /tmp/tempo/generator/walremote_write:- url: http://promethus.ip:9090/api/v1/writesend_exemplars: truestorage:trace:backend: local                     # backend configuration to usewal:path: /tmp/tempo/wal             # where to store the the wal locallylocal:path: /tmp/tempo/blocksoverrides: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"
services:tempo:image: grafana/tempo:2.2.1command: [ "-config.file=/etc/tempo.yaml" ]volumes:- ./tempo.yaml:/etc/tempo.yaml- ./tempo-data:/tmp/tempoports:- "14268:14268"  # jaeger ingest- "3200:3200"    # tempo- "9095:9095"    # tempo grpc- "4317:4317"    # otlp grpc- "4318:4318"    # otlp http- "9411:9411"    # zipkink6-tracing:image: ghcr.io/grafana/xk6-client-tracing:v0.0.2environment:- ENDPOINT=tempo:4317restart: alwaysdepends_on:- tempoprometheus:image: prom/prometheus:v2.46.0command:- --config.file=/etc/prometheus.yaml- --web.enable-remote-write-receiver- --enable-feature=exemplar-storagevolumes:- ./prometheus.yaml:/etc/prometheus.yamlports:- "9090:9090"grafana:image: grafana/grafana:10.1.0volumes:- ./grafana-datasources.yaml:/etc/grafana/provisioning/datasources/datasources.yamlenvironment:- GF_FEATURE_TOGGLES_ENABLE=traceqlEditorports:- "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

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

在这里插入图片描述

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

在这里插入图片描述

停止

docker-compose down

页面访问

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

登入 grafana

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

在这里插入图片描述

进入 explore 页面

在这里插入图片描述

选择一个 trace 查看

在这里插入图片描述

查看 service Graph

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

在这里插入图片描述

Metrics

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/89662.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

几个nlp的小任务(生成式任务——语言模型(CLM与MLM))

@TOC 本章节需要用到的类库 微调任意Transformers模型(CLM因果语言模型、MLM遮蔽语言模型) CLM MLM 准备数据集 展示几个数据的结构

Linux 虚拟机同步时间crontab以及crond详解

目录 一 Linux 虚拟机同步时间设置 1. 检查是否安装cron服务(即时间同步器) 2. 下载时间同步器 3. 编辑crontab 内容 4. 同步更新电脑网络时间 5.设置 reload 6. 查看 crond 状态 二 crond 详解 1. 启动/关闭cron服务 2. crontab命令格式 3. …

2021年12月 C/C++(五级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题:书架 John最近买了一个书架用来存放奶牛养殖书籍,但书架很快被存满了,只剩最顶层有空余。 John共有N头奶牛(1 ≤ N ≤ 20,000),每头奶牛有自己的高度Hi(1 ≤ Hi ≤ 10,000),N头奶牛的总高度为S。书架高度为B(1 ≤…

基于Spring Boot 的 Ext JS 应用框架之coworkee

Ext JS 官方提供了一个人员管理的完整应用框架 - coworkee。该框架的显示如下: 该框架的布局特点如下: 布局方式: 左右布局, 左侧导航栏默认收合特点:左侧导航区占用空间小, 工作区较大, 适合没有二级导航栏,工作区需要显示的内容较多的系统。如果导航栏是横向底部,就…

AI 绘画Stable Diffusion 研究(十七)SD lora 详解(上)

大家好,我是风雨无阻。 本期内容: Lora的原理是什么?Lora如何下载安装?Lora如何使用? 大家还记得 AI 绘画Stable Diffusion 研究(三)sd模型种类介绍及安装使用详解 这篇文章中,曾简…

2023蓝帽杯初赛ctf部分题目

Web LovePHP 打开网站环境,发现显示出源码 来可以看到php版本是7.4.33 简单分析了下,主要是道反序列化的题其中发现get传入的参数里有_号是非法字符,如果直接传值传入my_secret.flag,会被php处理掉 绕过 _ 的方法 对于__可以…

Ubuntu断电重启后黑屏左上角光标闪烁,分辨率低解决办法,ubuntu系统display只有4:3 怎么办?太卡

这个问题主要是显卡驱动问题,按照步骤更新显卡驱动 1,选择metapackage 并且选择proprietary版本,选择版本号选择最新的版本。 2,具体步骤参考 前言 笔者在安装显卡驱动时并未遇到问题,主要是后续屏幕亮度无法调节&…

力扣141. 环形链表

141. 环形链表 简单 2K 相关企业 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链…

OK3588应用之——人脸和人脸关键点的检测(十四)

一、主机模型转换 采用FastDeploy来部署应用深度学习模型到OK3588板卡上 进入主机Ubuntu的虚拟环境 conda activate ok3588 主机环境搭建可以参考上一篇 《OK3588板卡实现人像抠图(十二)》 转换成RKNN模型 cd FastDeploy wget https://bj.bcebos.co…

ssm+vue毕业论文管理系统源码和论文

ssmvue毕业论文管理系统053 开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 技术:ssm 摘 要 高校规模越来越大,学生越来越多,每年都有大批的大学生完成学业。毕业之前,各大高校设立…

小企业需不需要内部知识库?为什么都在倡导内部知识沉淀?

有多种方法可以提高员工敬业度和员工工作效率,从给予信任到创造积极的工作环境。但一还有一个不为人知但十分有效的方式——为员工创建良好的内部知识库。所以小企业同样需要内部知识库,以下是为什么倡导内部知识沉淀的理由: 知识积累与传承…

Unity插件---Dotween

1.什么是DOTween DoTween 是由 Demigiant 开发的,被广泛应用于 Unity 游戏开发中。它是一个流行的动画插件,被许多开发者用于创建流畅、高效的动画效果,提升游戏体验。 2.DOTween的初始配置 ①set up 首先找到DOTween Unity Panel 的面板 点…