Skip to content

Commit 8e1c8b3

Browse files
committed
[pinpoint-apm#9666] Add redis pubsub atc,atd,echo
1 parent 455c291 commit 8e1c8b3

File tree

140 files changed

+7602
-415
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

140 files changed

+7602
-415
lines changed

collector/src/main/java/com/navercorp/pinpoint/collector/cluster/route/AbstractRouteHandler.java

+5-3
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,8 @@
2222
import com.navercorp.pinpoint.thrift.dto.command.TCommandTransfer;
2323
import com.navercorp.pinpoint.thrift.dto.command.TCommandTransferResponse;
2424
import com.navercorp.pinpoint.thrift.dto.command.TRouteResult;
25-
26-
import org.apache.logging.log4j.Logger;
2725
import org.apache.logging.log4j.LogManager;
26+
import org.apache.logging.log4j.Logger;
2827

2928
import java.util.ArrayList;
3029
import java.util.List;
@@ -47,7 +46,10 @@ protected ClusterPoint<?> findClusterPoint(TCommandTransfer deliveryCommand) {
4746
String agentId = deliveryCommand.getAgentId();
4847
long startTimeStamp = deliveryCommand.getStartTime();
4948
final ClusterKey sourceKey = new ClusterKey(applicationName, agentId, startTimeStamp);
49+
return findClusterPoint(sourceKey);
50+
}
5051

52+
public ClusterPoint<?> findClusterPoint(ClusterKey sourceKey) {
5153
List<ClusterPoint<?>> result = new ArrayList<>();
5254

5355
for (ClusterPoint<?> targetClusterPoint : targetClusterPointLocator.getClusterPointList()) {
@@ -62,7 +64,7 @@ protected ClusterPoint<?> findClusterPoint(TCommandTransfer deliveryCommand) {
6264
}
6365

6466
if (result.size() > 1) {
65-
logger.warn("Ambiguous ClusterPoint {}, {}, {} (Valid Agent list={}).", applicationName, agentId, startTimeStamp, result);
67+
logger.warn("Ambiguous ClusterPoint {} (Valid Agent list={}).", sourceKey, result);
6668
return null;
6769
}
6870

collector/src/main/java/com/navercorp/pinpoint/collector/grpc/config/GrpcReceiverProperties.java

+8-11
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,7 @@ public class GrpcReceiverProperties {
4545

4646
private final ServerOption serverOption;
4747

48-
49-
GrpcReceiverProperties(boolean enable,
48+
protected GrpcReceiverProperties(boolean enable,
5049
BindAddress bindAddress,
5150
ExecutorProperties serverExecutor,
5251
ExecutorProperties serverCallExecutor,
@@ -98,14 +97,12 @@ public ServerOption getServerOption() {
9897

9998
@Override
10099
public String toString() {
101-
final StringBuilder sb = new StringBuilder("GrpcAgentDataReceiverProperties{");
102-
sb.append("enable=").append(enable);
103-
sb.append(", bindAddress='").append(bindAddress).append('\'');
104-
sb.append(", serverExecutor=").append(serverExecutor);
105-
sb.append(", serverCallExecutor=").append(serverCallExecutor);
106-
sb.append(", workerExecutor=").append(workerExecutor);
107-
sb.append(", serverOption=").append(serverOption);
108-
sb.append('}');
109-
return sb.toString();
100+
return "GrpcAgentDataReceiverProperties{" + "enable=" + enable +
101+
", bindAddress='" + bindAddress + '\'' +
102+
", serverExecutor=" + serverExecutor +
103+
", serverCallExecutor=" + serverCallExecutor +
104+
", workerExecutor=" + workerExecutor +
105+
", serverOption=" + serverOption +
106+
'}';
110107
}
111108
}

collector/src/main/resources/pinpoint-collector-root.properties

+9-1
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,11 @@ flink.cluster.zookeeper.address=${pinpoint.zookeeper.address}
147147
flink.cluster.zookeeper.znode_root=/pinpoint-cluster
148148
flink.cluster.zookeeper.sessiontimeout=3000
149149

150+
# Active Thread Count
151+
pinpoint.collector.realtime.atc.demand.duration=12500
152+
pinpoint.collector.realtime.atc.supply.throttle.termMillis=100
153+
pinpoint.collector.realtime.atc.enable-count-metric=false
154+
150155
###########################################################
151156
# BANNER #
152157
###########################################################
@@ -196,4 +201,7 @@ pinpoint.banner.configs=spring.active.profile,\
196201
hbase.client.host,\
197202
hbase.client.port,\
198203
hbase.zookeeper.znode.parent,\
199-
hbase.namespace
204+
hbase.namespace,\
205+
spring.data.redis.host,\
206+
spring.data.redis.port,\
207+
spring.data.redis.cluster.nodes

metric-module/collector-starter/pom.xml

+4
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@
3434
<groupId>com.navercorp.pinpoint</groupId>
3535
<artifactId>pinpoint-uristat-collector</artifactId>
3636
</dependency>
37+
<dependency>
38+
<groupId>com.navercorp.pinpoint</groupId>
39+
<artifactId>pinpoint-realtime-collector</artifactId>
40+
</dependency>
3741
</dependencies>
3842

3943
<build>

metric-module/collector-starter/src/main/java/com/navercorp/pinpoint/collector/starter/multi/application/BasicCollectorApp.java

+10-2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@
33
import com.navercorp.pinpoint.collector.PinpointCollectorModule;
44
import org.springframework.boot.SpringBootConfiguration;
55
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
6+
import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
7+
import org.springframework.boot.autoconfigure.data.redis.RedisReactiveAutoConfiguration;
8+
import org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration;
9+
import org.springframework.boot.autoconfigure.data.web.SpringDataWebAutoConfiguration;
610
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
711
import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration;
812
import org.springframework.boot.autoconfigure.sql.init.SqlInitializationAutoConfiguration;
@@ -12,9 +16,13 @@
1216
@SpringBootConfiguration
1317
@EnableAutoConfiguration(exclude = {
1418
DataSourceAutoConfiguration.class,
15-
DataSourceTransactionManagerAutoConfiguration.class,
1619
TransactionAutoConfiguration.class,
17-
SqlInitializationAutoConfiguration.class
20+
SqlInitializationAutoConfiguration.class,
21+
SpringDataWebAutoConfiguration.class,
22+
RedisAutoConfiguration.class,
23+
RedisRepositoriesAutoConfiguration.class,
24+
RedisReactiveAutoConfiguration.class,
25+
DataSourceTransactionManagerAutoConfiguration.class
1826
})
1927
@Import({PinpointCollectorModule.class})
2028
public class BasicCollectorApp {

metric-module/collector-starter/src/main/java/com/navercorp/pinpoint/collector/starter/multi/application/MultiApplication.java

+15-2
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,16 @@
1010
import com.navercorp.pinpoint.metric.collector.CollectorTypeParser;
1111
import com.navercorp.pinpoint.metric.collector.MetricCollectorApp;
1212
import com.navercorp.pinpoint.metric.collector.TypeSet;
13+
import com.navercorp.pinpoint.realtime.collector.RealtimeCollectorConfig;
1314
import com.navercorp.pinpoint.uristat.collector.UriStatCollectorConfig;
1415
import org.springframework.boot.Banner;
1516
import org.springframework.boot.SpringBootConfiguration;
1617
import org.springframework.boot.WebApplicationType;
1718
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
19+
import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
20+
import org.springframework.boot.autoconfigure.data.redis.RedisReactiveAutoConfiguration;
21+
import org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration;
22+
import org.springframework.boot.autoconfigure.data.web.SpringDataWebAutoConfiguration;
1823
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
1924
import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration;
2025
import org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration;
@@ -26,7 +31,11 @@
2631
@EnableAutoConfiguration(exclude = {
2732
DataSourceAutoConfiguration.class,
2833
DataSourceTransactionManagerAutoConfiguration.class,
29-
TransactionAutoConfiguration.class
34+
TransactionAutoConfiguration.class,
35+
SpringDataWebAutoConfiguration.class,
36+
RedisAutoConfiguration.class,
37+
RedisRepositoriesAutoConfiguration.class,
38+
RedisReactiveAutoConfiguration.class
3039
})
3140
public class MultiApplication {
3241
private static final ServerBootLogger logger = ServerBootLogger.getLogger(MultiApplication.class);
@@ -49,7 +58,11 @@ public static void main(String[] args) {
4958

5059
if (types.hasType(CollectorType.BASIC)) {
5160
logger.info(String.format("Start %s collector", CollectorType.BASIC));
52-
SpringApplicationBuilder collectorAppBuilder = createAppBuilder(builder, 15400, BasicCollectorApp.class, UriStatCollectorConfig.class);
61+
SpringApplicationBuilder collectorAppBuilder = createAppBuilder(builder, 15400,
62+
BasicCollectorApp.class,
63+
UriStatCollectorConfig.class,
64+
RealtimeCollectorConfig.class
65+
);
5366
collectorAppBuilder.listeners(new AdditionalProfileListener("metric"));
5467
collectorAppBuilder.listeners(new AdditionalProfileListener("uri"));
5568
collectorAppBuilder.build().run(args);

metric-module/web-starter/pom.xml

+4
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@
4444
<groupId>com.navercorp.pinpoint</groupId>
4545
<artifactId>pinpoint-uristat-web</artifactId>
4646
</dependency>
47+
<dependency>
48+
<groupId>com.navercorp.pinpoint</groupId>
49+
<artifactId>pinpoint-realtime-web</artifactId>
50+
</dependency>
4751
</dependencies>
4852

4953
<build>

metric-module/web-starter/src/main/java/com/navercorp/pinpoint/web/starter/multi/MetricAndWebApp.java

+18-2
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,13 @@
2424
import com.navercorp.pinpoint.web.PinpointWebModule;
2525
import com.navercorp.pinpoint.web.WebApp;
2626
import com.navercorp.pinpoint.web.WebStarter;
27+
import com.navercorp.pinpoint.web.realtime.RealtimeWebConfig;
2728
import org.springframework.boot.SpringBootConfiguration;
2829
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
30+
import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
31+
import org.springframework.boot.autoconfigure.data.redis.RedisReactiveAutoConfiguration;
32+
import org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration;
33+
import org.springframework.boot.autoconfigure.data.web.SpringDataWebAutoConfiguration;
2934
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
3035
import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration;
3136
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
@@ -39,15 +44,26 @@
3944
DataSourceAutoConfiguration.class,
4045
DataSourceTransactionManagerAutoConfiguration.class,
4146
TransactionAutoConfiguration.class,
42-
SecurityAutoConfiguration.class
47+
SecurityAutoConfiguration.class,
48+
SpringDataWebAutoConfiguration.class,
49+
RedisAutoConfiguration.class,
50+
RedisRepositoriesAutoConfiguration.class,
51+
RedisReactiveAutoConfiguration.class
4352
})
4453
@Import({PinpointWebModule.class})
4554
public class MetricAndWebApp {
4655
private static final ServerBootLogger logger = ServerBootLogger.getLogger(WebApp.class);
4756

4857
public static void main(String[] args) {
4958
try {
50-
WebStarter starter = new WebStarter(MetricAndWebApp.class, PinpointBasicLoginConfig.class, AuthorizationConfig.class, MetricWebApp.class, UriStatWebConfig.class);
59+
WebStarter starter = new WebStarter(
60+
MetricAndWebApp.class,
61+
PinpointBasicLoginConfig.class,
62+
AuthorizationConfig.class,
63+
MetricWebApp.class,
64+
UriStatWebConfig.class,
65+
RealtimeWebConfig.class
66+
);
5167
starter.addProfiles("uri", "metric");
5268
starter.start(args);
5369
} catch (Exception exception) {

pom.xml

+22
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,8 @@
121121
<module>pinot</module>
122122
<module>metric-module</module>
123123
<module>uristat</module>
124+
<module>realtime</module>
125+
<module>redis</module>
124126

125127
<!-- <module>agent-testweb</module> -->
126128
<!-- <module>plugins-it</module> -->
@@ -345,6 +347,11 @@
345347
<artifactId>pinpoint-rpc</artifactId>
346348
<version>${project.version}</version>
347349
</dependency>
350+
<dependency>
351+
<groupId>com.navercorp.pinpoint</groupId>
352+
<artifactId>pinpoint-redis</artifactId>
353+
<version>${project.version}</version>
354+
</dependency>
348355
<dependency>
349356
<groupId>com.navercorp.pinpoint</groupId>
350357
<artifactId>pinpoint-thrift</artifactId>
@@ -459,6 +466,21 @@
459466
<artifactId>pinpoint-uristat-collector</artifactId>
460467
<version>${project.version}</version>
461468
</dependency>
469+
<dependency>
470+
<groupId>com.navercorp.pinpoint</groupId>
471+
<artifactId>pinpoint-realtime-web</artifactId>
472+
<version>${project.version}</version>
473+
</dependency>
474+
<dependency>
475+
<groupId>com.navercorp.pinpoint</groupId>
476+
<artifactId>pinpoint-realtime-collector</artifactId>
477+
<version>${project.version}</version>
478+
</dependency>
479+
<dependency>
480+
<groupId>com.navercorp.pinpoint</groupId>
481+
<artifactId>pinpoint-realtime-common</artifactId>
482+
<version>${project.version}</version>
483+
</dependency>
462484
<dependency>
463485
<groupId>com.navercorp.pinpoint</groupId>
464486
<artifactId>pinpoint-metric</artifactId>

realtime/pom.xml

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<parent>
6+
<artifactId>pinpoint</artifactId>
7+
<groupId>com.navercorp.pinpoint</groupId>
8+
<version>2.6.0-SNAPSHOT</version>
9+
</parent>
10+
<modelVersion>4.0.0</modelVersion>
11+
12+
<artifactId>pinpoint-realtime</artifactId>
13+
<packaging>pom</packaging>
14+
15+
<modules>
16+
<module>realtime-web</module>
17+
<module>realtime-common</module>
18+
<module>realtime-collector</module>
19+
</modules>
20+
21+
</project>

realtime/realtime-collector/pom.xml

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<parent>
6+
<artifactId>pinpoint-realtime</artifactId>
7+
<groupId>com.navercorp.pinpoint</groupId>
8+
<version>2.6.0-SNAPSHOT</version>
9+
</parent>
10+
<modelVersion>4.0.0</modelVersion>
11+
12+
<artifactId>pinpoint-realtime-collector</artifactId>
13+
14+
<properties>
15+
<jdk.version>11</jdk.version>
16+
<jdk.home>${env.JAVA_11_HOME}</jdk.home>
17+
</properties>
18+
19+
<dependencies>
20+
<dependency>
21+
<groupId>com.navercorp.pinpoint</groupId>
22+
<artifactId>pinpoint-realtime-common</artifactId>
23+
</dependency>
24+
<dependency>
25+
<groupId>com.navercorp.pinpoint</groupId>
26+
<artifactId>pinpoint-collector</artifactId>
27+
</dependency>
28+
</dependencies>
29+
30+
</project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
/*
2+
* Copyright 2023 NAVER Corp.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package com.navercorp.pinpoint.realtime.collector;
17+
18+
import com.navercorp.pinpoint.realtime.collector.activethread.count.CollectorActiveThreadCountConfig;
19+
import com.navercorp.pinpoint.realtime.collector.activethread.dump.CollectorActiveThreadDumpConfig;
20+
import com.navercorp.pinpoint.realtime.collector.echo.CollectorEchoConfig;
21+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
22+
import org.springframework.context.annotation.Configuration;
23+
import org.springframework.context.annotation.Import;
24+
25+
/**
26+
* @author youngjin.kim2
27+
*/
28+
@Configuration
29+
@ConditionalOnProperty(value = "pinpoint.modules.realtime.enabled", havingValue = "true")
30+
@Import({
31+
CollectorActiveThreadCountConfig.class,
32+
CollectorActiveThreadDumpConfig.class,
33+
CollectorEchoConfig.class
34+
})
35+
public class RealtimeCollectorConfig {
36+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/*
2+
* Copyright 2023 NAVER Corp.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package com.navercorp.pinpoint.realtime.collector.activethread.count;
17+
18+
import com.navercorp.pinpoint.pubsub.endpoint.PubSubServer;
19+
import com.navercorp.pinpoint.pubsub.endpoint.PubSubServerFactory;
20+
import com.navercorp.pinpoint.realtime.RealtimePubSubServiceDescriptors;
21+
import com.navercorp.pinpoint.realtime.collector.activethread.count.service.ActiveThreadCountService;
22+
import com.navercorp.pinpoint.realtime.collector.activethread.count.service.CollectorActiveThreadCountServiceConfig;
23+
import com.navercorp.pinpoint.redis.pubsub.RedisPubSubConfig;
24+
import org.springframework.context.annotation.Bean;
25+
import org.springframework.context.annotation.Configuration;
26+
import org.springframework.context.annotation.Import;
27+
28+
/**
29+
* @author youngjin.kim2
30+
*/
31+
@Configuration
32+
@Import({ CollectorActiveThreadCountServiceConfig.class, RedisPubSubConfig.class })
33+
public class CollectorActiveThreadCountConfig {
34+
35+
@Bean
36+
PubSubServer atcEndpointServer(
37+
PubSubServerFactory serverFactory,
38+
ActiveThreadCountService service
39+
) {
40+
return serverFactory.build(service::requestAsync, RealtimePubSubServiceDescriptors.ATC);
41+
}
42+
43+
}

0 commit comments

Comments
 (0)