Skip to content

Commit 087475e

Browse files
authored
Add mongoDB plugin report db instance info (#618)
* [#11252]add mongodb v4 plugin,support report instance info
1 parent f25e660 commit 087475e

32 files changed

Lines changed: 1918 additions & 0 deletions

File tree

CHANGES.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ Release Notes.
1212
* Support customization for the length limitation of string configurations
1313
* Add max length configurations in `agent.config` file for service_name and instance_name
1414
* Optimize spring-cloud-gateway 2.1.x, 3.x witness class.
15+
* Support report MongoDB instance info in Mongodb 4.x plugin.
1516

1617
#### Documentation
1718

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
/*
2+
* Licensed to the Apache Software Foundation (ASF) under one or more
3+
* contributor license agreements. See the NOTICE file distributed with
4+
* this work for additional information regarding copyright ownership.
5+
* The ASF licenses this file to You under the Apache License, Version 2.0
6+
* (the "License"); you may not use this file except in compliance with
7+
* the License. You may obtain a copy of the License at
8+
*
9+
* http://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*
17+
*/
18+
19+
package org.apache.skywalking.apm.plugin.mongodb.v4.define.readOperation;
20+
21+
import net.bytebuddy.description.method.MethodDescription;
22+
import net.bytebuddy.matcher.ElementMatcher;
23+
import org.apache.skywalking.apm.agent.core.plugin.interceptor.ConstructorInterceptPoint;
24+
import org.apache.skywalking.apm.agent.core.plugin.interceptor.InstanceMethodsInterceptPoint;
25+
import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.ClassInstanceMethodsEnhancePluginDefine;
26+
import org.apache.skywalking.apm.agent.core.plugin.match.ClassMatch;
27+
import org.apache.skywalking.apm.agent.core.plugin.match.NameMatch;
28+
29+
import static net.bytebuddy.matcher.ElementMatchers.any;
30+
31+
public class AggregateExplainOperationInstrumentation extends ClassInstanceMethodsEnhancePluginDefine {
32+
33+
private static final String WITNESS_CLASS = "com.mongodb.internal.connection.Cluster";
34+
35+
private static final String ENHANCE_CLASS = "com.mongodb.internal.operation.AggregateExplainOperation";
36+
37+
private static final String INTERCEPTOR_CLASS = "org.apache.skywalking.apm.plugin.mongodb.v4.interceptor.operation.OperationNamespaceConstructInterceptor";
38+
39+
@Override
40+
protected String[] witnessClasses() {
41+
return new String[] {WITNESS_CLASS};
42+
}
43+
44+
@Override
45+
protected ClassMatch enhanceClass() {
46+
return NameMatch.byName(ENHANCE_CLASS);
47+
}
48+
49+
@Override
50+
public ConstructorInterceptPoint[] getConstructorsInterceptPoints() {
51+
return new ConstructorInterceptPoint[] {
52+
new ConstructorInterceptPoint() {
53+
@Override
54+
public ElementMatcher<MethodDescription> getConstructorMatcher() {
55+
return any();
56+
}
57+
58+
@Override
59+
public String getConstructorInterceptor() {
60+
return INTERCEPTOR_CLASS;
61+
}
62+
}
63+
};
64+
}
65+
66+
@Override
67+
public InstanceMethodsInterceptPoint[] getInstanceMethodsInterceptPoints() {
68+
return new InstanceMethodsInterceptPoint[0];
69+
}
70+
71+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
/*
2+
* Licensed to the Apache Software Foundation (ASF) under one or more
3+
* contributor license agreements. See the NOTICE file distributed with
4+
* this work for additional information regarding copyright ownership.
5+
* The ASF licenses this file to You under the Apache License, Version 2.0
6+
* (the "License"); you may not use this file except in compliance with
7+
* the License. You may obtain a copy of the License at
8+
*
9+
* http://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*
17+
*/
18+
19+
package org.apache.skywalking.apm.plugin.mongodb.v4.define.readOperation;
20+
21+
import net.bytebuddy.description.method.MethodDescription;
22+
import net.bytebuddy.matcher.ElementMatcher;
23+
import org.apache.skywalking.apm.agent.core.plugin.interceptor.ConstructorInterceptPoint;
24+
import org.apache.skywalking.apm.agent.core.plugin.interceptor.InstanceMethodsInterceptPoint;
25+
import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.ClassInstanceMethodsEnhancePluginDefine;
26+
import org.apache.skywalking.apm.agent.core.plugin.match.ClassMatch;
27+
import org.apache.skywalking.apm.agent.core.plugin.match.NameMatch;
28+
29+
import static net.bytebuddy.matcher.ElementMatchers.takesArguments;
30+
31+
public class AggregateOperationImplInstrumentation extends ClassInstanceMethodsEnhancePluginDefine {
32+
33+
private static final String WITNESS_CLASS = "com.mongodb.internal.connection.Cluster";
34+
35+
private static final String ENHANCE_CLASS = "com.mongodb.internal.operation.AggregateOperation";
36+
37+
private static final String INTERCEPTOR_CLASS = "org.apache.skywalking.apm.plugin.mongodb.v4.interceptor.operation.OperationNamespaceConstructInterceptor";
38+
39+
@Override
40+
protected String[] witnessClasses() {
41+
return new String[] {WITNESS_CLASS};
42+
}
43+
44+
@Override
45+
protected ClassMatch enhanceClass() {
46+
return NameMatch.byName(ENHANCE_CLASS);
47+
}
48+
49+
@Override
50+
public ConstructorInterceptPoint[] getConstructorsInterceptPoints() {
51+
return new ConstructorInterceptPoint[] {
52+
new ConstructorInterceptPoint() {
53+
54+
@Override
55+
public ElementMatcher<MethodDescription> getConstructorMatcher() {
56+
return takesArguments(4);
57+
}
58+
59+
@Override
60+
public String getConstructorInterceptor() {
61+
return INTERCEPTOR_CLASS;
62+
}
63+
}
64+
};
65+
}
66+
67+
@Override
68+
public InstanceMethodsInterceptPoint[] getInstanceMethodsInterceptPoints() {
69+
return new InstanceMethodsInterceptPoint[0];
70+
}
71+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
/*
2+
* Licensed to the Apache Software Foundation (ASF) under one or more
3+
* contributor license agreements. See the NOTICE file distributed with
4+
* this work for additional information regarding copyright ownership.
5+
* The ASF licenses this file to You under the Apache License, Version 2.0
6+
* (the "License"); you may not use this file except in compliance with
7+
* the License. You may obtain a copy of the License at
8+
*
9+
* http://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*
17+
*/
18+
19+
package org.apache.skywalking.apm.plugin.mongodb.v4.define.readOperation;
20+
21+
import net.bytebuddy.description.method.MethodDescription;
22+
import net.bytebuddy.matcher.ElementMatcher;
23+
import org.apache.skywalking.apm.agent.core.plugin.interceptor.ConstructorInterceptPoint;
24+
import org.apache.skywalking.apm.agent.core.plugin.interceptor.InstanceMethodsInterceptPoint;
25+
import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.ClassInstanceMethodsEnhancePluginDefine;
26+
import org.apache.skywalking.apm.agent.core.plugin.match.ClassMatch;
27+
import org.apache.skywalking.apm.agent.core.plugin.match.NameMatch;
28+
29+
import static net.bytebuddy.matcher.ElementMatchers.takesArguments;
30+
31+
public class AggregateOperationInstrumentation extends ClassInstanceMethodsEnhancePluginDefine {
32+
33+
private static final String WITNESS_CLASS = "com.mongodb.internal.connection.Cluster";
34+
35+
private static final String ENHANCE_CLASS = "com.mongodb.internal.operation.AggregateOperationImpl";
36+
37+
private static final String INTERCEPTOR_CLASS = "org.apache.skywalking.apm.plugin.mongodb.v4.interceptor.operation.OperationNamespaceConstructInterceptor";
38+
39+
@Override
40+
protected String[] witnessClasses() {
41+
return new String[] {WITNESS_CLASS};
42+
}
43+
44+
@Override
45+
protected ClassMatch enhanceClass() {
46+
return NameMatch.byName(ENHANCE_CLASS);
47+
}
48+
49+
@Override
50+
public ConstructorInterceptPoint[] getConstructorsInterceptPoints() {
51+
return new ConstructorInterceptPoint[] {
52+
new ConstructorInterceptPoint() {
53+
54+
@Override
55+
public ElementMatcher<MethodDescription> getConstructorMatcher() {
56+
return takesArguments(5);
57+
}
58+
59+
@Override
60+
public String getConstructorInterceptor() {
61+
return INTERCEPTOR_CLASS;
62+
}
63+
}
64+
};
65+
}
66+
67+
@Override
68+
public InstanceMethodsInterceptPoint[] getInstanceMethodsInterceptPoints() {
69+
return new InstanceMethodsInterceptPoint[0];
70+
}
71+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
/*
2+
* Licensed to the Apache Software Foundation (ASF) under one or more
3+
* contributor license agreements. See the NOTICE file distributed with
4+
* this work for additional information regarding copyright ownership.
5+
* The ASF licenses this file to You under the Apache License, Version 2.0
6+
* (the "License"); you may not use this file except in compliance with
7+
* the License. You may obtain a copy of the License at
8+
*
9+
* http://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*
17+
*/
18+
19+
package org.apache.skywalking.apm.plugin.mongodb.v4.define.readOperation;
20+
21+
import net.bytebuddy.description.method.MethodDescription;
22+
import net.bytebuddy.matcher.ElementMatcher;
23+
import org.apache.skywalking.apm.agent.core.plugin.interceptor.ConstructorInterceptPoint;
24+
import org.apache.skywalking.apm.agent.core.plugin.interceptor.InstanceMethodsInterceptPoint;
25+
import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.ClassInstanceMethodsEnhancePluginDefine;
26+
import org.apache.skywalking.apm.agent.core.plugin.match.ClassMatch;
27+
import org.apache.skywalking.apm.agent.core.plugin.match.NameMatch;
28+
29+
import static net.bytebuddy.matcher.ElementMatchers.takesArguments;
30+
31+
public class ChangeStreamOperationInstrumentation extends ClassInstanceMethodsEnhancePluginDefine {
32+
33+
private static final String WITNESS_CLASS = "com.mongodb.internal.connection.Cluster";
34+
35+
private static final String ENHANCE_CLASS = "com.mongodb.internal.operation.ChangeStreamOperation";
36+
37+
private static final String INTERCEPTOR_CLASS = "org.apache.skywalking.apm.plugin.mongodb.v4.interceptor.operation.OperationNamespaceConstructInterceptor";
38+
39+
@Override
40+
protected String[] witnessClasses() {
41+
return new String[] {WITNESS_CLASS};
42+
}
43+
44+
@Override
45+
protected ClassMatch enhanceClass() {
46+
return NameMatch.byName(ENHANCE_CLASS);
47+
}
48+
49+
@Override
50+
public ConstructorInterceptPoint[] getConstructorsInterceptPoints() {
51+
return new ConstructorInterceptPoint[] {
52+
new ConstructorInterceptPoint() {
53+
54+
@Override
55+
public ElementMatcher<MethodDescription> getConstructorMatcher() {
56+
return takesArguments(5);
57+
}
58+
59+
@Override
60+
public String getConstructorInterceptor() {
61+
return INTERCEPTOR_CLASS;
62+
}
63+
}
64+
};
65+
}
66+
67+
@Override
68+
public InstanceMethodsInterceptPoint[] getInstanceMethodsInterceptPoints() {
69+
return new InstanceMethodsInterceptPoint[0];
70+
}
71+
72+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
/*
2+
* Licensed to the Apache Software Foundation (ASF) under one or more
3+
* contributor license agreements. See the NOTICE file distributed with
4+
* this work for additional information regarding copyright ownership.
5+
* The ASF licenses this file to You under the Apache License, Version 2.0
6+
* (the "License"); you may not use this file except in compliance with
7+
* the License. You may obtain a copy of the License at
8+
*
9+
* http://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*
17+
*/
18+
19+
package org.apache.skywalking.apm.plugin.mongodb.v4.define.readOperation;
20+
21+
import net.bytebuddy.description.method.MethodDescription;
22+
import net.bytebuddy.matcher.ElementMatcher;
23+
import org.apache.skywalking.apm.agent.core.plugin.interceptor.ConstructorInterceptPoint;
24+
import org.apache.skywalking.apm.agent.core.plugin.interceptor.InstanceMethodsInterceptPoint;
25+
import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.ClassInstanceMethodsEnhancePluginDefine;
26+
import org.apache.skywalking.apm.agent.core.plugin.match.ClassMatch;
27+
import org.apache.skywalking.apm.agent.core.plugin.match.NameMatch;
28+
29+
import static net.bytebuddy.matcher.ElementMatchers.any;
30+
31+
public class CommandReadOperationInstrumentation extends ClassInstanceMethodsEnhancePluginDefine {
32+
33+
private static final String WITNESS_CLASS = "com.mongodb.internal.connection.Cluster";
34+
35+
private static final String ENHANCE_CLASS = "com.mongodb.internal.operation.CommandReadOperation";
36+
37+
private static final String INTERCEPTOR_CLASS = "org.apache.skywalking.apm.plugin.mongodb.v4.interceptor.operation.OperationDatabaseConstructInterceptor";
38+
39+
@Override
40+
protected String[] witnessClasses() {
41+
return new String[] {WITNESS_CLASS};
42+
}
43+
44+
@Override
45+
protected ClassMatch enhanceClass() {
46+
return NameMatch.byName(ENHANCE_CLASS);
47+
}
48+
49+
@Override
50+
public ConstructorInterceptPoint[] getConstructorsInterceptPoints() {
51+
return new ConstructorInterceptPoint[] {
52+
new ConstructorInterceptPoint() {
53+
54+
@Override
55+
public ElementMatcher<MethodDescription> getConstructorMatcher() {
56+
return any();
57+
}
58+
59+
@Override
60+
public String getConstructorInterceptor() {
61+
return INTERCEPTOR_CLASS;
62+
}
63+
}
64+
};
65+
}
66+
67+
@Override
68+
public InstanceMethodsInterceptPoint[] getInstanceMethodsInterceptPoints() {
69+
return new InstanceMethodsInterceptPoint[0];
70+
}
71+
72+
}

0 commit comments

Comments
 (0)