分布式跟踪系统Jaeger(三):在Kubernetes上部署Jaeger
前面我们使用Jaeger的all in one docker镜像和Jaeger的HotROD示例应用简单试用了一下, 并对Jaeger的基本概念和组成做了初步了解。接下来该为了在生产环境中部署Jaeger做下一步的试验了。 本篇我们将尝试再Kubernetes集群上部署Jaeger,并使用我们已经存在的Elasticsearch集群作为数据存储。
前面我们使用Jaeger的all in one docker镜像和Jaeger的HotROD示例应用简单试用了一下, 并对Jaeger的基本概念和组成做了初步了解。接下来该为了在生产环境中部署Jaeger做下一步的试验了。 本篇我们将尝试再Kubernetes集群上部署Jaeger,并使用我们已经存在的Elasticsearch集群作为数据存储。
之前我们已经将Jaeger部署到了Kubernetes上,并且对Jaeger官方的示例应用HotROD进行了分布式跟踪。 我们使用Elasticsearch作为Jaeger的后端存储。借助Jaeger我们可以很容易的进行微服务架构应用的服务链调用追踪,进一步实现应用的性能分析和延迟优化。
Sentry是一个开源的错误报告和收集平台,它不仅支持Java、Go、Python、PHP、C#等多种后端语言和框架,支持Web前端和移动应用, 另外还提供与GitHub、JIRA等工具的集成。本文将主要记录使用官方的Sentry On-Premise部署Setntry的过程。
1.Opentracing Opentracing是一个分布式追踪标准,与平台和语言无关,统一接口,方便接入不同的分布式追踪系统。 Jaeger也是支持Opentracing标准的项目之一。学习jaeger有必要了解Opentracing规范。 以下是jaeger的文档资料:
当使用微服务构建我们的程序时,客户端的一次请求会产生大量服务调用,包括服务和数据库等中间件的调用。 由单体应用迁移至微服务时,服务间调用的延迟是我们需要面对的一个问题。为了定位每次调用过程中的延迟问题和性能瓶颈,我们需要知道客户端一次请求所经历的过程,分别调用了哪些服务,调用每个服务花费的时长,以及调用每个服务花费的时长,这些将会成为我们性能调优的参考。因此,分布式追踪系统是微服务架构中不可缺少的一部分。
Prometheus是一个基于时序数据的开源监控系统。 被Prometheus监控的服务需要公开一个Prometheus的endpoint,这个endpoint通过http接口暴露了度量(metrics)的列表和当前的值。很多服务都内置了Prometheus的endpoint直接暴露metrics,另外一些服务需要再为它们部署一个sidecar进程,通过side car暴露metrics。 这个sidecar或直接暴露metrics的服务自带的endpoint,就是Prometheus架构中的Exporter,Prometheus从Exporter中拉去监控数据。
oc命令 我们已经使用二进制包手工安装了OpenShift,并且使用OpenShift的Web控制台创建了一个项目。 实际上OpenShift还提供了一系列命令行工具,oc命令就是其中的一个,下面我们一起熟悉一下这个命令。 查看OpenShift集群版本信息:
RabbitMQ的Monitoring文档中介绍了各种监控RabbitMQ的方式。 其中推荐了第三方的Prometheus Plugin, 这是一个第三方实现RabbitMQ的管理插件,可以作为Prometheus的RabbitMQ Exporter。 安装RabbitMQ Prometheus Plugin 这里RabbitMQ的版本为3.6.14,Erlang版本为Erlang R16B03-1,从Release for latest RabbitMQ 3.6.x versions这个链接中下载以下插件:
OpenShift是基于Docker和Kubernetes的开源容器云平台,其开源社区版本为OpenShift Origin。 OpenShift的安装方式有很多种: 使用二进制包手工安装 使用Openshift Installer快速安装 使用ansible进行多节点集群安装 使用All in One的Docker镜像启动一个OpenShift实例 本文作为我的OpenShift学习笔记的开篇,将首先学习使用二进制手动安装的方式快速启动一个OpenShift Origin实例用于学习和测试。
在Ceph Luminous之前的版本,可以使用第三方的Prometheus exporterceph_exporter。 Ceph Luminous 12.2.1的mgr中自带了Prometheus插件,内置了 Prometheus ceph exporter,可以使用Ceph mgr内置的exporter作为Prometheus的target。