HDDS-342. Add example byteman script to print out hadoop rpc traffic.
Contributed by Elek, Marton.
This commit is contained in:
parent
4c25f37c6c
commit
af4b705b5f
|
@ -0,0 +1,31 @@
|
||||||
|
<!--
|
||||||
|
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.
|
||||||
|
-->
|
||||||
|
|
||||||
|
This folder contains example byteman scripts (http://byteman.jboss.org/) to help
|
||||||
|
Hadoop debuging.
|
||||||
|
|
||||||
|
As the startup script of the hadoop-runner docker image supports byteman
|
||||||
|
instrumentation it's enough to set the URL of a script to a specific environment
|
||||||
|
variable to activate it with the docker runs:
|
||||||
|
|
||||||
|
|
||||||
|
```
|
||||||
|
BYTEMAN_SCRIPT_URL=https://raw.githubusercontent.com/apache/hadoop/trunk/dev-support/byteman/hadooprpc.btm
|
||||||
|
```
|
||||||
|
|
||||||
|
For more info see HADOOP-15656 and HDDS-342
|
||||||
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
#
|
||||||
|
# This script instruments hadoop rpc layer to print out all the request/response messages to the standard output.
|
||||||
|
#
|
||||||
|
|
||||||
|
RULE Hadoop RPC request
|
||||||
|
INTERFACE ^com.google.protobuf.BlockingService
|
||||||
|
METHOD callBlockingMethod
|
||||||
|
IF true
|
||||||
|
DO traceln("--> RPC message request: " + $3.getClass().getSimpleName() + " from " + linked(Thread.currentThread(), "source"));
|
||||||
|
traceln($3.toString())
|
||||||
|
ENDRULE
|
||||||
|
|
||||||
|
|
||||||
|
RULE Hadoop RPC response
|
||||||
|
INTERFACE ^com.google.protobuf.BlockingService
|
||||||
|
METHOD callBlockingMethod
|
||||||
|
AT EXIT
|
||||||
|
IF true
|
||||||
|
DO traceln("--> RPC message response: " + $3.getClass().getSimpleName() + " to " + unlink(Thread.currentThread(), "source"));
|
||||||
|
traceln($!.toString())
|
||||||
|
ENDRULE
|
||||||
|
|
||||||
|
|
||||||
|
RULE Hadoop RPC source IP
|
||||||
|
CLASS org.apache.hadoop.ipc.Server$RpcCall
|
||||||
|
METHOD run
|
||||||
|
IF true
|
||||||
|
DO link(Thread.currentThread(), "source", $0.connection.toString())
|
||||||
|
ENDRULE
|
|
@ -29,3 +29,5 @@ LOG4J.PROPERTIES_log4j.rootLogger=INFO, stdout
|
||||||
LOG4J.PROPERTIES_log4j.appender.stdout=org.apache.log4j.ConsoleAppender
|
LOG4J.PROPERTIES_log4j.appender.stdout=org.apache.log4j.ConsoleAppender
|
||||||
LOG4J.PROPERTIES_log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
|
LOG4J.PROPERTIES_log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
|
||||||
LOG4J.PROPERTIES_log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
|
LOG4J.PROPERTIES_log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
|
||||||
|
#Enable this variable to print out all hadoop rpc traffic to the stdout. See http://byteman.jboss.org/ to define your own instrumentation.
|
||||||
|
#BYTEMAN_SCRIPT_URL=https://raw.githubusercontent.com/apache/hadoop/trunk/dev-support/byteman/hadooprpc.btm
|
||||||
|
|
Loading…
Reference in New Issue