专栏首页CNCF在裸机上运行Jaeger Agent

在裸机上运行Jaeger Agent

作者: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。

[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:

systemctl start jaeger-agent

start-jaeger-agent.sh

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

systemctl status jaeger-agent

systemctl-status-jaeger-agent.sh

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

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

[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的代理:

systemctl start jaeger-agent@tenant1

start-jaeger-agent-tenant1.sh

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

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

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

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/

本文分享自微信公众号 - CNCF(lf_cncf),作者:CNCF官微

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-12-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • PlanetScale迁移开源Vitess测试套件|从Python到Go

    作者:Deepthi Sigireddi。嘉宾博客文章最初在PlanetScale的博客发表。

    CNCF
  • Ticketmaster每天使用Jaeger跟踪1亿笔交易

    微服务和容器增加了Ticketmaster软件系统的复杂性。它的工程师用Jaeger解决了调试问题。Jaeger是Uber在CNCF孵化的一个开源追踪工具。

    CNCF
  • CNCF案例研究:作为容器的早期采用者,Spotify从自家制容器编排器迁移到Kubernetes

    作为微服务和Docker的早期采用者,Spotify已经将运行在其所有VM上的微服务容器化,并使用了名为Helios的自家制容器编排系统。到2017年底,情况变...

    CNCF
  • 每个玩VR的少年,都是需要别人搀扶的小公举

    VRPinea
  • 美调查机构发布报告,VR硬件已经全面发力,内容厂商步伐依旧缓慢

    VRPinea
  • 6.26 VR扫描:微软申请Direct Reality商标;日本VR外设公司VAQSO完成400万元融资

    VRPinea
  • LG开发基于人工智能解决VR晕动病的技术

    有些人在戴上VR设备时会出现晕动病的症状,这可能会让VR变成一种糟糕的体验。VR开发人员花费了大量的时间和研究来减少这种影响,其中一种解决方案与人工智能有关。

    AiTechYun
  • 《我的世界VR》:做一条孤独的单身狗,静静地搬砖搭房子体验生活的真谛

    VRPinea
  • 纷纷入局VR/AR的国内外零售巨头们,今年还好吗?

    7月中旬,小编着重为大家介绍了零售巨头亚马逊在VR/AR方面的部分动作。例如,在印度开设11家VR快闪店,试水未来全新购物体验;在圣地亚哥国际动漫展上搭建557...

    VRPinea
  • VR培训VS传统培训,外科手术操作表现高出130%! VR医疗真正颠覆和改变的是?

    (VRPinea3月18日讯)近日,加州大学洛杉矶分校(UCLA)进行了一项随机研究,20名参与者被随机分为两组,每组10人。其中一组将使用Osso VR软件(...

    VRPinea

扫码关注云+社区

领取腾讯云代金券