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/
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有