diff --git a/docker/oap/docker-entrypoint.sh b/docker/oap/docker-entrypoint.sh index d242e6af5..931299a72 100755 --- a/docker/oap/docker-entrypoint.sh +++ b/docker/oap/docker-entrypoint.sh @@ -170,6 +170,32 @@ configuration: 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 @@ -188,7 +214,8 @@ validateVariables() { generateApplicationYaml() { # validate [[ -z "$SW_CLUSTER" ]] && [[ -z "$SW_STORAGE" ]] && [[ -z "$SW_CONFIGURATION" ]] \ - && { echo "Error: please specify \"SW_CLUSTER\" \"SW_STORAGE\" \"SW_CONFIGURATION\""; exit 1; } + && [[ -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" @@ -196,6 +223,8 @@ generateApplicationYaml() { 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 @@ -231,6 +260,9 @@ core: 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 @@ -272,12 +304,14 @@ query: path: \${SW_QUERY_GRAPHQL_PATH:/graphql} alarm: default: -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 + # generate telemetry + case ${SW_TELEMETRY} in + none) generateTelemetryNone;; + prometheus) generateTelemetryPrometheus;; + so11y) generateTelemetrySo11y;; + esac + # generate configuration case ${SW_CONFIGURATION} in none) generateConfigurationNone;; @@ -315,6 +349,13 @@ receiver_jaeger: 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: @@ -330,6 +371,7 @@ 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