未验证 提交 b3c7658a 编写于 作者: K kezhenxu94 提交者: GitHub

webapp: migrate from Spring Web to Armeria (#9592)

上级 1cfca3cc
......@@ -40,7 +40,7 @@ jobs:
with:
submodules: true
- name: Check license header
uses: apache/skywalking-eyes@985866ce7e324454f61e22eb2db2e998db09d6f3
uses: apache/skywalking-eyes@442d4621d10ae9e92a859d873e6e63664622a50d
code-style:
if: (github.event_name == 'schedule' && github.repository == 'apache/skywalking') || (github.event_name != 'schedule')
......@@ -77,7 +77,7 @@ jobs:
go-version: "1.16"
- name: Check Dependencies Licenses
run: |
go install github.com/apache/skywalking-eyes/cmd/license-eye@7a3e90b
go install github.com/apache/skywalking-eyes/cmd/license-eye@442d462
license-eye dependency resolve --summary ./dist-material/release-docs/LICENSE.tpl || exit 1
if [ ! -z "$(git diff -U0 ./dist-material/release-docs/LICENSE)" ]; then
echo "LICENSE file is not updated correctly"
......
......@@ -74,6 +74,7 @@ dependency:
- skywalking-ui/package.json
excludes:
- name: org.openjdk.jmh:jmh-core # We don't distribute the dependencies, they are just for the build process
recursive: true
- name: org.apache.skywalking:* # Exclude self dependencies
licenses:
- name: org.slf4j:slf4j-api
......
......@@ -19,7 +19,7 @@ in Cloud Native architecture.
The core features are following.
- Service, service instance, endpoint(URI) metrics analysis
- Root cause analysis.
- Root cause analysis.
- Profile the code on the runtime powered by in-process agent and ebpf profiler.
- Network profiler for TCP, TCP/TLS, HTTP(s) traffic
- Service topology map analysis
......@@ -41,7 +41,7 @@ and multiple formats,
including
1. Java, .NET Core, NodeJS, PHP, and Python auto-instrument agents.
2. Go, C++, and Rust SDKs.
3. [Agent profiling](https://skywalking.apache.org/docs/main/latest/en/concepts-and-designs/sdk-profiling/) for Java and Python.
3. [Agent profiling](https://skywalking.apache.org/docs/main/next/en/concepts-and-designs/sdk-profiling/) for Java and Python.
4. [ebpf](https://github.com/apache/skywalking-rover) network profling and ON/OFF CPU profiling.
5. LUA agent especially for Nginx, OpenResty and Apache APISIX.
6. Browser agent.
......@@ -50,7 +50,7 @@ including
9. Logs.
10. Zipkin v1/v2 trace.(No Analysis)
SkyWalking OAP is using the STAM(Streaming Topology Analysis Method) to analysis topology in the tracing based agent scenario
SkyWalking OAP is using the STAM(Streaming Topology Analysis Method) to analysis topology in the tracing based agent scenario
for better performance. Read [the paper of STAM](https://wu-sheng.github.io/STAM/) for more details.
# Documentation
......@@ -70,7 +70,7 @@ Please follow the [REPORTING GUIDELINES](https://www.apache.org/foundation/polic
# Live Demo
- Find the [live demo](https://skywalking.apache.org/#demo) and [screenshots](https://skywalking.apache.org/#arch) on our website.
- Follow the [showcase](https://skywalking.apache.org/docs/skywalking-showcase/latest/readme/) to set up preview deployment quickly.
- Follow the [showcase](https://skywalking.apache.org/docs/skywalking-showcase/next/readme/) to set up preview deployment quickly.
# Contact Us
* Mail list: **dev@skywalking.apache.org**. Mail to `dev-subscribe@skywalking.apache.org`, follow the reply to subscribe the mail list.
......
......@@ -125,7 +125,12 @@
<fileMode>0644</fileMode>
</file>
<file>
<source>${project.basedir}/../apm-webapp/src/main/assembly/webapp.yml</source>
<source>${project.basedir}/../apm-webapp/src/main/resources/application.yml</source>
<outputDirectory>webapp</outputDirectory>
<fileMode>0644</fileMode>
</file>
<file>
<source>${project.basedir}/../apm-webapp/src/main/assembly/log4j2.xml</source>
<outputDirectory>webapp</outputDirectory>
<fileMode>0644</fileMode>
</file>
......
......@@ -31,15 +31,7 @@
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.boot.version>2.6.6</spring.boot.version>
<gson.version>2.9.0</gson.version>
<apache-httpclient.version>4.5.13</apache-httpclient.version>
<spring-cloud-dependencies.version>2021.0.2</spring-cloud-dependencies.version>
<frontend-maven-plugin.version>1.12.1</frontend-maven-plugin.version>
<logback-classic.version>1.2.11</logback-classic.version>
<jackson-version>2.13.2.2</jackson-version>
<yaml.version>1.31</yaml.version>
<netty.version>4.1.77.Final</netty.version>
<ui.path>${project.parent.basedir}/skywalking-ui</ui.path>
</properties>
......@@ -47,16 +39,9 @@
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud-dependencies.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-bom</artifactId>
<version>${netty.version}</version>
<groupId>org.apache.skywalking</groupId>
<artifactId>oap-server-bom</artifactId>
<version>${project.version}</version>
<scope>import</scope>
<type>pom</type>
</dependency>
......@@ -65,69 +50,41 @@
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<version>${spring.boot.version}</version>
<groupId>com.linecorp.armeria</groupId>
<artifactId>armeria</artifactId>
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<groupId>com.aayushatharva.brotli4j</groupId>
<artifactId>native-linux-x86_64</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
<groupId>com.aayushatharva.brotli4j</groupId>
<artifactId>native-osx-x86_64</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- https://www.cvedetails.com/cve/CVE-2019-17267/ -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson-version}</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>${gson.version}</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>${apache-httpclient.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback-classic.version}</version>
</dependency>
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
<version>${yaml.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>${spring.boot.version}</version>
<scope>test</scope>
</dependency>
<!-- Add for JDK9+ -->
<dependency>
<groupId>com.sun.activation</groupId>
<artifactId>javax.activation</artifactId>
<version>1.2.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
......@@ -194,19 +151,40 @@
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring.boot.version}</version>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.4.2</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>org.apache.skywalking.oap.server.webapp.ApplicationStartUp</mainClass>
</manifest>
</archive>
<appendAssemblyId>false</appendAssemblyId>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>
repackage
</goal>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<excludes>
<exclude>application.yml</exclude>
<exclude>log4j2.xml</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ 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.
~
-->
<Configuration status="info">
<Properties>
<Property name="log-path">${sys:webapp.logDir}</Property>
</Properties>
<Appenders>
<RollingFile name="RollingFile" fileName="${log-path}/skywalking-webapp.log"
filePattern="${log-path}/skywalking-webapp-%d{yyyy-MM-dd}-%i.log">
<PatternLayout>
<pattern>%d - %c - %L [%t] %-5p %x - %m%n</pattern>
</PatternLayout>
<Policies>
<SizeBasedTriggeringPolicy size="102400KB"/>
</Policies>
<DefaultRolloverStrategy max="30"/>
</RollingFile>
</Appenders>
<Loggers>
<logger name="org.apache.zookeeper" level="INFO"/>
<logger name="io.grpc.netty" level="INFO"/>
<Root level="info">
<AppenderRef ref="RollingFile"/>
</Root>
</Loggers>
</Configuration>
# 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.
server:
port: 8080
spring:
cloud:
gateway:
routes:
- id: oap-route
uri: lb://oap-service
predicates:
- Path=/graphql/**
discovery:
client:
simple:
instances:
oap-service:
- uri: http://127.0.0.1:12800
# - uri: http://<oap-host-1>:<oap-port1>
# - uri: http://<oap-host-2>:<oap-port2>
mvc:
throw-exception-if-no-handler-found: true
web:
resources:
add-mappings: true
management:
server:
base-path: /manage
......@@ -18,12 +18,56 @@
package org.apache.skywalking.oap.server.webapp;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import static org.yaml.snakeyaml.env.EnvScalarConstructor.ENV_FORMAT;
import static org.yaml.snakeyaml.env.EnvScalarConstructor.ENV_TAG;
import java.util.Collections;
import org.yaml.snakeyaml.LoaderOptions;
import org.yaml.snakeyaml.TypeDescription;
import org.yaml.snakeyaml.Yaml;
import org.yaml.snakeyaml.env.EnvScalarConstructor;
import com.linecorp.armeria.common.SessionProtocol;
import com.linecorp.armeria.server.HttpService;
import com.linecorp.armeria.server.Server;
import com.linecorp.armeria.server.file.FileService;
import com.linecorp.armeria.server.file.HttpFile;
import com.linecorp.armeria.server.healthcheck.HealthCheckService;
@SpringBootApplication
public class ApplicationStartUp {
public static void main(String[] args) {
SpringApplication.run(ApplicationStartUp.class, args);
public static void main(String[] args) throws Exception {
final Yaml yaml = new Yaml(
new EnvScalarConstructor(
new TypeDescription(Configuration.class),
Collections.emptyList(),
new LoaderOptions()));
yaml.addImplicitResolver(ENV_TAG, ENV_FORMAT, "$");
final Configuration configuration = yaml.loadAs(
ApplicationStartUp.class.getResourceAsStream("/application.yml"),
Configuration.class);
final int port = configuration.port();
final String[] oapServices = configuration.oapServices();
final HttpService indexPage =
HttpFile
.of(ApplicationStartUp.class.getClassLoader(), "/public/index.html")
.asService();
Server
.builder()
.port(port, SessionProtocol.HTTP)
.service("/graphql", new OapProxyService(oapServices))
.service("/internal/l7check", HealthCheckService.of())
.serviceUnder("/",
FileService.of(
ApplicationStartUp.class.getClassLoader(),
"/public")
.orElse(indexPage))
.build()
.start()
.join();
}
}
/*
* 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.
*/
package org.apache.skywalking.oap.server.webapp;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Configuration {
private String serverPort;
private String oapServices;
public int port() {
return serverPort == null || serverPort.trim().length() == 0
? 80
: Integer.parseInt(serverPort);
}
public String[] oapServices() {
if (oapServices == null || oapServices.trim().length() == 0) {
throw new IllegalArgumentException("oapServices cannot be null or empty");
}
return oapServices.split(",");
}
}
/*
* 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.
*
*/
package org.apache.skywalking.oap.server.webapp;
import java.io.IOException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.web.reactive.error.ErrorWebExceptionHandler;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.buffer.DataBufferFactory;
import org.springframework.http.MediaType;
import org.springframework.http.server.reactive.ServerHttpResponse;
import org.springframework.util.StreamUtils;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;
@Slf4j
@Order(-1)
@Configuration
public class GlobalErrorWebExceptionHandler implements ErrorWebExceptionHandler {
@Override
public Mono<Void> handle(ServerWebExchange exchange, Throwable ex) {
ServerHttpResponse response = exchange.getResponse();
response.getHeaders().setContentType(MediaType.TEXT_HTML);
return response.writeWith(Mono.fromSupplier(() -> {
DataBufferFactory bufferFactory = response.bufferFactory();
try {
return bufferFactory.wrap(StreamUtils.copyToByteArray(
new ClassPathResource("/public/index.html").getInputStream()));
} catch (IOException e) {
log.error("There was an error completing the action.", ex);
return bufferFactory.wrap(new byte[0]);
}
}));
}
}
\ No newline at end of file
/*
* 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.
*/
package org.apache.skywalking.oap.server.webapp;
import static java.util.stream.Collectors.toList;
import java.net.URI;
import java.time.Duration;
import java.util.List;
import java.util.stream.Stream;
import com.linecorp.armeria.client.Endpoint;
import com.linecorp.armeria.client.WebClient;
import com.linecorp.armeria.client.endpoint.EndpointGroup;
import com.linecorp.armeria.client.endpoint.EndpointSelectionStrategy;
import com.linecorp.armeria.client.endpoint.healthcheck.HealthCheckedEndpointGroup;
import com.linecorp.armeria.client.logging.LoggingClient;
import com.linecorp.armeria.common.HttpRequest;
import com.linecorp.armeria.common.HttpResponse;
import com.linecorp.armeria.common.SessionProtocol;
import com.linecorp.armeria.server.AbstractHttpService;
import com.linecorp.armeria.server.ServiceRequestContext;
import lombok.SneakyThrows;
public final class OapProxyService extends AbstractHttpService {
private final WebClient loadBalancingClient;
public OapProxyService(String[] oapServices) throws Exception {
final List<Endpoint> endpoints =
Stream
.of(oapServices)
.map(URI::create)
.map(URI::getAuthority)
.map(Endpoint::parse)
.collect(toList());
loadBalancingClient = newLoadBalancingClient(
EndpointGroup.of(
EndpointSelectionStrategy.roundRobin(),
endpoints));
}
@SneakyThrows
private static WebClient newLoadBalancingClient(EndpointGroup oapGroup) {
final HealthCheckedEndpointGroup healthCheckedGroup =
HealthCheckedEndpointGroup
.builder(oapGroup, "/internal/l7check")
.protocol(SessionProtocol.HTTP)
.retryInterval(Duration.ofSeconds(10))
.build();
// Wait until the initial health check is finished.
healthCheckedGroup.whenReady().get();
return WebClient
.builder(SessionProtocol.HTTP, oapGroup)
.decorator(LoggingClient.newDecorator())
.build();
}
@Override
protected HttpResponse doPost(ServiceRequestContext ctx, HttpRequest req) throws Exception {
return loadBalancingClient.execute(req);
}
}
......@@ -14,34 +14,7 @@
# limitations under the License.
server:
port: 8080
compression:
enabled: true
spring:
cloud:
gateway:
routes:
- id: oap-route
uri: lb://oap-service
predicates:
- Path=/graphql/**
discovery:
client:
simple:
instances:
oap-service:
- uri: http://127.0.0.1:12800
# - uri: http://<oap-host-1>:<oap-port1>
# - uri: http://<oap-host-2>:<oap-port2>
serverPort: ${SW_SERVER_PORT:-8080}
mvc:
throw-exception-if-no-handler-found: true
web:
resources:
add-mappings: true
management:
server:
base-path: /manage
# Comma seperated list of OAP addresses.
oapServices: ${SW_OAP_ADDRESS:-localhost:12800}
......@@ -16,6 +16,20 @@
~ limitations under the License.
~
-->
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
</configuration>
\ No newline at end of file
<Configuration status="DEBUG">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout>
<LevelPatternSelector defaultPattern="%d %c %L [%t] %-5p %x - %m%n">
<PatternMatch key="ERROR" pattern="%d %c %L [%t] %-5p %x - [%swversion] %m%n" />
</LevelPatternSelector>
</PatternLayout>
</Console>
</Appenders>
<Loggers>
<Root level="INFO">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
/*
* 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.
*/
package org.apache.skywalking.oap.server.webapp;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@SpringBootTest
@RunWith(SpringRunner.class)
public class ApplicationContextTest {
@Test
public void contextShouldLoad() {
}
}
\ No newline at end of file
......@@ -26,8 +26,6 @@ if not exist "%WEBAPP_LOG_DIR%" (
mkdir "%WEBAPP_LOG_DIR%"
)
set LOG_FILE_LOCATION=%WEBAPP_LOG_DIR%\webapp.log
if defined JAVA_HOME (
set _EXECJAVA="%JAVA_HOME%\bin\java"
)
......@@ -37,5 +35,5 @@ if not defined JAVA_HOME (
set _EXECJAVA=java
)
start "%WEBAPP_PROCESS_TITLE%" %_EXECJAVA% -jar %JARPATH%/skywalking-webapp.jar --spring.config.location=%JARPATH%/webapp.yml --logging.file=%LOG_FILE_LOCATION%
start "%WEBAPP_PROCESS_TITLE%" %_EXECJAVA% -Dwebapp.logDir=%WEBAPP_LOG_DIR% -cp %JARPATH%/skywalking-webapp.jar;%JARPATH% org.apache.skywalking.oap.server.webapp.ApplicationStartUp
endlocal
......@@ -20,7 +20,7 @@ PRGDIR=$(dirname "$PRG")
[ -z "$WEBAPP_HOME" ] && WEBAPP_HOME=$(cd "$PRGDIR/.." > /dev/null || exit 1; pwd)
WEBAPP_LOG_DIR="${WEBAPP_LOG_DIR:-${WEBAPP_HOME}/logs}"
JAVA_OPTS="${JAVA_OPTS:- -Xms256M -Xmx512M}"
JAVA_OPTS="${JAVA_OPTS:- -Xms256M -Xmx512M} -Dwebapp.logDir=${WEBAPP_LOG_DIR}"
JAR_PATH="${WEBAPP_HOME}/webapp"
if [ ! -d "${WEBAPP_LOG_DIR}" ]; then
......@@ -32,9 +32,8 @@ LOG_FILE_LOCATION=${WEBAPP_LOG_DIR}/webapp.log
_RUNJAVA=${JAVA_HOME}/bin/java
[ -z "$JAVA_HOME" ] && _RUNJAVA=java
eval exec "\"$_RUNJAVA\" ${JAVA_OPTS} -jar ${JAR_PATH}/skywalking-webapp.jar \
--spring.config.location=${JAR_PATH}/webapp.yml \
--logging.file=${LOG_FILE_LOCATION} \
eval exec "\"$_RUNJAVA\" ${JAVA_OPTS} -cp ${JAR_PATH}/skywalking-webapp.jar:$JAR_PATH \
org.apache.skywalking.oap.server.webapp.ApplicationStartUp \
2>${WEBAPP_LOG_DIR}/webapp-console.log 1> /dev/null &"
if [ $? -eq 0 ]; then
......
此差异已折叠。
......@@ -20,10 +20,10 @@ Getting Started
To help you get started, try the following links:
Getting Started
https://skywalking.apache.org/docs/main/latest/readme/
https://skywalking.apache.org/docs/main/next/readme/
Building
https://skywalking.apache.org/docs/main/latest/en/guides/how-to-build/
https://skywalking.apache.org/docs/main/next/en/guides/how-to-build/
We welcome contributions of all kinds, for details of how you can help
https://github.com/apache/skywalking/blob/master/CONTRIBUTING.md
......
......@@ -17,7 +17,7 @@
FROM eclipse-temurin:11-jre
ENV JAVA_OPTS=" -Xms256M " \
SW_OAP_ADDRESS="http://127.0.0.1:12800"
SW_OAP_ADDRESS="127.0.0.1:12800"
WORKDIR skywalking
......@@ -32,7 +32,7 @@ RUN tar -xzf "$DIST" --strip 1; \
rm -rf "agent";
COPY docker-entrypoint.sh .
COPY logback.xml webapp/
COPY log4j2.xml webapp/
EXPOSE 8080
......
......@@ -18,14 +18,4 @@
set -e
export LOGGING_CONFIG="webapp/logback.xml"
if [[ ! -z "$SW_OAP_ADDRESS" ]]; then
address_arr=(${SW_OAP_ADDRESS//,/ })
for i in "${!address_arr[@]}"
do
JAVA_OPTS="${JAVA_OPTS} -Dspring.cloud.discovery.client.simple.instances.oap-service[$i].uri=${address_arr[$i]}"
done
fi
exec java ${JAVA_OPTS} -jar webapp/skywalking-webapp.jar "$@"
exec java ${JAVA_OPTS} -cp webapp/skywalking-webapp.jar:webapp org.apache.skywalking.oap.server.webapp.ApplicationStartUp "$@"
......@@ -16,11 +16,20 @@
~ limitations under the License.
~
-->
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}"/>
<include resource="org/springframework/boot/logging/logback/file-appender.xml"/>
<root level="INFO">
<appender-ref ref="FILE"/>
</root>
</configuration>
\ No newline at end of file
<Configuration status="DEBUG">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout>
<LevelPatternSelector defaultPattern="%d %c %L [%t] %-5p %x - %m%n">
<PatternMatch key="ERROR" pattern="%d %c %L [%t] %-5p %x - [%swversion] %m%n" />
</LevelPatternSelector>
</PatternLayout>
</Console>
</Appenders>
<Loggers>
<Root level="INFO">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
......@@ -44,7 +44,7 @@
* Upgrade H2 version to 2.0.206 to fix CVE-2021-23463 and GHSA-h376-j262-vhq6.
* Extend column name override mechanism working for `ValueColumnMetadata`.
* Introduce new concept `Layer` and removed `NodeType`. More details refer
to [v9-version-upgrade](https://skywalking.apache.org/docs/main/latest/en/faq/v9-version-upgrade/).
to [v9-version-upgrade](https://skywalking.apache.org/docs/main/next/en/faq/v9-version-upgrade/).
* Fix query sort metrics failure in H2 Storage.
* Bump up grpc to 1.43.2 and protobuf to 3.19.2 to fix CVE-2021-22569.
* Add source layer and dest layer to relation.
......
......@@ -12,9 +12,12 @@
#### UI
* Fix: tab active incorrectly, when click tab space
* Fix: tab active incorrectly, when click tab space
* Add impala icon for impala JDBC Java agent plugin.
* (Webapp)Bump up snakeyaml to 1.31 for fixing CVE-2022-25857
* [Breaking Change]: migrate from Spring Web to Armeria, now you should use the environment variable name `SW_OAP_ADDRESS`
to change the OAP backend service addresses, like `SW_OAP_ADDRESS=localhost:12800,localhost:12801`, and use environment
variable `SW_SERVER_PORT` to change the port. Other Spring-related configurations don't take effect anymore.
#### Documentation
......
......@@ -83,10 +83,10 @@ To make the orchestration process easier, we're using a [docker-compose](https:/
Follow these steps:
1. Decide what (and how many) containers will be needed. For example, for cluster testing, you'll need > 2 OAP nodes, coordinators (e.g. zookeeper), storage (e.g. ElasticSearch), and instrumented services;
1. Define the containers in `docker-compose.yml`, and carefully specify the dependencies, starting orders, and most importantly, link them together, e.g. set the correct OAP address on the agent end, and set the correct coordinator address in OAP, etc.
1. Define the e2e case [config](https://skywalking.apache.org/docs/skywalking-infra-e2e/latest/en/setup/configuration-file/) in `e2e.yaml`.
1. Define the e2e case [config](https://skywalking.apache.org/docs/skywalking-infra-e2e/next/en/setup/configuration-file/) in `e2e.yaml`.
1. Write the expected data(yml) for verify.
- [Run e2e test](https://skywalking.apache.org/docs/skywalking-infra-e2e/latest/en/setup/run-e2e-tests/)
- [Run e2e test](https://skywalking.apache.org/docs/skywalking-infra-e2e/next/en/setup/run-e2e-tests/)
All e2e cases should under `skywalking/test/e2e-v2/cases`. You could execute e2e run command in `skywalking/` e.g.
```
......
......@@ -27,9 +27,8 @@ The value of `x-le` should be in JSON format. There are two options:
{
"logic-span": true
}
```
```
### References
1. [Java plugin API](https://skywalking.apache.org/docs/skywalking-java/latest/en/setup/service-agent/java-agent/java-plugin-development-guide/#extension-logic-endpoint-tag-key-x-le) guides users to write plugins with logic endpoint.
2. Java agent's plugins include native included logic endpoints, also it provides ways to set the tag of logic span. The document could be found [here](https://skywalking.apache.org/docs/skywalking-java/latest/en/setup/service-agent/java-agent/logic-endpoint/).
1. [Java plugin API](https://skywalking.apache.org/docs/skywalking-java/next/en/setup/service-agent/java-agent/java-plugin-development-guide/#extension-logic-endpoint-tag-key-x-le) guides users to write plugins with logic endpoint.
2. Java agent's plugins include native included logic endpoints, also it provides ways to set the tag of logic span. The document could be found [here](https://skywalking.apache.org/docs/skywalking-java/next/en/setup/service-agent/java-agent/logic-endpoint/).
......@@ -24,8 +24,8 @@ Please read SkyWalking language agents documentation to see whether it is suppor
SkyWalking has a native metrics format, and supports widely used metric formats, such as Prometheus, OpenCensus, OpenTelemetry, and Zabbix.
The native metrics format definition could be found [here](https://github.com/apache/skywalking-data-collect-protocol/blob/master/language-agent/Meter.proto).
Typically, the agent meter plugin (e.g. [Java Meter Plugin](https://skywalking.apache.org/docs/skywalking-java/latest/en/setup/service-agent/java-agent/java-plugin-development-guide/#meter-plugin)) and
Satellite [Prometheus fetcher](https://skywalking.apache.org/docs/skywalking-satellite/latest/en/setup/plugins/fetcher_prometheus-metrics-fetcher/)
Typically, the agent meter plugin (e.g. [Java Meter Plugin](https://skywalking.apache.org/docs/skywalking-java/next/en/setup/service-agent/java-agent/java-plugin-development-guide/#meter-plugin)) and
Satellite [Prometheus fetcher](https://skywalking.apache.org/docs/skywalking-satellite/next/en/setup/plugins/fetcher_prometheus-metrics-fetcher/)
would convert metrics into native format and forward them to SkyWalking OAP server.
To learn more about receiving 3rd party formats metrics, see [Meter receiver](../setup/backend/backend-meter.md) and [OpenTelemetry receiver](../setup/backend/opentelemetry-receiver.md).
......
......@@ -14,7 +14,7 @@ docker run --name oap --restart always -d -e SW_STORAGE=elasticsearch -e SW_STOR
# Configuration
We could set up environment variables to configure this image. They are defined in [backend-setup](https://skywalking.apache.org/docs/main/latest/en/setup/backend/backend-setup/).
We could set up environment variables to configure this image. They are defined in [backend-setup](https://skywalking.apache.org/docs/main/next/en/setup/backend/backend-setup/).
# Extend image
......
# Kubernetes Network monitoring
SkyWalking leverages [SkyWalking Rover](https://github.com/apache/skywalking-rover) [network profiling feature](https://skywalking.apache.org/docs/skywalking-rover/latest/en/setup/configuration/profiling/#network) for collecting metrics data from the network. SkyWalking Rover converts data from socket data to metrics using eBPF technology.
SkyWalking leverages [SkyWalking Rover](https://github.com/apache/skywalking-rover) [network profiling feature](https://skywalking.apache.org/docs/skywalking-rover/next/en/setup/configuration/profiling/#network) for collecting metrics data from the network. SkyWalking Rover converts data from socket data to metrics using eBPF technology.
## Data flow
1. SkyWalking OAP server observes which specific k8s pod needs to monitor the network.
......@@ -7,7 +7,7 @@ SkyWalking leverages [SkyWalking Rover](https://github.com/apache/skywalking-rov
3. The SkyWalking OAP Server accesses K8s's `API Server` to fetch meta info and parses the expression with [MAL](../../concepts-and-designs/mal.md) to aggregate.
## Setup
1. Setup [SkyWalking Rover](https://skywalking.apache.org/docs/skywalking-rover/latest/en/setup/overview/).
1. Setup [SkyWalking Rover](https://skywalking.apache.org/docs/skywalking-rover/next/en/setup/overview/).
2. Enable the network profiling MAL file in the OAP server.
```yaml
agent-analyzer:
......
......@@ -47,7 +47,7 @@ License (SSPL), which is incompatible with Apache License 2.0. This license chan
version 7.11. So please choose the suitable ElasticSearch version according to your usage.
If you have concerns about SSPL, choose the versions before 7.11 or switch to OpenSearch.
Since 9.2.0, SkyWalking provides no-sharding/one-index mode to merge all metrics/meter and records(without super datasets)
Since 9.2.0, SkyWalking provides no-sharding/one-index mode to merge all metrics/meter and records(without super datasets)
indices into one physical index template `metrics-all` and `records-all` on the default setting.
In the current one index mode, users still could choose to adjust ElasticSearch's shard number(`SW_STORAGE_ES_INDEX_SHARDS_NUMBER`) to scale out.
After merge all indices, the following indices are available:
......@@ -61,7 +61,7 @@ After merge all indices, the following indices are available:
* sw_records-all-`${day-format}`
___
Provide system environment variable(`SW_STORAGE_ES_LOGIC_SHARDING`). Set it to `true` could shard metrics indices into multi-physical indices
Provide system environment variable(`SW_STORAGE_ES_LOGIC_SHARDING`). Set it to `true` could shard metrics indices into multi-physical indices
as same as the versions(one index template per metric/meter aggregation function) before 9.2.0.
___
......@@ -108,7 +108,7 @@ storage:
### ElasticSearch With Https SSL Encrypting communications.
Example:
Example:
```yaml
storage:
......@@ -133,17 +133,17 @@ In most cases, users don't need to change the value manually, as SkyWalking is d
But in some cases, users may want to set a long TTL value, such as more than 60 days. However, their ElasticSearch cluster may not be powerful enough due to low traffic in the production environment.
This value could be increased to 5 (or more) if users could ensure a single index could support the metrics and traces for these days (5 in this case).
For example, if dayStep == 11,
For example, if dayStep == 11,
1. Data in [2000-01-01, 2000-01-11] will be merged into the index-20000101.
1. Data in [2000-01-12, 2000-01-22] will be merged into the index-20000112.
`storage/elasticsearch/superDatasetDayStep` overrides the `storage/elasticsearch/dayStep` if the value is positive.
This would affect the record-related entities, such as trace segments. In some cases, the size of metrics is much smaller than the record (trace). This would improve the shards balance in the ElasticSearch cluster.
NOTE: TTL deletion would be affected by these steps. You should set an extra dayStep in your TTL. For example, if you want to have TTL == 30 days and dayStep == 10, you are recommended to set TTL = 40.
### Secrets Management File Of ElasticSearch Authentication
The value of `secretsManagementFile` should point to the secrets management file absolute path.
The value of `secretsManagementFile` should point to the secrets management file absolute path.
The file includes the username, password, and JKS password of the ElasticSearch server in the properties format.
```properties
user=xxx
......@@ -151,8 +151,8 @@ password=yyy
trustStorePass=zzz
```
The major difference between using `user, password, trustStorePass` configs in the `application.yaml` file is that the **Secrets Management File** is being watched by the OAP server.
Once it is changed manually or through a 3rd party tool, such as [Vault](https://github.com/hashicorp/vault),
The major difference between using `user, password, trustStorePass` configs in the `application.yaml` file is that the **Secrets Management File** is being watched by the OAP server.
Once it is changed manually or through a 3rd party tool, such as [Vault](https://github.com/hashicorp/vault),
the storage provider will use the new username, password, and JKS password to establish the connection and close the old one. If the information exists in the file,
the `user/password` will be overridden.
......@@ -186,9 +186,9 @@ We strongly recommend that you read more about these configurations from Elastic
When a namespace is set, all index names in ElasticSearch will use it as the prefix.
## MySQL
Activate MySQL as storage, and set storage provider to **mysql**.
Activate MySQL as storage, and set storage provider to **mysql**.
**NOTE:** MySQL driver is NOT allowed in Apache official distribution and source codes.
**NOTE:** MySQL driver is NOT allowed in Apache official distribution and source codes.
Please download the MySQL driver on your own. Copy the connection driver jar to `oap-libs`.
```yaml
......@@ -207,13 +207,13 @@ storage:
maxSizeOfBatchSql: ${SW_STORAGE_MAX_SIZE_OF_BATCH_SQL:2000}
asyncBatchPersistentPoolSize: ${SW_STORAGE_ASYNC_BATCH_PERSISTENT_POOL_SIZE:4}
```
All connection-related settings, including URL link, username, and password, are found in `application.yml`.
All connection-related settings, including URL link, username, and password, are found in `application.yml`.
Only part of the settings is listed here. See the [HikariCP](https://github.com/brettwooldridge/HikariCP) connection pool document for full settings.
To understand the function of the parameter `rewriteBatchedStatements=true` in MySQL, see the [MySQL official document](https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-connp-props-performance-extensions.html#cj-conn-prop_rewriteBatchedStatements).
## TiDB
Tested TiDB Server 4.0.8 version, and MySQL Client driver 8.0.13 version is currently available.
Activate TiDB as storage, and set storage provider to **tidb**.
Activate TiDB as storage, and set storage provider to **tidb**.
```yaml
storage:
......@@ -234,13 +234,13 @@ storage:
maxSizeOfBatchSql: ${SW_STORAGE_MAX_SIZE_OF_BATCH_SQL:2000}
asyncBatchPersistentPoolSize: ${SW_STORAGE_ASYNC_BATCH_PERSISTENT_POOL_SIZE:4}
```
All connection-related settings, including URL link, username, and password are found in `application.yml`.
All connection-related settings, including URL link, username, and password are found in `application.yml`.
For details on settings, refer to the configuration of *MySQL* above.
To understand the function of the parameter `rewriteBatchedStatements=true` in TiDB, see the document of [TiDB best practices](https://docs.pingcap.com/tidb/stable/java-app-best-practices#use-batch-api).
## PostgreSQL
PostgreSQL JDBC driver uses version 42.3.2. It supports PostgreSQL 8.2 or newer.
Activate PostgreSQL as storage, and set storage provider to **postgresql**.
Activate PostgreSQL as storage, and set storage provider to **postgresql**.
```yaml
storage:
......@@ -260,7 +260,7 @@ storage:
maxSizeOfBatchSql: ${SW_STORAGE_MAX_SIZE_OF_BATCH_SQL:2000}
asyncBatchPersistentPoolSize: ${SW_STORAGE_ASYNC_BATCH_PERSISTENT_POOL_SIZE:4}
```
All connection-related settings, including URL link, username, and password, are found in `application.yml`.
All connection-related settings, including URL link, username, and password, are found in `application.yml`.
Only part of the settings is listed here. Please follow [HikariCP](https://github.com/brettwooldridge/HikariCP) connection pool document for full settings.
## BanyanDB
......@@ -281,9 +281,9 @@ storage:
profileTaskQueryMaxSize: ${SW_STORAGE_BANYANDB_PROFILE_TASK_QUERY_MAX_SIZE:200} # the max number of fetch task in a request
```
For more details, please refer to the documents of [BanyanDB](https://skywalking.apache.org/docs/skywalking-banyandb/latest/readme/)
For more details, please refer to the documents of [BanyanDB](https://skywalking.apache.org/docs/skywalking-banyandb/next/readme/)
and [BanyanDB Java Client](https://github.com/apache/skywalking-banyandb-java-client) subprojects.
## More storage extension solutions
Follow the [Storage extension development guide](../../guides/storage-extention.md)
Follow the [Storage extension development guide](../../guides/storage-extention.md)
in the [Project Extensions document](../../guides/README.md#project-extensions).
# UI
SkyWalking UI distribution is already included in our Apache official release.
SkyWalking UI distribution is already included in our Apache official release.
## Startup
Startup script is also in `/bin/webappService.sh`(.bat). UI runs as an OS Java process, powered-by Zuul.
......@@ -11,25 +11,10 @@ The settings file of UI is `webapp/webapp.yml` in the distribution package. It
1. Backend connect info.
```yaml
server:
port: 8080
spring:
cloud:
gateway:
routes:
- id: oap-route
uri: lb://oap-service
predicates:
- Path=/graphql/**
discovery:
client:
simple:
instances:
oap-service:
# Point to all backend's restHost:restPort, split by URI arrays.
- uri: http://127.0.0.1:12800
- uri: http://instance-2:12800
serverPort: ${SW_SERVER_PORT:-8080}
# Comma seperated list of OAP addresses, without http:// prefix.
oapServices: ${SW_OAP_ADDRESS:-localhost:12800}
```
## Start with Docker Image
......@@ -46,4 +31,4 @@ We could set up environment variables to configure this image.
### SW_OAP_ADDRESS
The address of your OAP server. The default value is `http://127.0.0.1:12800`.
\ No newline at end of file
The address of your OAP server. The default value is `http://127.0.0.1:12800`.
......@@ -6,13 +6,13 @@ format and maximize the analysis capabilities of the SkyWalking OAP server.
## Installing language agents in services
- [Java agent](https://skywalking.apache.org/docs/skywalking-java/latest/en/setup/service-agent/java-agent/readme/). Learn how to install the Java agent in your service without affecting your code.
- [Java agent](https://skywalking.apache.org/docs/skywalking-java/next/en/setup/service-agent/java-agent/readme/). Learn how to install the Java agent in your service without affecting your code.
- [LUA agent](https://github.com/apache/skywalking-nginx-lua). Learn how to install the Lua agent in Nginx + LUA module or OpenResty.
- [Kong agent](https://github.com/apache/skywalking-kong). Learn how to install the Lua agent in Kong.
- [Python Agent](https://skywalking.apache.org/docs/skywalking-python/latest/en/setup/cli/). Learn how to install the Python Agent in a Python service without affecting your code.
- [Python Agent](https://skywalking.apache.org/docs/skywalking-python/next/en/setup/cli/). Learn how to install the Python Agent in a Python service without affecting your code.
- [Node.js agent](https://github.com/apache/skywalking-nodejs). Learn how to install the NodeJS Agent in a NodeJS service.
......
......@@ -49,9 +49,7 @@
<kubernetes.version>16.0.0</kubernetes.version>
<hikaricp.version>3.1.0</hikaricp.version>
<zipkin.version>2.23.16</zipkin.version>
<jackson-core.version>2.13.2</jackson-core.version>
<jackson-annotations.version>2.13.2</jackson-annotations.version>
<jackson-databind.version>2.13.2.2</jackson-databind.version>
<jackson.version>2.13.4</jackson.version>
<commons-text.version>1.4</commons-text.version>
<simpleclient.version>0.6.0</simpleclient.version>
<apollo.version>1.8.0</apollo.version>
......@@ -59,7 +57,6 @@
<curator.version>4.3.0</curator.version>
<curator-test.version>2.12.0</curator-test.version>
<etcd4j.version>2.18.0</etcd4j.version>
<jackson-module-afterburner.version>2.12.2</jackson-module-afterburner.version>
<antlr.version>4.9.2</antlr.version>
<freemarker.version>2.3.31</freemarker.version>
<javaassist.version>3.25.0-GA</javaassist.version>
......@@ -71,7 +68,7 @@
<postgresql.version>42.4.1</postgresql.version>
<jetcd.version>0.5.3</jetcd.version>
<testcontainers.version>1.15.3</testcontainers.version>
<armeria.version>1.16.0</armeria.version>
<armeria.version>1.18.0</armeria.version>
<awaitility.version>3.0.0</awaitility.version>
<httpcore.version>4.4.13</httpcore.version>
<commons-compress.version>1.21</commons-compress.version>
......@@ -308,17 +305,17 @@
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson-core.version}</version>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson-annotations.version}</version>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson-databind.version}</version>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
......@@ -378,12 +375,6 @@
</exclusions>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-afterburner</artifactId>
<version>${jackson-module-afterburner.version}</version>
</dependency>
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>banyandb-java-client</artifactId>
......
......@@ -100,11 +100,6 @@ public class HTTPServerTest {
WebClient.of().options(testHandlerURI).aggregate().get().status().code(),
405
);
Assert.assertEquals(
WebClient.of().head(testHandlerURI).aggregate().get().status().code(),
405
);
}
static class TestPostHandler {
......
......@@ -18,16 +18,17 @@
package org.apache.skywalking.oap.server.library.server.http;
import com.google.common.collect.Sets;
import com.linecorp.armeria.common.HttpMethod;
import com.linecorp.armeria.common.HttpResponse;
import com.linecorp.armeria.common.HttpStatus;
import com.linecorp.armeria.server.Route;
import com.linecorp.armeria.server.ServerBuilder;
import com.linecorp.armeria.server.docs.DocService;
import com.linecorp.armeria.server.healthcheck.HealthCheckService;
import com.linecorp.armeria.server.logging.LoggingService;
import java.net.InetSocketAddress;
import java.time.Duration;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import lombok.extern.slf4j.Slf4j;
......@@ -39,7 +40,8 @@ import static java.util.Objects.requireNonNull;
public class HTTPServer implements Server {
private final HTTPServerConfig config;
private ServerBuilder sb;
private final Set<HttpMethod> allowedMethods = new HashSet<>();
// Health check service, supports HEAD, GET method.
private final Set<HttpMethod> allowedMethods = Sets.newHashSet(HttpMethod.HEAD);
public HTTPServer(HTTPServerConfig config) {
this.config = config;
......@@ -52,6 +54,7 @@ public class HTTPServer implements Server {
sb = com.linecorp.armeria.server.Server
.builder()
.serviceUnder(contextPath + "/docs", DocService.builder().build())
.service("/internal/l7check", HealthCheckService.of())
.workerGroup(config.getMaxThreads())
.http(new InetSocketAddress(
config.getHost(),
......
......@@ -59,10 +59,6 @@
<groupId>com.linecorp.armeria</groupId>
<artifactId>armeria-graphql</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-afterburner</artifactId>
</dependency>
<dependency>
<groupId>io.kubernetes</groupId>
......
......@@ -55,7 +55,7 @@ public class LogTestQuery implements GraphQLQueryResolver {
if (!config.isEnableLogTestTool()) {
throw new IllegalAccessException(
"LAL debug tool is not enabled. To enable, please set SW_QUERY_GRAPHQL_ENABLE_LOG_TEST_TOOL=true," +
"for more details, refer to https://skywalking.apache.org/docs/main/latest/en/setup/backend/configuration-vocabulary/");
"for more details, refer to https://skywalking.apache.org/docs/main/next/en/setup/backend/configuration-vocabulary/");
}
requireNonNull(request, "request");
......
......@@ -68,7 +68,7 @@ public class UIConfigurationManagement implements GraphQLQueryResolver, GraphQLM
.id("")
.message(
"The dashboard creation has been disabled. Check SW_ENABLE_UPDATE_UI_TEMPLATE on " +
"configuration-vocabulary.md(https://skywalking.apache.org/docs/main/latest/en/setup/backend/configuration-vocabulary/#configuration-vocabulary) " +
"configuration-vocabulary.md(https://skywalking.apache.org/docs/main/next/en/setup/backend/configuration-vocabulary/#configuration-vocabulary) " +
"to activate it.")
.build();
}
......@@ -85,7 +85,7 @@ public class UIConfigurationManagement implements GraphQLQueryResolver, GraphQLM
.id(setting.getId())
.message(
"The dashboard update has been disabled. Check SW_ENABLE_UPDATE_UI_TEMPLATE on " +
"configuration-vocabulary.md(https://skywalking.apache.org/docs/main/latest/en/setup/backend/configuration-vocabulary/#configuration-vocabulary) " +
"configuration-vocabulary.md(https://skywalking.apache.org/docs/main/next/en/setup/backend/configuration-vocabulary/#configuration-vocabulary) " +
"to activate it.")
.build();
}
......@@ -98,7 +98,7 @@ public class UIConfigurationManagement implements GraphQLQueryResolver, GraphQLM
.id(id)
.message(
"The dashboard disable has been disabled. Check SW_ENABLE_UPDATE_UI_TEMPLATE on " +
"configuration-vocabulary.md(https://skywalking.apache.org/docs/main/latest/en/setup/backend/configuration-vocabulary/#configuration-vocabulary) " +
"configuration-vocabulary.md(https://skywalking.apache.org/docs/main/next/en/setup/backend/configuration-vocabulary/#configuration-vocabulary) " +
"to activate it.")
.build();
}
......
Subproject commit aba0de18fc934f6a20fd075ffe1a3df01ad1c80f
Subproject commit 2c541beae657306127f07af127d179492a1d7cf9
......@@ -79,7 +79,7 @@
"content": "Provide Browser-Side monitoring of Web-App, Versions and Pages, through Apache SkyWalking Client JS.",
"fontSize": 14,
"textAlign": "left",
"url": "https://skywalking.apache.org/docs/main/latest/en/setup/service-agent/browser-agent/"
"url": "https://skywalking.apache.org/docs/main/next/en/setup/service-agent/browser-agent/"
},
"moved": false
}
......
......@@ -262,7 +262,7 @@
"content": "Observe Service through telemetry data collected from SkyWalking Agent.",
"fontSize": 14,
"textAlign": "left",
"url": "https://skywalking.apache.org/docs/main/latest/en/setup/service-agent/server-agents/"
"url": "https://skywalking.apache.org/docs/main/next/en/setup/service-agent/server-agents/"
},
"moved": false
}
......
......@@ -914,7 +914,7 @@
"content": "eBPF Profiling support services written in C, C++, Golang, and Rust. SkyWalking Rover provides this profiling capability. ",
"fontSize": 14,
"textAlign": "left",
"url": "https://skywalking.apache.org/docs/skywalking-rover/latest/readme/"
"url": "https://skywalking.apache.org/docs/skywalking-rover/next/readme/"
}
},
{
......
......@@ -95,7 +95,7 @@
"content": "Provide monitoring of the status and resources of the K8S Cluster.",
"fontSize": 14,
"textAlign": "left",
"url": "https://skywalking.apache.org/docs/main/latest/en/setup/backend/backend-k8s-monitoring/"
"url": "https://skywalking.apache.org/docs/main/next/en/setup/backend/backend-k8s-monitoring/"
},
"moved": false
}
......
......@@ -82,7 +82,7 @@
"content": "Observe Service status and resources from Kubernetes.",
"fontSize": 14,
"textAlign": "left",
"url": "https://skywalking.apache.org/docs/main/latest/en/setup/backend/backend-k8s-monitoring/"
"url": "https://skywalking.apache.org/docs/main/next/en/setup/backend/backend-k8s-monitoring/"
},
"moved": false
}
......
......@@ -247,7 +247,7 @@
"content": "eBPF Profiling support services written in C, C++, Golang, and Rust. SkyWalking Rover provides this profiling capability. ",
"fontSize": 14,
"textAlign": "left",
"url": "https://skywalking.apache.org/docs/skywalking-rover/latest/readme/"
"url": "https://skywalking.apache.org/docs/skywalking-rover/next/readme/"
}
}
]
......
......@@ -226,7 +226,7 @@
"content": "Observe Service Mesh through telemetry data collected from Envoy Access Log Service (ALS).",
"fontSize": 14,
"textAlign": "left",
"url": "https://skywalking.apache.org/docs/main/latest/en/setup/envoy/als_setting/"
"url": "https://skywalking.apache.org/docs/main/next/en/setup/envoy/als_setting/"
},
"moved": false
}
......
......@@ -881,7 +881,7 @@
"content": "eBPF Profiling support services written in C, C++, Golang, and Rust. SkyWalking Rover provides this profiling capability. ",
"fontSize": 14,
"textAlign": "left",
"url": "https://skywalking.apache.org/docs/skywalking-rover/latest/readme/"
"url": "https://skywalking.apache.org/docs/skywalking-rover/next/readme/"
}
}
]
......
......@@ -95,7 +95,7 @@
"content": "Provide monitoring of the behavior of Istio through its self-monitoring metrics.",
"fontSize": 14,
"textAlign": "left",
"url": "https://skywalking.apache.org/docs/main/latest/en/setup/istio/readme/"
"url": "https://skywalking.apache.org/docs/main/next/en/setup/istio/readme/"
},
"moved": false
}
......
......@@ -66,7 +66,7 @@
"content": "Observe Envoy Proxy through Envoy Metrics Service.",
"fontSize": 14,
"textAlign": "left",
"url": "https://skywalking.apache.org/docs/main/latest/en/setup/envoy/metrics_service_setting/"
"url": "https://skywalking.apache.org/docs/main/next/en/setup/envoy/metrics_service_setting/"
},
"moved": false
}
......
......@@ -86,7 +86,7 @@
"content": "eBPF Profiling support services written in C, C++, Golang, and Rust. SkyWalking Rover provides this profiling capability. ",
"fontSize": 14,
"textAlign": "left",
"url": "https://skywalking.apache.org/docs/skywalking-rover/latest/readme/"
"url": "https://skywalking.apache.org/docs/skywalking-rover/next/readme/"
}
},
{
......@@ -109,4 +109,4 @@
"isRoot": false
}
}
]
\ No newline at end of file
]
......@@ -49,7 +49,7 @@
"content":"Provide MySQL Server monitoring through OpenTelemetry's Prometheus Receiver",
"fontSize":14,
"textAlign":"left",
"url":"https://skywalking.apache.org/docs/main/latest/en/setup/backend/backend-mysql-monitoring/"
"url":"https://skywalking.apache.org/docs/main/next/en/setup/backend/backend-mysql-monitoring/"
}
}
],
......@@ -60,4 +60,4 @@
"isRoot":true
}
}
]
\ No newline at end of file
]
......@@ -72,7 +72,7 @@
"content": "Provide Linux OS monitoring.",
"fontSize": 14,
"textAlign": "left",
"url": "https://skywalking.apache.org/docs/main/latest/en/setup/backend/backend-vm-monitoring/"
"url": "https://skywalking.apache.org/docs/main/next/en/setup/backend/backend-vm-monitoring/"
},
"moved": false
}
......
......@@ -33,7 +33,7 @@
"content":"Provide PostgreSQL monitoring through OpenTelemetry's Prometheus Receiver",
"fontSize":14,
"textAlign":"left",
"url":"https://skywalking.apache.org/docs/main/latest/en/setup/backend/backend-postgresql-monitoring/"
"url":"https://skywalking.apache.org/docs/main/next/en/setup/backend/backend-postgresql-monitoring/"
}
},
{
......@@ -60,4 +60,4 @@
"isRoot":true
}
}
]
\ No newline at end of file
]
......@@ -77,7 +77,7 @@
"content": "The OAP backend cluster itself is a distributed streaming process system, this is the monitoring for the OAP backend itself.",
"fontSize": 14,
"textAlign": "left",
"url": "https://skywalking.apache.org/docs/main/latest/en/setup/backend/backend-telemetry/"
"url": "https://skywalking.apache.org/docs/main/next/en/setup/backend/backend-telemetry/"
},
"moved": false
}
......
......@@ -241,7 +241,7 @@
"content":"Satellite: an open-source agent designed for the cloud-native infrastructures, which provides a low-cost, high-efficient, and more secure way to collect telemetry data. It is the recommended load balancer for telemetry collecting.",
"fontSize":14,
"textAlign":"left",
"url":"https://skywalking.apache.org/docs/main/latest/en/setup/backend/backend-load-balancer/"
"url":"https://skywalking.apache.org/docs/main/next/en/setup/backend/backend-load-balancer/"
},
"moved":false
}
......
......@@ -86,7 +86,7 @@
"content": "Observe the Virtual Database which is conjectured by language agent through various plugins.",
"fontSize": 14,
"textAlign": "left",
"url": "https://skywalking.apache.org/docs/main/latest/en/setup/service-agent/virtual-database/"
"url": "https://skywalking.apache.org/docs/main/next/en/setup/service-agent/virtual-database/"
},
"moved": false
}
......
......@@ -156,7 +156,7 @@
<!-- core lib dependency -->
<grpc.version>1.49.0</grpc.version>
<netty.version>4.1.77.Final</netty.version>
<netty.version>4.1.81.Final</netty.version>
<netty-tcnative-boringssl-static.version>2.0.52.Final</netty-tcnative-boringssl-static.version>
<gson.version>2.9.0</gson.version>
<os-maven-plugin.version>1.6.2</os-maven-plugin.version>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册