前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >在裸机上运行Jaeger Agent

在裸机上运行Jaeger Agent

作者头像
CNCF
发布于 2019-12-05 05:48:06
发布于 2019-12-05 05:48:06
2.4K00
代码可运行
举报
文章被收录于专栏:CNCFCNCF
运行总次数:0
代码可运行
作者:Juraci Paixão Kröhling

Jaeger Agent是负责从已检测的应用程序接收跨度,并将其转发到Jaeger Collector的组件,以便适当地存储数据。除了充当应用程序和收集器之间的跨度缓冲区之外,Jaeger Agent还从收集器接收有关采样策略的更新,通过Jaeger客户端查询的REST端点提供所述策略,部署在已检测的应用程序中。

Jaeger客户端通常通过UDP向代理发送跨度,避免TCP开销并减少已检测应用程序的CPU和内存压力。考虑到这一点,Jaeger Agent应尽可能靠近已检测的应用程序进行部署,从而降低UDP交付固有的风险。要考虑的第二个方面是租用模型,因为每个Jaeger Agent通常由单个租户使用。

通过单租户方案,可以在多个已检测的应用程序之间共享Jaeger Agent实例。这意味着代理程序在与应用程序相同的计算机中作为守护程序进程运行。

对于多租户方案,每个租户应该有一个Jaeger代理,这意味着有多个代理守护程序进程在运行,每个租户一个。

以下SystemD服务单元文件可用于控制Jaeger Agent生命周期。该示例使用位于/etc/jaeger-agent.yaml的YAML配置文件,和假定Jaeger Agent二进制文件位于/usr/local/bin/agent-linux。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[Service]
ExecStart=/usr/local/bin/agent-linux --config-file=/etc/jaeger-agent.yaml
Restart=always
StandardOutput=syslog
SyslogIdentifier=jaeger-agent
User=nobody
Group=nobody

[Install]
WantedBy=multi-user.target

jaeger-agent.service

有了这个,可以通过发出以下命令来启动Jaeger Agent:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
systemctl start jaeger-agent

start-jaeger-agent.sh

可以像SystemD管理的任何其他进程一样查询状态和日志,例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
systemctl status jaeger-agent

systemctl-status-jaeger-agent.sh

/etc/jaeger-agent.yaml中的空配置文件足以使代理能够正确启动在localhost上运行的收集器。在生产环境中,建议将收集器作为集群在其自己的主机中运行。因此,典型的配置文件至少包括Jaeger Collector的位置,例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
reporter:
  type: tchannel
  tchannel:
    host-port: jaeger-collector:14267

jaeger-agent.yaml

在多租户方案中,SystemD的“实例化服务”功能是合适的。在这种情况下,单位文件看起来像:

https://www.freedesktop.org/software/systemd/man/systemd.service.html#Service%20Templates

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[Service]
ExecStart=/usr/local/bin/agent-linux --config-file=/etc/jaeger-agent-%i.yaml
Restart=always
StandardOutput=syslog
SyslogIdentifier=jaeger-agent-%i
User=nobody
Group=nobody

[Install]
WantedBy=multi-user.target

jaeger-agent@.service

给定位于/etc/jaeger-agent-tenant1.yaml的配置文件,启动租户tenant1的代理:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
systemctl start jaeger-agent@tenant1

start-jaeger-agent-tenant1.sh

作为好的做法,显式设置代理应绑定的主机端口属性,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http-server:
  host-port: ":5778"
processor:
  jaeger-binary: 
    server-host-port: ":6832"
  jaeger-compact:
    server-host-port: ":6831" 
  zipkin-compact:
    server-host-port: ":5775"

jaeger-agent-tenant1.yaml

然后第二个租户应该绑定到不同的端口,例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http-server:
  host-port: ":6778"
processor:
  jaeger-binary: 
    server-host-port: ":7832"
  jaeger-compact:
    server-host-port: ":7831" 
  zipkin-compact:
    server-host-port: ":6775"
reporter:
  type: tchannel
  tchannel:
    host-port: jaeger-collectors-tenant-2:14267

