diff --git a/6/6.5/base/Dockerfile b/6/6.5/base/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..3c40a840390500e71051e486c847da366c08af66 --- /dev/null +++ b/6/6.5/base/Dockerfile @@ -0,0 +1,97 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +FROM openjdk:8-jre-alpine AS build + +LABEL maintainer="hanahmily@apache.org" + +# Install required packages +RUN apk add --no-cache \ + bash \ + python \ + su-exec + + +ENV SKYWALKING_HOME=/skywalking +RUN mkdir -p "${SKYWALKING_HOME}" +WORKDIR $SKYWALKING_HOME + +ENV GPG_KEYS A968F6905E0ACB59E5B24C15D3D9CD50820184C2 B0801BC746F965029A1338072EF5026E70A55777 D360AB2AB20B28403270E2CBE8608938DB25E06B +ENV SKYWALKING_VERSION=6.5.0 +ENV SKYWALKING_SHA512 4f1e8ad00cd0e4799093770bbfbe0352e83b935d74a4874ada1887f5030c35ffddcd0a80f7415954865aa3dcef791f59afb0ed57f480ee050039a2d1c8fa9311 + +ENV SKYWALKING_TGZ_URLS \ + https://www.apache.org/dyn/closer.cgi?action=download&filename=skywalking/$SKYWALKING_VERSION/apache-skywalking-apm-$SKYWALKING_VERSION.tar.gz \ + # if the version is outdated, we might have to pull from the dist/archive :/ + https://www-us.apache.org/dist/skywalking/$SKYWALKING_VERSION/apache-skywalking-apm-$SKYWALKING_VERSION.tar.gz \ + https://www.apache.org/dist/skywalking/$SKYWALKING_VERSION/apache-skywalking-apm-$SKYWALKING_VERSION.tar.gz \ + https://archive.apache.org/dist/skywalking/$SKYWALKING_VERSION/apache-skywalking-apm-$SKYWALKING_VERSION.tar.gz + +ENV SKYWALKING_ASC_URLS \ + https://www.apache.org/dyn/closer.cgi?action=download&filename=skywalking/$SKYWALKING_VERSION/apache-skywalking-apm-$SKYWALKING_VERSION.tar.gz.asc \ + # if the version is outdated, we might have to pull from the dist/archive :/ + https://www-us.apache.org/dist/skywalking/$SKYWALKING_VERSION/apache-skywalking-apm-$SKYWALKING_VERSION.tar.gz.asc \ + https://www.apache.org/dist/skywalking/$SKYWALKING_VERSION/apache-skywalking-apm-$SKYWALKING_VERSION.tar.gz.asc \ + https://archive.apache.org/dist/skywalking/$SKYWALKING_VERSION/apache-skywalking-apm-$SKYWALKING_VERSION.tar.gz.asc + +RUN set -eux; \ + \ + apk add --no-cache --virtual .fetch-deps \ + gnupg \ + \ + ca-certificates \ + openssl \ + ; \ + \ + export GNUPGHOME="$(mktemp -d)"; \ + for key in $GPG_KEYS; do \ + gpg --batch --keyserver pgp.surfnet.nl --recv-keys "$key"; \ + done; \ + \ + success=; \ + for url in $SKYWALKING_TGZ_URLS; do \ + if wget -O skywalking.tar.gz "$url"; then \ + success=1; \ + break; \ + fi; \ + done; \ + [ -n "$success" ]; \ + \ + echo "$SKYWALKING_SHA512 *skywalking.tar.gz" | sha512sum -c -; \ + \ + success=; \ + for url in $SKYWALKING_ASC_URLS; do \ + if wget -O skywalking.tar.gz.asc "$url"; then \ + success=1; \ + break; \ + fi; \ + done; \ + [ -n "$success" ]; \ + \ + gpg --batch --verify skywalking.tar.gz.asc skywalking.tar.gz; \ + tar -xvf skywalking.tar.gz --strip-components=1; \ + rm -rf bin/; \ + rm skywalking.tar.gz*; \ + command -v gpgconf && gpgconf --kill all || :; \ + rm -rf "$GNUPGHOME"; \ + apk del .fetch-deps + +FROM openjdk:8-jre-alpine + +COPY --from=build /skywalking /skywalking + +RUN apk add --no-cache \ + bash \ No newline at end of file diff --git a/6/6.5/compose/docker-compose.yml b/6/6.5/compose/docker-compose.yml new file mode 100644 index 0000000000000000000000000000000000000000..84bd3d517c0a36022781490e3f2713b53911719f --- /dev/null +++ b/6/6.5/compose/docker-compose.yml @@ -0,0 +1,59 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +version: '3.3' +services: + elasticsearch: + image: docker.elastic.co/elasticsearch/elasticsearch:6.8.1 + container_name: elasticsearch + restart: always + ports: + - 9200:9200 + - 9300:9300 + environment: + - discovery.type=single-node + - bootstrap.memory_lock=true + - "ES_JAVA_OPTS=-Xms512m -Xmx512m" + ulimits: + memlock: + soft: -1 + hard: -1 + oap: + image: apache/skywalking-oap-server:6.5.0 + container_name: oap + depends_on: + - elasticsearch + links: + - elasticsearch + restart: always + ports: + - 11800:11800 + - 12800:12800 + environment: + SW_STORAGE: elasticsearch + SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200 + ui: + image: apache/skywalking-ui:6.5.0 + container_name: ui + depends_on: + - oap + links: + - oap + restart: always + ports: + - 8080:8080 + environment: + SW_OAP_ADDRESS: oap:12800 diff --git a/6/6.5/oap/Dockerfile b/6/6.5/oap/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..c36b38e007ac8b28680a2ec742b86441d65275d9 --- /dev/null +++ b/6/6.5/oap/Dockerfile @@ -0,0 +1,43 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +FROM apache/skywalking-base:6.5.0 AS build + +WORKDIR skywalking + +RUN set -eux; \ + rm -rf "config/log4j2.xml"; \ + rm -rf "webapp"; rm -rf "agent"; + +COPY log4j2.xml config/ +COPY docker-entrypoint.sh . + +FROM openjdk:8-jre-alpine + +ENV JAVA_OPTS=" -Xms256M " + +LABEL maintainer="hanahmily@apache.org" + +COPY --from=build /skywalking /skywalking + +WORKDIR skywalking + +RUN apk add --no-cache \ + bash + +EXPOSE 12800 11800 1234 + +ENTRYPOINT ["bash", "docker-entrypoint.sh"] \ No newline at end of file diff --git a/6/6.5/oap/README.md b/6/6.5/oap/README.md new file mode 100644 index 0000000000000000000000000000000000000000..c7ce21f9b0900af20e286a075ccff58f9fca4a45 --- /dev/null +++ b/6/6.5/oap/README.md @@ -0,0 +1,73 @@ +# Apache SkyWalking OAP Server Docker Files + +Sky Walking logo + +**SkyWalking**: an APM(application performance monitor) system, especially designed for +microservices, cloud native and container-based (Docker, Kubernetes, Mesos) architectures. + +# How to use this image + +## Start a `standlone` container with `H2` storage + +``` +$ docker run --name oap --restart always -d apache/skywalking-oap-server:6.5.0 +``` + +## Start a `standlone` container with `elasticsearch` storage whose address is `elasticsearch:9200` + +``` +$ docker run --name oap --restart always -d -e SW_STORAGE=elasticsearch -e SW_STORAGE_ES_CLUSTER_NODES=elasticsearch:9200 apache/skywalking-oap-server:6.5.0 +``` + +# Configuration + +We could set up environment variables to configure this image. Most of them are defined in [backend-setup](https://github.com/apache/skywalking/blob/v6.5.0/docs/en/setup/backend/backend-setup.md), but Apache SkyWalking Docker Image adds extra environment variables to help the user to compose it properly. The details are located in [docker-entrypoint.sh](docker-entrypoint.sh) + +## SW_ENVOY_ALS_ENABLED +No default value, set it to `true` to open ALS solution of SkyWalking. + +## SW_CLUSTER +Default value is `standalone`, avaliable values are: + + - `standlone`, If set this value, all enviroment variables of `cluster.standlone` in `application.yml` are avaliable. + - `zookeeper`, If set this value, all enviroment variables of `cluster.zookeeper` in `application.yml` are avaliable. + - `kubernetes`, If set this value, all enviroment variables of `cluster.kubernetes` in `application.yml` are avaliable. + - `consul`, If set this value, all enviroment variables of `cluster.consul` in `application.yml` are avaliable. + - `etcd`, If set this value, all enviroment variables of `cluster.etcd` in `application.yml` are avaliable. + - `nacos`, If set this value, all enviroment variables of `cluster.nacos` in `application.yml` are avaliable. + +## SW_STORAGE +Default value is `h2`, avaliable values are: + + - `h2`, If set this value, all enviroment variables of `storage.h2` in `application.yml` are avaliable. + - `elasticsearch`, If set this value, all enviroment variables of `stroage.elasticsearch` in `application.yml` are avaliable. + - `mysql`, If set this value, all enviroment variables of `stroage.mysql` in `application.yml` are avaliable. + + ## SW_CONFIGURATION +Default value is `none`, avaliable values are: + + - `apollo`, If set this value, all enviroment variables of `configuration.apollo` in `application.yml` are avaliable. + - `nacos`, If set this value, all enviroment variables of `configuration.nacos` in `application.yml` are avaliable. + - `zookeeper`, If set this value, all enviroment variables of `configuration.zookeeper` in `application.yml` are avaliable. + +## SW_TELEMETRY +Default value is `none`, avaliable values are: + + - `none`, If set this value, all enviroment variables of `telemetry.none` in `application.yml` are avaliable. + - `prometheus`, If set this value, all enviroment variables of `configuration.prometheus` in `application.yml` are avaliable. + - `so11y`, If set this value, all enviroment variables of `configuration.so11y` in `application.yml` are avaliable. + +## XXX_ENABLED + +There are also some other configuration switchers to extend default configuration, they also have a suffix `_ENABLED`. + + - `SW_RECEIVER_ZIPKIN_ENABLED` turns on/off zipkin receiver + - `SW_RECEIVER_JAEGER_ENABLED` turns on/off jaeger receiver + - `SW_EXPORTER_ENABLED` turns on/off exporter + +## SW_L0AD_CONFIG_FILE_FROM_VOLUME + +If you want to adopt a dedicated application.yaml instead of the one generated by docker-entrypoint.sh. This should be set to `true`. + +# License +[Apache 2.0 License.](/LICENSE) diff --git a/6/6.5/oap/docker-entrypoint.sh b/6/6.5/oap/docker-entrypoint.sh new file mode 100644 index 0000000000000000000000000000000000000000..4fdac116fcf5490ebc37d96fa1feecf99a80ceba --- /dev/null +++ b/6/6.5/oap/docker-entrypoint.sh @@ -0,0 +1,421 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +#!/bin/bash + +set -e + +var_application_file="config/application.yml" + +generateClusterStandalone() { + echo "cluster:" >> ${var_application_file} + echo " standalone:" >> ${var_application_file} +} + +generateClusterZookeeper() { + cat <> ${var_application_file} +cluster: + zookeeper: + nameSpace: \${SW_NAMESPACE:""} + hostPort: \${SW_CLUSTER_ZK_HOST_PORT:zookeeper:2181} + #Retry Policy + baseSleepTimeMs: \${SW_CLUSTER_ZK_SLEEP_TIME:1000} # initial amount of time to wait between retries + maxRetries: \${SW_CLUSTER_ZK_MAX_RETRIES:3} # max number of times to retry + # Enable ACL + enableACL: \${SW_ZK_ENABLE_ACL:false} # disable ACL in default + schema: \${SW_ZK_SCHEMA:digest} # only support digest schema + expression: \${SW_ZK_EXPRESSION:skywalking:skywalking} +EOT +} + +generateClusterK8s() { + cat <> ${var_application_file} +cluster: + kubernetes: + watchTimeoutSeconds: \${SW_CLUSTER_K8S_WATCH_TIMEOUT:60} + namespace: \${SW_CLUSTER_K8S_NAMESPACE:default} + labelSelector: \${SW_CLUSTER_K8S_LABEL:app=collector,release=skywalking} + uidEnvName: \${SW_CLUSTER_K8S_UID:SKYWALKING_COLLECTOR_UID} +EOT +} + +generateClusterConsul() { + cat <> ${var_application_file} +cluster: + consul: + serviceName: \${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"} + # Consul cluster nodes, example: 10.0.0.1:8500,10.0.0.2:8500,10.0.0.3:8500 + hostPort: \${SW_CLUSTER_CONSUL_HOST_PORT:consul:8500} +EOT +} + +generateClusterEtcd() { + cat <> ${var_application_file} +cluster: + etcd: + serviceName: \${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"} + # Etcd cluster nodes, example: 10.0.0.1:2379,10.0.0.2:2379,10.0.0.3:2379 + hostPort: \${SW_CLUSTER_ETCD_HOST_PORT:etcd:2379} +EOT +} + +generateClusterNacos() { + cat <> ${var_application_file} +cluster: + nacos: + serviceName: \${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"} + hostPort: \${SW_CLUSTER_NACOS_HOST_PORT:nacos:8848} +EOT +} + +generateStorageElastisearch() { +if [[ "$SW_RECEIVER_ZIPKIN_ENABLED" = "true" ]]; then + cat <> ${var_application_file} +storage: + zipkin-elasticsearch: +EOT +elif [[ "$SW_RECEIVER_JAEGER_ENABLED" = "true" ]]; then + cat <> ${var_application_file} +storage: + jaeger-elasticsearch: +EOT +else + cat <> ${var_application_file} +storage: + elasticsearch: +EOT +fi +cat <> ${var_application_file} + nameSpace: \${SW_NAMESPACE:""} + clusterNodes: \${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200} + protocol: \${SW_STORAGE_ES_HTTP_PROTOCOL:"http"} + user: \${SW_ES_USER:""} + password: \${SW_ES_PASSWORD:""} + indexShardsNumber: \${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:2} + indexReplicasNumber: \${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:0} + # Those data TTL settings will override the same settings in core module. + recordDataTTL: \${SW_STORAGE_ES_RECORD_DATA_TTL:7} # Unit is day + otherMetricsDataTTL: \${SW_STORAGE_ES_OTHER_METRIC_DATA_TTL:45} # Unit is day + monthMetricsDataTTL: \${SW_STORAGE_ES_MONTH_METRIC_DATA_TTL:18} # Unit is month + # Batch process setting, refer to https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.5/java-docs-bulk-processor.html + bulkActions: \${SW_STORAGE_ES_BULK_ACTIONS:2000} # Execute the bulk every 2000 requests + bulkSize: \${SW_STORAGE_ES_BULK_SIZE:20} # flush the bulk every 20mb + flushInterval: \${SW_STORAGE_ES_FLUSH_INTERVAL:10} # flush the bulk every 10 seconds whatever the number of requests + concurrentRequests: \${SW_STORAGE_ES_CONCURRENT_REQUESTS:2} # the number of concurrent requests + resultWindowMaxSize: \${SW_STORAGE_ES_QUERY_MAX_WINDOW_SIZE:10000} + metadataQueryMaxSize: \${SW_STORAGE_ES_QUERY_MAX_SIZE:5000} + segmentQueryMaxSize: \${SW_STORAGE_ES_QUERY_SEGMENT_SIZE:200} +EOT +} + +generateStorageH2() { + cat <> ${var_application_file} +storage: + h2: + driver: \${SW_STORAGE_H2_DRIVER:org.h2.jdbcx.JdbcDataSource} + url: \${SW_STORAGE_H2_URL:jdbc:h2:mem:skywalking-oap-db} + user: \${SW_STORAGE_H2_USER:sa} + metadataQueryMaxSize: \${SW_STORAGE_H2_QUERY_MAX_SIZE:5000} +EOT +} + +generateStorageMySQL() { + cat <> ${var_application_file} +storage: + mysql: + metadataQueryMaxSize: \${SW_STORAGE_H2_QUERY_MAX_SIZE:5000} +EOT +} + +generateConfigurationNone() { + cat <> ${var_application_file} +configuration: + none: +EOT +} + +generateConfigurationApollo() { + cat <> ${var_application_file} +configuration: + apollo: + apolloMeta: \${SW_CONFIGURATION_APOLLO_META:http://apollo:8080} + apolloCluster: \${SW_CONFIGURATION_APOLLO_CLUSTER:default} + apolloEnv: \${SW_CONFIGURATION_APOLLO_ENV:""} + appId: \${SW_CONFIGURATION_APOLLO_APP_ID:skywalking} + period: \${SW_CONFIGURATION_APOLLO_PERIOD:5} +EOT +} + +generateConfigurationNacos() { + cat <> ${var_application_file} +configuration: + nacos: + # Nacos Server Host + serverAddr: \${SW_CONFIGURATION_NACO_SERVER_ADDR:naco} + # Nacos Server Port + port: \${SW_CONFIGURATION_NACO_PORT:8848} + # Nacos Configuration Group + group: \${SW_CONFIGURATION_NACO_GROUP:skywalking} + # Unit seconds, sync period. Default fetch every 60 seconds. + period : \${SW_CONFIGURATION_NACO_PERIOD:5} + # the name of current cluster, set the name if you want to upstream system known. + clusterName: \${SW_CONFIGURATION_NACO_CLUSTER_NAME:default} +EOT +} + +generateConfigurationZookeeper() { + cat <> ${var_application_file} +configuration: + zookeeper: + period: \${SW_CONFIGURATION_ZOOKEEPER_PERIOD:60} # Unit seconds, sync period. Default fetch every 60 seconds. + nameSpace: \${SW_CONFIGURATION_ZOOKEEPER_NAMESPACE:/default} + hostPort: \${SW_CONFIGURATION_ZOOKEEPER_HOST_PATH:localhost:2181} + #Retry Policy + baseSleepTimeMs: \${SW_CONFIGURATION_ZOOKEEPER_BASE_SLEEP_TIME_MS:1000} # initial amount of time to wait between retries + maxRetries: \${SW_CONFIGURATION_ZOOKEEPER_MAX_RETRIES:3}3 # max number of times to retry +EOT +} + +generateTelemetryNone() { + cat <> ${var_application_file} +telemetry: + none: +EOT +} + +generateTelemetryPrometheus() { + cat <> ${var_application_file} +telemetry: + prometheus: + host: \${SW_TELEMETRY_PROMETHEUS_HOST:0.0.0.0} + port: \${SW_TELEMETRY_PROMETHEUS_PORT:1234} +EOT +} + +generateTelemetrySo11y() { + cat <> ${var_application_file} +telemetry: + so11y: + prometheusExporterEnabled: \${SW_TELEMETRY_SO11Y_PROMETHEUS_ENABLED:true} + prometheusExporterHost: \${SW_TELEMETRY_PROMETHEUS_HOST:0.0.0.0} + prometheusExporterPort: \${SW_TELEMETRY_PROMETHEUS_PORT:1234} +EOT +} + +validateVariables() { + name=$1; value=$2; list=$3 + valid=false + for c in ${list} ; do + if [[ "$c" = "$value" ]]; then + valid=true + fi + done + + if ! ${valid}; then + echo "Error: $name=$value please specify $name = $list" + exit 1 + fi +} + +generateApplicationYaml() { + # validate + [[ -z "$SW_CLUSTER" ]] && [[ -z "$SW_STORAGE" ]] && [[ -z "$SW_CONFIGURATION" ]] \ + && [[ -z "$SW_TELEMETRY" ]] \ + && { echo "Error: please specify \"SW_CLUSTER\" \"SW_STORAGE\" \"SW_CONFIGURATION\" \"SW_TELEMETRY\""; exit 1; } + + validateVariables "SW_CLUSTER" "$SW_CLUSTER" "standalone zookeeper kubernetes consul etcd nacos" + + validateVariables "SW_STORAGE" "$SW_STORAGE" "elasticsearch h2 mysql" + + validateVariables "SW_CONFIGURATION" "$SW_CONFIGURATION" "none apollo nacos zookeeper" + + validateVariables "SW_TELEMETRY" "$SW_TELEMETRY" "none prometheus so11y" + + echo "# Generated by 'docker-entrypoint.sh'" > ${var_application_file} + #generate cluster + case ${SW_CLUSTER} in + standalone) generateClusterStandalone;; + zookeeper) generateClusterZookeeper;; + kubernetes) generateClusterK8s;; + consul) generateClusterConsul;; + etcd) generateClusterEtcd;; + nacos) generateClusterNacos;; + esac + + #generate core + cat <> ${var_application_file} +core: + default: + # Mixed: Receive agent data, Level 1 aggregate, Level 2 aggregate + # Receiver: Receive agent data, Level 1 aggregate + # Aggregator: Level 2 aggregate + role: \${SW_CORE_ROLE:Mixed} # Mixed/Receiver/Aggregator + restHost: \${SW_CORE_REST_HOST:0.0.0.0} + restPort: \${SW_CORE_REST_PORT:12800} + restContextPath: \${SW_CORE_REST_CONTEXT_PATH:/} + gRPCHost: \${SW_CORE_GRPC_HOST:0.0.0.0} + gRPCPort: \${SW_CORE_GRPC_PORT:11800} + downsampling: + - Hour + - Day + - Month + # Set a timeout on metrics data. After the timeout has expired, the metrics data will automatically be deleted. + enableDataKeeperExecutor: \${SW_CORE_ENABLE_DATA_KEEPER_EXECUTOR:true} # Turn it off then automatically metrics data delete will be close. + dataKeeperExecutePeriod: \${SW_CORE_DATA_KEEPER_EXECUTE_PERIOD:5} # How often the data keeper executor runs periodically, unit is minute + recordDataTTL: \${SW_CORE_RECORD_DATA_TTL:90} # Unit is minute + minuteMetricsDataTTL: \${SW_CORE_MINUTE_METRIC_DATA_TTL:90} # Unit is minute + hourMetricsDataTTL: \${SW_CORE_HOUR_METRIC_DATA_TTL:36} # Unit is hour + dayMetricsDataTTL: \${SW_CORE_DAY_METRIC_DATA_TTL:45} # Unit is day + monthMetricsDataTTL: \${SW_CORE_MONTH_METRIC_DATA_TTL:18} # Unit is month + # Cache metric data for 1 minute to reduce database queries, and if the OAP cluster changes within that minute, + # the metrics may not be accurate within that minute. + enableDatabaseSession: \${SW_CORE_ENABLE_DATABASE_SESSION:true} +EOT + + # generate storage + case ${SW_STORAGE} in + elasticsearch) generateStorageElastisearch;; + h2) generateStorageH2;; + mysql) generateStorageMySQL;; + esac + + cat <> ${var_application_file} +receiver-sharing-server: + default: + restHost: \${SW_RECEIVER_SHARING_REST_HOST:0.0.0.O} + restPort: \${SW_RECEIVER_SHARING_REST_PORT:0} + restContextPath: \${SW_RECEIVER_SHARING_REST_CONTEXT_PATH:/} + gRPCHost: \${SW_RECEIVER_SHARING_GRPC_HOST:0.0.0.O} + gRPCPort: \${SW_RECEIVER_SHARING_GRPC_PORT:0} + maxConcurrentCallsPerConnection: \${SW_RECEIVER_SHARING_MAX_CONCURRENT_CALL:0} + maxMessageSize: \${SW_RECEIVER_SHARING_MAX_MESSAGE_SIZE:0} + gRPCThreadPoolSize: \${SW_RECEIVER_SHARING_GRPC_THREAD_POOL_SIZE:0} + gRPCThreadPoolQueueSize: \${SW_RECEIVER_SHARING_GRPC_THREAD_POOL_QUEUE_SIZE:0} +receiver-register: + default: +receiver-trace: + default: + bufferPath: \${SW_RECEIVER_BUFFER_PATH:../trace-buffer/} # Path to trace buffer files, suggest to use absolute path + bufferOffsetMaxFileSize: \${SW_RECEIVER_BUFFER_OFFSET_MAX_FILE_SIZE:100} # Unit is MB + bufferDataMaxFileSize: \${SW_RECEIVER_BUFFER_DATA_MAX_FILE_SIZE:500} # Unit is MB + bufferFileCleanWhenRestart: \${SW_RECEIVER_BUFFER_FILE_CLEAN_WHEN_RESTART:false} + sampleRate: \${SW_TRACE_SAMPLE_RATE:10000} # The sample rate precision is 1/10000. 10000 means 100% sample in default. + slowDBAccessThreshold: \${SW_SLOW_DB_THRESHOLD:default:200,mongodb:100} # The slow database access thresholds. Unit ms. +receiver-jvm: + default: +receiver-clr: + default: +receiver-so11y: + default: +service-mesh: + default: + bufferPath: \${SW_SERVICE_MESH_BUFFER_PATH:../mesh-buffer/} # Path to trace buffer files, suggest to use absolute path + bufferOffsetMaxFileSize: \${SW_SERVICE_MESH_OFFSET_MAX_FILE_SIZE:100} # Unit is MB + bufferDataMaxFileSize: \${SW_SERVICE_MESH_BUFFER_DATA_MAX_FILE_SIZE:500} # Unit is MB + bufferFileCleanWhenRestart: \${SW_SERVICE_MESH_BUFFER_FILE_CLEAN_WHEN_RESTART:false} +istio-telemetry: + default: +query: + graphql: + path: \${SW_QUERY_GRAPHQL_PATH:/graphql} +alarm: + default: +EOT + # generate telemetry + case ${SW_TELEMETRY} in + none) generateTelemetryNone;; + prometheus) generateTelemetryPrometheus;; + so11y) generateTelemetrySo11y;; + esac + + # generate configuration + case ${SW_CONFIGURATION} in + none) generateConfigurationNone;; + apollo) generateConfigurationApollo;; + nacos) generateConfigurationNacos;; + zookeeper) generateConfigurationZookeeper;; + esac + + cat <> ${var_application_file} +envoy-metric: + default: +EOT + if [[ "$SW_ENVOY_ALS_ENABLED" = "true" ]]; then + cat <> ${var_application_file} + alsHTTPAnalysis: \${SW_ENVOY_METRIC_ALS_HTTP_ANALYSIS:k8s-mesh} +EOT + fi + + if [[ "$SW_RECEIVER_ZIPKIN_ENABLED" = "true" ]]; then + cat <> ${var_application_file} +receiver_zipkin: + default: + host: \${SW_RECEIVER_ZIPKIN_HOST:0.0.0.0} + port: \${SW_RECEIVER_ZIPKIN_PORT:9411} + contextPath: \${SW_RECEIVER_ZIPKIN_CONTEXT_PATH:/} +EOT + fi + + if [[ "$SW_RECEIVER_JAEGER_ENABLED" = "true" ]]; then + cat <> ${var_application_file} +receiver_jaeger: + default: + gRPCHost: \${SW_RECEIVER_JAEGER_HOST:0.0.0.0} + gRPCPort: \${SW_RECEIVER_JAEGER_PORT:14250} +EOT + fi + + if [[ "$SW_TELEMETRY" = "so11y" ]]; then + cat <> ${var_application_file} +receiver-so11y: + default: +EOT + fi + + if [[ "$SW_EXPORTER_ENABLED" = "true" ]]; then + cat <> ${var_application_file} +exporter: + grpc: + targetHost: \${SW_EXPORTER_GRPC_HOST:127.0.0.1} + targetPort: \${SW_EXPORTER_GRPC_PORT:9870} +EOT + fi +} + +echo "[Entrypoint] Apache SkyWalking Docker Image" + +SW_CLUSTER=${SW_CLUSTER:-standalone} +SW_STORAGE=${SW_STORAGE:-h2} +SW_CONFIGURATION=${SW_CONFIGURATION:-none} +SW_TELEMETRY=${SW_TELEMETRY:-none} + +if [[ -z "$SW_L0AD_CONFIG_FILE_FROM_VOLUME" ]] || [[ "$SW_L0AD_CONFIG_FILE_FROM_VOLUME" != "true" ]]; then + generateApplicationYaml + echo "Generated application.yml" + echo "-------------------------" + cat ${var_application_file} + echo "-------------------------" +fi + +CLASSPATH="config:$CLASSPATH" +for i in oap-libs/*.jar +do + CLASSPATH="$i:$CLASSPATH" +done + +set -ex +exec java -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap \ + ${JAVA_OPTS} -classpath ${CLASSPATH} org.apache.skywalking.oap.server.starter.OAPServerStartUp "$@" diff --git a/6/6.5/oap/log4j2.xml b/6/6.5/oap/log4j2.xml new file mode 100644 index 0000000000000000000000000000000000000000..89c81121eb842cc554470ae99acf38d2b7c48c85 --- /dev/null +++ b/6/6.5/oap/log4j2.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/6/6.5/ui/Dockerfile b/6/6.5/ui/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..2b350241ab1044b941dffe6e36207ebc52650d85 --- /dev/null +++ b/6/6.5/ui/Dockerfile @@ -0,0 +1,45 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +FROM apache/skywalking-base:6.5.0 AS build + +WORKDIR skywalking + +RUN set -eux; \ + rm -rf "config"; rm -rf "oap-libs"; \ + rm -rf "agent"; + +COPY docker-entrypoint.sh . +COPY logback.xml webapp/ + +FROM openjdk:8-jre-alpine + +ENV JAVA_OPTS=" -Xms256M " \ + SW_OAP_ADDRESS="oap:12800" \ + SW_TIMEOUT="20000" + +LABEL maintainer="hanahmily@apache.org" + +COPY --from=build /skywalking /skywalking + +WORKDIR skywalking + +RUN apk add --no-cache \ + bash + +EXPOSE 8080 + +ENTRYPOINT ["bash", "docker-entrypoint.sh"] \ No newline at end of file diff --git a/6/6.5/ui/README.md b/6/6.5/ui/README.md new file mode 100644 index 0000000000000000000000000000000000000000..17580fe7aed54b3204c9ba5a26db4b95cda36750 --- /dev/null +++ b/6/6.5/ui/README.md @@ -0,0 +1,38 @@ +# Apache SkyWalking UI docker file + +**Docker images are not official ASF releases but provided for convenience. Recommended usage is always to build the source** + +Sky Walking logo + +**SkyWalking**: an APM(application performance monitor) system, especially designed for +microservices, cloud native and container-based (Docker, Kubernetes, Mesos) architectures. + +[![GitHub stars](https://img.shields.io/github/stars/apache/incubator-skywalking.svg?style=for-the-badge&label=Stars&logo=github)](https://github.com/apache/incubator-skywalking) +[![Twitter Follow](https://img.shields.io/twitter/follow/asfskywalking.svg?style=for-the-badge&label=Follow&logo=twitter)](https://twitter.com/AsfSkyWalking) + +You could find docker file at [here](https://github.com/apache/incubator-skywalking-docker) + +This image would start up SkyWalking UI only. + +[SkyWalking K8s deployment scripts](https://github.com/apache/incubator-skywalking-kubernetes) use this image by default. + +# How to use this image + +## Start a container to connect oap server whose address is `oap:12800` + +``` +$ docker run --name oap --restart always -d -e SW_OAP_ADDRESS=oap:12800 apache/skywalking-ui:6.5.0 +``` + +# Configuration + +We could set up environment variables to configure this image. + +## SW_OAP_ADDRESS +The address of OAP server. Default value is `127.0.0.1:12800`. + +## SW_TIMEOUT +Reading timeout. Default value is `20000`(millisecond). + +# License +[Apache 2.0 License.](/LICENSE) \ No newline at end of file diff --git a/6/6.5/ui/docker-entrypoint.sh b/6/6.5/ui/docker-entrypoint.sh new file mode 100644 index 0000000000000000000000000000000000000000..6771e22f2c1fce642f540a5161f27e7bfb58f201 --- /dev/null +++ b/6/6.5/ui/docker-entrypoint.sh @@ -0,0 +1,26 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +#!/bin/bash + +set -e + +export LOGGING_CONFIG="webapp/logback.xml" + +[[ ! -z "$SW_OAP_ADDRESS" ]] && export COLLECTOR_RIBBON_LISTOFSERVERS=${SW_OAP_ADDRESS} && echo "COLLECTOR_RIBBON_LISTOFSERVERS=$COLLECTOR_RIBBON_LISTOFSERVERS" +[[ ! -z "$SW_TIMEOUT" ]] && export COLLECTOR_RIBBON_READTIMEOUT=${SW_TIMEOUT} && echo "COLLECTOR_RIBBON_READTIMEOUT=$COLLECTOR_RIBBON_READTIMEOUT" + +exec java -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -jar webapp/skywalking-webapp.jar "$@" diff --git a/6/6.5/ui/logback.xml b/6/6.5/ui/logback.xml new file mode 100644 index 0000000000000000000000000000000000000000..834036d7bf278b7c8b6015afa6bd02acc2d04d33 --- /dev/null +++ b/6/6.5/ui/logback.xml @@ -0,0 +1,21 @@ + + + + + \ No newline at end of file