这个展示库包括一个示例音乐应用程序和其他清单,以展示 SkyWalking 的主要功能。音乐应用程序由几个用不同编程语言编写的微服务组成。这是架构:
用法
展示使用GNU Make和 Docker 容器来运行命令,因此请确保您已make
安装并运行 Docker 守护程序。
前提条件
要部署此展示应用程序的全部功能,您可能需要最多 4 个 CPU 内核和 4 GB 内存,如果您发现容器/Pod 无法启动,请增加 Docker 守护进程资源或 Kubernetes 集群资源。或者,如果您不想增加资源,也可以只部署您感兴趣的部分功能,通过定制指南。
快速开始
确保您有一个正在运行的 Kubernetes 集群并且kubectl
可以访问该集群。
git clone https://github.com/apache/skywalking-showcase.git
cd skywalking-showcase
make deploy.kubernetes
这将安装 SkyWalking 组件,包括具有 2 个节点的集群模式 OAP、SkyWalking RocketBot UI、具有 SkyWalking 代理的微服务、没有 SkyWalking 代理但由 Istio 管理的微服务、2 个 Pod 来模拟虚拟机并将指标导出到 SkyWalking,并启用 kubernetes 集群监控以及 SkyWalking 的自我观察性。
如需更高级的部署,请查看官方的自定义文档。
请注意,当在本地运行此展示(例如 KinD)时,图像会在 KinD 中下载,这可能需要 10 分钟以上(取决于本地网络)。make deploy.kubernetes
如果某些超时错误中断进程,请重新运行。
定制
Makefile.in
通过指定具有相同名称的环境变量,可以覆盖中定义的变量以自定义展示,例如:
export ES_VERSION=7.14.0
make <target>
或直接在make
命令中指定,例如:make <target> ES_VERSION=7.14.0
.
运行make help
以获取更多信息。
特征
FEATURE_FLAGS
该展示由一组带有功能标志的场景组成,您可以通过覆盖定义的变量来部署其中一些您感兴趣的场景,Makefile.in
如Customization中所述,例如:
make deploy.kubernetes FEATURE_FLAGS=single-node,agent
不同平台(Kubernetes和Docker Compose)的功能标志不一定相同,因此请确保指定正确的功能标志。
目前,支持的功能有:
姓名 | 描述 | 笔记 |
---|---|---|
java-agent-injector |
使用 java 代理注入器注入 Skywalking Java 代理并在启用其他 SkyWalking 代理的情况下部署微服务。 | 微服务包括 Java、NodeJS 服务器、浏览器、Python 的代理。 |
cluster |
以集群方式部署 SkyWalking OAP,2 个节点,SkyWalking RocketBot UI,ElasticSearch 作为存储。 | 只能启用cluster 或之一。single-node
|
single-node |
只部署一个 SkyWalking OAP 单节点,以及 SkyWalking RocketBot UI、ElasticSearch 作为存储。 | 只能启用cluster 或之一。single-node
|
so11y |
启用 SkyWalking 自我可观察性。 | 这默认为平台Docker Compose启用。 |
vm |
启动 2 个虚拟机并将其指标导出到 SkyWalking。 | “虚拟机”由 Docker 容器或 Pod 模仿。 |
als |
在未启用 SkyWalking 代理的情况下启动微服务,并配置 SkyWalking 以分析其访问日志中的拓扑和指标。 |
istioctl 运行此功能需要命令。无代理微服务将在命名空间运行${NAMESPACE}-agentless
|
kubernetes-monitor |
部署 OpenTelemetry 并将 Kubernetes 监控指标导出到 SkyWalking 进行分析并在 UI 上显示。 | |
istiod-monitor |
部署 OpenTelemetry 并将 Istio 控制平面指标导出到 SkyWalking 进行分析并在 UI 上显示。 | |
event |
部署工具来触发事件,以及 SkyWalking Kubernetes 事件导出器将事件导出到 SkyWalking。 |
Kubernetes
要在 Kubernetes 中部署示例应用程序,请确保您有kubectl
可用的命令,并且它可以成功连接到 Kubernetes 集群。
如果您没有正在运行的集群,您还可以利用KinD(Docker 中的 Kubernetes) 或minikube来创建集群。
运行kubectl get nodes
以检查连接,然后再进行下一步。指示您kubectl
无法连接到集群的典型错误消息是:
The connection to the server localhost:8080 was refused - did you specify the right host or port?
部署
# Deploy
make deploy.kubernetes
# Undeploy
make undeploy.kubernetes
# Redeploy
make redeploy.kubernetes # equivalent to make undeploy.kubernetes deploy.kubernetes
Docker Compose(构成)
部署
# Deploy
make deploy.docker
# Undeploy
make undeploy.docker
# Redeploy
make redeploy.docker # equivalent to make undeploy.docker deploy.docker