jaeger-agent-tenant2.yaml

使用systemctl start jaeger-agent@tenant2启动第二个租户,应该有两个Jaeger Agent实例在运行,每个实例都有自己的一组端口。上面的示例还为目标收集器使用了不同的主机名,专门用于处理来自第二个租户的跨度。

我们在这里看到我们如何使用SystemD来管理我们的Jaeger Agent流程,包括单租户和多租户方案。通过一些简单的更改,可以使用相同的策略来管理Jaeger Collector和Jaeger Query流程。

如何在Kubernetes和OpenShift中部署是未来博客文章的主题。在此期间,请查看Jaeger Operator,它可以为您处理大部分过程。

https://github.com/jaegertracing/jaeger-operator/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-12-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CNCF 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
OpenTracing入门与 Jaeger的实现
目前很多的大中小公司都在探索和实践着微服务这种软件开发架构,将复杂庞大的重量型项目通过明确定义的 API 拆分成多个小型可复用的独立服务单元或者说是服务组件,这样让应用程序更易于扩展和更快地开发,从而加速创新并缩短新功能的上市时间。但是复用和拆分依旧简化不了系统的复杂度,虽然微服务架构拆分了业务单元,但是各种组件之间的调用也是错中复杂,因此带来一系列的问题:
公众号: 云原生生态圈
2021/11/15
6300
OpenTracing入门与 Jaeger的实现
基于opentracing + jaeger 实现全链路追踪
当代互联网服务,通常都是用复杂,大规模分布式集群来实现,微服务化,这些软件模块分布在不同的机器,不同的数据中心,由不同团队,语言开发而成。因此,需要工具帮助理解,分析这些系统、定位问题,做到追踪每一个请求的完整调用链路,收集性能数据,反馈到服务治理中,链路追踪系统应运而生。
orientlu
2019/06/14
3K0
Jaeger分布式跟踪工具初探
Jaeger:开源的端到端分布式跟踪,监视复杂的分布式系统中的事务并进行故障排除。 下图对比了常用的开源全链路追踪方案,目前SkyWalking和Pinpoint使用比较多,Jaeger相比客户端支持语言比较多,特别是对C++的支持,所以这次选择测试下。
三杯水Plus
2021/05/08
2.5K0
Jaeger分布式跟踪工具初探
2w字长文,让你瞬间拥有「调用链」开发经验
很多同学表示,对于微服务中常用的调用链功能的原理,感觉很模糊。本文将真正的从零开始,介绍调用链客户端开发的一些要点。让你瞬间拥有APM开发经验。文章很长很长,照例看一下相关目录。
xjjdog
2019/11/19
1.5K0
2w字长文,让你瞬间拥有「调用链」开发经验
研究调用链跟踪技术之jaeger
最近在做微服务构架里有关调用链跟踪(也有叫分布式追踪)的部分,有一些心得,这里总结一些。
jeremyxu
2019/03/13
3.3K0
研究调用链跟踪技术之jaeger
微服务链路追踪之Jaeger
在一个微服务分布式架构的系统中,可能存在复杂的、深层的层层服务调用关系,大致如下图
崔哥
2022/11/06
8630
微服务链路追踪之Jaeger
mac 上学习k8s系列(47)分布式追踪jaeger+es
实现de 分布式链路追踪成了微服务的标配,随着opentracing标准的推出,jaeger+es几乎成了标配。它的架构如下
golangLeetcode
2022/12/17
9060
mac 上学习k8s系列(47)分布式追踪jaeger+es
Tempo - 分布式Loki链路追踪利器
Tempo是Grafana Labs在ObservabilityCON 2020大会上新开源的一个用于做分布式式追踪的后端服务。它和Cortex、Loki一样,Tempo也是一个兼备高扩展和低成本效应的系统。
米开朗基杨
2020/12/14
3.9K0
Tempo - 分布式Loki链路追踪利器
一文搞懂 Jaeger 的自适应采样
1、固定采样(sampler.type=const)sampler.param=1 全采样, sampler.param=0 不采样。
Luga Lee
2022/04/18
2.9K1
一文搞懂 Jaeger 的自适应采样
Jaeger-分布式调用链跟踪系统理论与实战
调用链跟踪系统,又称为tracing,是微服务设计架构中,从系统层面对整体的monitoring和profiling的一种技术手段,而Jaeger则是Uber开发的新一代tracing系统。
netkiddy
2018/07/21
9.8K0
Jaeger-分布式调用链跟踪系统理论与实战
基于 Jaeger 进行微服务链路追踪
基于解决不同行业、业务应用的可扩展性、可用性等一系列问题,由此而生的微服务架构得到了各大厂商的、组织以及个人的青睐,随之而来便广泛应用于各种行业场景应用中。然而,随着时间的推移,越来越多的问题慢慢地呈现在大众的视野中。
Luga Lee
2021/11/19
1.4K0
基于 Jaeger 进行微服务链路追踪
几款符合 OpenTracing 规范的分布式链路追踪组件介绍与选型
Tracing 是在上世纪 90 年代就已出现的技术,但真正让该领域流行起来的还是源于 Google 的一篇 Dapper 论文。分布式追踪系统发展很快,种类繁多,但无论哪种组件,其核心步骤一般有 3 步:代码埋点、数据存储和查询展示,如下图所示为链路追踪组件的组成。
aoho求索
2021/01/28
9.4K1
几款符合 OpenTracing 规范的分布式链路追踪组件介绍与选型
链路追踪学习二:Jaeger
Jaeger是一个基于opentracing规范的链路追踪工具,官方地址:https://www.jaegertracing.io/
仙士可
2022/04/15
1.5K0
链路追踪学习二:Jaeger
OpenTelemetry入门看这一篇就够了|公开课
在本文结束时,您将了解如何使用 OpenTelemetry Operator 在应用程序中实现跟踪,而无需更改任何代码。
我是阳明
2023/09/11
18.6K2
OpenTelemetry入门看这一篇就够了|公开课
Spring Boot上的OpenTelemetry追踪:Java Agent VS Micrometer Tracing
我的 OpenTelemetry 追踪演示包含两个 Spring Boot 组件。其中一个使用 Java 代理,我最近将它从 v1.x 升级到 v2.x 后,注意到了一些不同的行为。在另一个组件中,我使用 Micrometer Tracing,因为我编译到 GraalVM 原生,它无法处理 Java 代理。
云云众生s
2024/08/07
8970
Spring Boot上的OpenTelemetry追踪:Java Agent VS Micrometer Tracing
分布式链路追踪工具-Jaeger
作者:软件质量保障 知乎:https://www.zhihu.com/people/iloverain1024
互联网金融打杂
2022/08/01
1.4K0
分布式链路追踪工具-Jaeger
分布式链路追踪
微服务架构 作为云原生核心技术之一,提倡将单一应用程序划分成一组小的服务(微服务),服务之间互相协调、互相配合,为用户提供最终价值。
gopher云原生
2021/10/18
1.3K1
找jaeger_CQB初探
导读:有一天我们接到这样一条客诉“你们的收银软件最近特别慢,严重影响我们的收银效率,再不解决我们就不用了”,我相信大家应该都遇到过这种问题,即使现在没遇到,将来一定会遇到的,那遇到了怎么办呢?就这个话题我们今天一起来聊一聊。
全栈程序员站长
2022/09/19
2480
找jaeger_CQB初探
外包精通--手撸Istio(Istio安装部署)笔记
如若没有loadBalancer,需要修改type: NodePort,ke svc -n istio-system istio-ingressgateway
Godev
2023/06/25
5730
轻量级日志可视化平台Grafana Loki接入nginx访问日志
Loki 是受Prometheus启发的水平可扩展、高可用、多租户日志聚合系统。它的设计非常经济高效且易于操作。它不索引日志的内容,而是索引每个日志流的一组标签。
yuanfan2012
2022/12/06
3.6K1
轻量级日志可视化平台Grafana Loki接入nginx访问日志
相关推荐
OpenTracing入门与 Jaeger的实现
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验