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

在裸机上运行Jaeger Agent

作者头像
CNCF
发布2019-12-05 13:48:06
2.3K0
发布2019-12-05 13:48:06
举报
文章被收录于专栏:CNCFCNCF
作者: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
复制
[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
复制
systemctl start jaeger-agent

start-jaeger-agent.sh

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

代码语言:javascript
复制
systemctl status jaeger-agent

systemctl-status-jaeger-agent.sh

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

代码语言:javascript
复制
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
复制
[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
复制
systemctl start jaeger-agent@tenant1

start-jaeger-agent-tenant1.sh

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

代码语言:javascript
复制
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
复制
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 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档