├── .asf.yaml ├── .gitattributes ├── .github └── workflows │ └── publish-images.yaml ├── .gitignore ├── .licenserc.yaml ├── LICENSE ├── Makefile ├── Makefile.in ├── NOTICE ├── README.md ├── demo.yaml ├── deploy └── platform │ ├── config │ └── grafana │ │ └── dashboards │ │ ├── general-relation.json │ │ ├── general-service.json │ │ ├── log.json │ │ ├── service-mesh.json │ │ └── virtual-database.json │ ├── docker │ ├── Makefile │ ├── Makefile.in │ ├── config │ │ ├── activemq │ │ │ ├── activemq.xml │ │ │ ├── config.yaml │ │ │ └── otel-collector-config.yaml │ │ ├── apisix │ │ │ ├── apisix.yaml │ │ │ ├── config.yaml │ │ │ └── otel-collector-config.yaml │ │ ├── flink │ │ │ └── otel-collector-flink-config.yaml │ │ ├── grafana │ │ │ ├── datasources.yaml │ │ │ ├── grafana.ini │ │ │ └── providers.yaml │ │ ├── mongodb │ │ │ ├── otel-collector-config.yaml │ │ │ └── setup.sh │ │ ├── nginx │ │ │ ├── Dockerfile.nginx │ │ │ ├── fluent-bit-script.lua │ │ │ ├── fluent-bit.conf │ │ │ ├── nginx.conf │ │ │ └── otel-collector-config.yaml │ │ ├── otel-collector-config-elasticsearch.yaml │ │ ├── otel-collector-config-mysql.yaml │ │ ├── otel-collector-config-psql.yaml │ │ ├── otel-collector-config.yaml │ │ ├── pulsar │ │ │ └── otel-collector-config.yaml │ │ ├── rabbitmq │ │ │ ├── otel-collector-config.yaml │ │ │ ├── rabbitmq-overview-definitions.json │ │ │ └── rabbitmq-overview.conf │ │ └── rocketmq │ │ │ └── otel-collector-rocketmq-config.yaml │ ├── docker-compose.activemq-monitor.yaml │ ├── docker-compose.agent.yaml │ ├── docker-compose.apisix-monitor.yaml │ ├── docker-compose.cluster.yaml │ ├── docker-compose.elasticsearch-monitor.yaml │ ├── docker-compose.event.yaml │ ├── docker-compose.flink-monitor.yaml │ ├── docker-compose.grafana.yaml │ ├── docker-compose.mongodb-monitor.yaml │ ├── docker-compose.mysql-monitor.yaml │ ├── docker-compose.nginx-monitor.yaml │ ├── docker-compose.postgresql-monitor.yaml │ ├── docker-compose.pulsar-monitor.yaml │ ├── docker-compose.rabbitmq-monitor.yaml │ ├── docker-compose.rocketmq-monitor.yaml │ ├── docker-compose.satellite.yaml │ ├── docker-compose.single-node.yaml │ ├── docker-compose.so11y.yaml │ ├── docker-compose.vm-monitor.yaml │ ├── resource │ │ └── mock.sql │ └── scripts │ │ └── es-e2e-data-mock.sh │ └── kubernetes │ ├── Chart.yaml │ ├── Makefile │ ├── Makefile.in │ ├── check.mak │ ├── templates │ ├── NOTES.txt │ ├── _helpers.tpl │ ├── feature-activemq-monitor │ │ └── opentelemetry-config.yaml │ ├── feature-agent │ │ └── resources.yaml │ ├── feature-apisix-monitor │ │ └── opentelemetry-config.yaml │ ├── feature-baseline │ │ └── deployment.yml │ ├── feature-ciilum │ │ ├── policy.yaml │ │ └── resources.yaml │ ├── feature-elasticseasrch-monitor │ │ └── opentelemetry-config.yaml │ ├── feature-event │ │ ├── permissions.yaml │ │ ├── resources.yaml │ │ └── scaler.yaml │ ├── feature-flink │ │ ├── opentelemetry-config.yaml │ │ └── resource.yaml │ ├── feature-grafana │ │ ├── configmaps.yaml │ │ └── resources.yaml │ ├── feature-istiod-monitor │ │ └── opentelemetry-config.yaml │ ├── feature-kubernetes-monitor │ │ └── opentelemetry-config.yaml │ ├── feature-mongodb │ │ └── opentelemetry-config.yaml │ ├── feature-mysql-monitor │ │ ├── fluent-bit.yaml │ │ ├── mysql.yaml │ │ └── opentelemetry-config.yaml │ ├── feature-nginx-monitor │ │ ├── opentelemetry-config.yaml │ │ └── resources.yaml │ ├── feature-postgresql-monitor │ │ ├── fluent-bit.yaml │ │ ├── opentelemetry-config.yaml │ │ └── psql.yaml │ ├── feature-pulsar-monitor │ │ ├── opentelemetry-config.yaml │ │ └── resource.yaml │ ├── feature-r3 │ │ └── resources.yaml │ ├── feature-rabbitmq-monitor │ │ ├── opentelemetry-config.yaml │ │ └── rabbitmq.yaml │ ├── feature-rocketmq │ │ ├── opentelemetry-config.yaml │ │ └── resource.yaml │ ├── feature-rover │ │ ├── permissions.yaml │ │ ├── profiling.yaml │ │ └── resources.yaml │ ├── feature-so11y │ │ └── opentelemetry-config.yaml │ ├── feature-trace-profiling │ │ └── profiling.yaml │ ├── feature-vm-monitor │ │ ├── opentelemetry-config.yaml │ │ └── vm.yaml │ └── otel-collector-config.yaml │ └── values.yaml ├── docs ├── menu.yml └── readme.md ├── scripts ├── make │ └── help.mk └── prepare-e2e.sh └── services ├── app ├── .gitignore ├── Makefile ├── frontend │ ├── .dockerignore │ ├── .eslintrc.json │ ├── .gitignore │ ├── Dockerfile │ ├── Dockerfile.agentless │ ├── Dockerfile.agentless.dockerignore │ ├── Makefile │ ├── index.html │ ├── package-lock.json │ ├── package.json │ ├── src │ │ ├── .eslintrc.json │ │ ├── App.css │ │ ├── App.jsx │ │ ├── components │ │ │ ├── Copyright.jsx │ │ │ ├── FancyText.jsx │ │ │ ├── Form.jsx │ │ │ ├── InspirationGenerator.jsx │ │ │ ├── List.jsx │ │ │ ├── Recipe.jsx │ │ │ └── data.js │ │ ├── index.agentless.js │ │ ├── index.css │ │ └── index.jsx │ └── vite.config.js └── server │ ├── Dockerfile │ ├── Dockerfile.agentless │ ├── Makefile │ ├── package.json │ └── src │ ├── index.agentless.js │ └── index.js ├── gateway-service ├── Dockerfile ├── Dockerfile.agentless ├── Makefile ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── settings.gradle └── src │ ├── main │ ├── java │ │ └── org │ │ │ └── apache │ │ │ └── skywalking │ │ │ └── showcase │ │ │ └── gateway │ │ │ └── GatewayApplication.java │ └── resources │ │ └── application.yaml │ └── test │ └── java │ └── org │ └── apache │ └── skywalking │ └── showcase │ └── gateway │ └── GatewayApplicationTests.java ├── load-gen ├── Dockerfile ├── Makefile ├── loadgen.py └── requirements.txt ├── rating-service ├── Dockerfile ├── Dockerfile.agentless ├── Makefile ├── go.mod ├── go.sum └── main.go ├── recommendation-service ├── .dockerignore ├── Dockerfile ├── Dockerfile.agentless ├── Makefile ├── requirements.txt └── src │ └── app.py └── songs-service ├── Dockerfile ├── Dockerfile.agentless ├── Makefile ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── settings.gradle └── src ├── main ├── java │ └── org │ │ └── apache │ │ └── skywalking │ │ └── showcase │ │ └── services │ │ └── song │ │ ├── SongServiceApplication.java │ │ ├── controller │ │ └── SongController.java │ │ ├── entity │ │ └── Song.java │ │ ├── mq │ │ ├── SongMessageReceiver.java │ │ └── SongMessageSender.java │ │ └── repo │ │ └── SongsRepo.java └── resources │ ├── application.yaml │ ├── data.sql │ └── logback.xml └── test └── java └── org └── apache └── skywalking └── showcase └── services └── song └── JavaServicesApplicationTests.java /.asf.yaml: -------------------------------------------------------------------------------- 1 | # 2 | # Licensed to the Apache Software Foundation (ASF) under one or more 3 | # contributor license agreements. See the NOTICE file distributed with 4 | # this work for additional information regarding copyright ownership. 5 | # The ASF licenses this file to You under the Apache License, Version 2.0 6 | # (the "License"); you may not use this file except in compliance with 7 | # the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | 18 | github: 19 | description: Showcase Application to demonstrate features of Apache SkyWalking 20 | homepage: https://skywalking.apache.org/docs/skywalking-showcase/latest/readme/ 21 | labels: 22 | - skywalking 23 | dependabot_updates: false 24 | enabled_merge_buttons: 25 | squash: true 26 | merge: false 27 | rebase: false 28 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # 2 | # Licensed to the Apache Software Foundation (ASF) under one 3 | # or more contributor license agreements. See the NOTICE file 4 | # distributed with this work for additional information 5 | # regarding copyright ownership. The ASF licenses this file 6 | # to you under the Apache License, Version 2.0 (the 7 | # "License"); you may not use this file except in compliance 8 | # with the License. You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, 13 | # software distributed under the License is distributed on an 14 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | # KIND, either express or implied. See the License for the 16 | # specific language governing permissions and limitations 17 | # under the License. 18 | 19 | *.bat text eol=crlf 20 | 21 | -------------------------------------------------------------------------------- /.github/workflows/publish-images.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | 17 | name: publish-images 18 | 19 | on: 20 | push: 21 | branches: 22 | - main 23 | 24 | env: 25 | HUB: ghcr.io/apache/skywalking-showcase 26 | 27 | jobs: 28 | build: 29 | if: github.repository == 'apache/skywalking-showcase' 30 | runs-on: ubuntu-latest 31 | permissions: 32 | contents: read 33 | packages: write 34 | timeout-minutes: 30 35 | steps: 36 | - uses: actions/checkout@v2 37 | with: 38 | submodules: true 39 | - name: Log in to the Container registry 40 | uses: docker/login-action@v1.10.0 41 | with: 42 | registry: ${{ env.HUB }} 43 | username: ${{ github.actor }} 44 | password: ${{ secrets.GITHUB_TOKEN }} 45 | - uses: actions/setup-java@v2 46 | with: 47 | distribution: 'temurin' 48 | java-version: '8' 49 | - name: Build and push Docker image 50 | run: make push -j 7 || make push -j 7 51 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | # Ignore Gradle project-specific cache directory 19 | .gradle 20 | 21 | # Ignore Gradle build output directory 22 | build 23 | 24 | venv 25 | 26 | .DS_Store 27 | 28 | build/ 29 | !gradle/wrapper/gradle-wrapper.jar 30 | !**/src/main/**/build/ 31 | !**/src/test/**/build/ 32 | 33 | ### STS ### 34 | .apt_generated 35 | .classpath 36 | .factorypath 37 | .project 38 | .settings 39 | .springBeans 40 | .sts4-cache 41 | bin/ 42 | !**/src/main/**/bin/ 43 | !**/src/test/**/bin/ 44 | 45 | ### IntelliJ IDEA ### 46 | .idea 47 | *.iws 48 | *.iml 49 | *.ipr 50 | out/ 51 | !**/src/main/**/out/ 52 | !**/src/test/**/out/ 53 | 54 | ### NetBeans ### 55 | /nbproject/private/ 56 | /nbbuild/ 57 | /dist/ 58 | /nbdist/ 59 | /.nb-gradle/ 60 | 61 | ### VS Code ### 62 | .vscode/ 63 | 64 | deploy/platform/kubernetes/Chart.lock 65 | deploy/platform/kubernetes/charts/ 66 | deploy/platform/kubernetes/tmpcharts/ 67 | 68 | deploy/platform/kubernetes/generated 69 | -------------------------------------------------------------------------------- /.licenserc.yaml: -------------------------------------------------------------------------------- 1 | # 2 | # Licensed to the Apache Software Foundation (ASF) under one 3 | # or more contributor license agreements. See the NOTICE file 4 | # distributed with this work for additional information 5 | # regarding copyright ownership. The ASF licenses this file 6 | # to you under the Apache License, Version 2.0 (the 7 | # "License"); you may not use this file except in compliance 8 | # with the License. You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, 13 | # software distributed under the License is distributed on an 14 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | # KIND, either express or implied. See the License for the 16 | # specific language governing permissions and limitations 17 | # under the License. 18 | # 19 | header: 20 | license: 21 | spdx-id: Apache-2.0 22 | copyright-owner: Apache Software Foundation 23 | 24 | paths-ignore: 25 | - '**/build/**' 26 | - '**/node_modules/**' 27 | - '**/venv/**' 28 | - '**/*.md' 29 | - '**/*.json' 30 | - '**/gradlew' 31 | - '**/gradlew.bat' 32 | - 'LICENSE' 33 | - 'NOTICE' 34 | 35 | comment: on-failure 36 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | include scripts/make/help.mk 19 | 20 | ##@ Build targets 21 | services = $(wildcard services/*) 22 | 23 | .PHONY: $(services) 24 | $(services): 25 | @$(MAKE) -C $@ build 26 | 27 | .PHONY: build 28 | build: $(services) ## Build the services if needed (e.g.: compiling Java files, build Go binary), do nothing if no need (e.g.: Python) 29 | 30 | services_docker = $(foreach svc,$(services),$(svc).docker.build) 31 | .PHONY: docker 32 | docker: $(services_docker) ## Build Docker images 33 | 34 | .PHONY: $(services_docker) 35 | $(services_docker): %.docker.build: % 36 | @$(MAKE) -C $< docker.build 37 | 38 | services_push = $(foreach svc,$(services),$(svc).docker.push) 39 | .PHONY: push 40 | push: $(services_push) ## Build and push Docker images 41 | 42 | .PHONY: $(services_push) 43 | $(services_push): %.docker.push: % 44 | @$(MAKE) -C $< docker.push 45 | 46 | ##@ Deploy targets 47 | 48 | .PHONY: deploy.docker 49 | deploy.docker: ## Deploy the showcase with Docker Compose 50 | @$(MAKE) -C deploy/platform/docker deploy 51 | 52 | .PHONY: undeploy.docker 53 | undeploy.docker: ## Undeploy the showcase from Docker Compose 54 | @$(MAKE) -C deploy/platform/docker undeploy 55 | 56 | .PHONY: redeploy.docker 57 | redeploy.docker: undeploy.docker deploy.docker 58 | 59 | .PHONY: deploy.kubernetes 60 | deploy.kubernetes: ## Deploy the showcase to Kubernetes 61 | @$(MAKE) -C deploy/platform/kubernetes deploy 62 | 63 | .PHONY: undeploy.kubernetes 64 | undeploy.kubernetes: ## Undeploy the showcase from Kubernetes 65 | @$(MAKE) -C deploy/platform/kubernetes undeploy 66 | 67 | .PHONY: redeploy.kubernetes 68 | redeploy.kubernetes: undeploy.kubernetes deploy.kubernetes 69 | -------------------------------------------------------------------------------- /NOTICE: -------------------------------------------------------------------------------- 1 | Apache SkyWalking 2 | Copyright 2017-2021 The Apache Software Foundation 3 | 4 | This product includes software developed at 5 | The Apache Software Foundation (http://www.apache.org/). 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Apache SkyWalking Showcase Application 2 | 3 | Sky Walking logo 4 | 5 | [![Twitter Follow](https://img.shields.io/twitter/follow/asfskywalking.svg?style=for-the-badge&label=Follow&logo=twitter)](https://twitter.com/AsfSkyWalking) 6 | 7 | # Documentations 8 | 9 | Please read the documentation in [our official website](https://skywalking.apache.org/docs/skywalking-showcase/latest/readme/). 10 | 11 | # Code of conduct 12 | 13 | This project adheres to the Contributor Covenant [code of conduct](https://www.apache.org/foundation/policies/conduct). 14 | By participating, you are expected to uphold this code. Please follow 15 | the [REPORTING GUIDELINES](https://www.apache.org/foundation/policies/conduct#reporting-guidelines) to report 16 | unacceptable behavior. 17 | 18 | # Contact Us 19 | 20 | * Mailing list 21 | * To subscribe: send any content to dev-subscribe@skywalking.apache.org, follow the reply to subscribe the mail 22 | list. 23 | * Send discussions / questions to dev@skywalking.apache.org 24 | * Send `Request to join SkyWalking slack` mail to the mail list (dev@skywalking.apache.org), we will invite you in. 25 | * Twitter, [ASFSkyWalking](https://twitter.com/ASFSkyWalking) 26 | * QQ Group: 901167865(Recommended), 392443393 27 | * [bilibili B站 视频](https://space.bilibili.com/390683219) 28 | 29 | # License 30 | 31 | [Apache 2.0 License.](LICENSE) 32 | -------------------------------------------------------------------------------- /deploy/platform/docker/Makefile: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | 19 | include ../../../Makefile.in 20 | include Makefile.in 21 | 22 | features := $(subst $(comma), ,$(FEATURE_FLAGS)) 23 | features := $(foreach f,$(features),-f docker-compose.$(f).yaml) 24 | 25 | BACKEND_SERVICE := oap 26 | ifneq (,$(findstring satellite,$(features))) 27 | BACKEND_SERVICE := satellite 28 | endif 29 | 30 | .PHONY: deploy 31 | deploy: 32 | ifeq ($(DEBUG),true) 33 | docker compose $(features) config 34 | else 35 | docker compose $(features) up -d 36 | endif 37 | 38 | .PHONY: undeploy 39 | undeploy: 40 | docker compose $(features) down 41 | -------------------------------------------------------------------------------- /deploy/platform/docker/Makefile.in: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | 19 | .EXPORT_ALL_VARIABLES: 20 | FEATURE_FLAGS ?= agent,cluster,so11y,vm-monitor,event,mysql-monitor,nginx-monitor,apisix-monitor,grafana,elasticsearch-monitor,pulsar-monitor,activemq-monitor 21 | -------------------------------------------------------------------------------- /deploy/platform/docker/config/activemq/config.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one or more 2 | # contributor license agreements. See the NOTICE file distributed with 3 | # this work for additional information regarding copyright ownership. 4 | # The ASF licenses this file to You under the Apache License, Version 2.0 5 | # (the "License"); you may not use this file except in compliance with 6 | # the License. You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | --- 17 | startDelaySeconds: 10 18 | hostPort: activemq:1616 19 | username: admin 20 | password: activemq 21 | ssl: false 22 | lowercaseOutputName: false 23 | lowercaseOutputLabelNames: false 24 | includeObjectNames: ["org.apache.activemq:*","java.lang:type=OperatingSystem","java.lang:type=GarbageCollector,*","java.lang:type=Threading","java.lang:type=Runtime","java.lang:type=Memory","java.lang:name=*"] 25 | excludeObjectNames: ["org.apache.activemq:type=ColumnFamily,*"] 26 | autoExcludeObjectNameAttributes: true 27 | excludeObjectNameAttributes: 28 | "java.lang:type=OperatingSystem": 29 | - "ObjectName" 30 | "java.lang:type=Runtime": 31 | - "ClassPath" 32 | - "SystemProperties" 33 | rules: 34 | - pattern: ".*" -------------------------------------------------------------------------------- /deploy/platform/docker/config/activemq/otel-collector-config.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one or more 2 | # contributor license agreements. See the NOTICE file distributed with 3 | # this work for additional information regarding copyright ownership. 4 | # The ASF licenses this file to You under the Apache License, Version 2.0 5 | # (the "License"); you may not use this file except in compliance with 6 | # the License. You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | receivers: 17 | prometheus: 18 | config: 19 | scrape_configs: 20 | - job_name: "activemq-monitoring" 21 | scrape_interval: 10s 22 | static_configs: 23 | - targets: ['${OTEL_TARGET_ADDREESS}'] 24 | labels: 25 | cluster: activemq-cluster 26 | 27 | exporters: 28 | otlp: 29 | endpoint: '${SW_AGENT_COLLECTOR_BACKEND_SERVICES}' 30 | tls: 31 | insecure: true 32 | 33 | processors: 34 | batch: 35 | service: 36 | pipelines: 37 | metrics: 38 | receivers: 39 | - prometheus 40 | processors: 41 | - batch 42 | exporters: 43 | - otlp -------------------------------------------------------------------------------- /deploy/platform/docker/config/apisix/apisix.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one or more 2 | # contributor license agreements. See the NOTICE file distributed with 3 | # this work for additional information regarding copyright ownership. 4 | # The ASF licenses this file to You under the Apache License, Version 2.0 5 | # (the "License"); you may not use this file except in compliance with 6 | # the License. You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | routes: 17 | - 18 | uri: /browser/* 19 | service_id: 1 20 | - 21 | uri: /v3/* 22 | service_id: 1 23 | - 24 | uri: /homepage 25 | service_id: 2 26 | plugins: 27 | skywalking: 28 | service_name: APISIX 29 | service_instance_name: "$hostname" 30 | endpoint_addr: http://oap:12800 31 | - 32 | uri: /test 33 | service_id: 2 34 | plugins: 35 | skywalking: 36 | service_name: APISIX 37 | service_instance_name: "$hostname" 38 | endpoint_addr: http://oap:12800 39 | services: 40 | - 41 | id: 1 42 | upstream_id: 1 43 | - 44 | id: 2 45 | upstream_id: 2 46 | 47 | upstreams: 48 | - id: 1 49 | nodes: 50 | "oap:12800": 1 51 | type: roundrobin 52 | - id: 2 53 | nodes: 54 | "app:80": 1 55 | type: roundrobin 56 | 57 | global_rules: 58 | - 59 | id: 1 60 | plugins: 61 | prometheus: 62 | export_addr: 63 | ip: "0.0.0.0" 64 | port: 9091 65 | 66 | #END -------------------------------------------------------------------------------- /deploy/platform/docker/config/apisix/config.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one or more 2 | # contributor license agreements. See the NOTICE file distributed with 3 | # this work for additional information regarding copyright ownership. 4 | # The ASF licenses this file to You under the Apache License, Version 2.0 5 | # (the "License"); you may not use this file except in compliance with 6 | # the License. You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | apisix: 17 | node_listen: 80 18 | enable_ipv6: false 19 | enable_admin: false 20 | config_center: yaml 21 | plugin_attr: 22 | prometheus: 23 | export_addr: 24 | ip: "0.0.0.0" 25 | port: 9091 26 | skywalking: 27 | service_name: agent::frontend 28 | service_instance_name: "$hostname" 29 | endpoint_addr: http://oap:12800 30 | plugins: 31 | - prometheus 32 | - skywalking 33 | nginx_config: 34 | http_server_configuration_snippet: | 35 | location ~ \.(gif|jpg|png|js|css|html)$ { 36 | root /app/build; 37 | index index.html; 38 | } 39 | -------------------------------------------------------------------------------- /deploy/platform/docker/config/apisix/otel-collector-config.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one or more 2 | # contributor license agreements. See the NOTICE file distributed with 3 | # this work for additional information regarding copyright ownership. 4 | # The ASF licenses this file to You under the Apache License, Version 2.0 5 | # (the "License"); you may not use this file except in compliance with 6 | # the License. You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | receivers: 17 | prometheus: 18 | config: 19 | scrape_configs: 20 | - job_name: 'apisix-monitoring' 21 | scrape_interval: 5s 22 | metrics_path: "/apisix/prometheus/metrics" 23 | static_configs: 24 | - targets: ['${OTEL_TARGET_ADDREESS}'] 25 | labels: 26 | skywalking_service: frontend 27 | processors: 28 | batch: 29 | 30 | exporters: 31 | otlp: 32 | endpoint: "${SW_AGENT_COLLECTOR_BACKEND_SERVICES}" 33 | tls: 34 | insecure: true 35 | service: 36 | pipelines: 37 | metrics: 38 | receivers: 39 | - prometheus 40 | processors: 41 | - batch 42 | exporters: 43 | - otlp -------------------------------------------------------------------------------- /deploy/platform/docker/config/flink/otel-collector-flink-config.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one or more 2 | # contributor license agreements. See the NOTICE file distributed with 3 | # this work for additional information regarding copyright ownership. 4 | # The ASF licenses this file to You under the Apache License, Version 2.0 5 | # (the "License"); you may not use this file except in compliance with 6 | # the License. You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | receivers: 17 | prometheus: 18 | config: 19 | scrape_configs: 20 | - job_name: "flink-jobManager-monitoring" 21 | scrape_interval: 30s 22 | static_configs: 23 | - targets: ['jobmanager:9260'] 24 | labels: 25 | cluster: flink-cluster 26 | relabel_configs: 27 | - source_labels: [ __address__ ] 28 | target_label: jobManager_node 29 | replacement: $$1 30 | metric_relabel_configs: 31 | - source_labels: [ job_name ] 32 | action: replace 33 | target_label: flink_job_name 34 | replacement: $$1 35 | - source_labels: [ ] 36 | target_label: job_name 37 | replacement: flink-jobManager-monitoring 38 | 39 | - job_name: "flink-taskManager-monitoring" 40 | scrape_interval: 30s 41 | static_configs: 42 | - targets: [ "taskmanager:9261" ] 43 | labels: 44 | cluster: flink-cluster 45 | relabel_configs: 46 | - source_labels: [ __address__ ] 47 | regex: (.+) 48 | target_label: taskManager_node 49 | replacement: $$1 50 | metric_relabel_configs: 51 | - source_labels: [ job_name ] 52 | action: replace 53 | target_label: flink_job_name 54 | replacement: $$1 55 | - source_labels: [ ] 56 | target_label: job_name 57 | replacement: flink-taskManager-monitoring 58 | 59 | exporters: 60 | otlp: 61 | endpoint: oap:11800 62 | tls: 63 | insecure: true 64 | 65 | processors: 66 | batch: 67 | service: 68 | pipelines: 69 | metrics: 70 | receivers: 71 | - prometheus 72 | processors: 73 | - batch 74 | exporters: 75 | - otlp -------------------------------------------------------------------------------- /deploy/platform/docker/config/grafana/datasources.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | 19 | apiVersion: 1 20 | datasources: 21 | - access: proxy 22 | editable: true 23 | isDefault: true 24 | name: SkyWalkingPromQL 25 | orgId: 1 26 | type: prometheus 27 | url: http://oap:9090 28 | - access: proxy 29 | editable: false 30 | isDefault: false 31 | name: SkyWalking-Plugin 32 | orgId: 1 33 | type: apache-skywalking-datasource 34 | url: http://oap:12800/graphql 35 | jsonData: 36 | URL: http://oap:12800/graphql 37 | - access: proxy 38 | editable: false 39 | isDefault: false 40 | name: SkyWalkingLogQL 41 | orgId: 1 42 | type: loki 43 | url: http://oap:3100 44 | -------------------------------------------------------------------------------- /deploy/platform/docker/config/grafana/grafana.ini: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | 19 | # This file contains the targets to deploy features that are not 20 | # applicable to deploy via manifest, we can deploy them via command 21 | # line interface here, for better maintainability. 22 | 23 | [paths] 24 | provisioning = /etc/grafana/provisioning 25 | [dashboards] 26 | default_home_dashboard_path = /var/lib/grafana/dashboards/skywalking/general-service.json 27 | -------------------------------------------------------------------------------- /deploy/platform/docker/config/grafana/providers.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | 19 | apiVersion: 1 20 | providers: 21 | - name: skywalking 22 | orgId: 1 23 | type: file 24 | folder: 'skywalking' 25 | options: 26 | path: /var/lib/grafana/dashboards 27 | -------------------------------------------------------------------------------- /deploy/platform/docker/config/mongodb/otel-collector-config.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one or more 2 | # contributor license agreements. See the NOTICE file distributed with 3 | # this work for additional information regarding copyright ownership. 4 | # The ASF licenses this file to You under the Apache License, Version 2.0 5 | # (the "License"); you may not use this file except in compliance with 6 | # the License. You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | receivers: 17 | prometheus: 18 | config: 19 | scrape_configs: 20 | - job_name: 'mongodb-monitoring' 21 | metrics_path: "/metrics" 22 | scrape_interval: 10s 23 | static_configs: 24 | - targets: ['mongodb-exporter-1:9216','mongodb-exporter-2:9216'] 25 | labels: 26 | cluster: replset 27 | 28 | processors: 29 | batch: 30 | 31 | exporters: 32 | #################################################################################### 33 | # If you want to use otlp exporter please ensure that your OAP version is >= 9.2.0 # 34 | #################################################################################### 35 | otlp: 36 | endpoint: oap:11800 37 | tls: 38 | insecure: true 39 | service: 40 | pipelines: 41 | metrics: 42 | receivers: 43 | - prometheus 44 | processors: 45 | - batch 46 | exporters: 47 | - otlp 48 | -------------------------------------------------------------------------------- /deploy/platform/docker/config/mongodb/setup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Licensed to the Apache Software Foundation (ASF) under one or more 3 | # contributor license agreements. See the NOTICE file distributed with 4 | # this work for additional information regarding copyright ownership. 5 | # The ASF licenses this file to You under the Apache License, Version 2.0 6 | # (the "License"); you may not use this file except in compliance with 7 | # the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | 17 | echo "Waiting for startup.." 18 | until mongosh --host mongodb-1:27017 --eval 'quit(db.runCommand({ ping: 1 }).ok ? 0 : 2)' &>/dev/null; do 19 | printf '.' 20 | sleep 1 21 | done 22 | until mongosh --host mongodb-2:27017 --eval 'quit(db.runCommand({ ping: 1 }).ok ? 0 : 2)' &>/dev/null; do 23 | printf '.' 24 | sleep 1 25 | done 26 | 27 | echo "Started.." 28 | 29 | mongosh --host mongodb-1:27017 <= 9.2.0 # 40 | #################################################################################### 41 | otlp: 42 | endpoint: oap:11800 43 | tls: 44 | insecure: true 45 | 46 | service: 47 | pipelines: 48 | metrics: 49 | receivers: 50 | - prometheus 51 | processors: 52 | - batch 53 | exporters: 54 | - otlp -------------------------------------------------------------------------------- /deploy/platform/docker/config/rabbitmq/rabbitmq-overview-definitions.json: -------------------------------------------------------------------------------- 1 | { 2 | "global_parameters": [ 3 | {"name": "cluster_name", "value": "rabbitmq-overview"} 4 | ], 5 | "permissions": [ 6 | { 7 | "configure": ".*", 8 | "read": ".*", 9 | "user": "guest", 10 | "vhost": "/", 11 | "write": ".*" 12 | } 13 | ], 14 | "policies": [ 15 | { 16 | "apply-to": "queues", 17 | "definition": {"ha-mode": "exactly", "ha-params": 1}, 18 | "name": "ha1", 19 | "pattern": "ha1.*", 20 | "priority": 0, 21 | "vhost": "/" 22 | }, 23 | { 24 | "apply-to": "queues", 25 | "definition": {"ha-mode": "exactly", "ha-params": 2}, 26 | "name": "ha2", 27 | "pattern": "ha2.*", 28 | "priority": 0, 29 | "vhost": "/" 30 | }, 31 | { 32 | "apply-to": "queues", 33 | "definition": {"ha-mode": "exactly", "ha-params": 3}, 34 | "name": "ha3", 35 | "pattern": "ha3.*", 36 | "priority": 0, 37 | "vhost": "/" 38 | } 39 | ], 40 | "users": [ 41 | { 42 | "hashing_algorithm": "rabbit_password_hashing_sha256", 43 | "name": "guest", 44 | "password_hash": "hENva+fxJ7gnmaBK/WhwNHOYbvB53/QjNcqhtF4KqF7p21+x", 45 | "tags": "administrator" 46 | } 47 | ], 48 | "vhosts": [{"name": "/"}] 49 | } 50 | -------------------------------------------------------------------------------- /deploy/platform/docker/config/rabbitmq/rabbitmq-overview.conf: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one or more 2 | # contributor license agreements. See the NOTICE file distributed with 3 | # this work for additional information regarding copyright ownership. 4 | # The ASF licenses this file to You under the Apache License, Version 2.0 5 | # (the "License"); you may not use this file except in compliance with 6 | # the License. You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | # https://github.com/rabbitmq/rabbitmq-server/blob/master/docs/rabbitmq.conf.example 17 | loopback_users.guest = false 18 | listeners.tcp.default = 5672 19 | management.listener.port = 15672 20 | management.listener.ssl = false 21 | 22 | vm_memory_high_watermark.absolute = 768MiB 23 | vm_memory_high_watermark_paging_ratio = 0.2 24 | 25 | cluster_name = rabbitmq-overview 26 | 27 | cluster_formation.peer_discovery_backend = rabbit_peer_discovery_classic_config 28 | cluster_formation.classic_config.nodes.1 = rabbit@rmq0 29 | 30 | load_definitions = /etc/rabbitmq/rabbitmq-definitions.json 31 | 32 | collect_statistics_interval = 10000 33 | -------------------------------------------------------------------------------- /deploy/platform/docker/config/rocketmq/otel-collector-rocketmq-config.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one or more 2 | # contributor license agreements. See the NOTICE file distributed with 3 | # this work for additional information regarding copyright ownership. 4 | # The ASF licenses this file to You under the Apache License, Version 2.0 5 | # (the "License"); you may not use this file except in compliance with 6 | # the License. You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | receivers: 17 | prometheus: 18 | config: 19 | scrape_configs: 20 | - job_name: "rocketmq-monitoring" 21 | scrape_interval: 30s 22 | static_configs: 23 | - targets: ['rocketmq-exporter:5557'] 24 | relabel_configs: 25 | - source_labels: [ ] 26 | target_label: cluster 27 | replacement: rocketmq-cluster 28 | 29 | exporters: 30 | otlp: 31 | endpoint: oap:11800 32 | tls: 33 | insecure: true 34 | 35 | processors: 36 | batch: 37 | service: 38 | pipelines: 39 | metrics: 40 | receivers: 41 | - prometheus 42 | processors: 43 | - batch 44 | exporters: 45 | - otlp -------------------------------------------------------------------------------- /deploy/platform/docker/docker-compose.activemq-monitor.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one or more 2 | # contributor license agreements. See the NOTICE file distributed with 3 | # this work for additional information regarding copyright ownership. 4 | # The ASF licenses this file to You under the Apache License, Version 2.0 5 | # (the "License"); you may not use this file except in compliance with 6 | # the License. You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | version: "2.1" 17 | 18 | services: 19 | amqexporter: 20 | image: bitnami/jmx-exporter:0.20.0 21 | hostname: amqexporter 22 | volumes: 23 | - ./config/activemq/config.yaml:/opt/bitnami/jmx-exporter/example_configs/httpserver_sample_config.yml 24 | expose: 25 | - 5556 26 | depends_on: 27 | activemq: 28 | condition: service_healthy 29 | networks: 30 | - sw 31 | 32 | otel-collector: 33 | image: ${OTEL_COLLECTOR_IMAGE}:${OTEL_COLLECTOR_IMAGE_TAG} 34 | environment: 35 | SW_AGENT_COLLECTOR_BACKEND_SERVICES: ${BACKEND_SERVICE}:11800 36 | OTEL_TARGET_ADDREESS: amqexporter:5556 37 | command: [ "--config=/etc/otel-collector-config.yaml" ] 38 | volumes: 39 | - ./config/activemq/otel-collector-config.yaml:/etc/otel-collector-config.yaml 40 | expose: 41 | - 55678 42 | depends_on: 43 | oap: 44 | condition: service_healthy 45 | networks: 46 | - sw 47 | 48 | networks: 49 | sw: -------------------------------------------------------------------------------- /deploy/platform/docker/docker-compose.apisix-monitor.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | 19 | # @feature: mysql; set up mysqld_exporter and OpenTelemetry collector 20 | 21 | version: '2.1' 22 | 23 | services: 24 | # frontend metrics collector 25 | apisix-otel-collector: 26 | image: ${OTEL_COLLECTOR_IMAGE}:${OTEL_COLLECTOR_IMAGE_TAG} 27 | command: [ "--config=/etc/otel-collector-config.yaml" ] 28 | volumes: 29 | - ./config/apisix/otel-collector-config.yaml:/etc/otel-collector-config.yaml 30 | environment: 31 | SW_AGENT_COLLECTOR_BACKEND_SERVICES: ${BACKEND_SERVICE}:11800 32 | OTEL_TARGET_ADDREESS: frontend:9091 33 | depends_on: 34 | oap: 35 | condition: service_healthy 36 | networks: [ sw ] 37 | 38 | networks: 39 | sw: 40 | -------------------------------------------------------------------------------- /deploy/platform/docker/docker-compose.event.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | version: '2.1' 19 | 20 | services: 21 | # @feature: event; set up event reporter to upload events. 22 | event-reporter: 23 | image: ${SW_CLI_IMAGE} 24 | networks: [ sw ] 25 | entrypoint: 26 | - /bin/sh 27 | - -xc 28 | command: 29 | - >- 30 | while true; do 31 | /swctl --grpc-addr=oap:11800 event report --uuid=$$RANDOM$$RANDOM$$RANDOM --name=Upgrade --service-name=songs --message='Upgrade from {fromVersion} to {toVersion}' --start-time=$$(($$(date +%s)*1000-60000)) --end-time=$$(($$(date +%s)*1000)) fromVersion=v1 toVersion=v2 32 | sleep 30 33 | /swctl --grpc-addr=oap:11800 event report --uuid=$$RANDOM$$RANDOM$$RANDOM --name=Upgrade --service-name=recommendation --message='Upgrade from {fromVersion} to {toVersion}' --start-time=$$(($$(date +%s)*1000-60000)) --end-time=$$(($$(date +%s)*1000)) fromVersion=v1 toVersion=v2 34 | sleep 30 35 | /swctl --grpc-addr=oap:11800 event report --uuid=$$RANDOM$$RANDOM$$RANDOM --name=Upgrade --service-name=gateway --message='Upgrade from {fromVersion} to {toVersion}' --start-time=$$(($$(date +%s)*1000-60000)) --end-time=$$(($$(date +%s)*1000)) fromVersion=v1 toVersion=v2 36 | sleep 30 37 | done 38 | depends_on: 39 | oap: 40 | condition: service_healthy 41 | 42 | networks: 43 | sw: 44 | -------------------------------------------------------------------------------- /deploy/platform/docker/docker-compose.grafana.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | version: '2.1' 19 | 20 | services: 21 | grafana: 22 | image: ${GRAFANA_IMAGE} 23 | environment: 24 | - GF_INSTALL_PLUGINS=apache-skywalking-datasource ${SW_GRAFANA_PLUGIN_VERSION} 25 | networks: [ sw ] 26 | volumes: 27 | - ./config/grafana/grafana.ini:/etc/grafana/grafana.ini 28 | - ./config/grafana/providers.yaml:/etc/grafana/provisioning/dashboards/providers.yaml 29 | - ./config/grafana/datasources.yaml:/etc/grafana/provisioning/datasources/datasources.yaml 30 | - ../config/grafana/dashboards:/var/lib/grafana/dashboards/skywalking 31 | ports: 32 | - "3000:3000" 33 | networks: 34 | sw: 35 | -------------------------------------------------------------------------------- /deploy/platform/docker/docker-compose.mysql-monitor.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | 19 | # @feature: mysql; set up mysqld_exporter and OpenTelemetry collector 20 | 21 | version: '2.1' 22 | 23 | services: 24 | mysql: 25 | image: mysql:8.0.30 26 | networks: 27 | - sw 28 | ports: 29 | - 3306 30 | environment: 31 | - MYSQL_ROOT_PASSWORD=password 32 | 33 | mysql-load: 34 | image: mysql:8.0.30 35 | depends_on: 36 | - otel-collector 37 | networks: 38 | - sw 39 | entrypoint: bash 40 | volumes: 41 | - ../docker/resource:/docker 42 | command: 43 | - -c 44 | - "mysql -h mysql -uroot -ppassword < /docker/mock.sql" 45 | 46 | mysql-service: 47 | image: prom/mysqld-exporter:v0.14.0 48 | ports: 49 | - 9104 50 | environment: 51 | - DATA_SOURCE_NAME=root:password@(mysql:3306)/ 52 | networks: 53 | - sw 54 | depends_on: 55 | - mysql 56 | 57 | 58 | otel-collector: 59 | image: ${OTEL_COLLECTOR_IMAGE}:${OTEL_COLLECTOR_IMAGE_TAG} 60 | networks: 61 | - sw 62 | command: [ "--config=/etc/otel-collector-config.yaml" ] 63 | volumes: 64 | - ./config/otel-collector-config-mysql.yaml:/etc/otel-collector-config.yaml 65 | expose: 66 | - 55678 67 | depends_on: 68 | oap: 69 | condition: service_healthy 70 | 71 | networks: 72 | sw: 73 | -------------------------------------------------------------------------------- /deploy/platform/docker/docker-compose.nginx-monitor.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one or more 2 | # contributor license agreements. See the NOTICE file distributed with 3 | # this work for additional information regarding copyright ownership. 4 | # The ASF licenses this file to You under the Apache License, Version 2.0 5 | # (the "License"); you may not use this file except in compliance with 6 | # the License. You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | version: '2.1' 17 | 18 | services: 19 | nginx: 20 | build: 21 | context: ./config/nginx 22 | dockerfile: Dockerfile.nginx 23 | volumes: 24 | - ./config/nginx/nginx.conf:/var/nginx/conf.d/nginx.conf 25 | - /tmp/skywalking-logs/nginx:/var/log/nginx 26 | entrypoint: ['bash', '-c', 'openresty -c /var/nginx/conf.d/nginx.conf'] 27 | depends_on: 28 | oap: 29 | condition: service_healthy 30 | ports: 31 | - 8080 32 | expose: 33 | - 9145 34 | networks: 35 | - sw 36 | 37 | nginx-caller: 38 | image: openresty/openresty:1.17.8.2-5-alpine-fat 39 | depends_on: 40 | - otel-collector 41 | networks: 42 | - sw 43 | entrypoint: sh 44 | command: 45 | - -c 46 | - "while true; do curl -o /dev/null -s http://nginx:8080/test; curl -o /dev/null -s http://nginx:8080/test_404; curl -o /dev/null -s http://nginx:8080/test_500; sleep 1s; done" 47 | 48 | fluent-bit: 49 | image: fluent/fluent-bit:1.9 50 | volumes: 51 | - /tmp/skywalking-logs/nginx:/var/log/nginx 52 | - ./config/nginx/fluent-bit.conf:/fluent-bit/etc/fluent-bit.conf 53 | - ./config/nginx/fluent-bit-script.lua:/fluent-bit/etc/fluent-bit-script.lua 54 | depends_on: 55 | - oap 56 | - nginx 57 | networks: 58 | - sw 59 | 60 | otel-collector: 61 | image: ${OTEL_COLLECTOR_IMAGE}:${OTEL_COLLECTOR_IMAGE_TAG} 62 | command: [ "--config=/etc/otel-collector-config.yaml" ] 63 | volumes: 64 | - ./config/nginx/otel-collector-config.yaml:/etc/otel-collector-config.yaml 65 | depends_on: 66 | - oap 67 | - nginx 68 | expose: 69 | - 55678 70 | networks: 71 | sw: 72 | 73 | networks: 74 | sw: 75 | -------------------------------------------------------------------------------- /deploy/platform/docker/docker-compose.postgresql-monitor.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one or more 2 | # contributor license agreements. See the NOTICE file distributed with 3 | # this work for additional information regarding copyright ownership. 4 | # The ASF licenses this file to You under the Apache License, Version 2.0 5 | # (the "License"); you may not use this file except in compliance with 6 | # the License. You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | version: '2.1' 17 | 18 | services: 19 | postgres: 20 | image: postgres:14.1 21 | environment: 22 | - POSTGRES_PASSWORD=password 23 | ports: 24 | - 5432 25 | networks: 26 | - sw 27 | 28 | postgres-load: 29 | image: postgres:14.1 30 | environment: 31 | - PGPASSWORD=password 32 | depends_on: 33 | - otel-collector 34 | networks: 35 | - sw 36 | entrypoint: bash 37 | volumes: 38 | - ../postgres-exporter:/docker 39 | command: 40 | - -c 41 | - "psql -f /docker/mock.sql -h postgres -p 5432 -U postgres postgres" 42 | 43 | # @feature: postgresql-monitoring; set up postgresql_exporter and OpenTelemetry collector 44 | postgres-exporter: 45 | image: quay.io/prometheuscommunity/postgres-exporter:v0.11.0 46 | depends_on: 47 | - postgres 48 | ports: 49 | - 9187 50 | environment: 51 | - DATA_SOURCE_NAME=postgresql://postgres:password@postgres:5432/postgres?sslmode=disable 52 | networks: 53 | - sw 54 | 55 | otel-collector: 56 | image: ${OTEL_COLLECTOR_IMAGE}:${OTEL_COLLECTOR_IMAGE_TAG} 57 | networks: 58 | - sw 59 | command: [ "--config=/etc/otel-collector-config.yaml" ] 60 | volumes: 61 | - ./config/otel-collector-config-psql.yaml:/etc/otel-collector-config.yaml 62 | expose: 63 | - 55678 64 | depends_on: 65 | oap: 66 | condition: service_healthy 67 | 68 | networks: 69 | sw: 70 | -------------------------------------------------------------------------------- /deploy/platform/docker/docker-compose.satellite.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | version: '2.1' 19 | 20 | services: 21 | satellite: 22 | image: ${SW_SATELLITE_IMAGE}:${SW_SATELLITE_IMAGE_TAG} 23 | networks: [ sw ] 24 | healthcheck: 25 | test: [ "CMD-SHELL", "sh", "-c", "nc -zn 127.0.0.1 11800" ] 26 | interval: 30s 27 | timeout: 10s 28 | retries: 3 29 | environment: 30 | SATELLITE_GRPC_CLIENT_FINDER: static 31 | SATELLITE_GRPC_CLIENT: oap:11800 32 | SATELLITE_TELEMETRY_EXPORT_TYPE: metrics_service 33 | depends_on: 34 | oap: 35 | condition: service_healthy 36 | 37 | networks: 38 | sw: 39 | -------------------------------------------------------------------------------- /deploy/platform/docker/docker-compose.so11y.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | 19 | # So11y in Docker compose is enabled by default 20 | 21 | version: '2.1' 22 | -------------------------------------------------------------------------------- /deploy/platform/docker/docker-compose.vm-monitor.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | 19 | # @feature: vm; set up VM node exporter and OpenTelemetry collector 20 | 21 | version: '2.1' 22 | 23 | services: 24 | # Pretend this is a virtual machine 25 | vm1: 26 | image: quay.io/prometheus/node-exporter:v1.2.2 27 | networks: [ sw ] 28 | expose: 29 | - 9100 30 | deploy: 31 | resources: 32 | limits: 33 | cpus: "0.2" 34 | memory: 256M 35 | depends_on: 36 | oap: 37 | condition: service_healthy 38 | 39 | # Pretend this is a virtual machine 40 | vm2: 41 | image: quay.io/prometheus/node-exporter:v1.2.2 42 | networks: [ sw ] 43 | expose: 44 | - 9100 45 | deploy: 46 | resources: 47 | limits: 48 | cpus: "0.2" 49 | memory: 256M 50 | depends_on: 51 | oap: 52 | condition: service_healthy 53 | 54 | otel-collector: 55 | image: ${OTEL_COLLECTOR_IMAGE}:${OTEL_COLLECTOR_IMAGE_TAG} 56 | networks: [ sw ] 57 | command: [ "--config=/etc/otel-collector-config.yaml" ] 58 | volumes: 59 | - ./config/otel-collector-config.yaml:/etc/otel-collector-config.yaml 60 | expose: 61 | - 55678 62 | depends_on: 63 | oap: 64 | condition: service_healthy 65 | 66 | networks: 67 | sw: 68 | -------------------------------------------------------------------------------- /deploy/platform/docker/resource/mock.sql: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one or more 2 | # contributor license agreements. See the NOTICE file distributed with 3 | # this work for additional information regarding copyright ownership. 4 | # The ASF licenses this file to You under the Apache License, Version 2.0 5 | # (the "License"); you may not use this file except in compliance with 6 | # the License. You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | CREATE DATABASE IF NOT EXISTS test; 17 | USE test; 18 | CREATE TABLE IF NOT EXISTS `t1`( 19 | `te1` VARCHAR(100) NOT NULL 20 | )ENGINE=InnoDB DEFAULT CHARSET=utf8; 21 | SET GLOBAL event_scheduler = 1; 22 | 23 | CREATE EVENT `event_1` 24 | ON SCHEDULE EVERY 3 SECOND 25 | DO INSERT INTO t1 values('test'); 26 | 27 | CREATE EVENT `event_2` 28 | ON SCHEDULE EVERY 2 SECOND 29 | DO UPDATE t1 SET `te1` = 1; 30 | 31 | CREATE EVENT `event_3` 32 | ON SCHEDULE EVERY 4 SECOND 33 | DO DELETE FROM t1; 34 | 35 | CREATE EVENT `event_4` 36 | ON SCHEDULE EVERY 5 SECOND 37 | DO COMMIT; 38 | 39 | CREATE EVENT `event_5` 40 | ON SCHEDULE EVERY 1 SECOND 41 | DO SELECT * FROM t1; 42 | -------------------------------------------------------------------------------- /deploy/platform/docker/scripts/es-e2e-data-mock.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Licensed to the Apache Software Foundation (ASF) under one or more 3 | # contributor license agreements. See the NOTICE file distributed with 4 | # this work for additional information regarding copyright ownership. 5 | # The ASF licenses this file to You under the Apache License, Version 2.0 6 | # (the "License"); you may not use this file except in compliance with 7 | # the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | 17 | E2E_ES_HOST="elasticsearch:9200" 18 | INDEX_NAME_PREFIX="e2e-index-" 19 | i=0 20 | while [ $i -lt 10 ] 21 | do 22 | curl -X PUT "${E2E_ES_HOST}/${INDEX_NAME_PREFIX}${i}?pretty" -H 'Content-Type: application/json' -d' 23 | { 24 | "settings": { 25 | "index": { 26 | "number_of_shards": 3, 27 | "number_of_replicas": 2 28 | } 29 | } 30 | } 31 | ' 32 | 33 | curl -X POST "${E2E_ES_HOST}/${INDEX_NAME_PREFIX}0/_doc/?pretty" -H 'Content-Type: application/json' -d'{"message": "GET /search HTTP/1.1 200 '${i}'","userid":"test"}' 34 | 35 | 36 | 37 | if [ $i -eq 10 ] 38 | then 39 | break 40 | fi 41 | i=`expr $i + 1` 42 | done 43 | 44 | while true 45 | do 46 | curl -X GET "${E2E_ES_HOST}/${INDEX_NAME_PREFIX}0/_search?size=20&pretty" -H 'Content-Type: application/json' -d' 47 | { 48 | "query": { 49 | "term": { 50 | "userid": "test" 51 | } 52 | } 53 | } 54 | ' 55 | 56 | curl -X POST "${E2E_ES_HOST}/${INDEX_NAME_PREFIX}0/_search?pretty" -H 'Content-Type: application/json' -d' 57 | { 58 | "suggest": { 59 | "my-suggest-1" : { 60 | "text" : "test", 61 | "term" : { 62 | "field" : "userid" 63 | } 64 | } 65 | } 66 | } 67 | ' 68 | 69 | curl -X POST "${E2E_ES_HOST}/${INDEX_NAME_PREFIX}0/_search?scroll=1m&pretty" -H 'Content-Type: application/json' -d' 70 | { 71 | "size": 100, 72 | "query": { 73 | "match": { 74 | "userid": "test" 75 | } 76 | } 77 | } 78 | ' 79 | 80 | sleep 2 81 | done -------------------------------------------------------------------------------- /deploy/platform/kubernetes/Makefile.in: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | 19 | .EXPORT_ALL_VARIABLES: 20 | 21 | NAMESPACE ?= skywalking-showcase 22 | SAMPLE_SERVICES_NAMESPACE ?= sample-services 23 | CILIUM_SERVICES_NAMESPACE ?= cilium-services 24 | RELEASE ?= demo 25 | AGENTLESS ?= false 26 | SCALLER_ENABLE ?= false 27 | 28 | FEATURE_FLAGS ?= java-agent-injector,cluster,banyandb,kubernetes-monitor,so11y,vm-monitor,als,event,istiod-monitor,satellite,rover,trace-profiling,mysql-monitor,postgresql-monitor,nginx-monitor,apisix-monitor,grafana,rabbitmq-monitor,mongodb-monitor,r3,rocketmq-monitor,pulsar-monitor,activemq-monitor,flink-monitor 29 | -------------------------------------------------------------------------------- /deploy/platform/kubernetes/check.mak: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | 19 | # Check prerequisites 20 | 21 | ifeq ($(filter feature-elasticsearch,$(features)),feature-elasticsearch) 22 | ifeq ($(filter feature-postgresql,$(features)),feature-postgresql) 23 | ifeq ($(filter feature-banyandb,$(features)),feature-banyandb) 24 | ERROR := only one of `elasticsearch`, `postgresql`, and `banyandb` can be enabled 25 | endif 26 | endif 27 | endif 28 | 29 | ifneq ($(filter feature-elasticsearch,$(features)),feature-elasticsearch) 30 | ifneq ($(filter feature-postgresql,$(features)),feature-postgresql) 31 | ifneq ($(filter feature-banyandb,$(features)),feature-banyandb) 32 | ERROR := either `elasticsearch`, `postgresql`, or `banyandb` must be enabled 33 | endif 34 | endif 35 | endif 36 | 37 | ifneq ($(filter feature-elasticsearch,$(features)),feature-elasticsearch) 38 | ifeq ($(filter feature-elasticsearch-monitor,$(features)),feature-elasticsearch-monitor) 39 | ERROR := although `elasticsearch-monitor` does not require `elasticsearch` as storage, but in showcase we use the ElasticSearch used by SkyWalking itself to be monitored, so please enable `elasticsearch` as well. 40 | endif 41 | endif 42 | 43 | ifdef ERROR 44 | $(error $(ERROR)) 45 | endif 46 | -------------------------------------------------------------------------------- /deploy/platform/kubernetes/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | {{/* 2 | Licensed to the Apache Software Foundation (ASF) under one or more 3 | contributor license agreements. See the NOTICE file distributed with 4 | this work for additional information regarding copyright ownership. 5 | The ASF licenses this file to You under the Apache License, Version 2.0 6 | (the "License"); you may not use this file except in compliance with 7 | the License. You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | */}} 17 | 18 | {{/* 19 | The collector address, might be OAP or Satellite 20 | */}} 21 | {{- define "skywalking.collector.address" -}} 22 | {{- if .Values.skywalking.satellite.enabled }} 23 | {{- printf "%s-satellite.%s.svc.cluster.local:%d" .Values.skywalking.fullnameOverride .Release.Namespace 11800 }} 24 | {{- else }} 25 | {{- printf "%s-oap.%s.svc.cluster.local:%d" .Values.skywalking.fullnameOverride .Release.Namespace 11800 }} 26 | {{- end -}} 27 | {{- end -}} 28 | 29 | {{- define "skywalking.oap.address.host" -}} 30 | {{- printf "%s-oap.%s.svc.cluster.local" .Values.skywalking.fullnameOverride .Release.Namespace }} 31 | {{- end -}} 32 | 33 | {{- define "skywalking.oap.address.grpc" -}} 34 | {{- printf "%s-oap.%s.svc.cluster.local:%d" .Values.skywalking.fullnameOverride .Release.Namespace 11800 }} 35 | {{- end -}} 36 | 37 | {{- define "skywalking.oap.address.http" -}} 38 | {{- printf "http://%s-oap.%s.svc.cluster.local:%d" .Values.skywalking.fullnameOverride .Release.Namespace 12800 }} 39 | {{- end -}} 40 | -------------------------------------------------------------------------------- /deploy/platform/kubernetes/templates/feature-activemq-monitor/opentelemetry-config.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | 19 | {{- define "opentelemetry-config-activemq-monitor" }} 20 | {{- if .Values.features.activemqMonitor.enabled }} 21 | 22 | - job_name: activemq-monitoring 23 | scrape_interval: 10s 24 | kubernetes_sd_configs: 25 | - role: pod 26 | relabel_configs: 27 | - source_labels: [ __meta_kubernetes_pod_container_name, __meta_kubernetes_pod_container_port_name ] 28 | action: keep 29 | regex: activemq-exporter;metrics 30 | - source_labels: [ ] 31 | target_label: cluster 32 | replacement: activemq.{{ .Values.sampleServices.namespace }} 33 | - source_labels: [ __meta_kubernetes_pod_name ] 34 | target_label: service_instance_id 35 | regex: (.+) 36 | replacement: $$1 37 | 38 | {{- end }} 39 | {{- end }} -------------------------------------------------------------------------------- /deploy/platform/kubernetes/templates/feature-apisix-monitor/opentelemetry-config.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | 19 | {{- define "opentelemetry-config-apisix" }} 20 | {{- if .Values.features.apisixMonitor.enabled }} 21 | 22 | - job_name: 'apisix-monitoring' 23 | scrape_interval: 5s 24 | metrics_path: "/apisix/prometheus/metrics" 25 | kubernetes_sd_configs: 26 | - role: pod 27 | relabel_configs: 28 | - source_labels: [ __meta_kubernetes_pod_container_name, __meta_kubernetes_pod_container_port_name ] 29 | action: keep 30 | regex: frontend;metrics # @feature: apisix-monitor; reference the name of the metrics port 31 | - source_labels: [ __meta_kubernetes_pod_name ] 32 | target_label: service_instance_id 33 | regex: (.+) 34 | replacement: $$1 35 | - target_label: skywalking_service 36 | replacement: frontend.{{ .Values.sampleServices.namespace }} 37 | 38 | {{- end }} 39 | {{- end }} 40 | -------------------------------------------------------------------------------- /deploy/platform/kubernetes/templates/feature-elasticseasrch-monitor/opentelemetry-config.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | 19 | {{- define "opentelemetry-config-elasticsearch-monitor" }} 20 | {{- if .Values.features.elasticsearchMonitor.enabled }} 21 | 22 | - job_name: 'elasticsearch-monitoring' 23 | scrape_interval: 30s 24 | metrics_path: "/metrics" 25 | kubernetes_sd_configs: 26 | - role: service 27 | relabel_configs: 28 | - source_labels: [__meta_kubernetes_service_name, __meta_kubernetes_service_port_name] 29 | action: keep 30 | regex: prometheus-elasticsearch-exporter;http 31 | 32 | {{- end }} 33 | {{- end }} 34 | -------------------------------------------------------------------------------- /deploy/platform/kubernetes/templates/feature-event/permissions.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | 19 | {{- if .Values.features.event.enabled }} 20 | --- 21 | apiVersion: v1 22 | kind: ServiceAccount 23 | metadata: 24 | name: skywalking-event-exporter-sa 25 | 26 | --- 27 | apiVersion: rbac.authorization.k8s.io/v1 28 | kind: ClusterRoleBinding 29 | metadata: 30 | name: skywalking-event-exporter-role-binding 31 | roleRef: 32 | apiGroup: rbac.authorization.k8s.io 33 | kind: ClusterRole 34 | name: view 35 | subjects: 36 | - kind: ServiceAccount 37 | namespace: {{ .Release.Namespace }} 38 | name: skywalking-event-exporter-sa 39 | {{- end }} 40 | -------------------------------------------------------------------------------- /deploy/platform/kubernetes/templates/feature-event/resources.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | {{- if .Values.features.event.enabled }} 19 | 20 | --- 21 | apiVersion: v1 22 | kind: ConfigMap 23 | metadata: 24 | name: skywalking-event-exporter-cm 25 | data: 26 | config.yaml: | 27 | filters: 28 | - namespace: {{ .Release.Namespace }} 29 | exporters: 30 | - skywalking 31 | 32 | exporters: 33 | skywalking: 34 | template: 35 | source: 36 | service: "agent::{{"{{"}} .Service.Name {{"}}"}}" 37 | serviceInstance: "{{"{{"}} .Pod.Name {{"}}"}}" 38 | endpoint: "" 39 | message: "{{"{{"}} .Event.Message {{"}}"}}" 40 | address: "{{ .Release.Name }}-oap:11800" 41 | 42 | --- 43 | apiVersion: apps/v1 44 | kind: Deployment 45 | metadata: 46 | name: skywalking-event-exporter-deployment 47 | spec: 48 | replicas: 1 49 | template: 50 | metadata: 51 | labels: 52 | app: skywalking-event-exporter 53 | spec: 54 | serviceAccountName: skywalking-event-exporter-sa 55 | containers: 56 | - name: skywalking-event-exporter 57 | image: "{{ .Values.features.event.exporter.image }}" 58 | imagePullPolicy: IfNotPresent 59 | args: 60 | - start 61 | - -v=debug 62 | - -c=/data/config.yaml 63 | volumeMounts: 64 | - mountPath: /data 65 | name: config 66 | volumes: 67 | - name: config 68 | configMap: 69 | name: skywalking-event-exporter-cm 70 | selector: 71 | matchLabels: 72 | app: skywalking-event-exporter 73 | {{- end }} 74 | -------------------------------------------------------------------------------- /deploy/platform/kubernetes/templates/feature-grafana/configmaps.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | {{- if .Values.features.grafana.enabled }} 19 | 20 | apiVersion: v1 21 | kind: ConfigMap 22 | metadata: 23 | name: dashboard-configs 24 | data: 25 | {{ range $path, $bytes := .Files.Glob "generated/dashboard-configs/*.json" }} 26 | {{- $path | replace "generated/dashboard-configs/" "" | indent 2 }}: | 27 | {{ $.Files.Get $path | indent 4 }} 28 | {{ end }} 29 | 30 | {{- end }} 31 | -------------------------------------------------------------------------------- /deploy/platform/kubernetes/templates/feature-istiod-monitor/opentelemetry-config.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | {{- define "opentelemetry-config-istiod-monitor" -}} 19 | {{- if .Values.features.istiodMonitor.enabled }} 20 | 21 | # @feature: istiod-monitor; configuration to scrape Istio control plane metrics 22 | - job_name: 'istiod-monitor' 23 | kubernetes_sd_configs: 24 | - role: endpoints 25 | relabel_configs: 26 | - source_labels: [ __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name ] 27 | action: keep 28 | regex: istiod;http-monitoring 29 | - action: labelmap 30 | regex: __meta_kubernetes_service_label_(.+) 31 | - source_labels: [ ] 32 | target_label: cluster 33 | replacement: skywalking-showcase 34 | 35 | {{- end }} 36 | {{- end }} 37 | -------------------------------------------------------------------------------- /deploy/platform/kubernetes/templates/feature-kubernetes-monitor/opentelemetry-config.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | {{- define "opentelemetry-config-kubernetes-monitor" }} 19 | {{- if .Values.features.kubernetesMonitor.enabled }} 20 | 21 | # @feature: kubernetes-monitor; set OpenTelemetry config to scrape the Kubernetes metrics 22 | # @feature: kubernetes-monitor; configuration to scrape Kubernetes Nodes metrics 23 | - job_name: 'kubernetes-cadvisor' 24 | scheme: https 25 | tls_config: 26 | ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt 27 | bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token 28 | kubernetes_sd_configs: 29 | - role: node 30 | relabel_configs: 31 | - action: labelmap 32 | regex: __meta_kubernetes_node_label_(.+) 33 | - source_labels: [ ] 34 | target_label: cluster 35 | replacement: skywalking-showcase 36 | - target_label: __address__ 37 | replacement: kubernetes.default.svc:443 38 | - source_labels: [ __meta_kubernetes_node_name ] 39 | regex: (.+) 40 | target_label: __metrics_path__ 41 | replacement: /api/v1/nodes/$${1}/proxy/metrics/cadvisor 42 | - source_labels: [ instance ] 43 | separator: ; 44 | regex: (.+) 45 | target_label: node 46 | replacement: $$1 47 | action: replace 48 | # @feature: kubernetes-monitor; configuration to scrape Kubernetes Endpoints metrics 49 | - job_name: kube-state-metrics 50 | metrics_path: /metrics 51 | kubernetes_sd_configs: 52 | - role: endpoints 53 | relabel_configs: 54 | - source_labels: [ __meta_kubernetes_service_label_app_kubernetes_io_name ] 55 | regex: kube-state-metrics 56 | replacement: $$1 57 | action: keep 58 | - action: labelmap 59 | regex: __meta_kubernetes_service_label_(.+) 60 | - source_labels: [ ] 61 | target_label: cluster 62 | replacement: skywalking-showcase 63 | 64 | {{- end }} 65 | {{- end }} 66 | -------------------------------------------------------------------------------- /deploy/platform/kubernetes/templates/feature-mongodb/opentelemetry-config.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | 19 | {{- define "opentelemetry-config-mongodb-monitor" }} 20 | {{- if .Values.features.mongodbMonitor.enabled }} 21 | 22 | - job_name: mongodb-monitoring 23 | scrape_interval: 10s 24 | kubernetes_sd_configs: 25 | - role: pod 26 | relabel_configs: 27 | - source_labels: [ __meta_kubernetes_pod_controller_name, __meta_kubernetes_pod_container_name, __meta_kubernetes_pod_container_port_name ] 28 | action: keep 29 | regex: .+mongodb;metrics;metrics 30 | - source_labels: [ ] 31 | target_label: cluster 32 | replacement: replset 33 | - source_labels: [ __meta_kubernetes_pod_name ] 34 | target_label: service_instance_id 35 | regex: (.+) 36 | replacement: $$1 37 | 38 | {{- end }} 39 | {{- end }} 40 | -------------------------------------------------------------------------------- /deploy/platform/kubernetes/templates/feature-mysql-monitor/opentelemetry-config.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | {{- define "opentelemetry-config-mysql-monitor" }} 19 | {{- if .Values.features.mysqlMonitor.enabled }} 20 | 21 | # @feature: mysql; set OpenTelemetry config to scrape the mysql metrics 22 | # @feature: mysql; set up the scrape configs according to your mysql instances 23 | - job_name: 'mysql-monitoring' 24 | metrics_path: '/metrics' 25 | kubernetes_sd_configs: 26 | - role: pod 27 | relabel_configs: 28 | - source_labels: [ __meta_kubernetes_pod_container_name, __meta_kubernetes_pod_container_port_name ] 29 | action: keep 30 | regex: mysqld-exporter;metrics # @feature: mysql; reference the name of the metrics port 31 | - source_labels: [ ] 32 | target_label: host_name 33 | replacement: mysql.{{ .Release.Namespace }} 34 | - source_labels: [ __meta_kubernetes_pod_name ] 35 | target_label: service_instance_id 36 | regex: (.+) 37 | replacement: $$1 38 | 39 | {{- end }} 40 | {{- end }} 41 | -------------------------------------------------------------------------------- /deploy/platform/kubernetes/templates/feature-nginx-monitor/opentelemetry-config.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | 19 | {{- define "opentelemetry-config-nginx" }} 20 | {{- if .Values.features.nginxMonitor.enabled }} 21 | 22 | - job_name: 'nginx-monitoring' 23 | scrape_interval: 5s 24 | metrics_path: "/metrics" 25 | kubernetes_sd_configs: 26 | - role: pod 27 | relabel_configs: 28 | - source_labels: [ __meta_kubernetes_pod_container_name, __meta_kubernetes_pod_container_port_name ] 29 | action: keep 30 | regex: nginx;metrics 31 | - source_labels: [ __meta_kubernetes_pod_name ] 32 | target_label: service_instance_id 33 | regex: (.+) 34 | replacement: $$1 35 | - target_label: service 36 | replacement: nginx.{{ .Release.Namespace }} 37 | 38 | {{- end }} 39 | {{- end }} 40 | -------------------------------------------------------------------------------- /deploy/platform/kubernetes/templates/feature-postgresql-monitor/opentelemetry-config.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | {{- define "opentelemetry-config-postgresql-monitor" }} 19 | {{- if .Values.features.postgresqlMonitor.enabled }} 20 | 21 | # @feature: postgresql; set OpenTelemetry config to scrape the psql metrics 22 | # @feature: postgresql; set up the scrape configs according to your postgresql instances 23 | - job_name: "postgresql-monitoring" 24 | metrics_path: '/metrics' 25 | kubernetes_sd_configs: 26 | - role: pod 27 | relabel_configs: 28 | - source_labels: [ __meta_kubernetes_pod_container_name, __meta_kubernetes_pod_container_port_name ] 29 | action: keep 30 | regex: psql-exporter;metrics # @feature: postgresql; reference the name of the metrics port 31 | - source_labels: [ ] 32 | target_label: host_name 33 | replacement: psql.{{ .Release.Namespace }} 34 | - source_labels: [ __meta_kubernetes_pod_name ] 35 | target_label: service_instance_id 36 | regex: (.+) 37 | replacement: $$1 38 | 39 | {{- end }} 40 | {{- end }} 41 | -------------------------------------------------------------------------------- /deploy/platform/kubernetes/templates/feature-pulsar-monitor/opentelemetry-config.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | 19 | {{- define "opentelemetry-config-pulsar-monitor" }} 20 | {{- if .Values.features.pulsarMonitor.enabled }} 21 | 22 | - job_name: "pulsar-monitoring" 23 | scrape_interval: 30s 24 | metrics_path: "/metrics" 25 | kubernetes_sd_configs: 26 | - role: pod 27 | relabel_configs: 28 | - source_labels: [ __meta_kubernetes_pod_container_name, __meta_kubernetes_pod_container_port_name ] 29 | action: keep 30 | regex: pulsar;metrics 31 | - source_labels: [ ] 32 | target_label: cluster 33 | replacement: pulsar.{{ .Release.Namespace }} 34 | - source_labels: [ __meta_kubernetes_pod_name ] 35 | target_label: node 36 | regex: (.+) 37 | replacement: $$1 38 | 39 | {{- end }} 40 | {{- end }} 41 | -------------------------------------------------------------------------------- /deploy/platform/kubernetes/templates/feature-r3/resources.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | {{- if .Values.features.r3.enabled }} 19 | apiVersion: v1 20 | kind: Service 21 | metadata: 22 | name: r3 23 | spec: 24 | selector: 25 | app: r3 26 | ports: 27 | - protocol: TCP 28 | port: 17128 29 | name: r3-port 30 | 31 | --- 32 | apiVersion: apps/v1 33 | kind: Deployment 34 | metadata: 35 | name: r3-deployment 36 | labels: 37 | app: r3 38 | spec: 39 | replicas: 1 40 | selector: 41 | matchLabels: 42 | app: r3 43 | template: 44 | metadata: 45 | labels: 46 | app: r3 47 | annotations: 48 | sidecar.istio.io/inject: "false" 49 | spec: 50 | containers: 51 | - name: r3 52 | image: {{ .Values.features.r3.image }} 53 | ports: 54 | - containerPort: 17128 55 | 56 | --- 57 | apiVersion: batch/v1 58 | kind: CronJob 59 | metadata: 60 | name: r3-load 61 | namespace: {{ .Values.sampleServices.namespace }} 62 | labels: 63 | app: r3-load 64 | spec: 65 | schedule: "0,10,20,30,40,50 * * * *" 66 | successfulJobsHistoryLimit: 1 67 | failedJobsHistoryLimit: 1 68 | jobTemplate: 69 | spec: 70 | template: 71 | spec: 72 | shareProcessNamespace: true 73 | containers: 74 | - name: r3-load 75 | image: curlimages/curl 76 | command: ["/bin/sh"] 77 | args: ["-c", "for i in $(seq 1 200); do curl http://rating/songs/$i/reviews/$((i+1)); sleep 1; done; curl -X POST http://localhost:15000/quitquitquit;"] 78 | securityContext: 79 | capabilities: 80 | add: 81 | - SYS_PTRACE 82 | restartPolicy: Never 83 | {{- end }} 84 | -------------------------------------------------------------------------------- /deploy/platform/kubernetes/templates/feature-rabbitmq-monitor/opentelemetry-config.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | 19 | {{- define "opentelemetry-config-rabbitmq-monitor" }} 20 | {{- if .Values.features.rabbitmqMonitor.enabled }} 21 | 22 | - job_name: rabbitmq-monitoring 23 | scrape_interval: 30s 24 | kubernetes_sd_configs: 25 | - role: pod 26 | relabel_configs: 27 | - source_labels: [ __meta_kubernetes_pod_container_name, __meta_kubernetes_pod_container_port_name ] 28 | action: keep 29 | regex: rabbitmq;metrics 30 | - source_labels: [ ] 31 | target_label: cluster 32 | replacement: {{ include "common.names.fullname" .Subcharts.rabbitmq }}.{{ .Release.Namespace }} 33 | 34 | - source_labels: [ __address__ ] 35 | target_label: node 36 | regex: (.+) 37 | replacement: $$1 38 | action: replace 39 | 40 | {{- end }} 41 | {{- end }} 42 | -------------------------------------------------------------------------------- /deploy/platform/kubernetes/templates/feature-rabbitmq-monitor/rabbitmq.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | {{- if .Values.features.rabbitmqMonitor.enabled }} 19 | 20 | apiVersion: apps/v1 21 | kind: Deployment 22 | metadata: 23 | name: rabbitmq-mock-client 24 | spec: 25 | replicas: 1 26 | strategy: 27 | type: Recreate 28 | selector: 29 | matchLabels: 30 | app: mock-client 31 | template: 32 | metadata: 33 | labels: 34 | app: mock-client 35 | spec: 36 | containers: 37 | - env: 38 | - name: URI 39 | value: "amqp://guest:guest@demo-rabbitmq:5672/%2f" 40 | - name: QUEUE 41 | value: basic-get 42 | - name: ROUTING_KEY 43 | value: basic-get 44 | - name: VARIABLE_RATE 45 | value: "1:1,0:30" 46 | - name: POLLING 47 | value: "true" 48 | - name: POLLING_INTERVAL 49 | value: "5000" 50 | - name: AUTOACK 51 | value: "5000" 52 | - name: SERVERS_STARTUP_TIMEOUT 53 | value: "60" 54 | - name: METRICS_PROMETHEUS 55 | value: "true" 56 | image: pivotalrabbitmq/perf-test:2.15.0-ubuntu 57 | imagePullPolicy: IfNotPresent 58 | name: install 59 | ports: 60 | - containerPort: 8080 61 | name: http 62 | protocol: TCP 63 | restartPolicy: Always 64 | securityContext: { } 65 | 66 | {{- end }} 67 | -------------------------------------------------------------------------------- /deploy/platform/kubernetes/templates/feature-rocketmq/opentelemetry-config.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | 19 | {{- define "opentelemetry-config-rocketmq-monitor" }} 20 | {{- if .Values.features.rocketmqMonitor.enabled }} 21 | 22 | - job_name: "rocketmq-monitoring" 23 | scrape_interval: 30s 24 | metrics_path: "/metrics" 25 | kubernetes_sd_configs: 26 | - role: pod 27 | relabel_configs: 28 | - source_labels: [ __meta_kubernetes_pod_container_name, __meta_kubernetes_pod_container_port_name ] 29 | action: keep 30 | regex: rocketmq-exporter;metrics 31 | - source_labels: [ ] 32 | target_label: cluster 33 | replacement: rocketmq.{{ .Release.Namespace }} 34 | - source_labels: [ __meta_kubernetes_pod_name ] 35 | target_label: service_instance_id 36 | regex: (.+) 37 | replacement: $$1 38 | 39 | {{- end }} 40 | {{- end }} 41 | -------------------------------------------------------------------------------- /deploy/platform/kubernetes/templates/feature-rover/permissions.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | {{- if .Values.features.rover.enabled}} 19 | 20 | apiVersion: v1 21 | kind: ServiceAccount 22 | metadata: 23 | name: skywalking-rover-sa 24 | --- 25 | kind: ClusterRole 26 | apiVersion: rbac.authorization.k8s.io/v1 27 | metadata: 28 | name: skywalking-rover-sa-role 29 | rules: 30 | - apiGroups: [""] 31 | resources: ["pods", "nodes", "services"] 32 | verbs: ["get", "watch", "list"] 33 | --- 34 | apiVersion: rbac.authorization.k8s.io/v1 35 | kind: ClusterRoleBinding 36 | metadata: 37 | name: skywalking-rover-sa-role-binding 38 | roleRef: 39 | apiGroup: rbac.authorization.k8s.io 40 | kind: ClusterRole 41 | name: skywalking-rover-sa-role 42 | subjects: 43 | - kind: ServiceAccount 44 | name: skywalking-rover-sa 45 | namespace: {{ .Release.Namespace }} 46 | 47 | {{- end }} 48 | -------------------------------------------------------------------------------- /deploy/platform/kubernetes/templates/feature-so11y/opentelemetry-config.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | {{- define "opentelemetry-config-so11y" }} 19 | {{- if .Values.features.so11y.enabled }} 20 | 21 | - job_name: 'skywalking-so11y' 22 | metrics_path: '/metrics' 23 | kubernetes_sd_configs: 24 | - role: pod 25 | relabel_configs: 26 | - source_labels: [ __meta_kubernetes_pod_container_name, __meta_kubernetes_pod_container_port_name ] 27 | action: keep 28 | regex: oap;metrics # @feature: so11y; reference the name of the metrics port 29 | - source_labels: [ ] 30 | target_label: service 31 | replacement: {{ include "skywalking.oap.fullname" .Subcharts.skywalking }}.{{ .Release.Namespace }} 32 | - source_labels: [ __meta_kubernetes_pod_name ] 33 | target_label: host_name 34 | regex: (.+) 35 | replacement: $$1 36 | 37 | {{- end }} 38 | {{- end }} 39 | -------------------------------------------------------------------------------- /deploy/platform/kubernetes/templates/feature-trace-profiling/profiling.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | 19 | {{- if .Values.features.traceProfiling.enabled }} 20 | 21 | apiVersion: batch/v1 22 | kind: CronJob 23 | metadata: 24 | name: trace-profiling-trgigger 25 | namespace: {{ .Values.sampleServices.namespace }} 26 | spec: 27 | schedule: "8 0 * * *" 28 | successfulJobsHistoryLimit: 1 29 | failedJobsHistoryLimit: 1 30 | jobTemplate: 31 | spec: 32 | template: 33 | metadata: 34 | annotations: 35 | sidecar.istio.io/inject: "false" 36 | spec: 37 | containers: 38 | - name: trace-profiling-trigger 39 | image: "{{ .Values.features.traceProfiling.swctl.image }}" 40 | command: 41 | - /bin/sh 42 | - -c 43 | - > 44 | /swctl --base-url={{ template "skywalking.oap.address.http" . }}/graphql profiling trace create --service-name agent::songs \ 45 | --endpoint-name GET:/songs --duration=15 --min-duration-threshold=0 --dump-period=10 --max-sampling-count=9 46 | restartPolicy: Never 47 | 48 | {{- end }} 49 | -------------------------------------------------------------------------------- /deploy/platform/kubernetes/templates/feature-vm-monitor/opentelemetry-config.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | 19 | {{- define "opentelemetry-config-vm" }} 20 | {{- if .Values.features.vmMonitor.enabled }} 21 | 22 | # @feature: vm; set OpenTelemetry config to scrape the VM metrics, this is only for demo, in real scenarios the VM addresses should be static, not via service discovery 23 | - job_name: 'vm-monitoring' 24 | metrics_path: '/metrics' 25 | kubernetes_sd_configs: 26 | - role: pod 27 | relabel_configs: 28 | - source_labels: [ __meta_kubernetes_pod_container_name, __meta_kubernetes_pod_container_port_name ] 29 | action: keep 30 | regex: vm;metrics # @feature: vm; reference the name of the metrics port 31 | - source_labels: [ __meta_kubernetes_pod_name ] 32 | target_label: host_name 33 | regex: (.+) 34 | replacement: $$1 35 | 36 | {{- end }} 37 | {{- end }} 38 | -------------------------------------------------------------------------------- /deploy/platform/kubernetes/templates/feature-vm-monitor/vm.yaml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | {{- if .Values.features.vmMonitor.enabled }} 19 | 20 | # @feature: pretend these Pods are virtual machines 21 | 22 | --- 23 | apiVersion: v1 24 | kind: Service 25 | metadata: 26 | name: vm 27 | spec: 28 | selector: 29 | app: vm 30 | ports: 31 | - protocol: TCP 32 | port: 9100 33 | 34 | --- 35 | apiVersion: apps/v1 36 | kind: Deployment 37 | metadata: 38 | name: vm-deployment 39 | labels: 40 | app: vm 41 | spec: 42 | replicas: 2 43 | selector: 44 | matchLabels: 45 | app: vm 46 | template: 47 | metadata: 48 | labels: 49 | app: vm 50 | annotations: 51 | sidecar.istio.io/inject: "false" 52 | spec: 53 | containers: 54 | - name: vm 55 | image: quay.io/prometheus/node-exporter:v1.2.2 56 | resources: 57 | limits: 58 | cpu: 100m 59 | memory: "128Mi" 60 | ports: 61 | - containerPort: 9100 62 | name: metrics 63 | 64 | {{- end }} 65 | -------------------------------------------------------------------------------- /docs/menu.yml: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | 17 | 18 | catalog: 19 | - name: "SkyWalking showcase" 20 | path: "/readme" 21 | -------------------------------------------------------------------------------- /scripts/make/help.mk: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | 19 | ##@ Other targets 20 | 21 | define usage 22 | You can customize the settings in Makefile.in 23 | by specifying the variable in make command: 24 | 25 | $$ make deploy.docker FEATURE_FLAGS=agent,vm,mysql 26 | 27 | or via environment variable: 28 | 29 | $$ export FEATURE_FLAGS=single-node,agent,vm,mysql && make deploy.docker 30 | $$ export FEATURE_FLAGS=cluster,agent,vm,mysql && make deploy.docker 31 | endef 32 | 33 | export usage 34 | 35 | .PHONY: help 36 | help: ## Display this help 37 | @echo '' 38 | @echo 'Usage:' 39 | @echo "$$usage" 40 | @awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m\033[0m\n"} \ 41 | /^[.a-zA-Z0-9_-]+:.*?##/ { printf " \033[36m%-15s\033[0m \t%s\n", $$1, $$2 } \ 42 | /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) }' $(MAKEFILE_LIST) 43 | 44 | features := $(subst $(comma), ,$(FEATURE_FLAGS)) 45 | features := $(foreach f,$(features),@feature: *$(f)*) 46 | 47 | .PHONY: highlight 48 | highlight: ## Highlight the important contents of a feature 49 | @if [ "$(FEATURE_FLAGS)" = "" ]; then \ 50 | echo 'FEATURE_FLAGS must be set in highlight target'; \ 51 | exit 1; \ 52 | fi 53 | @grep --color -rnw . -e "$(features)" 54 | -------------------------------------------------------------------------------- /services/app/.gitignore: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 19 | 20 | # dependencies 21 | /node_modules 22 | /.pnp 23 | .pnp.js 24 | 25 | # testing 26 | /coverage 27 | 28 | # production 29 | /build 30 | 31 | # misc 32 | .DS_Store 33 | .env.local 34 | .env.development.local 35 | .env.test.local 36 | .env.production.local 37 | 38 | npm-debug.log* 39 | yarn-debug.log* 40 | yarn-error.log* 41 | -------------------------------------------------------------------------------- /services/app/Makefile: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | 19 | include ../../Makefile.in 20 | 21 | .PHONY: build 22 | build: 23 | 24 | .PHONY: docker docker.build docker.push 25 | 26 | docker: docker.build 27 | 28 | docker.build: 29 | @$(MAKE) -C server docker.build 30 | @$(MAKE) -C frontend docker.build 31 | 32 | docker.push: docker.build 33 | @$(MAKE) -C server docker.push 34 | @$(MAKE) -C frontend docker.push -------------------------------------------------------------------------------- /services/app/frontend/.dockerignore: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | **/node_modules/** 19 | **/build/** 20 | **/*agentless* 21 | -------------------------------------------------------------------------------- /services/app/frontend/.eslintrc.json: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | * 19 | */ 20 | {} 21 | -------------------------------------------------------------------------------- /services/app/frontend/.gitignore: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | 19 | # dependencies 20 | /node_modules 21 | /.pnp 22 | .pnp.js 23 | 24 | # testing 25 | /coverage 26 | 27 | # production 28 | /build 29 | 30 | # misc 31 | .DS_Store 32 | .env.local 33 | .env.development.local 34 | .env.test.local 35 | .env.production.local 36 | 37 | npm-debug.log* 38 | yarn-debug.log* 39 | yarn-error.log* 40 | -------------------------------------------------------------------------------- /services/app/frontend/Dockerfile: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | 19 | FROM node:22 AS build 20 | 21 | ARG SW_AGENT_NODEJS_FRONTEND_VERSION 22 | 23 | WORKDIR /skywalking-client-js 24 | 25 | RUN git clone --recurse-submodules https://github.com/apache/skywalking-client-js.git . ; \ 26 | git reset --hard ${SW_AGENT_NODEJS_FRONTEND_VERSION} ; \ 27 | git submodule update ; \ 28 | git submodule sync ; \ 29 | npm install ; \ 30 | npm run build 31 | 32 | WORKDIR /app 33 | 34 | COPY . . 35 | 36 | RUN npm install /skywalking-client-js && \ 37 | npm install && \ 38 | npm run build 39 | 40 | FROM apache/apisix:2.15.0-debian 41 | 42 | ENV SW_AGENT_SERVICE=agent::frontend 43 | ENV SW_AGENT_SERVICE_INSTANCE=agent::frontend-instance 44 | 45 | COPY --from=build /app/build /app/build 46 | -------------------------------------------------------------------------------- /services/app/frontend/Dockerfile.agentless: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | FROM node:22 AS build 19 | 20 | WORKDIR /app 21 | 22 | COPY . . 23 | 24 | RUN mv src/index.agentless.js src/index.js 25 | 26 | RUN npm install && \ 27 | npm run build 28 | 29 | FROM apache/apisix:2.15.0-debian 30 | 31 | ENV SW_AGENT_SERVICE=frontend 32 | ENV SW_AGENT_SERVICE_INSTANCE=frontend-instance 33 | 34 | COPY --from=build /app/build /app/build 35 | -------------------------------------------------------------------------------- /services/app/frontend/Dockerfile.agentless.dockerignore: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | **/node_modules/** 19 | **/build/** 20 | **/apisix-config/** 21 | 22 | index.js # ignore agent files to fail the build in case we have bugs 23 | -------------------------------------------------------------------------------- /services/app/frontend/Makefile: -------------------------------------------------------------------------------- 1 | # Licensed to the Apache Software Foundation (ASF) under one 2 | # or more contributor license agreements. See the NOTICE file 3 | # distributed with this work for additional information 4 | # regarding copyright ownership. The ASF licenses this file 5 | # to you under the Apache License, Version 2.0 (the 6 | # "License"); you may not use this file except in compliance 7 | # with the License. You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | 19 | include ../../../Makefile.in 20 | 21 | .PHONY: build 22 | build: 23 | 24 | .PHONY: docker docker.build docker.push 25 | 26 | docker: docker.build 27 | 28 | docker.build: 29 | docker build \ 30 | --build-arg SW_AGENT_NODEJS_FRONTEND_VERSION=${SW_AGENT_NODEJS_FRONTEND_VERSION} \ 31 | . -t $(HUB)/frontend:$(TAG) 32 | docker build \ 33 | . -t $(HUB)/frontend:$(TAG)-agentless -f Dockerfile.agentless 34 | 35 | docker.push: docker.build 36 | docker push $(HUB)/frontend:$(TAG) 37 | docker push $(HUB)/frontend:$(TAG)-agentless 38 | -------------------------------------------------------------------------------- /services/app/frontend/index.html: -------------------------------------------------------------------------------- 1 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | SkyWalking Showcase App 27 | 28 | 29 | 30 |
31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /services/app/frontend/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ui", 3 | "version": "0.1.0", 4 | "private": true, 5 | "dependencies": { 6 | "react": "^19.0.0", 7 | "react-dom": "^19.0.0", 8 | "skywalking-client-js": "^0.12.0" 9 | }, 10 | "scripts": { 11 | "start": "vite", 12 | "build": "npm install && npm install skywalking-client-js && vite build", 13 | "serve": "vite preview" 14 | }, 15 | "eslintConfig": { 16 | "extends": [ 17 | "react-app" 18 | ] 19 | }, 20 | "browserslist": { 21 | "production": [ 22 | ">0.2%", 23 | "not dead", 24 | "not op_mini all" 25 | ], 26 | "development": [ 27 | "last 1 chrome version", 28 | "last 1 firefox version", 29 | "last 1 safari version" 30 | ] 31 | }, 32 | "devDependencies": { 33 | "@vitejs/plugin-react": "^4.3.4", 34 | "vite": "^6.1.0" 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /services/app/frontend/src/.eslintrc.json: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | * 19 | */ 20 | {} -------------------------------------------------------------------------------- /services/app/frontend/src/App.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | * 19 | */ 20 | .App { 21 | text-align: center; 22 | margin: 10px 0; 23 | min-height: 100vh; 24 | display: flex; 25 | flex-direction: column; 26 | align-items: center; 27 | justify-content: center; 28 | 29 | 30 | } 31 | body { 32 | background-color: #282c34; 33 | color: white; 34 | } 35 | -------------------------------------------------------------------------------- /services/app/frontend/src/App.jsx: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | * 19 | */ 20 | import React from 'react'; 21 | import './App.css'; 22 | import Recipe from './components/Recipe'; 23 | import FancyText from './components/FancyText'; 24 | import InspirationGenerator from './components/InspirationGenerator'; 25 | import Copyright from './components/Copyright'; 26 | import List from './components/List'; 27 | import Form from './components/Form'; 28 | 29 | function App() { 30 | const [data, setData] = React.useState(null); 31 | 32 | React.useEffect(() => { 33 | fetch("/homepage") 34 | .then((res) => res.json()) 35 | .then((data) => setData(JSON.stringify(data))); 36 | // mock app server error 37 | const xhr = new XMLHttpRequest(); 38 | xhr.open('post', '/test'); 39 | xhr.send(); 40 | // mock apisix error 41 | const apisix = new XMLHttpRequest(); 42 | apisix.open('post', '/test-apisix-404'); 43 | apisix.send(); 44 | }, []); 45 | 46 | return ( 47 |
48 |

