Skip to content

Commit

Permalink
[#8004] implement metric module(collector, web).
Browse files Browse the repository at this point in the history
develop web api. define table schema. improve collector's logic
  • Loading branch information
minwoo-jung committed Jun 21, 2022
1 parent 5ccba07 commit 24cfa99
Show file tree
Hide file tree
Showing 218 changed files with 6,914 additions and 1,107 deletions.
4 changes: 0 additions & 4 deletions collector/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -76,10 +76,6 @@
<groupId>com.navercorp.pinpoint</groupId>
<artifactId>pinpoint-grpc</artifactId>
</dependency>
<dependency>
<groupId>com.navercorp.pinpoint</groupId>
<artifactId>pinpoint-metric</artifactId>
</dependency>
<dependency>
<groupId>com.navercorp.pinpoint</groupId>
<artifactId>pinpoint-plugins-assembly</artifactId>
Expand Down

This file was deleted.

5 changes: 4 additions & 1 deletion collector/src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,7 @@ spring:
main:
allow-bean-definition-overriding: true
profiles:
active: release, metric
active: release

server:
port: 8081
121 changes: 0 additions & 121 deletions collector/src/test/resources/log4j2.xml

This file was deleted.

56 changes: 56 additions & 0 deletions metric-module/collector-starter/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>com.navercorp.pinpoint</groupId>
<artifactId>pinpoint-metric-module</artifactId>
<version>2.4.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>pinpoint-collector-starter</artifactId>
<name>pinpoint-collector-starter</name>


<properties>
<jdk.version>11</jdk.version>
<jdk.home>${env.JAVA_11_HOME}</jdk.home>
<plugin.animal-sniffer.skip>true</plugin.animal-sniffer.skip>

<guava.version>${guava-jdk8.version}</guava.version>
<javax.servlet.version>${javax.servlet4.version}</javax.servlet.version>
<spring.version>${spring5.version}</spring.version>
<spring.security.version>${spring.security5.version}</spring.security.version>
<log4j2.version>${log4j2-jdk8.version}</log4j2.version>

<pinpoint.collector.executable.name>${project.artifactId}-boot-${project.version}</pinpoint.collector.executable.name>
</properties>

<dependencies>
<dependency>
<groupId>com.navercorp.pinpoint</groupId>
<artifactId>pinpoint-collector</artifactId>
</dependency>
<dependency>
<groupId>com.navercorp.pinpoint</groupId>
<artifactId>pinpoint-metric</artifactId>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.navercorp.pinpoint.collector.starter.multi.application.MultiApplication</mainClass>
<outputDirectory>target/deploy</outputDirectory>
<executable>true</executable>
<attach>false</attach>
<finalName>${pinpoint.collector.executable.name}</finalName>
</configuration>
</plugin>
</plugins>
</build>
</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.navercorp.pinpoint.collector.starter;

import com.navercorp.pinpoint.collector.CollectorAppPropertySources;
import com.navercorp.pinpoint.collector.CollectorStarter;
import com.navercorp.pinpoint.collector.config.FlinkContextConfiguration;
import com.navercorp.pinpoint.common.server.util.ServerBootLogger;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.sql.init.SqlInitializationAutoConfiguration;
import org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.ImportResource;

@SpringBootConfiguration
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, TransactionAutoConfiguration.class, SqlInitializationAutoConfiguration.class})
@ImportResource({"classpath:applicationContext-collector.xml", "classpath:servlet-context-collector.xml"})
@Import({CollectorAppPropertySources.class, FlinkContextConfiguration.class})
public class CollectorApp {
private static final ServerBootLogger logger = ServerBootLogger.getLogger(CollectorApp.class);


public static void main(String[] args) {
try {
CollectorStarter starter = new CollectorStarter(CollectorApp.class);
starter.start(args);
} catch (Exception exception) {
logger.error("[CollectorApp] could not launch app.", exception);
}
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.navercorp.pinpoint.collector.starter.multi.application;

import com.navercorp.pinpoint.collector.CollectorAppPropertySources;
import com.navercorp.pinpoint.collector.config.FlinkContextConfiguration;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.sql.init.SqlInitializationAutoConfiguration;
import org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.ImportResource;

@SpringBootConfiguration
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, TransactionAutoConfiguration.class, SqlInitializationAutoConfiguration.class})
@ImportResource({"classpath:applicationContext-collector.xml", "classpath:servlet-context-collector.xml"})
@Import({CollectorAppPropertySources.class, FlinkContextConfiguration.class})
public class BasicCollectorApp {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package com.navercorp.pinpoint.collector.starter.multi.application;

import com.navercorp.pinpoint.common.server.banner.PinpointSpringBanner;
import com.navercorp.pinpoint.common.server.env.EnvironmentLoggingListener;
import com.navercorp.pinpoint.common.server.env.ExternalEnvironmentListener;
import com.navercorp.pinpoint.common.server.env.ProfileResolveListener;
import com.navercorp.pinpoint.common.server.util.ServerBootLogger;
import com.navercorp.pinpoint.metric.collector.MetricCollectorApp;
import org.springframework.boot.Banner;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.WebApplicationType;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;

@SpringBootConfiguration
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, TransactionAutoConfiguration.class})
public class MultiApplication {
private static final ServerBootLogger logger = ServerBootLogger.getLogger(MultiApplication.class);

public static final String EXTERNAL_PROPERTY_SOURCE_NAME = "CollectorExternalEnvironment";
public static final String EXTERNAL_CONFIGURATION_KEY = "pinpoint.collector.config.location";

public static void main(String[] args) {
SpringApplicationBuilder builder = new SpringApplicationBuilder();
builder.web(WebApplicationType.SERVLET);
builder.bannerMode(Banner.Mode.OFF);

builder.sources(MultiApplication.class);
builder.listeners(new ProfileResolveListener());

SpringApplicationBuilder collectorAppBuilder = createAppBuilder(builder, BasicCollectorApp.class, 1111);
SpringApplicationBuilder metricAppBuilder = createAppBuilder(builder, MetricCollectorApp.class, 8081);

collectorAppBuilder.build().run(args);
metricAppBuilder.build().run(args);
}

private static SpringApplicationBuilder createAppBuilder(SpringApplicationBuilder builder, Class appClass, int port) {
SpringApplicationBuilder collectorAppBuilder = builder.child(appClass)
.web(WebApplicationType.SERVLET)
.bannerMode(Banner.Mode.OFF)
.listeners(new ProfileResolveListener())
.listeners(new EnvironmentLoggingListener())
.listeners(new ExternalEnvironmentListener(EXTERNAL_PROPERTY_SOURCE_NAME, EXTERNAL_CONFIGURATION_KEY))
.listeners(new PinpointSpringBanner())
.properties(String.format("server.port:%1s", port));

return collectorAppBuilder;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
/*
* Copyright 2021 NAVER Corp.
*
* Licensed 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 com.navercorp.pinpoint.collector.starter.multi.port;

import org.apache.catalina.connector.Connector;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.ArrayList;
import java.util.List;

/**
* @author minwoo.jung
*/
@Deprecated
@Configuration
public class EmbeddedTomcatConfiguration {

@Value("${server.additionalPorts}")
private String additionalPorts;

@Bean
public TomcatServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
Connector[] additionalConnectors = this.additionalConnector();
if (additionalConnectors != null && additionalConnectors.length > 0) {
tomcat.addAdditionalTomcatConnectors(additionalConnectors);
}
return tomcat;
}

private Connector[] additionalConnector() {
if (StringUtils.isBlank(this.additionalPorts)) {
return null;
}
String[] ports = this.additionalPorts.split(",");
List<Connector> result = new ArrayList<>();
for (String port : ports) {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
connector.setPort(Integer.valueOf(port));
result.add(connector);
}
return result.toArray(new Connector[] {});
}
}
Loading

0 comments on commit 24cfa99

Please sign in to comment.