{!data ? "Loading..." : data}

49 |

For a gathering

50 | 51 | <> 52 | 53 | 54 | 55 | 56 | 57 | 58 |
59 |
60 | ); 61 | } 62 | 63 | export default App; 64 | -------------------------------------------------------------------------------- /services/app/frontend/src/components/Copyright.jsx: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | * 19 | */ 20 | export default function Copyright({year}) { 21 | return

©️ {year}

; 22 | } -------------------------------------------------------------------------------- /services/app/frontend/src/components/FancyText.jsx: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | * 19 | */ 20 | export default function FancyText({title, text}) { 21 | return title 22 | ?

{text}

23 | :

{text}

24 | } -------------------------------------------------------------------------------- /services/app/frontend/src/components/Form.jsx: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | * Licensed to the Apache Software Foundation (ASF) under one 4 | * or more contributor license agreements. See the NOTICE file 5 | * distributed with this work for additional information 6 | * regarding copyright ownership. The ASF licenses this file 7 | * to you under the Apache License, Version 2.0 (the 8 | * "License"); you may not use this file except in compliance 9 | * with the License. You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, 14 | * software distributed under the License is distributed on an 15 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 | * KIND, either express or implied. See the License for the 17 | * specific language governing permissions and limitations 18 | * under the License. 19 | * 20 | */ 21 | import { useState } from 'react'; 22 | 23 | export default function Form() { 24 | const [isSent, setIsSent] = useState(false); 25 | const [message, setMessage] = useState('Hi!'); 26 | if (isSent) { 27 | return

Your message is on its way!

28 | } 29 | return ( 30 | { 31 | e.preventDefault(); 32 | setIsSent(true); 33 | sendMessage(message); 34 | }}> 35 |