ソースを参照

HADOOP-3719. Initial checkin of Chukwa, which is a data collection and
analysis framework. (Jerome Boulon, Andy Konwinski, Ari Rabkin,
and Eric Yang)


git-svn-id: https://svn.apache.org/repos/asf/hadoop/core/trunk@685353 13f79535-47bb-0310-9956-ffa450edef68

Owen O'Malley 17 年 前
コミット
bc8b51c02b
100 ファイル変更10274 行追加0 行削除
  1. 4 0
      CHANGES.txt
  2. 202 0
      src/contrib/chukwa/LICENSE.txt
  3. 1 0
      src/contrib/chukwa/bin/VERSION
  4. 26 0
      src/contrib/chukwa/bin/agent.sh
  5. 30 0
      src/contrib/chukwa/bin/buildDailyArchive.sh
  6. 30 0
      src/contrib/chukwa/bin/buildHourlyArchive.sh
  7. 104 0
      src/contrib/chukwa/bin/chukwa-config.sh
  8. 31 0
      src/contrib/chukwa/bin/jettyCollector.sh
  9. 59 0
      src/contrib/chukwa/bin/jobhisttailstarter.sh
  10. 59 0
      src/contrib/chukwa/bin/processSinkFiles.sh
  11. 81 0
      src/contrib/chukwa/bin/shutdown.sh
  12. 54 0
      src/contrib/chukwa/bin/startup.sh
  13. 28 0
      src/contrib/chukwa/bin/systemDataLoader.sh
  14. 112 0
      src/contrib/chukwa/bin/watchdog.sh
  15. 359 0
      src/contrib/chukwa/build.xml
  16. 24 0
      src/contrib/chukwa/chukwafy_jobhist.awk
  17. 20 0
      src/contrib/chukwa/conf/chukwa-agent-conf.xml
  18. 37 0
      src/contrib/chukwa/conf/chukwa-agent-conf.xml.template
  19. 32 0
      src/contrib/chukwa/conf/chukwa-collector-conf.xml
  20. 32 0
      src/contrib/chukwa/conf/chukwa-collector-conf.xml.template
  21. 25 0
      src/contrib/chukwa/conf/chukwa-env.sh
  22. 25 0
      src/contrib/chukwa/conf/chukwa-env.sh.template
  23. 1 0
      src/contrib/chukwa/conf/collectors
  24. 1 0
      src/contrib/chukwa/conf/collectors.template
  25. 7 0
      src/contrib/chukwa/conf/commons-logging.properties
  26. 43 0
      src/contrib/chukwa/conf/fields.spec
  27. 8 0
      src/contrib/chukwa/conf/joblog.properties
  28. 23 0
      src/contrib/chukwa/conf/log4j.properties
  29. 1097 0
      src/contrib/chukwa/conf/mdl.xml
  30. 1097 0
      src/contrib/chukwa/conf/mdl.xml.template
  31. 1212 0
      src/contrib/chukwa/conf/mysql_create_tables
  32. 4 0
      src/contrib/chukwa/conf/mysql_upgrade_tables
  33. 8 0
      src/contrib/chukwa/conf/nodeActivity.properties
  34. 8 0
      src/contrib/chukwa/conf/queueinfo.properties
  35. 13 0
      src/contrib/chukwa/conf/system-data-loader.properties
  36. 8 0
      src/contrib/chukwa/conf/torque.properties
  37. 8 0
      src/contrib/chukwa/conf/util.properties
  38. 96 0
      src/contrib/chukwa/docs/README
  39. BIN
      src/contrib/chukwa/docs/paper/chukwa0.jpg
  40. BIN
      src/contrib/chukwa/docs/paper/chukwa1.jpg
  41. 299 0
      src/contrib/chukwa/docs/paper/chukwa_08.tex
  42. BIN
      src/contrib/chukwa/docs/paper/hicc_in_action2.png
  43. 94 0
      src/contrib/chukwa/docs/paper/usenix.sty
  44. BIN
      src/contrib/chukwa/docs/paper/widget.png
  45. 23 0
      src/contrib/chukwa/hadoop-packaging/build-tarball.sh
  46. 112 0
      src/contrib/chukwa/hadoop-packaging/log4j.properties.templ
  47. 3 0
      src/contrib/chukwa/hadoop-packaging/patchhadoop.patch
  48. BIN
      src/contrib/chukwa/hadoopjars/hadoop-0.18.0-core.jar
  49. 202 0
      src/contrib/chukwa/lib/ant-LICENSE.txt
  50. 98 0
      src/contrib/chukwa/lib/ant-README.txt
  51. BIN
      src/contrib/chukwa/lib/ant.jar
  52. 202 0
      src/contrib/chukwa/lib/commons-codec-1.3-LICENSE.txt
  53. 15 0
      src/contrib/chukwa/lib/commons-codec-1.3-README.txt
  54. BIN
      src/contrib/chukwa/lib/commons-codec-1.3.jar
  55. 202 0
      src/contrib/chukwa/lib/commons-fileupload-1.2-LICENSE.txt
  56. 5 0
      src/contrib/chukwa/lib/commons-fileupload-1.2-README.txt
  57. BIN
      src/contrib/chukwa/lib/commons-fileupload-1.2.jar
  58. 202 0
      src/contrib/chukwa/lib/commons-httpclient-3.1-LICENSE.txt
  59. 13 0
      src/contrib/chukwa/lib/commons-httpclient-3.1-README.txt
  60. BIN
      src/contrib/chukwa/lib/commons-httpclient-3.1.jar
  61. 202 0
      src/contrib/chukwa/lib/commons-io-1.4-LICENSE.txt
  62. 6 0
      src/contrib/chukwa/lib/commons-io-1.4-README.txt
  63. BIN
      src/contrib/chukwa/lib/commons-io-1.4.jar
  64. 202 0
      src/contrib/chukwa/lib/commons-logging-LICENSE.txt
  65. 5 0
      src/contrib/chukwa/lib/commons-logging-README.txt
  66. 202 0
      src/contrib/chukwa/lib/commons-logging-adapters-1.1-LICENSE.txt
  67. BIN
      src/contrib/chukwa/lib/commons-logging-adapters-1.1.jar
  68. 202 0
      src/contrib/chukwa/lib/commons-logging-api-1.1-LICENSE.txt
  69. BIN
      src/contrib/chukwa/lib/commons-logging-api-1.1.jar
  70. BIN
      src/contrib/chukwa/lib/commons-logging.jar
  71. 202 0
      src/contrib/chukwa/lib/jetty-6.1.11-LICENSE.txt
  72. 142 0
      src/contrib/chukwa/lib/jetty-6.1.11-README.txt
  73. BIN
      src/contrib/chukwa/lib/jetty-6.1.11.jar
  74. BIN
      src/contrib/chukwa/lib/jetty-util-6.1.11.jar
  75. 9 0
      src/contrib/chukwa/lib/json-LICENSE.txt
  76. 563 0
      src/contrib/chukwa/lib/json-README.txt
  77. BIN
      src/contrib/chukwa/lib/json.jar
  78. 202 0
      src/contrib/chukwa/lib/jsp-api-LICENSE.txt
  79. 17 0
      src/contrib/chukwa/lib/jsp-api-README.txt
  80. BIN
      src/contrib/chukwa/lib/jsp-api.jar
  81. 88 0
      src/contrib/chukwa/lib/junit-LICENSE.txt
  82. 570 0
      src/contrib/chukwa/lib/junit-README.html
  83. BIN
      src/contrib/chukwa/lib/junit.jar
  84. 88 0
      src/contrib/chukwa/lib/log4j-1.2.13-LICENSE.txt
  85. 5 0
      src/contrib/chukwa/lib/log4j-1.2.13-README.txt
  86. BIN
      src/contrib/chukwa/lib/log4j-1.2.13.jar
  87. 88 0
      src/contrib/chukwa/lib/servlet-LICENSE.txt
  88. 17 0
      src/contrib/chukwa/lib/servlet-README.txt
  89. 88 0
      src/contrib/chukwa/lib/servlet-api-LICENSE.txt
  90. 17 0
      src/contrib/chukwa/lib/servlet-api-README.txt
  91. BIN
      src/contrib/chukwa/lib/servlet-api.jar
  92. BIN
      src/contrib/chukwa/lib/servlet.jar
  93. 88 0
      src/contrib/chukwa/lib/taglibs-LICENSE.txt
  94. 65 0
      src/contrib/chukwa/lib/taglibs-README.txt
  95. BIN
      src/contrib/chukwa/lib/taglibs.jar
  96. 286 0
      src/contrib/chukwa/src/java/org/apache/hadoop/chukwa/ChukwaArchiveKey.java
  97. 96 0
      src/contrib/chukwa/src/java/org/apache/hadoop/chukwa/Chunk.java
  98. 63 0
      src/contrib/chukwa/src/java/org/apache/hadoop/chukwa/ChunkBuilder.java
  99. 234 0
      src/contrib/chukwa/src/java/org/apache/hadoop/chukwa/ChunkImpl.java
  100. 48 0
      src/contrib/chukwa/src/java/org/apache/hadoop/chukwa/conf/ChukwaConfiguration.java

+ 4 - 0
CHANGES.txt

@@ -78,6 +78,10 @@ Trunk (unreleased changes)
     HADOOP-657. Free disk space should be modelled and used by the scheduler
     to make scheduling decisions. (Ari Rabkin via omalley)
 
+    HADOOP-3719. Initial checkin of Chukwa, which is a data collection and 
+    analysis framework. (Jerome Boulon, Andy Konwinski, Ari Rabkin, 
+    and Eric Yang)
+
   IMPROVEMENTS
 
     HADOOP-3732. Delay intialization of datanode block verification till

+ 202 - 0
src/contrib/chukwa/LICENSE.txt

@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.

+ 1 - 0
src/contrib/chukwa/bin/VERSION

@@ -0,0 +1 @@
+0.0.1

+ 26 - 0
src/contrib/chukwa/bin/agent.sh

@@ -0,0 +1,26 @@
+#!/bin/sh
+# 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.
+
+pid=$$
+
+bin=`dirname "$0"`
+bin=`cd "$bin"; pwd`
+
+. "$bin"/chukwa-config.sh
+
+echo "${pid}" > "$CHUKWA_HOME/var/run/Agent.pid"
+
+${JAVA_HOME}/bin/java -DCHUKWA_HOME=${CHUKWA_HOME} -classpath ${CLASSPATH}:${chukwaCore}:${chukwaAgent}:${HADOOP_JAR}:${CHUKWA_HOME}/conf:${HADOOP_HOME}/conf:${common} org.apache.hadoop.chukwa.datacollection.agent.ChukwaAgent $@

+ 30 - 0
src/contrib/chukwa/bin/buildDailyArchive.sh

@@ -0,0 +1,30 @@
+#!/bin/sh
+# 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.
+
+pid=$$
+
+bin=`dirname "$0"`
+bin=`cd "$bin"; pwd`
+. "$bin"/chukwa-config.sh
+
+echo "${pid}" > "$CHUKWA_HOME/var/run/BuildDailyArchive.pid"
+
+HADOOP_CONF_DIR="${HADOOP_HOME}/conf/"
+HADOOP_CMDE="${HADOOP_HOME}/bin/hadoop "
+
+
+  $HADOOP_CMDE jar ${chukwaCore} org.apache.hadoop.chukwa.extraction.archive.ChuckwaArchiveBuilder Daily $srcEventHdfsDir ${chuwaRecordsRepository}
+ 

+ 30 - 0
src/contrib/chukwa/bin/buildHourlyArchive.sh

@@ -0,0 +1,30 @@
+#!/bin/sh
+# 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.
+
+pid=$$
+
+bin=`dirname "$0"`
+bin=`cd "$bin"; pwd`
+. "$bin"/chukwa-config.sh
+
+echo "${pid}" > "$CHUKWA_HOME/var/run/BuildDailyArchive.pid"
+
+HADOOP_CONF_DIR="${HADOOP_HOME}/conf/"
+HADOOP_CMDE="${HADOOP_HOME}/bin/hadoop "
+
+
+  $HADOOP_CMDE jar ${chukwaCore} org.apache.hadoop.chukwa.extraction.archive.ChuckwaArchiveBuilder Hourly $srcEventHdfsDir ${chuwaRecordsRepository}
+ 

+ 104 - 0
src/contrib/chukwa/bin/chukwa-config.sh

@@ -0,0 +1,104 @@
+# 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.
+
+# included in all the hadoop scripts with source command
+# should not be executable directly
+# also should not be passed any arguments, since we need original $*
+
+# resolve links - $0 may be a softlink
+
+this="$0"
+while [ -h "$this" ]; do
+  ls=`ls -ld "$this"`
+  link=`expr "$ls" : '.*-> \(.*\)$'`
+  if expr "$link" : '.*/.*' > /dev/null; then
+    this="$link"
+  else
+    this=`dirname "$this"`/"$link"
+  fi
+done
+
+# convert relative path to absolute path
+bin=`dirname "$this"`
+script=`basename "$this"`
+bin=`cd "$bin"; pwd`
+this="$bin/$script"
+
+. ${bin}/../conf/chukwa-env.sh
+
+export HADOOP_HOME="${HADOOP_HOME:-${bin}/../../../..}"
+
+# the root of the Chukwa installation
+if [ -z $CHUKWA_HOME ] ; then
+CHUKWA_HOME=`dirname "$this"`/..
+export CHUKWA_HOME=`cd $CHUKWA_HOME; pwd`
+fi
+
+chukwaVersion=`cat ${CHUKWA_HOME}/bin/VERSION`
+DEFAULT_CHUKWA_HOME=${CHUKWA_HOME}/logs/
+export CHUKWA_LOG_DIR="${CHUKWA_LOG_DIR:-$DEFAULT_CHUKWA_HOME}"
+if [ ! -d $CHUKWA_LOG_DIR ]; then
+  mkdir -p $CHUKWA_LOG_DIR
+fi
+
+export chuwaRecordsRepository="/chukwa/repos/demo"
+
+export DATACONFIG=${CHUKWA_HOME}/conf/mdl.xml
+common=`ls ${CHUKWA_HOME}/lib/*.jar`
+export common=`echo ${common} | sed 'y/ /:/'`
+
+#chukwaCore=${HADOOP_HOME}/build/contrib/chukwa/chukwa-core-${chukwaVersion}.jar
+chukwaCore=${HADOOP_HOME}/build/contrib/chukwa
+if [ -a $chukwaCore ] ; then
+  export chukwaCore
+else
+  echo ${chukwaCore} does not exist
+  export chukwaCore=${CHUKWA_HOME}/chukwa-core-${chukwaVersion}.jar
+fi
+
+#chukwaAgent=${HADOOP_HOME}/build/contrib/chukwa/chukwa-agent-${chukwaVersion}.jar
+chukwaAgent=${HADOOP_HOME}/build/contrib/chukwa
+if [ -a $chukwaAgent ] ; then
+  export chukwaAgent
+else
+  echo ${chukwaAgent} does not exist
+  export chukwaAgent=${CHUKWA_HOME}/chukwa-agent-${chukwaVersion}.jar
+fi
+
+echo chukwaCore is ${chukwaCore} and chukwaAgent is ${chukwaAgent}
+
+export CURRENT_DATE=`date +%Y%m%d%H%M`
+export TS_CONFIG=${CHUKWA_HOME}/conf/ts
+export tomcat=${CHUKWA_HOME}/opt/apache-tomcat-6.0.16
+if [ -d ${HADOOP_HOME}/build/classes ]; then
+  DEFAULT_HADOOP_JAR=${HADOOP_HOME}/build/classes
+# this doesn't work, but needs to be replaced with something that does
+#elif [ls ${HADOOP_HOME}/build/hadoop-*-core.jar` ]; then
+#  echo setting DEFAULT_HADOOP_JAR to `ls ${HADOOP_HOME}/build/hadoop-*-core.jar`
+#  DEFAULT_HADOOP_JAR=`ls ${HADOOP_HOME}/build/hadoop-*-core.jar`
+else
+  DEFAULT_HADOOP_JAR=${CHUKWA_HOME}/hadoopjars/hadoop-0.18.0-core.jar
+fi
+export HADOOP_JAR=${HADOOP_JAR:-$DEFAULT_HADOOP_JAR}
+
+echo
+echo HADOOP_JAR is $HADOOP_JAR
+echo
+
+export CHUKWA_LOG_DIR="${CHUKWA_HOME}/logs/"
+DEFAULT_PID_DIR=${CHUKWA_HOME}/var/run
+export CHUKWA_PID_DIR="${CHUKWA_PID_DIR:-$DEFAULT_PID_DIR}"
+export chuwaRecordsRepository="/chukwa/repos/demo"
+

+ 31 - 0
src/contrib/chukwa/bin/jettyCollector.sh

@@ -0,0 +1,31 @@
+#!/bin/sh
+# 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.
+
+pid=$$
+
+bin=`dirname "$0"`
+bin=`cd "$bin"; pwd`
+
+. "$bin"/chukwa-config.sh
+
+echo "${pid}" > "${CHUKWA_PID_DIR}/Collector.pid"
+
+
+if [ $# -lt 1 ]; then 
+${JAVA_HOME}/bin/java -classpath ${CLASSPATH}:${chukwaCore}:${common}:${HADOOP_JAR}:${CHUKWA_HOME}/conf:${HADOOP_HOME}/conf org.apache.hadoop.chukwa.datacollection.collector.CollectorStub 9310
+else
+${JAVA_HOME}/bin/java -classpath ${CLASSPATH}:${chukwaCore}:${common}:${HADOOP_JAR}:${CHUKWA_HOME}/conf:${HADOOP_HOME}/conf org.apache.hadoop.chukwa.datacollection.collector.CollectorStub $@
+fi

+ 59 - 0
src/contrib/chukwa/bin/jobhisttailstarter.sh

@@ -0,0 +1,59 @@
+#!/bin/bash
+# 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.
+
+# A script to tell chukwa to monitor job history files.
+# Rather simpleminded -- gets a list of what's being monitored,
+# and tells chukwa to watch everything in job hist that it isn't already scanning.
+#   Relies on having netcat. Also, control socket portno is currently hardcoded,
+#   as are hostname and adaptor name.
+
+if [ $# -lt 1 ]; then
+         echo 1>&2 Usage: $0 '<path to job history files>'
+         exit 127
+    fi
+
+
+JOB_HIST=`(cd $1; pwd)`  #returns an absolute path
+echo "assuming job history logs live in $JOB_HIST"
+JOBHISTFILES=/tmp/jobhistfiles
+TAILEDFILES=/tmp/tailedhists
+
+#Step 1 -- get a list of currently watched files
+(nc localhost 9093 | grep -o "[^/]*$" | grep -o '^[^ ]*' | sort > $TAILEDFILES)  <<HERE
+list
+close
+HERE
+
+#step 2 -- get the list of history files
+ls $JOB_HIST | grep -v '\.xml' | sort  > $JOBHISTFILES
+#step 3 -- start watching each new history file
+#find files that aren't being watched, and are in job history dir
+#NEWHISTFILES=`cat $JOBHISTFILES`
+#NEWHISTFILES=`sort /tmp/both | uniq -u > /tmp/one`| uniq -d - $JOBHISTFILES`
+
+cat $JOBHISTFILES $TAILEDFILES | sort | uniq -u > /tmp/either  
+#either not tailed, or not a history file
+NEWHISTFILES=`cat /tmp/either $JOBHISTFILES | sort | uniq -d`
+#better be a job history file -- hence, not being tailed
+
+for job in $NEWHISTFILES ; do
+	#new jobs are rare, safe to create socket per job hist file
+nc localhost 9093 <<HERE
+add LineFileTailUTF8 $JOB_HIST$job 0
+close
+HERE
+  echo "told Chukwa agent to start watching $job"
+done

+ 59 - 0
src/contrib/chukwa/bin/processSinkFiles.sh

@@ -0,0 +1,59 @@
+#!/bin/sh
+# 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.
+
+pid=$$
+
+bin=`dirname "$0"`
+bin=`cd "$bin"; pwd`
+. "$bin"/chukwa-config.sh
+
+echo "${pid}" > "${CHUKWA_PID_DIR}/ProcessSinkFiles.pid"
+
+HADOOP_CONF_DIR="${HADOOP_HOME}/conf/"
+HADOOP_CMDE="${HADOOP_HOME}/bin/hadoop "
+
+while [ 1 ]
+do 
+  
+  
+  now=`date +%s`
+  strDate=`date +%m/%d/%y%n`
+  srcDoneHdfsDir="/chukwa/tmp/srcDone$now/"
+  srcEventHdfsDir="/chukwa/tmp/srcEvent$now/"
+
+  echo "Running $strDate $now" >> "${CHUKWA_LOG_DIR}/mr.log"
+
+  echo "srcDoneHdfsDir: $srcDoneHdfsDir srcEventHdfsDir: $srcEventHdfsDir" >> "${MR_LOG}"
+
+  $HADOOP_CMDE dfs -mkdir $srcDoneHdfsDir
+  echo "done with mkdir" >> "${CHUKWA_LOG_DIR}/mr.log"
+ 
+  $HADOOP_CMDE dfs -mv "/chukwa/logs/*/*.done" $srcDoneHdfsDir
+  echo "done with mv logs" >> "${CHUKWA_LOG_DIR}/mr.log"
+ 
+  $HADOOP_CMDE jar ${chukwaCore} org.apache.hadoop.chukwa.extraction.demux.Demux -r 2 $srcDoneHdfsDir $srcEventHdfsDir
+  echo "done with demux job" >> "${CHUKWA_LOG_DIR}/mr.log"
+ 
+  $HADOOP_CMDE jar ${chukwaCore} org.apache.hadoop.chukwa.extraction.demux.MoveOrMergeLogFile $srcEventHdfsDir ${chuwaRecordsRepository}
+  echo "done with MoveOrMergeLogFile" >> "${CHUKWA_LOG_DIR}/mr.log"
+
+  now=`date +%s`
+  strDate=`date +%m/%d/%y%n`
+  echo "Stopping ${strDate} ${now}" >> "${CHUKWA_LOG_DIR}/mr.log"
+
+ sleep 300
+
+done

+ 81 - 0
src/contrib/chukwa/bin/shutdown.sh

@@ -0,0 +1,81 @@
+#!/bin/bash
+
+# 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.
+
+bin=`dirname "$0"`
+bin=`cd "$bin"; pwd`
+java=$JAVA_HOME/bin/java
+
+. "$bin"/chukwa-config.sh
+
+# remove watchdog
+crontab -l | grep -v ${CHUKWA_HOME}/bin/watchdog.sh > /tmp/cron.${CURRENT_DATE}
+crontab /tmp/cron.${CURRENT_DATE}
+rm -f /tmp/cron.${CURRENT_DATE}
+
+# stop torque data loader
+pidFile=$CHUKWA_HOME/var/run/TorqueDataLoader.pid
+if [ -f $pidFile ]; then  
+   echo -n "Shutting down Torque Data Loader.."
+   torquepid=`head ${pidFile}`
+   kill -HUP ${torquepid}
+   # kill -HUP `ps eww |grep TorqueDataLoader |grep -v grep |cut -b 1-5` >/dev/null 2>&1
+   rm ${pidFile}
+   echo "done"
+else
+  echo " no $pidFile"
+fi
+
+# stop util data loader
+pidFile=$CHUKWA_HOME/var/run/UtilDataLoader.pid
+if [ -f $pidFile ]; then  
+    echo -n "Shutting down Util Data Loader.."
+    utilpid=`head ${pidFile}`
+    #kill -HUP `ps eww |grep UtilDataLoader |grep -v grep |cut -b 1-5` >/dev/null 2>&1
+    kill -HUP ${utilpid}
+    rm ${pidFile}
+    echo "done"
+else
+  echo " no $pidFile"
+fi
+
+# stop queue info data loader
+pidFile=$CHUKWA_HOME/var/run/QueueInfoDataLoader.pid
+if [ -f $pidFile ]; then  
+    echo -n "Shutting down Queue Info Data Loader.."
+    queuepid=`head ${pidFile}`
+    #kill -HUP `ps eww |grep QueueInfoDataLoader |grep -v grep |cut -b 1-5` >/dev/null 2>&1
+    kill -HUP ${queuepid}
+    rm ${pidFile}
+    echo "done"
+else 
+  echo " no $pidFile"
+fi
+
+
+# stop queue info data loader
+pidFile=$CHUKWA_HOME/var/run/MapReduceLogLoader.pid
+if [ -f $pidFile ]; then  
+    echo -n "Shutting down Map Reduce Log Loader.."
+    logpid=`head ${pidFile}`
+    #kill -HUP `ps eww |grep MapReduceLogLoader |grep -v grep |cut -b 1-5` >/dev/null 2>&1
+    kill -HUP ${logpid}
+    rm ${pidFile}
+    echo "done"
+else
+  echo " no $pidFile"
+fi
+ 

+ 54 - 0
src/contrib/chukwa/bin/startup.sh

@@ -0,0 +1,54 @@
+#!/bin/bash
+
+# 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.
+
+bin=`dirname "$0"`
+bin=`cd "$bin"; pwd`
+java=$JAVA_HOME/bin/java
+
+. "$bin"/chukwa-config.sh
+crontab -l > /tmp/cron.${CURRENT_DATE}
+crontest=$?
+
+if [ ! -d ${CHUKWA_HOME}/opt/apache-tomcat-6.0.16 ]; then
+  tar fxz ${CHUKWA_HOME}/opt/apache-tomcat-6.0.16.tar.gz -C ${CHUKWA_HOME}/opt
+fi
+
+if [ ! -f ${CHUKWA_HOME}/opt/apache-tomcat-6.0.16/webapps/ts.war ]; then
+  cp ${CHUKWA_HOME}/ts.war ${CHUKWA_HOME}/opt/apache-tomcat-6.0.16/webapps
+fi 
+
+if [ "X$?" != "X0" ]; then
+  cat > /tmp/cron.${CURRENT_DATE} << CRON
+* * * * * ${CHUKWA_HOME}/bin/watchdog.sh
+10 * * * * ${CHUKWA_HOME}/tools/expire.sh 3 /grid/0/tmp/mdl
+CRON
+else
+  grep -v "${CHUKWA_HOME}/bin/watchdog.sh" /tmp/cron.${CURRENT_DATE} | \
+  grep -v "${CHUKWA_HOME}/tools/expire.sh 3 /grid/0/tmp/mdl" > /tmp/cron.${CURRENT_DATE}.2
+  mv /tmp/cron.${CURRENT_DATE}.2 /tmp/cron.${CURRENT_DATE}
+  cat >> /tmp/cron.${CURRENT_DATE} << CRON
+* * * * * ${CHUKWA_HOME}/bin/watchdog.sh
+10 * * * * ${CHUKWA_HOME}/tools/expire.sh 3 /grid/0/tmp/mdl
+CRON
+fi
+
+# save crontab
+echo -n "Registering data loader cron jobs.."
+crontab /tmp/cron.${CURRENT_DATE} > /dev/null 2>&1
+rm -f /tmp/cron.${CURRENT_DATE}
+echo "done"
+

+ 28 - 0
src/contrib/chukwa/bin/systemDataLoader.sh

@@ -0,0 +1,28 @@
+# 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.
+
+pid=$$
+
+bin=`dirname "$0"`
+bin=`cd "$bin"; pwd`
+
+. "$bin"/chukwa-config.sh
+
+echo "${pid}" > "$CHUKWA_HOME/var/run/systemDataLoader.pid"
+
+${JAVA_HOME}/bin/java -DCHUKWA_HOME=${CHUKWA_HOME} -DRECORD_TYPE=Sar -Dlog4j.configuration=system-data-loader.properties -classpath ${CLASSPATH}:${chukwaCore}:${hadoop_jar}:${common}:${tools}:${CHUKWA_HOME}/conf org.apache.hadoop.chukwa.inputtools.plugin.metrics.Exec sar -q -r -n FULL 55 &
+${JAVA_HOME}/bin/java -DCHUKWA_HOME=${CHUKWA_HOME} -DRECORD_TYPE=Iostat -Dlog4j.configuration=system-data-loader.properties -classpath ${CLASSPATH}:${chukwaCore}:${hadoop_jar}:${common}:${tools}:${CHUKWA_HOME}/conf org.apache.hadoop.chukwa.inputtools.plugin.metrics.Exec iostat -x 55 2 &
+${JAVA_HOME}/bin/java -DCHUKWA_HOME=${CHUKWA_HOME} -DRECORD_TYPE=Top -Dlog4j.configuration=system-data-loader.properties -classpath ${CLASSPATH}:${chukwaCore}:${hadoop_jar}:${common}:${tools}:${CHUKWA_HOME}/conf org.apache.hadoop.chukwa.inputtools.plugin.metrics.Exec top -b -n 1 -c &
+#${JAVA_HOME}/bin/java -DRECORD_TYPE=Df -Dlog4j.configuration=system-data-loader.properties -classpath ${CLASSPATH}:${chukwaAgent}:${hadoop_jar}:${common}:${tools}:${CHUKWA_HOME}/conf org.apache.hadoop.chukwa.inputtools.plugin.metrics.Exec df -x nfs -x none &
+

+ 112 - 0
src/contrib/chukwa/bin/watchdog.sh

@@ -0,0 +1,112 @@
+#!/bin/bash
+
+# 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.
+
+bin=`dirname "$0"`
+bin=`cd "$bin"; pwd`
+
+. "$bin"/chukwa-config.sh
+
+java=$JAVA_HOME/bin/java
+jps=$JAVA_HOME/bin/jps
+
+
+min=`date +%M`
+
+
+# start torque data loader
+pidFile=$CHUKWA_HOME/var/run/TorqueDataLoader.pid
+if [ -f $pidFile ]; then
+  pid=`head ${pidFile}`
+  ChildPIDRunningStatus=`${jps} | grep ${pid} | grep TorqueDataLoader | grep -v grep | wc -l`
+  #ChildPIDRunningStatus=`ps -ef | grep TorqueDataLoader | grep -v grep | wc -l`
+  if [ $ChildPIDRunningStatus -lt 1 ]; then
+      ${java} -DCHUKWA_HOME=${CHUKWA_HOME} -Dlog4j.configuration=torque.properties -classpath ${CLASSPATH}:${chukwa}:${ikit}:${common} org.apache.hadoop.chukwa.sources.mdl.TorqueDataLoader&
+  fi 
+else
+      ${java} -DCHUKWA_HOME=${CHUKWA_HOME} -Dlog4j.configuration=torque.properties -classpath ${CLASSPATH}:${chukwa}:${ikit}:${common} org.apache.hadoop.chukwa.sources.mdl.TorqueDataLoader&
+fi
+# start util data loader
+pidFile=$CHUKWA_HOME/var/run/UtilDataLoader.pid
+if [ -f $pidFile ]; then
+  pid=`head ${pidFile}`
+  ChildPIDRunningStatus=`${jps} | grep ${pid} | grep UtilDataLoader | grep -v grep | wc -l`
+  #ChildPIDRunningStatus=`ps -ef | grep UtilDataLoader | grep -v grep | wc -l`
+  if [ $ChildPIDRunningStatus -lt 1 ]; then
+      ${java} -DCHUKWA_HOME=${CHUKWA_HOME} -Dlog4j.configuration=util.properties -classpath ${CLASSPATH}:${chukwa}:${ikit}:${common} org.apache.hadoop.chukwa.sources.mdl.UtilDataLoader&
+  fi
+else 
+      ${java} -DCHUKWA_HOME=${CHUKWA_HOME} -Dlog4j.configuration=util.properties -classpath ${CLASSPATH}:${chukwa}:${ikit}:${common} org.apache.hadoop.chukwa.sources.mdl.UtilDataLoader&
+fi
+
+# start queue info data loader
+pidFile=$CHUKWA_HOME/var/run/QueueInfoDataLoader.pid
+if [ -f $pidFile ]; then
+  pid=`head ${pidFile}`
+  ChildPIDRunningStatus=`${jps} | grep ${pid} | grep QueueInfoDataLoader | grep -v grep | wc -l`
+  #ChildPIDRunningStatus=`ps -ef | grep QueueInfoDataLoader | grep -v grep | wc -l`
+  if [ $ChildPIDRunningStatus -lt 1 ]; then
+      ${java} -DCHUKWA_HOME=${CHUKWA_HOME} -Dlog4j.configuration=queueinfo.properties -classpath ${CLASSPATH}:${chukwa}:${ikit}:${common} org.apache.hadoop.chukwa.sources.mdl.QueueInfoDataLoader&
+  fi
+else
+      ${java} -DCHUKWA_HOME=${CHUKWA_HOME} -Dlog4j.configuration=queueinfo.properties -classpath ${CLASSPATH}:${chukwa}:${ikit}:${common} org.apache.hadoop.chukwa.sources.mdl.QueueInfoDataLoader&
+fi
+
+# start map reduce log data loader
+tenmin=`echo ${min} | cut -b 2-`
+if [ "X${tenmin}" == "X0" ]; then
+    pidFile=$CHUKWA_HOME/var/run/JobLogDataLoader.pid
+    if [ -f $pidFile ]; then
+        pid=`head ${pidFile}`
+        ChildPIDRunningStatus=`${jps} | grep ${pid} | grep JobLogDataLoader |  wc -l`
+        if [ $ChildPIDRunningStatus -lt 1 ]; then
+            ${java} -Xms128m -Xmx1280m -DCHUKWA_HOME=${CHUKWA_HOME} -Dlog4j.configuration=joblog.properties -classpath ${CLASSPATH}:${chukwa}:${ikit}:${common} org.apache.hadoop.chukwa.sources.mdl.JobLogDataLoader &
+        fi
+    else
+        ${java} -Xms128m -Xmx1280m -DCHUKWA_HOME=${CHUKWA_HOME} -Dlog4j.configuration=joblog.properties -classpath ${CLASSPATH}:${chukwa}:${ikit}:${common} org.apache.hadoop.chukwa.sources.mdl.JobLogDataLoader &
+    fi
+fi
+
+# start node activity plugin
+tenmin=`echo ${min} | cut -b 2-`
+if [ "X${tenmin}" == "X0" ]; then
+  pidFile=$CHUKWA_HOME/var/run/NodeActivityPlugin.pid
+  if [ -f $pidFile ]; then
+    pid=`head ${pidFile}`
+    ChildPIDRunningStatus=`${jps} | grep ${pid} | grep NodeActivityMDL | wc -l`
+    if [ $ChildPIDRunningStatus -lt 1 ]; then
+       ${java} -DCHUKWA_HOME=${CHUKWA_HOME} -Dlog4j.configuration=nodeActivity.properties -classpath ${CLASSPATH}:${chukwa}:${ikit}:${common} org.apache.hadoop.chukwa.sources.plugin.nodeactivity.NodeActivityMDL&
+    fi
+  else
+      ${java} -DCHUKWA_HOME=${CHUKWA_HOME} -Dlog4j.configuration=nodeActivity.properties -classpath ${CLASSPATH}:${chukwa}:${ikit}:${common} org.apache.hadoop.chukwa.sources.plugin.nodeactivity.NodeActivityMDL&
+  fi
+fi
+
+# start database summary loader
+tenmin=`echo ${min} | cut -b 2-`
+if [ "X${tenmin}" == "X0" ]; then
+    pidFile=$CHUKWA_HOME/var/run/DBSummaryLoader.pid
+    if [ -f $pidFile ]; then
+        pid=`head ${pidFile}`
+        ChildPIDRunningStatus=`${jps} | grep ${pid} | grep DBSummaryLoader | wc -l`
+        if [ $ChildPIDRunningStatus -lt 1 ]; then
+            ${java} -Xms128m -Xmx1280m -DCHUKWA_HOME=${CHUKWA_HOME} -Dlog4j.configuration=log4j.properties -classpath ${CLASSPATH}:${chukwa}:${ikit}:${ckit}:${common} org.apache.hadoop.chukwa.extraction.DBSummaryLoader &
+        fi
+    else
+        ${java} -Xms128m -Xmx1280m -DCHUKWA_HOME=${CHUKWA_HOME} -Dlog4j.configuration=log4j.properties -classpath ${CLASSPATH}:${chukwa}:${ikit}:${ckit}:${common} org.apache.hadoop.chukwa.extraction.DBSummaryLoader &
+    fi
+fi
+

+ 359 - 0
src/contrib/chukwa/build.xml

@@ -0,0 +1,359 @@
+<?xml version="1.0" ?>
+
+<!--
+   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.
+-->
+
+<project name="chukwa" default="main">
+
+	<property name="chukwaVersion" value="0.0.1"/>
+
+	<property name="lib.dir" value="${basedir}/lib"/>
+	<property name="src.dir" value="${basedir}/src"/>
+	<property name="conf.dir" value="${basedir}/conf"/>
+	<property name="docs.dir" value="${basedir}/docs"/>
+	<property name="tools.dir" value="${basedir}/tools"/>
+	<property name="dist.dir" value="${basedir}/dist"/>
+	<property name="opt.dir" value="${basedir}/opt"/>
+        <property name="javac.debug" value="on"/>
+
+	<import file="../build-contrib.xml"/>
+
+	<target name="init">
+		<mkdir dir="${build.dir}"/>
+		<mkdir dir="${build.dir}/test"/>
+		<!-- 
+    	<copy todir="${build.dir}">
+            <fileset dir="${basedir}">
+                <exclude name="**/VERSION"/>
+            </fileset>
+        </copy>
+      
+-->
+		<exec executable="echo" output="${basedir}/bin/VERSION">
+			<arg line="${chukwaVersion}" />
+		</exec>
+
+		<mkdir dir="${dist.dir}"/>
+		<property name="final.name" value="${name}-${chukwaVersion}"/>
+
+	</target>
+
+	<target name="main" depends="init, compile, compress" description="Main target">
+		<echo>
+            Building the .jar files.
+        </echo>
+	</target>
+
+	<target name="compile" depends="init" description="Compilation target">
+		<javac srcdir="src/java/org/apache/hadoop/chukwa" destdir="${build.dir}" excludes="**/ChukwaTTInstru.java" debug="${javac.debug}">
+			<classpath refid="chukwaHadoopClasspath" />
+		</javac>
+	</target>
+
+	<target name="test" depends="init" description="Test target">
+		<javac srcdir="src/test/org/apache/hadoop/chukwa" destdir="${build.dir}" excludes="**/TestDemux.java" debug="${javac.debug}">
+			<classpath refid="chukwaHadoopClasspath" />
+		</javac>
+	</target>
+
+	<target name="collector" depends="compile" description="Prepare collector.war">
+		<mkdir dir="${build.dir}/collector"/>
+		<mkdir dir="${build.dir}/collector/WEB-INF"/>
+		<mkdir dir="${build.dir}/collector/WEB-INF/classes"/>
+		<mkdir dir="${build.dir}/collector/WEB-INF/lib"/>
+		<mkdir dir="${build.dir}/collector/META-INF"/>
+		<copy todir="${build.dir}/collector/WEB-INF/classes">
+			<fileset dir="${build.dir}">
+				<include name="org/apache/hadoop/chukwa/conf/**/*.class" />
+			</fileset>
+			<fileset dir="${build.dir}">
+				<include name="org/apache/hadoop/chukwa/datacollection/**/*.class" />
+			</fileset>
+			<fileset dir="${build.dir}">
+				<include name="org/apache/hadoop/chukwa/extraction/**/*.class" />
+			</fileset>
+			<fileset dir="${build.dir}">
+				<include name="org/apache/hadoop/chukwa/util/**/*.class" />
+			</fileset>
+			<fileset dir="${basedir}/src/java">
+				<include name="org/apache/hadoop/chukwa/conf/**/*.java" />
+			</fileset>
+			<fileset dir="${basedir}/src/java">
+				<include name="org/apache/hadoop/chukwa/datacollection/**/*.java" />
+			</fileset>
+			<fileset dir="${basedir}/src/java">
+				<include name="org/apache/hadoop/chukwa/extraction/**/*.java" />
+			</fileset>
+			<fileset dir="${basedir}/src/java">
+				<include name="org/apache/hadoop/chukwa/util/**/*.java" />
+			</fileset>
+		</copy>
+
+		<copy todir="${build.dir}/collector">
+			<fileset dir="${basedir}/src/web/collector">
+				<include name="**" />
+			</fileset>
+		</copy>
+
+		<copy todir="${build.dir}/collector/WEB-INF/lib">
+			<fileset dir="${basedir}/lib">
+				<include name="log4j-1.2.13.jar" />
+				<include name="${build.dir}/${final.name}-core.jar" />
+			</fileset>
+		</copy>
+	</target>
+
+	<target name="collector_jar" depends="compile, collector" description="Create collector jar">
+		<jar jarfile="${build.dir}/collector-${chukwaVersion}.war" basedir="${build.dir}/collector">
+			<fileset dir="${build.dir}/collector" includes="**" />
+		</jar>
+	</target>
+	<target name="tools_jar" depends="compile, collector" description="Create tools jar">
+		<jar jarfile="${build.dir}/tools-${chukwaVersion}.jar" basedir="${build.dir}" includes="org/apache/hadoop/chukwa/inputtools/**/*.class">
+			<fileset dir="${basedir}/src/java">
+				<include name="org/apache/hadoop/chukwa/inputtools/**/*.java"/>
+			</fileset>
+		</jar>
+	</target>
+
+	<target name="agent_jar" depends="compile, collector" description="Create agent jar">
+		<jar jarfile="${build.dir}/chukwa-agent-${chukwaVersion}.jar" basedir="${build.dir}" includes="org/apache/hadoop/chukwa/client/**/*.class" >
+			<fileset dir="${build.dir}">
+				<include name="org/apache/hadoop/chukwa/conf/**/*.class"/>
+			</fileset>
+			<fileset dir="${build.dir}">
+				<include name="org/apache/hadoop/chukwa/util/**/*.class"/>
+			</fileset>
+			<fileset dir="${build.dir}">
+				<include name="org/apache/hadoop/chukwa/inputtools/**/*.class"/>
+			</fileset>
+			<fileset dir="${build.dir}">
+				<include name="org/apache/hadoop/chukwa/datacollection/**/*.class"/>
+			</fileset>
+
+			<fileset dir="${basedir}/src/java">
+				<include name="org/apache/hadoop/chukwa/client/**/*.java"/>
+			</fileset>
+			<fileset dir="${basedir}/src/java">
+				<include name="org/apache/hadoop/chukwa/util/**/*.java"/>
+			</fileset>
+			<fileset dir="${basedir}/src/java">
+				<include name="org/apache/hadoop/chukwa/inputtools/**/*.java"/>
+			</fileset>
+			<fileset dir="${basedir}/src/java">
+				<include name="org/apache/hadoop/chukwa/inputtools/**/*.java"/>
+			</fileset>
+			<fileset dir="${basedir}/src/java">
+				<include name="org/apache/hadoop/chukwa/datacollection/**/*.java"/>
+				<exclude name="org/apache/hadoop/chukwa/datacollection/collector/**/*.java"/>
+				<exclude name="org/apache/hadoop/chukwa/datacollection/writer/**/*.java"/>
+			</fileset>
+
+		</jar>
+	</target>
+
+	<target name="chukwa_jar" depends="compile, collector" description="Create chukwa-core jar">
+		<jar jarfile="${build.dir}/chukwa-core-${chukwaVersion}.jar" basedir="${build.dir}" includes="org/apache/hadoop/chukwa/datacollection/**/*.class" >
+                        <manifest>
+                            <section name="org/apache/hadoop/chukwa">
+                                <attribute name="Implementation-Title" value="Chukwa"/>
+                                <attribute name="Implementation-Version" value="${version}"/>
+                                <attribute name="Implementation-Vendor" value="Apache"/>
+                            </section>
+                        </manifest>
+
+			<fileset dir="${build.dir}">
+				<include name="org/apache/hadoop/chukwa/**/*.class"/>
+			</fileset>
+			<fileset dir="${basedir}/src/java">
+				<include name="org/apache/hadoop/chukwa/**/*.java"/>
+			</fileset>
+		</jar>
+	</target>
+
+	<target name="chukwa-hadoop_jar" depends="compile" description="Create chukwa_hadoop jar for use with getting hadoop to use chukwa">
+
+		<jar jarfile="${build.dir}/chukwa-hadoop-${chukwaVersion}-client.jar" basedir="${build.dir}" includes="org/apache/hadoop/chukwa/inputtools/log4j/**/*.class">
+			<fileset dir="${basedir}/src/java">
+				<include name="org/apache/hadoop/chukwa/inputtools/log4j/**/*.java"/>
+		        <include name="org/apache/hadoop/chukwa/datacollection/client/**/*.java"/>
+		        <include name="org/apache/hadoop/chukwa/util/**/*.java"/>
+			</fileset>
+			<fileset dir="${build.dir}">
+				<include name="org/apache/hadoop/chukwa/datacollection/client/**/*.class"/>
+				<include name="org/apache/hadoop/chukwa/util/**/*.class"/>
+				<include name="org/apache/hadoop/chukwa/datacollection/controller/*.class"/>
+			</fileset>
+		</jar>
+	</target>
+
+	<target name="compress" depends="compile,collector,collector_jar,tools_jar,agent_jar,chukwa_jar,chukwa-hadoop_jar" description="Compression target">
+		<!-- 	<jar jarfile="${build.dir}/chukwa.jar" basedir="${build.dir}" includes="org/apache/hadoop/chukwa/**/*.class" /> -->
+
+		<copy todir="." includeEmptyDirs="false">
+			<fileset dir="${build.dir}">
+				<exclude name="**" />
+				<include name="**/*.jar" />
+			</fileset>
+		</copy>
+	</target>
+
+	<!-- ====================================================== -->
+	<!-- Macro definitions                                      -->
+	<!-- ====================================================== -->
+	<macrodef name="macro_tar" description="Worker Macro for tar">
+		<attribute name="param.destfile"/>
+		<element name="param.listofitems"/>
+		<sequential>
+			<tar compression="gzip" longfile="gnu"
+          destfile="@{param.destfile}">
+				<param.listofitems/>
+			</tar>
+		</sequential>
+	</macrodef>
+
+	<!-- ================================================================== -->
+	<!-- D I S T R I B U T I O N                                            -->
+	<!-- ================================================================== -->
+	<!--                                                                    -->
+	<!-- ================================================================== -->
+	<target name="package" depends="compress" description="Build distribution">
+		<mkdir dir="${build.dir}/${final.name}"/>
+		<mkdir dir="${build.dir}/${final.name}/lib"/>
+		<mkdir dir="${build.dir}/${final.name}/bin"/>
+		<mkdir dir="${build.dir}/${final.name}/opt"/>
+		<mkdir dir="${build.dir}/${final.name}/tools"/>
+		<mkdir dir="${build.dir}/${final.name}/var"/>
+		<mkdir dir="${build.dir}/${final.name}/var/run"/>
+		<mkdir dir="${build.dir}/${final.name}/logs"/>
+
+		<copy todir="${build.dir}/${final.name}" includeEmptyDirs="false">
+			<fileset dir="${build.dir}">
+				<include name="**/*.jar" />
+				<include name="**/*.war" />
+			</fileset>
+		</copy>
+		<copy todir="${build.dir}/${final.name}/lib" includeEmptyDirs="false">
+			<fileset dir="lib">
+				<exclude name="**/native/**"/>
+			</fileset>
+		</copy>
+
+		<exec dir="${dist.dir}" executable="sh" failonerror="true">
+			<env key="BASE_NATIVE_LIB_DIR" value="${lib.dir}/native"/>
+			<env key="BUILD_NATIVE_DIR" value="${build.dir}/native"/>
+			<env key="DIST_LIB_DIR" value="${dist.dir}/lib/native"/>
+		</exec>
+
+		<copy todir="${build.dir}/${final.name}/bin">
+			<fileset dir="bin"/>
+		</copy>
+
+		<copy todir="${build.dir}/${final.name}/conf">
+			<fileset dir="${conf.dir}" excludes="**/*.template"/>
+		</copy>
+
+		<copy todir="${build.dir}/${final.name}/docs">
+			<fileset dir="${docs.dir}" />
+		</copy>
+
+		<copy todir="${build.dir}/${final.name}/opt">
+			<fileset dir="${opt.dir}" />
+		</copy>
+
+		<copy todir="${build.dir}/${final.name}/tools">
+			<fileset dir="${tools.dir}" />
+		</copy>
+
+		<chmod perm="ugo+x" type="file" parallel="false">
+			<fileset dir="${build.dir}/${final.name}/tools">
+				<include name="**" />
+			</fileset>
+		</chmod>
+
+		<copy todir="${build.dir}/${final.name}">
+			<fileset dir=".">
+				<include name="*.txt" />
+			</fileset>
+		</copy>
+
+		<copy todir="${build.dir}/${final.name}/src" includeEmptyDirs="true">
+			<fileset dir="src" excludes="**/*.template **/docs/build/**/*"/>
+		</copy>
+
+		<copy todir="${build.dir}/${final.name}" file="build.xml"/>
+
+		<chmod perm="ugo+x" type="file" parallel="false">
+			<fileset dir="${build.dir}/${final.name}/bin">
+				<include name="*/bin/*" />
+			</fileset>
+		</chmod>
+
+	</target>
+
+	<!-- ================================================================== -->
+	<!-- Make release tarball                                               -->
+	<!-- ================================================================== -->
+	<target name="tar" depends="package" description="Make release tarball">
+		<macro_tar param.destfile="${dist.dir}/${final.name}.tar.gz">
+			<param.listofitems>
+				<tarfileset dir="${build.dir}" mode="664">
+					<exclude name="${final.name}/org/*" />
+					<include name="${final.name}/**" />
+				</tarfileset>
+				<tarfileset dir="${build.dir}" mode="755">
+					<include name="${final.name}/bin/*" />
+				</tarfileset>
+			</param.listofitems>
+		</macro_tar>
+	</target>
+
+	<target name="binary" depends="package" description="Make tarball without source and documentation">
+		<macro_tar param.destfile="${dist.dir}/${final.name}-bin.tar.gz">
+			<param.listofitems>
+				<tarfileset dir="${build.dir}" mode="664">
+					<exclude name="${final.name}/src/**" />
+					<exclude name="${final.name}/docs/**" />
+					<include name="${final.name}/**" />
+				</tarfileset>
+				<tarfileset dir="${build.dir}" mode="755">
+					<include name="${final.name}/bin/*" />
+				</tarfileset>
+			</param.listofitems>
+		</macro_tar>
+	</target>
+
+	<!-- the normal classpath -->
+	<path id="classpath">
+		<pathelement location="${build.classes}"/>
+		<fileset dir="${lib.dir}">
+			<include name="**/*.jar" />
+			<exclude name="**/excluded/" />
+		</fileset>
+		<pathelement location="${conf.dir}"/>
+	</path>
+
+	<!-- the hadoop classpath -->
+	<path id="chukwaHadoopClasspath">
+		<pathelement location="${hadoop.root}/build/classes"/>
+		<fileset dir="${lib.dir}">
+			<include name="**/*.jar" />
+			<exclude name="**/excluded/" />
+		</fileset>
+	</path>
+
+</project>

+ 24 - 0
src/contrib/chukwa/chukwafy_jobhist.awk

@@ -0,0 +1,24 @@
+#!/usr/bin/gawk
+
+#A small awk script to take normal job history logs and chukwafy
+#In particular, they get prefixed with something of the form
+#"2008-07-28 23:30:38,865 INFO org.apache.hadoop.chukwa.ChukwaJobHistory: 
+
+BEGIN {
+OFS = ""
+}
+
+{  # for each record
+  #get Timestamp
+for(i =1; i <= NF; ++i) {
+	if( $i ~ /_TIME=/) {
+		split($i, halves, "=");
+		ts_msec = substr(halves[2], 2 , length(halves[2]) - 2)
+		break;
+	}
+}
+if(ts_msec == 0)
+   print "WARNING:  no timestamp in line " > /dev/stderr
+
+print strftime("%Y-%m-%d %H:%M:%S", ts_msec/1000)  , "," , (ts_msec%1000) , " INFO org.apache.hadoop.chukwa.ChukwaJobHistory: " , $0
+}

+ 20 - 0
src/contrib/chukwa/conf/chukwa-agent-conf.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="nutch-conf.xsl"?>
+
+<!-- Put site-specific property overrides in this file. -->
+
+<configuration>
+  
+  <property>
+    <name>chukwaAgent.control.port</name>
+    <value>9093</value>
+    <description>The socket port number the agent's control interface can be contacted at.</description>
+  </property>
+
+  <property>
+    <name>chukwaAgent.hostname</name>
+    <value>localhost</value>
+    <description>The hostname of the agent on this node. Usually localhost, this is used by the chukwa instrumentation agent-control interface library</description>
+  </property>
+
+</configuration>

+ 37 - 0
src/contrib/chukwa/conf/chukwa-agent-conf.xml.template

@@ -0,0 +1,37 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="nutch-conf.xsl"?>
+
+<!-- Put site-specific property overrides in this file. -->
+
+<configuration>
+  
+  <property>
+    <name>chukwaAgent.control.port</name>
+    <value>9093</value>
+    <description>The socket port number the agent's control interface can be contacted at.</description>
+  </property>
+
+  <property>
+    <name>chukwaAgent.hostname</name>
+    <value>localhost</value>
+    <description>The hostname of the agent on this node. Usually localhost, this is used by the chukwa instrumentation agent-control interface library</description>
+  </property>
+
+  <property>
+    <name>chukwaAgent.checkpoint.name</name>
+    <value>chukwa_agent_checkpoint</value>
+    <description>the prefix to to prepend to the agent's checkpoint file(s)</description>
+  </property>
+  
+  <property>
+    <name>chukwaAgent.checkpoint.dir</name>
+    <value>/tmp/</value>
+    <description>the location to put the agent's checkpoint file(s)</description>
+  </property>
+
+  <property>
+    <name>chukwaAgent.checkpoint.interval</name>
+    <value>5000</value>
+    <description>the frequency interval for the agent to do checkpoints, in milliseconds</description>
+  </property>
+</configuration>

+ 32 - 0
src/contrib/chukwa/conf/chukwa-collector-conf.xml

@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="nutch-conf.xsl"?>
+
+<!-- Put site-specific property overrides in this file. -->
+
+<configuration>
+
+  <property>
+    <name>writer.hdfs.filesystem</name>
+    <value>hdfs://localhost:9000/</value>
+    <description>HDFS to dump to</description>
+  </property>
+  
+  <property>
+    <name>chukwaCollector.outputDir</name>
+    <value>/chukwa/logs/</value>
+    <description>Chukwa data sink directory</description>
+  </property>
+
+  <property>
+    <name>chukwaCollector.rotateInterval</name>
+    <value>300000</value>
+    <description>Chukwa rotate interval (ms)</description>
+  </property>
+
+  <property>
+    <name>chukwaCollector.http.port</name>
+    <value>8080</value>
+    <description>The HTTP port number the collector will listen on</description>
+  </property>
+
+</configuration>

+ 32 - 0
src/contrib/chukwa/conf/chukwa-collector-conf.xml.template

@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="nutch-conf.xsl"?>
+
+<!-- Put site-specific property overrides in this file. -->
+
+<configuration>
+
+  <property>
+    <name>writer.hdfs.filesystem</name>
+    <value>hdfs://localhost:9000/</value>
+    <description>HDFS to dump to</description>
+  </property>
+  
+  <property>
+    <name>chukwaCollector.outputDir</name>
+    <value>/chukwa/logs/</value>
+    <description>Chukwa data sink directory</description>
+  </property>
+
+  <property>
+    <name>chukwaCollector.rotateInterval</name>
+    <value>300000</value>
+    <description>Chukwa rotate interval (ms)</description>
+  </property>
+
+  <property>
+    <name>chukwaCollector.http.port</name>
+    <value>8080</value>
+    <description>The HTTP port number the collector will listen on</description>
+  </property>
+
+</configuration>

+ 25 - 0
src/contrib/chukwa/conf/chukwa-env.sh

@@ -0,0 +1,25 @@
+# Set Chukwa-specific environment variables here.
+
+# The only required environment variable is JAVA_HOME.  All others are
+# optional.  When running a distributed configuration it is best to
+# set JAVA_HOME in this file, so that it is correctly defined on
+# remote nodes.
+
+# The java implementation to use.  Required.
+export JAVA_HOME=/Library/Java/Home/
+
+# The location of the Hadoop the collector should use. Default 
+# assumes that this chukwa is living in hadoop's src/contrib directory
+#export HADOOP_HOME=
+
+# The directory where pid files are stored. CHUKWA_HOME/var/run by default.
+#export CHUKWA_PID_DIR=
+
+# The location of chukwa logs, defaults to CHUKWA_HOME/logs
+#export CHUKWA_LOG_DIR=
+
+# The location of a hadoop jars. use this if you are running a collector
+# without a running HDFS (i.e. which writes sequence files to local disk)
+# if this is not set, the default is to check HADOOP_HOME for jars or
+# classes, if those are not found, uses hadoop jars which come with chukwa
+#export HADOOP_JAR=

+ 25 - 0
src/contrib/chukwa/conf/chukwa-env.sh.template

@@ -0,0 +1,25 @@
+# Set Chukwa-specific environment variables here.
+
+# The only required environment variable is JAVA_HOME.  All others are
+# optional.  When running a distributed configuration it is best to
+# set JAVA_HOME in this file, so that it is correctly defined on
+# remote nodes.
+
+# The java implementation to use.  Required.
+export JAVA_HOME=/Library/Java/Home/
+
+# The location of the Hadoop the collector should use. Default 
+# assumes that this chukwa is living in hadoop's src/contrib directory
+#export HADOOP_HOME=
+
+# The directory where pid files are stored. CHUKWA_HOME/var/run by default.
+#export CHUKWA_PID_DIR=
+
+# The location of chukwa logs, defaults to CHUKWA_HOME/logs
+#export CHUKWA_LOG_DIR=
+
+# The location of a hadoop jars. use this if you are running a collector
+# without a running HDFS (i.e. which writes sequence files to local disk)
+# if this is not set, the default is to check HADOOP_HOME for jars or
+# classes, if those are not found, uses hadoop jars which come with chukwa
+#export HADOOP_JAR=

+ 1 - 0
src/contrib/chukwa/conf/collectors

@@ -0,0 +1 @@
+http://localhost:8080/

+ 1 - 0
src/contrib/chukwa/conf/collectors.template

@@ -0,0 +1 @@
+http://localhost:8080/

+ 7 - 0
src/contrib/chukwa/conf/commons-logging.properties

@@ -0,0 +1,7 @@
+#Logging Implementation
+
+#Log4J
+org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
+
+#JDK Logger
+#org.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger

+ 43 - 0
src/contrib/chukwa/conf/fields.spec

@@ -0,0 +1,43 @@
+CombinerClass CombinerClass
+AvgLocalMapperExecutionTime AvgLocalMapperExecutionTime
+AvgMapperExecutionTime AvgMapperExecutionTime
+AvgRackLocalMapperExecutionTime AvgRackLocalMapperExecutionTime
+AvgReducerExecutionTime AvgReducerExecutionTime
+AvgRemoteMapperExecutionTime AvgRemoteMapperExecutionTime
+AvgShuffleExecutionTime AvgShuffleExecutionTime
+AvgSortExecutionTime AvgSortExecutionTime
+FINISH_TIME FINISH_TIME
+InputDataSizeInMB InputDataSizeInMB
+InputDir InputDir
+InputFormatClass InputFormatClass
+InputKeyClass InputKeyClass
+InputValueClass InputValueClass
+LAUNCH_TIME LAUNCH_TIME
+MAPPER_PHASE_END_TIME MAPPER_PHASE_END_TIME
+MAPPER_PHASE_EXECUTION_TIME MAPPER_PHASE_EXECUTION_TIME
+MRJobID MRJobID
+MRJobName MRJobName
+MapOutputCompressed MapOutputCompressed
+MapOutputCompressionCodec MapOutputCompressionCodec
+MapOutputCompressionType MapOutputCompressionType 
+MapOutputKeyClass MapOutputKeyClass
+MapOutputValueClass MapOutputValueClass
+MapOutputSizeInMB MapOutputSizeInMB
+MapperClass MapperClass
+NUM_OF_MAPPER_ATTEMPTS NUM_OF_MAPPER_ATTEMPTS
+NUM_OF_REDUCER_ATTEMPTS NUM_OF_REDUCER_ATTEMPTS
+NumOfLocalSplits NumOfLocalSplits
+NumOfRackLocalSplits NumOfRackLocalSplits
+OutputCompressed OutputCompressed
+OutputCompressionCodec OutputCompressionCodec
+OutputCompressionType OutputCompressionType 
+OutputDataSizeInMB OutputDataSizeInMB
+OutputFormatClass OutputFormatClass
+OutputKeyClass OutputKeyClass
+OutputValueClass OutputValueClass
+PartitionerClass PartitionerClass
+ReducerClass ReducerClass
+STATUS STATUS
+SUBMIT_TIME SUBMIT_TIME
+TOTAL_MAPS TOTAL_MAPS
+TOTAL_REDUCES TOTAL_REDUCES

+ 8 - 0
src/contrib/chukwa/conf/joblog.properties

@@ -0,0 +1,8 @@
+log4j.rootLogger=INFO, R 
+log4j.appender.R=org.apache.log4j.RollingFileAppender
+log4j.appender.R.File=${CHUKWA_HOME}/logs/joblog.log
+log4j.appender.R.MaxFileSize=10MB
+log4j.appender.R.MaxBackupIndex=10
+log4j.appender.R.layout=org.apache.log4j.PatternLayout
+log4j.appender.R.layout.ConversionPattern=%d{ISO8601} %p %t %c{1} - %m%n
+log4j.logger.org.apache.hadoop.chukwa.ikit.DataConfig=INFO, R

+ 23 - 0
src/contrib/chukwa/conf/log4j.properties

@@ -0,0 +1,23 @@
+log4j.rootLogger=INFO, stdout, R
+log4j.appender.R=org.apache.log4j.RollingFileAppender
+log4j.appender.R.File=${CHUKWA_HOME}/logs/chukwa.log
+log4j.appender.R.MaxFileSize=10MB
+log4j.appender.R.MaxBackupIndex=10
+log4j.appender.R.layout=org.apache.log4j.PatternLayout
+log4j.appender.R.layout.ConversionPattern=%d{ISO8601} %p %t %c{1} - %m%n
+
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} %p %t %c{1} - %m%n
+
+log4j.logger.org.apache.hadoop.chukwa.ikit.DataConfig=DEBUG, R
+
+# In our hadoop log4j.properties, replace the following line:
+# log4j.appender.DRFA=org.apache.log4j.DailyRollingFileAppender
+# with this line:
+#log4j.appender.DRFA=org.apache.hadoop.chukwa.inputtools.log4j.DailyRollingFileAppender
+
+# Then add these lines as well:
+#log4j.appender.DRFA.recordType=hadoop_log
+#log4j.appender.DRFA.chukwaClientHostname=localhost
+#log4j.appender.DRFA.chukwaClientPortNum=9094

+ 1097 - 0
src/contrib/chukwa/conf/mdl.xml

@@ -0,0 +1,1097 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="nutch-conf.xsl"?>
+
+<!-- Put site-specific property overrides in this file. -->
+
+<configuration>
+
+<!--- collector properties -->
+<property>
+  <name>chukwa.engine.dsDirectory.rootFolder</name>
+  <value>hdfs://localhost:9000/chukwa/</value>
+  <description>root folder for Chukwa HDFS storage</description>
+</property>
+
+<!--- database properties -->
+<property>
+  <name>jdbc.host</name>
+  <value>localhost:3306</value>
+  <description>mysql server hostname and port</description>
+</property>
+
+<property>
+  <name>jdbc.user</name>
+  <value>gmetrics</value>
+  <description> mysql user name</description>
+</property>
+
+<property>
+  <name>jdbc.password</name>
+  <value>gmetrics</value>
+  <description>mysql password</description>
+</property>
+
+<property>
+  <name>jdbc.db</name>
+  <value>flubbergold</value>
+  <description>name of the database</description>
+</property>
+
+<!-- Torque Data Loader Config -->
+<property>
+  <name>torque.server</name>
+  <value>hostname</value>
+</property>
+
+<property>
+  <name>torque.binDir</name>
+  <value>/grid/0/torque/current/bin</value>
+</property>
+
+<!-- Log Data Loader Config -->
+<property>
+  <name>job.log.dfs.config</name>
+  <value>/grid/0/hadoop/conf/hadoop-site.xml</value>
+</property>
+
+<property>
+  <name>job.log.dfs.log.suffix</name>
+  <value>host.example.com</value>
+</property>
+
+<property>
+  <name>job.log.dfs.path</name>
+  <value>/user</value>
+</property>
+
+<property>
+  <name>job.log.dfs.path.append.uid</name>
+  <value>on</value>
+</property>
+
+<!--- NodeActivity properties -->
+<property>
+  <name>mdl.plugin.NodeActivityPlugin.cmde</name>
+  <value>/grid/0/torque/current/bin/pbsnodes </value>
+  <description>Command to retrieve the node activity raw data used/free/down</description>
+</property>
+
+<!-- database tables -->
+<property>
+  <name>report.db.name.disks.perdisk</name>
+  <value>SimonData</value>
+  <description></description>
+</property>
+
+<property>
+  <name>report.db.name.systemstate.pernode</name>
+  <value>SimonData</value>
+</property>
+
+<property>
+  <name>report.db.name.systemstate.percluster</name>
+  <value>cluster_systemstate</value>
+</property>
+
+<property>
+  <name>report.db.name.jvm.tmp</name>
+  <value>JVM</value>
+</property>
+
+<property>
+  <name>report.db.name.dfs.hdfs throughput</name>
+  <value>dfs_throughput</value>
+</property>
+
+<property>
+  <name>report.db.name.dfs.individual datanode throughput</name>
+  <value>dfs_individual</value>
+</property>
+
+<property>
+  <name>report.db.name.dfs.namenode operations</name>
+  <value>dfs_namenode</value>
+</property>
+
+<property>
+  <name>report.db.name.dfs.fsnamesystem status</name>
+  <value>dfs_fsnamesystem_status</value>
+</property>
+
+<property>
+  <name>report.db.name.rpcmetrics.rpc metrics</name>
+  <value>rpc_metrics</value>
+</property>
+
+<property>
+  <name>report.db.name.hodjob</name>
+  <value>HodJob</value>
+</property>
+
+<property>
+  <name>report.db.name.hodmachine</name>
+  <value>HodMachine</value>
+</property>
+
+<property>
+  <name>report.db.name.mrjob</name>
+  <value>MRJob</value>
+</property>
+
+<property>
+  <name>report.db.name.mrjobts</name>
+  <value>MRJobTSData</value>
+</property>
+
+<property>
+  <name>report.db.name.hodjobunprocessed</name>
+  <value>HodJobUnprocessed</value>
+</property>
+
+<property>
+  <name>report.db.name.hodjobdigest</name>
+  <value>HodJobDigest</value>
+</property>
+
+<property>
+  <name>report.db.name.queueInfo</name>
+  <value>QueueInfo</value>
+</property>
+
+<property>
+  <name>report.db.name.jobcounters</name>
+  <value>MRJobCounters</value>
+</property>
+
+<!-- Simon Data Loader Config -->
+<property>
+  <name>normalize.disks.perdisk.device</name>
+  <value>1</value>
+</property>
+
+<property>
+  <name>report.db.primary.key.systemstate.percluster</name>
+  <value>timestamp</value>
+</property>
+
+<property>
+  <name>report.db.primary.key.disks.perdisk</name>
+  <value>timestamp</value>
+</property>
+
+<property>
+  <name>report.db.primary.key.systemstate.pernode</name>
+  <value>timestamp</value>
+</property>
+
+<property>
+  <name>report.db.primary.key.dfs.hdfs throughput</name>
+  <value>timestamp</value>
+</property>
+
+<property>
+  <name>report.db.primary.key.dfs.individual datanode throughput</name>
+  <value>timestamp</value>
+</property>
+
+<property>
+  <name>report.db.primary.key.dfs.namenode operations</name>
+  <value>timestamp</value>
+</property>
+
+<property>
+  <name>report.db.primary.key.dfs.fsnamesystem status</name>
+  <value>timestamp</value>
+</property>
+
+<property>
+  <name>report.db.primary.key.rpcmetrics.rpc metrics</name>
+  <value>timestamp</value>
+</property>
+
+<property>
+  <name>metric.disks.perdisk.node</name>
+  <value>machine</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node</name>
+  <value>machine</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.cpu_busy%</name>
+  <value>CPUBusy</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.mem_free%</name>
+  <value>FreeMemPercentage</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.cpu_idle%</name>
+  <value>CPUIdle</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.cpu_nice%</name>
+  <value>CPUNice</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.cpu_system%</name>
+  <value>CPUSystem</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.cpu_user%</name>
+  <value>CPUUser</value>
+</property>
+
+<property>V
+  <name>metric.systemstate.pernode.node.cpu_iowait%</name>
+  <value>CPUIOWait</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.cpu_irq%</name>
+  <value>CPUIrq</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.cpu_softirq%</name>
+  <value>CPUSoftIrq</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.load_fifteen</name>
+  <value>LoadFifteen</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.load_five</name>
+  <value>LoadFive</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.load_one</name>
+  <value>LoadOne</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.mem_buffers%</name>
+  <value>MemBuffersPercentage</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.mem_cached%</name>
+  <value>MemCachedPercentage</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.mem_user%</name>
+  <value>MemUserPercentage</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.mem_shared%</name>
+  <value>MemSharedPercentage</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.disk_max_busy%</name>
+  <value>MaxDiskBusyPercentage</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.bytes_in</name>
+  <value>NetworkInKBps</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.bytes_out</name>
+  <value>NetworkOutKBps</value>
+</property>
+
+<property>
+  <name>metric.disks.perdisk.node.device.sda.rKb/s</name>
+  <value>DiskAReadKBps</value>
+</property>
+
+<property>
+  <name>metric.disks.perdisk.node.device.sda.wKb/s</name>
+  <value>DiskAWriteKBps</value>
+</property>
+
+<property>
+  <name>metric.disks.perdisk.node.device.sdb.rKb/s</name>
+  <value>DiskBReadKBps</value>
+</property>
+
+<property>
+  <name>metric.disks.perdisk.node.device.sdb.wKb/s</name>
+  <value>DiskBWriteKBps</value>
+</property>
+
+<property>
+  <name>metric.disks.perdisk.node.device.sdc.rKb/s</name>
+  <value>DiskCReadKBps</value>
+</property>
+
+<property>
+  <name>metric.disks.perdisk.node.device.sdc.wKb/s</name>
+  <value>DiskCWriteKBps</value>
+</property>
+
+<property>
+  <name>metric.disks.perdisk.node.device.sdd.rKb/s</name>
+  <value>DiskDReadKBps</value>
+</property>
+
+<property>
+  <name>metric.disks.perdisk.node.device.sdd.wKb/s</name>
+  <value>DiskDWriteKBps</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.disk_total</name>
+  <value>DiskTotalGB</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.disk_used%</name>
+  <value>DiskUsedPercentage</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.pkts_in</name>
+  <value>PacketsIn</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.pkts_out</name>
+  <value>PacketsOut</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.swap_in_kBps</name>
+  <value>SwapInKBps</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.swap_out_kBps</name>
+  <value>SwapOutKBps</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..#nodes</name>
+  <value>nodes</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..#pids</name>
+  <value>pids</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgBlurbs</name>
+  <value>avgBlurbs</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgBlurbRate%</name>
+  <value>avgBlurbRate</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgCpuIdle%</name>
+  <value>avgCpuIdle</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgCpuNice</name>
+  <value>avgCpuNice</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgCpuNice%</name>
+  <value>avgCpuNicePercent</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgCpuSystem%</name>
+  <value>avgCpuSystem</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgCpuUser%</name>
+  <value>avgCpuUser</value>
+</property>
+ 
+<property>
+  <name>metric.systemstate.percluster..avgCpuIowait%</name>
+  <value>avgCpuIowait</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgCpuIrq%</name>
+  <value>avgCpuIrq</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgCpuSoftirq%</name>
+  <value>avgCpuSoftirq</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgCpuBusy%</name>
+  <value>avgCpuBusy</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgLoadOne</name>
+  <value>avgLoadOne</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgLoadFive</name>
+  <value>avgLoadFive</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgLoadFifteen</name>
+  <value>avgLoadFifteen</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgMemBuffers%</name>
+  <value>avgMemBuffers</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgMemCached</name>
+  <value>avgMemCached</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgMemCached%</name>
+  <value>avgMemCachedPercent</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgMemFree</name>
+  <value>avgMemFree</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgMemFree%</name>
+  <value>avgMemFreePercent</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgMemUser</name>
+  <value>avgMemUser</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgMemUser%</name>
+  <value>avgMemUserPercent</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgMemShared</name>
+  <value>avgMemShared</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgMemShared%</name>
+  <value>avgMemSharedPercent</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgMemTotal</name>
+  <value>avgMemTotal</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgSwapTotal</name>
+  <value>avgSwapTotal</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgSwapInKbps</name>
+  <value>avgSwapInKbps</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgSwapOutKbps</name>
+  <value>avgSwapOutKbps</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgBytesIn</name>
+  <value>avgBytesIn</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgBytesOut</name>
+  <value>avgBytesOut</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgPktsIn</name>
+  <value>avgPktsIn</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgPktsOut</name>
+  <value>avgPktsOut</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgDiskFree</name>
+  <value>avgDiskFree</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgDiskTotal</name>
+  <value>avgDiskTotal</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgDiskUsed%</name>
+  <value>avgDiskUsed</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgPartMaxUsed%</name>
+  <value>avgPartMaxUsed</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgDiskMaxBusy%</name>
+  <value>avgDiskMaxBusy</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..#nodes</name>
+  <value>nodes</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..#pids</name>
+  <value>pids</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..bytesWrittenPerSec</name>
+  <value>bytesWrittenPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..blocksRemovedPerSec</name>
+  <value>blocksRemovedPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..readsFromRemoteClientPerSec</name>
+  <value>readsFromLocalRemotePerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..writesFromLocalClientPerSec</name>
+  <value>writesFromLocalClientPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..blocksVerifiedPerSec</name>
+  <value>blocksVerifiedPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..blocksWrittenPerSec</name>
+  <value>blocksWrittenPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..blockVerificationFailuresPerSec</name>
+  <value>blockVerificationFailuresPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..#restarts</name>
+  <value>restarts</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..blocksReplicatedPerSec</name>
+  <value>blocksReplicatedPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..bytesReadPerSec</name>
+  <value>bytesReadPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..writesFromRemoteClientPerSec</name>
+  <value>writesFromLocalRemotePerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..readsFromLocalClientPerSec</name>
+  <value>readsFromLocalClientPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..blocksReadPerSec</name>
+  <value>blocksReadPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..readBlockOperationsPerSec</name>
+  <value>readBlockOperationsPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..numberReadBlockOperations</name>
+  <value>numberReadBlockOperations</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..writeBlockOperationsPerSec</name>
+  <value>writeBlockOperationsPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..numberWriteBlockOperations</name>
+  <value>numberWriteBlockOperations</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..readMetadataOperationsPerSec</name>
+  <value>readMetadataOperationsPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..numberReadMetadataOperations</name>
+  <value>numberReadMetadataOperations</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..copyBlockOperationsPerSec</name>
+  <value>copyBlockOperationsPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..numberCopyBlockOperations</name>
+  <value>numberCopyBlockOperations</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..replaceBlockOperationsPerSec</name>
+  <value>replaceBlockOperationsPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..numberReplaceBlockOperations</name>
+  <value>numberReplaceBlockOperations</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..heartBeatsPerSec</name>
+  <value>heartBeatsPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..numberHeartBeats</name>
+  <value>numberHeartBeats</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..blockReportsPerSec</name>
+  <value>blockReportsPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..numberBlockReports</name>
+  <value>numberBlockReports</value>
+</property>
+
+<property>
+  <name>metric.dfs.individual datanode throughput.node.#pids</name>
+  <value>pids</value>
+</property>
+
+<property>
+  <name>metric.dfs.individual datanode throughput.node.bytesWrittenPerSec</name>
+  <value>bytesWrittenPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.individual datanode throughput.node.blocksRemovedPerSec</name>
+  <value>blocksRemovedPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.individual datanode throughput.node.readsFromRemoteClientPerSec</name>
+  <value>readsFromLocalRemotePerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.individual datanode throughput.node.writesFromLocalClientPerSec</name>
+  <value>writesFromLocalClientPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.individual datanode throughput.node.blocksVerifiedPerSec</name>
+  <value>blocksVerifiedPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.individual datanode throughput.node.blocksWrittenPerSec</name>
+  <value>blocksWrittenPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.individual datanode throughput.node.blockVerificationFailuresPerSec</name>
+  <value>blockVerificationFailuresPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.individual datanode throughput.node</name>
+  <value>node</value>
+</property>
+
+<property>
+  <name>metric.dfs.individual datanode throughput.node.#restarts</name>
+  <value>restarts</value>
+</property>
+
+<property>
+  <name>metric.dfs.individual datanode throughput.node.blocksReplicatedPerSec</name>
+  <value>blocksReplicatedPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.individual datanode throughput.node.bytesReadPerSec</name>
+  <value>bytesReadPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.individual datanode throughput.node.writesFromRemoteClientPerSec</name>
+  <value>writesFromLocalRemotePerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.individual datanode throughput.node.readsFromLocalClientPerSec</name>
+  <value>readsFromLocalClientPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.individual datanode throughput.node.blocksReadPerSec</name>
+  <value>blocksReadPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.namenode operations.node</name>
+  <value>node</value>
+</property>
+
+<property>
+  <name>metric.dfs.namenode operations.node.#pids</name>
+  <value>pids</value>
+</property>
+
+<property>
+  <name>metric.dfs.namenode operations.node.#restarts</name>
+  <value>restarts</value>
+</property>
+
+<property>
+  <name>metric.dfs.namenode operations.node.filesDeletedPerSec</name>
+  <value>filesDeletedPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.namenode operations.node.filesCreatedPerSec</name>
+  <value>filesCreatedPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.namenode operations.node.filesOpenedPerSec</name>
+  <value>filesOpenedPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.namenode operations.node.filesRenamedPerSec</name>
+  <value>filesRenamedPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.namenode operations.node.filesListedPerSec</name>
+  <value>filesListedPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.namenode operations.node.numberOfTransactionsPerSec</name>
+  <value>numberOfTransactionsPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.namenode operations.node.AverageTransactions</name>
+  <value>AverageTransactions</value>
+</property>
+
+<property>
+  <name>metric.dfs.namenode operations.node.timeInSafeMode</name>
+  <value>timeInSafeMode</value>
+</property>
+
+<property>
+  <name>metric.dfs.namenode operations.node.numberOfSyncsPerSec</name>
+  <value>numberOfSyncsPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.namenode operations.node.AverageSyncTime</name>
+  <value>AverageSyncTime</value>
+</property>
+
+<property>
+  <name>metric.dfs.namenode operations.node.fsImageLoadTime</name>
+  <value>fsImageLoadTime</value>
+</property>
+
+<property>
+  <name>metric.dfs.namenode operations.node.BlocksCorrupted</name>
+  <value>BlocksCorrupted</value>
+</property>
+
+<property>
+  <name>metric.dfs.namenode operations.node.numberOfBlockReportPerSec</name>
+  <value>numberOfBlockReportPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.namenode operations.node.AverageBlockReportTime</name>
+  <value>AverageBlockReportTime</value>
+</property>
+
+<property>
+  <name>metric.dfs.fsnamesystem status.node</name>
+  <value>node</value>
+</property>
+
+<property>
+  <name>metric.dfs.fsnamesystem status.node.FilesTotal</name>
+  <value>FilesTotal</value>
+</property>
+
+<property>
+  <name>metric.dfs.fsnamesystem status.node.BlocksTotal</name>
+  <value>BlocksTotal</value>
+</property>
+
+<property>
+  <name>metric.dfs.fsnamesystem status.node.CapacityTotalGB</name>
+  <value>CapacityTotalGB</value>
+</property>
+
+<property>
+  <name>metric.dfs.fsnamesystem status.node.CapacityUsedGB</name>
+  <value>CapacityUsedGB</value>
+</property>
+
+<property>
+  <name>metric.dfs.fsnamesystem status.node.CapacityRemainingGB</name>
+  <value>CapacityRemainingGB</value>
+</property>
+
+<property>
+  <name>metric.dfs.fsnamesystem status.node.TotalLoad</name>
+  <value></value>
+</property>
+
+<property>
+  <name>metric.dfs.fsnamesystem status.node.PendingReplicationBlocks</name>
+  <value>PendingReplicationBlocks</value>
+</property>
+
+<property>
+  <name>metric.dfs.fsnamesystem status.node.UnderReplicatedBlocks</name>
+  <value>UnderReplicatedBlocks</value>
+</property>
+
+<property>
+  <name>metric.dfs.fsnamesystem status.node.ScheduledReplicationBlocks</name>
+  <value>ScheduledReplicationBlocks</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..#nodes</name>
+  <value>nodes</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..AverageRpcQueueTime_num_ops</name>
+  <value>AverageRpcQueueTime_num_ops</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..AverageRpcQueueTime_avg_time</name>
+  <value>AverageRpcQueueTime_avg_time</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..AverageRpcQueueTime_num_ops</name>
+  <value>AverageRpcQueueTime_num_ops</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..AverageRpcProcessingTime_num_ops</name>
+  <value>AverageRpcProcessingTime_num_ops</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..AverageRpcProcessingTime_avg_time</name>
+  <value>AverageRpcProcessingTime_avg_time</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..RpcDiscarded_num_ops</name>
+  <value>RpcDiscarded_num_ops</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..RpcDiscarded_avg_time</name>
+  <value>RpcDiscarded_avg_time</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..register_num_ops</name>
+  <value>register_num_ops</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..register_avg_time</name>
+  <value>register_avg_time</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..getProtocolVersion_num_ops</name>
+  <value>getProtocolVersion_num_ops</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..getProtocolVersion_avg_time</name>
+  <value>getProtocolVersion_avg_time</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..sendHeartbeat_num_ops</name>
+  <value>sendHeartbeat_num_ops</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..sendHeartbeat_avg_time</name>
+  <value>sendHeartbeat_avg_time</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..blockReport_num_ops</name>
+  <value>blockReport_num_ops</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..blockReport_avg_time</name>
+  <value>blockReport_avg_time</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..getBlockLocations_num_ops</name>
+  <value>getBlockLocations_num_ops</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..heartbeat_num_ops</name>
+  <value>heartbeat_num_ops</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..versionRequest_num_ops</name>
+  <value>versionRequest_num_ops</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..setPermission_num_ops</name>
+  <value>setPermission_num_ops</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..rollFsImage_num_ops</name>
+  <value>rollFsImage_num_ops</value>
+</property>
+
+<property>
+  <name>conversion.metric.systemstate.pernode.node.bytes_in</name>
+  <value>0.001</value>
+</property>
+
+<property>
+  <name>conversion.metric.systemstate.pernode.node.bytes_out</name>
+  <value>0.001</value>
+</property>
+
+<property>
+  <name>util.perfMetrics</name>
+  <value>CPUBusy,FreeMemPercentage,MaxDiskBusyPercentage,NetworkInKBps,NetworkOutKBps,DiskAReadKBps,DiskBReadKBps,DiskCReadKBps,DiskDReadKBps,DiskAWriteKBps,DiskBWriteKBps,DiskCWriteKBps,DiskDWriteKBps,DiskUsedPercentage</value>
+</property>
+
+<!-- Database summarization intervals -->
+<property>
+  <name>consolidator.table.dfs_namenode</name>
+  <value>5,30,120</value>
+</property>
+
+<property>
+  <name>consolidator.table.SimonData</name>
+  <value>5,30,120</value>
+</property>
+
+<property>
+  <name>consolidator.table.rpc_metrics</name>
+  <value>5,30,120</value>
+</property>
+
+<property>
+  <name>consolidator.table.dfs_throughput</name>
+  <value>5,30,120</value>
+</property>
+
+<property>
+  <name>consolidator.table.dfs_individual</name>
+  <value>5,30,120</value>
+</property>
+
+<property>
+  <name>consolidator.table.cluster_systemstate</name>
+  <value>5,30,120</value>
+</property>
+
+<property>
+  <name>consolidator.table.NodeActivity</name>
+  <value>5,30,120</value>
+</property>
+
+<property>
+  <name>consolidator.table.HodJobDigest</name>
+  <value>5,30,120</value>
+</property>
+
+<property>
+  <name>consolidator.table.dfs_fsnamesystem_status</name>
+  <value>5,30,120</value>
+</property>
+</configuration>

+ 1097 - 0
src/contrib/chukwa/conf/mdl.xml.template

@@ -0,0 +1,1097 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="nutch-conf.xsl"?>
+
+<!-- Put site-specific property overrides in this file. -->
+
+<configuration>
+
+<!--- collector properties -->
+<property>
+  <name>chukwa.engine.dsDirectory.rootFolder</name>
+  <value>hdfs://localhost:9000/chukwa/</value>
+  <description>root folder for Chukwa HDFS storage</description>
+</property>
+
+<!--- database properties -->
+<property>
+  <name>jdbc.host</name>
+  <value>localhost:3306</value>
+  <description>mysql server hostname and port</description>
+</property>
+
+<property>
+  <name>jdbc.user</name>
+  <value>gmetrics</value>
+  <description> mysql user name</description>
+</property>
+
+<property>
+  <name>jdbc.password</name>
+  <value>gmetrics</value>
+  <description>mysql password</description>
+</property>
+
+<property>
+  <name>jdbc.db</name>
+  <value>flubbergold</value>
+  <description>name of the database</description>
+</property>
+
+<!-- Torque Data Loader Config -->
+<property>
+  <name>torque.server</name>
+  <value>hostname</value>
+</property>
+
+<property>
+  <name>torque.binDir</name>
+  <value>/grid/0/torque/current/bin</value>
+</property>
+
+<!-- Log Data Loader Config -->
+<property>
+  <name>job.log.dfs.config</name>
+  <value>/grid/0/hadoop/conf/hadoop-site.xml</value>
+</property>
+
+<property>
+  <name>job.log.dfs.log.suffix</name>
+  <value>host.example.com</value>
+</property>
+
+<property>
+  <name>job.log.dfs.path</name>
+  <value>/user</value>
+</property>
+
+<property>
+  <name>job.log.dfs.path.append.uid</name>
+  <value>on</value>
+</property>
+
+<!--- NodeActivity properties -->
+<property>
+  <name>mdl.plugin.NodeActivityPlugin.cmde</name>
+  <value>/grid/0/torque/current/bin/pbsnodes </value>
+  <description>Command to retrieve the node activity raw data used/free/down</description>
+</property>
+
+<!-- database tables -->
+<property>
+  <name>report.db.name.disks.perdisk</name>
+  <value>SimonData</value>
+  <description></description>
+</property>
+
+<property>
+  <name>report.db.name.systemstate.pernode</name>
+  <value>SimonData</value>
+</property>
+
+<property>
+  <name>report.db.name.systemstate.percluster</name>
+  <value>cluster_systemstate</value>
+</property>
+
+<property>
+  <name>report.db.name.jvm.tmp</name>
+  <value>JVM</value>
+</property>
+
+<property>
+  <name>report.db.name.dfs.hdfs throughput</name>
+  <value>dfs_throughput</value>
+</property>
+
+<property>
+  <name>report.db.name.dfs.individual datanode throughput</name>
+  <value>dfs_individual</value>
+</property>
+
+<property>
+  <name>report.db.name.dfs.namenode operations</name>
+  <value>dfs_namenode</value>
+</property>
+
+<property>
+  <name>report.db.name.dfs.fsnamesystem status</name>
+  <value>dfs_fsnamesystem_status</value>
+</property>
+
+<property>
+  <name>report.db.name.rpcmetrics.rpc metrics</name>
+  <value>rpc_metrics</value>
+</property>
+
+<property>
+  <name>report.db.name.hodjob</name>
+  <value>HodJob</value>
+</property>
+
+<property>
+  <name>report.db.name.hodmachine</name>
+  <value>HodMachine</value>
+</property>
+
+<property>
+  <name>report.db.name.mrjob</name>
+  <value>MRJob</value>
+</property>
+
+<property>
+  <name>report.db.name.mrjobts</name>
+  <value>MRJobTSData</value>
+</property>
+
+<property>
+  <name>report.db.name.hodjobunprocessed</name>
+  <value>HodJobUnprocessed</value>
+</property>
+
+<property>
+  <name>report.db.name.hodjobdigest</name>
+  <value>HodJobDigest</value>
+</property>
+
+<property>
+  <name>report.db.name.queueInfo</name>
+  <value>QueueInfo</value>
+</property>
+
+<property>
+  <name>report.db.name.jobcounters</name>
+  <value>MRJobCounters</value>
+</property>
+
+<!-- Simon Data Loader Config -->
+<property>
+  <name>normalize.disks.perdisk.device</name>
+  <value>1</value>
+</property>
+
+<property>
+  <name>report.db.primary.key.systemstate.percluster</name>
+  <value>timestamp</value>
+</property>
+
+<property>
+  <name>report.db.primary.key.disks.perdisk</name>
+  <value>timestamp</value>
+</property>
+
+<property>
+  <name>report.db.primary.key.systemstate.pernode</name>
+  <value>timestamp</value>
+</property>
+
+<property>
+  <name>report.db.primary.key.dfs.hdfs throughput</name>
+  <value>timestamp</value>
+</property>
+
+<property>
+  <name>report.db.primary.key.dfs.individual datanode throughput</name>
+  <value>timestamp</value>
+</property>
+
+<property>
+  <name>report.db.primary.key.dfs.namenode operations</name>
+  <value>timestamp</value>
+</property>
+
+<property>
+  <name>report.db.primary.key.dfs.fsnamesystem status</name>
+  <value>timestamp</value>
+</property>
+
+<property>
+  <name>report.db.primary.key.rpcmetrics.rpc metrics</name>
+  <value>timestamp</value>
+</property>
+
+<property>
+  <name>metric.disks.perdisk.node</name>
+  <value>machine</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node</name>
+  <value>machine</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.cpu_busy%</name>
+  <value>CPUBusy</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.mem_free%</name>
+  <value>FreeMemPercentage</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.cpu_idle%</name>
+  <value>CPUIdle</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.cpu_nice%</name>
+  <value>CPUNice</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.cpu_system%</name>
+  <value>CPUSystem</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.cpu_user%</name>
+  <value>CPUUser</value>
+</property>
+
+<property>V
+  <name>metric.systemstate.pernode.node.cpu_iowait%</name>
+  <value>CPUIOWait</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.cpu_irq%</name>
+  <value>CPUIrq</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.cpu_softirq%</name>
+  <value>CPUSoftIrq</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.load_fifteen</name>
+  <value>LoadFifteen</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.load_five</name>
+  <value>LoadFive</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.load_one</name>
+  <value>LoadOne</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.mem_buffers%</name>
+  <value>MemBuffersPercentage</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.mem_cached%</name>
+  <value>MemCachedPercentage</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.mem_user%</name>
+  <value>MemUserPercentage</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.mem_shared%</name>
+  <value>MemSharedPercentage</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.disk_max_busy%</name>
+  <value>MaxDiskBusyPercentage</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.bytes_in</name>
+  <value>NetworkInKBps</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.bytes_out</name>
+  <value>NetworkOutKBps</value>
+</property>
+
+<property>
+  <name>metric.disks.perdisk.node.device.sda.rKb/s</name>
+  <value>DiskAReadKBps</value>
+</property>
+
+<property>
+  <name>metric.disks.perdisk.node.device.sda.wKb/s</name>
+  <value>DiskAWriteKBps</value>
+</property>
+
+<property>
+  <name>metric.disks.perdisk.node.device.sdb.rKb/s</name>
+  <value>DiskBReadKBps</value>
+</property>
+
+<property>
+  <name>metric.disks.perdisk.node.device.sdb.wKb/s</name>
+  <value>DiskBWriteKBps</value>
+</property>
+
+<property>
+  <name>metric.disks.perdisk.node.device.sdc.rKb/s</name>
+  <value>DiskCReadKBps</value>
+</property>
+
+<property>
+  <name>metric.disks.perdisk.node.device.sdc.wKb/s</name>
+  <value>DiskCWriteKBps</value>
+</property>
+
+<property>
+  <name>metric.disks.perdisk.node.device.sdd.rKb/s</name>
+  <value>DiskDReadKBps</value>
+</property>
+
+<property>
+  <name>metric.disks.perdisk.node.device.sdd.wKb/s</name>
+  <value>DiskDWriteKBps</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.disk_total</name>
+  <value>DiskTotalGB</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.disk_used%</name>
+  <value>DiskUsedPercentage</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.pkts_in</name>
+  <value>PacketsIn</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.pkts_out</name>
+  <value>PacketsOut</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.swap_in_kBps</name>
+  <value>SwapInKBps</value>
+</property>
+
+<property>
+  <name>metric.systemstate.pernode.node.swap_out_kBps</name>
+  <value>SwapOutKBps</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..#nodes</name>
+  <value>nodes</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..#pids</name>
+  <value>pids</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgBlurbs</name>
+  <value>avgBlurbs</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgBlurbRate%</name>
+  <value>avgBlurbRate</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgCpuIdle%</name>
+  <value>avgCpuIdle</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgCpuNice</name>
+  <value>avgCpuNice</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgCpuNice%</name>
+  <value>avgCpuNicePercent</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgCpuSystem%</name>
+  <value>avgCpuSystem</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgCpuUser%</name>
+  <value>avgCpuUser</value>
+</property>
+ 
+<property>
+  <name>metric.systemstate.percluster..avgCpuIowait%</name>
+  <value>avgCpuIowait</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgCpuIrq%</name>
+  <value>avgCpuIrq</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgCpuSoftirq%</name>
+  <value>avgCpuSoftirq</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgCpuBusy%</name>
+  <value>avgCpuBusy</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgLoadOne</name>
+  <value>avgLoadOne</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgLoadFive</name>
+  <value>avgLoadFive</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgLoadFifteen</name>
+  <value>avgLoadFifteen</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgMemBuffers%</name>
+  <value>avgMemBuffers</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgMemCached</name>
+  <value>avgMemCached</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgMemCached%</name>
+  <value>avgMemCachedPercent</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgMemFree</name>
+  <value>avgMemFree</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgMemFree%</name>
+  <value>avgMemFreePercent</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgMemUser</name>
+  <value>avgMemUser</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgMemUser%</name>
+  <value>avgMemUserPercent</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgMemShared</name>
+  <value>avgMemShared</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgMemShared%</name>
+  <value>avgMemSharedPercent</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgMemTotal</name>
+  <value>avgMemTotal</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgSwapTotal</name>
+  <value>avgSwapTotal</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgSwapInKbps</name>
+  <value>avgSwapInKbps</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgSwapOutKbps</name>
+  <value>avgSwapOutKbps</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgBytesIn</name>
+  <value>avgBytesIn</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgBytesOut</name>
+  <value>avgBytesOut</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgPktsIn</name>
+  <value>avgPktsIn</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgPktsOut</name>
+  <value>avgPktsOut</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgDiskFree</name>
+  <value>avgDiskFree</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgDiskTotal</name>
+  <value>avgDiskTotal</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgDiskUsed%</name>
+  <value>avgDiskUsed</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgPartMaxUsed%</name>
+  <value>avgPartMaxUsed</value>
+</property>
+
+<property>
+  <name>metric.systemstate.percluster..avgDiskMaxBusy%</name>
+  <value>avgDiskMaxBusy</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..#nodes</name>
+  <value>nodes</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..#pids</name>
+  <value>pids</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..bytesWrittenPerSec</name>
+  <value>bytesWrittenPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..blocksRemovedPerSec</name>
+  <value>blocksRemovedPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..readsFromRemoteClientPerSec</name>
+  <value>readsFromLocalRemotePerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..writesFromLocalClientPerSec</name>
+  <value>writesFromLocalClientPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..blocksVerifiedPerSec</name>
+  <value>blocksVerifiedPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..blocksWrittenPerSec</name>
+  <value>blocksWrittenPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..blockVerificationFailuresPerSec</name>
+  <value>blockVerificationFailuresPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..#restarts</name>
+  <value>restarts</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..blocksReplicatedPerSec</name>
+  <value>blocksReplicatedPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..bytesReadPerSec</name>
+  <value>bytesReadPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..writesFromRemoteClientPerSec</name>
+  <value>writesFromLocalRemotePerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..readsFromLocalClientPerSec</name>
+  <value>readsFromLocalClientPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..blocksReadPerSec</name>
+  <value>blocksReadPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..readBlockOperationsPerSec</name>
+  <value>readBlockOperationsPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..numberReadBlockOperations</name>
+  <value>numberReadBlockOperations</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..writeBlockOperationsPerSec</name>
+  <value>writeBlockOperationsPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..numberWriteBlockOperations</name>
+  <value>numberWriteBlockOperations</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..readMetadataOperationsPerSec</name>
+  <value>readMetadataOperationsPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..numberReadMetadataOperations</name>
+  <value>numberReadMetadataOperations</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..copyBlockOperationsPerSec</name>
+  <value>copyBlockOperationsPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..numberCopyBlockOperations</name>
+  <value>numberCopyBlockOperations</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..replaceBlockOperationsPerSec</name>
+  <value>replaceBlockOperationsPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..numberReplaceBlockOperations</name>
+  <value>numberReplaceBlockOperations</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..heartBeatsPerSec</name>
+  <value>heartBeatsPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..numberHeartBeats</name>
+  <value>numberHeartBeats</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..blockReportsPerSec</name>
+  <value>blockReportsPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.hdfs throughput..numberBlockReports</name>
+  <value>numberBlockReports</value>
+</property>
+
+<property>
+  <name>metric.dfs.individual datanode throughput.node.#pids</name>
+  <value>pids</value>
+</property>
+
+<property>
+  <name>metric.dfs.individual datanode throughput.node.bytesWrittenPerSec</name>
+  <value>bytesWrittenPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.individual datanode throughput.node.blocksRemovedPerSec</name>
+  <value>blocksRemovedPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.individual datanode throughput.node.readsFromRemoteClientPerSec</name>
+  <value>readsFromLocalRemotePerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.individual datanode throughput.node.writesFromLocalClientPerSec</name>
+  <value>writesFromLocalClientPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.individual datanode throughput.node.blocksVerifiedPerSec</name>
+  <value>blocksVerifiedPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.individual datanode throughput.node.blocksWrittenPerSec</name>
+  <value>blocksWrittenPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.individual datanode throughput.node.blockVerificationFailuresPerSec</name>
+  <value>blockVerificationFailuresPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.individual datanode throughput.node</name>
+  <value>node</value>
+</property>
+
+<property>
+  <name>metric.dfs.individual datanode throughput.node.#restarts</name>
+  <value>restarts</value>
+</property>
+
+<property>
+  <name>metric.dfs.individual datanode throughput.node.blocksReplicatedPerSec</name>
+  <value>blocksReplicatedPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.individual datanode throughput.node.bytesReadPerSec</name>
+  <value>bytesReadPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.individual datanode throughput.node.writesFromRemoteClientPerSec</name>
+  <value>writesFromLocalRemotePerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.individual datanode throughput.node.readsFromLocalClientPerSec</name>
+  <value>readsFromLocalClientPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.individual datanode throughput.node.blocksReadPerSec</name>
+  <value>blocksReadPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.namenode operations.node</name>
+  <value>node</value>
+</property>
+
+<property>
+  <name>metric.dfs.namenode operations.node.#pids</name>
+  <value>pids</value>
+</property>
+
+<property>
+  <name>metric.dfs.namenode operations.node.#restarts</name>
+  <value>restarts</value>
+</property>
+
+<property>
+  <name>metric.dfs.namenode operations.node.filesDeletedPerSec</name>
+  <value>filesDeletedPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.namenode operations.node.filesCreatedPerSec</name>
+  <value>filesCreatedPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.namenode operations.node.filesOpenedPerSec</name>
+  <value>filesOpenedPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.namenode operations.node.filesRenamedPerSec</name>
+  <value>filesRenamedPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.namenode operations.node.filesListedPerSec</name>
+  <value>filesListedPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.namenode operations.node.numberOfTransactionsPerSec</name>
+  <value>numberOfTransactionsPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.namenode operations.node.AverageTransactions</name>
+  <value>AverageTransactions</value>
+</property>
+
+<property>
+  <name>metric.dfs.namenode operations.node.timeInSafeMode</name>
+  <value>timeInSafeMode</value>
+</property>
+
+<property>
+  <name>metric.dfs.namenode operations.node.numberOfSyncsPerSec</name>
+  <value>numberOfSyncsPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.namenode operations.node.AverageSyncTime</name>
+  <value>AverageSyncTime</value>
+</property>
+
+<property>
+  <name>metric.dfs.namenode operations.node.fsImageLoadTime</name>
+  <value>fsImageLoadTime</value>
+</property>
+
+<property>
+  <name>metric.dfs.namenode operations.node.BlocksCorrupted</name>
+  <value>BlocksCorrupted</value>
+</property>
+
+<property>
+  <name>metric.dfs.namenode operations.node.numberOfBlockReportPerSec</name>
+  <value>numberOfBlockReportPerSec</value>
+</property>
+
+<property>
+  <name>metric.dfs.namenode operations.node.AverageBlockReportTime</name>
+  <value>AverageBlockReportTime</value>
+</property>
+
+<property>
+  <name>metric.dfs.fsnamesystem status.node</name>
+  <value>node</value>
+</property>
+
+<property>
+  <name>metric.dfs.fsnamesystem status.node.FilesTotal</name>
+  <value>FilesTotal</value>
+</property>
+
+<property>
+  <name>metric.dfs.fsnamesystem status.node.BlocksTotal</name>
+  <value>BlocksTotal</value>
+</property>
+
+<property>
+  <name>metric.dfs.fsnamesystem status.node.CapacityTotalGB</name>
+  <value>CapacityTotalGB</value>
+</property>
+
+<property>
+  <name>metric.dfs.fsnamesystem status.node.CapacityUsedGB</name>
+  <value>CapacityUsedGB</value>
+</property>
+
+<property>
+  <name>metric.dfs.fsnamesystem status.node.CapacityRemainingGB</name>
+  <value>CapacityRemainingGB</value>
+</property>
+
+<property>
+  <name>metric.dfs.fsnamesystem status.node.TotalLoad</name>
+  <value></value>
+</property>
+
+<property>
+  <name>metric.dfs.fsnamesystem status.node.PendingReplicationBlocks</name>
+  <value>PendingReplicationBlocks</value>
+</property>
+
+<property>
+  <name>metric.dfs.fsnamesystem status.node.UnderReplicatedBlocks</name>
+  <value>UnderReplicatedBlocks</value>
+</property>
+
+<property>
+  <name>metric.dfs.fsnamesystem status.node.ScheduledReplicationBlocks</name>
+  <value>ScheduledReplicationBlocks</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..#nodes</name>
+  <value>nodes</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..AverageRpcQueueTime_num_ops</name>
+  <value>AverageRpcQueueTime_num_ops</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..AverageRpcQueueTime_avg_time</name>
+  <value>AverageRpcQueueTime_avg_time</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..AverageRpcQueueTime_num_ops</name>
+  <value>AverageRpcQueueTime_num_ops</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..AverageRpcProcessingTime_num_ops</name>
+  <value>AverageRpcProcessingTime_num_ops</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..AverageRpcProcessingTime_avg_time</name>
+  <value>AverageRpcProcessingTime_avg_time</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..RpcDiscarded_num_ops</name>
+  <value>RpcDiscarded_num_ops</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..RpcDiscarded_avg_time</name>
+  <value>RpcDiscarded_avg_time</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..register_num_ops</name>
+  <value>register_num_ops</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..register_avg_time</name>
+  <value>register_avg_time</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..getProtocolVersion_num_ops</name>
+  <value>getProtocolVersion_num_ops</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..getProtocolVersion_avg_time</name>
+  <value>getProtocolVersion_avg_time</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..sendHeartbeat_num_ops</name>
+  <value>sendHeartbeat_num_ops</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..sendHeartbeat_avg_time</name>
+  <value>sendHeartbeat_avg_time</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..blockReport_num_ops</name>
+  <value>blockReport_num_ops</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..blockReport_avg_time</name>
+  <value>blockReport_avg_time</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..getBlockLocations_num_ops</name>
+  <value>getBlockLocations_num_ops</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..heartbeat_num_ops</name>
+  <value>heartbeat_num_ops</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..versionRequest_num_ops</name>
+  <value>versionRequest_num_ops</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..setPermission_num_ops</name>
+  <value>setPermission_num_ops</value>
+</property>
+
+<property>
+  <name>metric.rpcmetrics.rpc metrics..rollFsImage_num_ops</name>
+  <value>rollFsImage_num_ops</value>
+</property>
+
+<property>
+  <name>conversion.metric.systemstate.pernode.node.bytes_in</name>
+  <value>0.001</value>
+</property>
+
+<property>
+  <name>conversion.metric.systemstate.pernode.node.bytes_out</name>
+  <value>0.001</value>
+</property>
+
+<property>
+  <name>util.perfMetrics</name>
+  <value>CPUBusy,FreeMemPercentage,MaxDiskBusyPercentage,NetworkInKBps,NetworkOutKBps,DiskAReadKBps,DiskBReadKBps,DiskCReadKBps,DiskDReadKBps,DiskAWriteKBps,DiskBWriteKBps,DiskCWriteKBps,DiskDWriteKBps,DiskUsedPercentage</value>
+</property>
+
+<!-- Database summarization intervals -->
+<property>
+  <name>consolidator.table.dfs_namenode</name>
+  <value>5,30,120</value>
+</property>
+
+<property>
+  <name>consolidator.table.SimonData</name>
+  <value>5,30,120</value>
+</property>
+
+<property>
+  <name>consolidator.table.rpc_metrics</name>
+  <value>5,30,120</value>
+</property>
+
+<property>
+  <name>consolidator.table.dfs_throughput</name>
+  <value>5,30,120</value>
+</property>
+
+<property>
+  <name>consolidator.table.dfs_individual</name>
+  <value>5,30,120</value>
+</property>
+
+<property>
+  <name>consolidator.table.cluster_systemstate</name>
+  <value>5,30,120</value>
+</property>
+
+<property>
+  <name>consolidator.table.NodeActivity</name>
+  <value>5,30,120</value>
+</property>
+
+<property>
+  <name>consolidator.table.HodJobDigest</name>
+  <value>5,30,120</value>
+</property>
+
+<property>
+  <name>consolidator.table.dfs_fsnamesystem_status</name>
+  <value>5,30,120</value>
+</property>
+</configuration>

+ 1212 - 0
src/contrib/chukwa/conf/mysql_create_tables

@@ -0,0 +1,1212 @@
+create table if not exists NodeActivity 
+(
+  Id int(11) NOT NULL auto_increment,
+  Timestamp  timestamp default CURRENT_TIMESTAMP,
+  Used int(11) default NULL,
+  Free int(11) default NULL,
+  Down int(11) default NULL,
+  PRIMARY KEY  (Id),
+  index (Timestamp)
+);
+
+create table if not exists NodeActivity_5 
+(
+  Id int(11) NOT NULL auto_increment,
+  Timestamp  timestamp default CURRENT_TIMESTAMP,
+  Used int(11) default NULL,
+  Free int(11) default NULL,
+  Down int(11) default NULL,
+  PRIMARY KEY  (Id),
+  index (Timestamp)
+);
+
+create table if not exists NodeActivity_30 
+(
+  Id int(11) NOT NULL auto_increment,
+  Timestamp  timestamp default CURRENT_TIMESTAMP,
+  Used int(11) default NULL,
+  Free int(11) default NULL,
+  Down int(11) default NULL,
+  PRIMARY KEY  (Id),
+  index (Timestamp)
+);
+
+create table if not exists NodeActivity_120 
+(
+  Id int(11) NOT NULL auto_increment,
+  Timestamp  timestamp default CURRENT_TIMESTAMP,
+  Used int(11) default NULL,
+  Free int(11) default NULL,
+  Down int(11) default NULL,
+  PRIMARY KEY  (Id),
+  index (Timestamp)
+);
+
+create table if not exists SimonData (
+Machine varchar(40),
+Timestamp  timestamp default CURRENT_TIMESTAMP,
+CPUBusy tinyint unsigned,
+FreeMemPercentage tinyint unsigned,
+CPUIdle tinyint unsigned,
+CPUNice tinyint unsigned,
+CPUSystem tinyint unsigned,
+CPUUser tinyint unsigned,
+CPUIOWait tinyint unsigned,
+CPUIrq tinyint unsigned,
+CPUSoftIrq tinyint unsigned,
+LoadFifteen  tinyint unsigned,
+LoadFive tinyint unsigned,
+LoadOne tinyint unsigned,
+MemBuffersPercentage tinyint unsigned,
+MemCachedPercentage tinyint unsigned,
+MemUserPercentage tinyint unsigned,
+MemSharedPercentage tinyint unsigned,
+MaxDiskBusyPercentage tinyint unsigned,
+NetworkInKBps mediumint  unsigned,
+NetworkOutKBps mediumint unsigned,
+DiskAReadKBps mediumint unsigned,
+DiskAWriteKBps mediumint unsigned,
+DiskBReadKBps mediumint unsigned,
+DiskBWriteKBps mediumint unsigned,
+DiskCReadKBps mediumint unsigned,
+DiskCWriteKBps mediumint unsigned,
+DiskDReadKBps mediumint unsigned,
+DiskDWriteKBps mediumint unsigned,
+DiskTotalGB smallint unsigned,
+DiskUsedPercentage tinyint unsigned,
+PacketsIn mediumint unsigned,
+PacketsOut mediumint unsigned,
+SwapInKBps mediumint unsigned,
+SwapOutKBps mediumint unsigned,
+primary key( Machine, Timestamp),
+index (Timestamp)
+);
+
+create table if not exists SimonData_5 (
+Machine varchar(40),
+Timestamp  timestamp default CURRENT_TIMESTAMP,
+CPUBusy tinyint unsigned,
+FreeMemPercentage tinyint unsigned,
+CPUIdle tinyint unsigned,
+CPUNice tinyint unsigned,
+CPUSystem tinyint unsigned,
+CPUUser tinyint unsigned,
+CPUIOWait tinyint unsigned,
+CPUIrq tinyint unsigned,
+CPUSoftIrq tinyint unsigned,
+LoadFifteen  tinyint unsigned,
+LoadFive tinyint unsigned,
+LoadOne tinyint unsigned,
+MemBuffersPercentage tinyint unsigned,
+MemCachedPercentage tinyint unsigned,
+MemUserPercentage tinyint unsigned,
+MemSharedPercentage tinyint unsigned,
+MaxDiskBusyPercentage tinyint unsigned,
+NetworkInKBps mediumint  unsigned,
+NetworkOutKBps mediumint unsigned,
+DiskAReadKBps mediumint unsigned,
+DiskAWriteKBps mediumint unsigned,
+DiskBReadKBps mediumint unsigned,
+DiskBWriteKBps mediumint unsigned,
+DiskCReadKBps mediumint unsigned,
+DiskCWriteKBps mediumint unsigned,
+DiskDReadKBps mediumint unsigned,
+DiskDWriteKBps mediumint unsigned,
+DiskTotalGB smallint unsigned,
+DiskUsedPercentage tinyint unsigned,
+PacketsIn mediumint unsigned,
+PacketsOut mediumint unsigned,
+SwapInKBps mediumint unsigned,
+SwapOutKBps mediumint unsigned,
+primary key( Machine, Timestamp),
+index (Timestamp)
+);
+
+create table if not exists SimonData_30 (
+Machine varchar(40),
+Timestamp  timestamp default CURRENT_TIMESTAMP,
+CPUBusy tinyint unsigned,
+FreeMemPercentage tinyint unsigned,
+CPUIdle tinyint unsigned,
+CPUNice tinyint unsigned,
+CPUSystem tinyint unsigned,
+CPUUser tinyint unsigned,
+CPUIOWait tinyint unsigned,
+CPUIrq tinyint unsigned,
+CPUSoftIrq tinyint unsigned,
+LoadFifteen  tinyint unsigned,
+LoadFive tinyint unsigned,
+LoadOne tinyint unsigned,
+MemBuffersPercentage tinyint unsigned,
+MemCachedPercentage tinyint unsigned,
+MemUserPercentage tinyint unsigned,
+MemSharedPercentage tinyint unsigned,
+MaxDiskBusyPercentage tinyint unsigned,
+NetworkInKBps mediumint  unsigned,
+NetworkOutKBps mediumint unsigned,
+DiskAReadKBps mediumint unsigned,
+DiskAWriteKBps mediumint unsigned,
+DiskBReadKBps mediumint unsigned,
+DiskBWriteKBps mediumint unsigned,
+DiskCReadKBps mediumint unsigned,
+DiskCWriteKBps mediumint unsigned,
+DiskDReadKBps mediumint unsigned,
+DiskDWriteKBps mediumint unsigned,
+DiskTotalGB smallint unsigned,
+DiskUsedPercentage tinyint unsigned,
+PacketsIn mediumint unsigned,
+PacketsOut mediumint unsigned,
+SwapInKBps mediumint unsigned,
+SwapOutKBps mediumint unsigned,
+primary key( Machine, Timestamp),
+index (Timestamp)
+);
+
+create table if not exists SimonData_120 (
+Machine varchar(40),
+Timestamp  timestamp default CURRENT_TIMESTAMP,
+CPUBusy tinyint unsigned,
+FreeMemPercentage tinyint unsigned,
+CPUIdle tinyint unsigned,
+CPUNice tinyint unsigned,
+CPUSystem tinyint unsigned,
+CPUUser tinyint unsigned,
+CPUIOWait tinyint unsigned,
+CPUIrq tinyint unsigned,
+CPUSoftIrq tinyint unsigned,
+LoadFifteen  tinyint unsigned,
+LoadFive tinyint unsigned,
+LoadOne tinyint unsigned,
+MemBuffersPercentage tinyint unsigned,
+MemCachedPercentage tinyint unsigned,
+MemUserPercentage tinyint unsigned,
+MemSharedPercentage tinyint unsigned,
+MaxDiskBusyPercentage tinyint unsigned,
+NetworkInKBps mediumint  unsigned,
+NetworkOutKBps mediumint unsigned,
+DiskAReadKBps mediumint unsigned,
+DiskAWriteKBps mediumint unsigned,
+DiskBReadKBps mediumint unsigned,
+DiskBWriteKBps mediumint unsigned,
+DiskCReadKBps mediumint unsigned,
+DiskCWriteKBps mediumint unsigned,
+DiskDReadKBps mediumint unsigned,
+DiskDWriteKBps mediumint unsigned,
+DiskTotalGB smallint unsigned,
+DiskUsedPercentage tinyint unsigned,
+PacketsIn mediumint unsigned,
+PacketsOut mediumint unsigned,
+SwapInKBps mediumint unsigned,
+SwapOutKBps mediumint unsigned,
+primary key( Machine, Timestamp),
+index (Timestamp)
+);
+
+create table if not exists HodMachine (
+HodID varchar(20) not null, 
+Machine varchar(40) not null,
+index(HodId)
+);
+
+create table if not exists HodJob (
+HodID varchar(20) primary key, 
+UserID varchar(20), 
+Status  smallint,
+JobTracker varchar(40), 
+TimeQueued mediumint unsigned,
+StartTime timestamp default CURRENT_TIMESTAMP, 
+EndTime timestamp default 0,  
+NumOfMachines smallint unsigned,  
+SlotLimitPerTracker smallint unsigned,
+LogProcessStatus varchar(20),
+index(StartTime)
+);
+
+
+create table if not exists MachineInfo (
+Name varchar(40) , 
+GoodUntil timestamp default 0,
+NumOfCores smallint unsigned, 
+NumOfCPUs smallint unsigned, 
+MemoryMB smallint unsigned, 
+NumOfDisks smallint unsigned, 
+DiskCapacityInGB smallint unsigned, 
+ClockFrequency varchar(20), 
+RackID varchar(20), 
+primary key(Name,GoodUntil)
+);
+
+create table if not exists MRJob(
+HodID varchar(20),
+MRJobID varchar(80),
+MRJobName varchar(100),
+STATUS varchar(10),
+SUBMIT_TIME timestamp default 0,
+LAUNCH_TIME timestamp default 0,
+FINISH_TIME timestamp default 0,
+MAPPER_PHASE_END_TIME timestamp default 0,
+TOTAL_MAPS int unsigned,
+TOTAL_REDUCES int unsigned,
+FINISHED_MAPS  int unsigned,
+FINISHED_REDUCES  int unsigned,      
+NumOfLocalSplits int unsigned,
+NumOfRackLocalSplits int unsigned,
+NUM_OF_MAPPER_ATTEMPTS int unsigned,
+NUM_OF_REDUCER_ATTEMPTS int unsigned,
+MAPPER_PHASE_EXECUTION_TIME int,
+AvgMapperExecutionTime int unsigned,
+AvgLocalMapperExecutionTime int unsigned,
+AvgRackLocalMapperExecutionTime int unsigned,
+AvgRemoteMapperExecutionTime int unsigned,
+
+AvgReducerExecutionTime int unsigned,
+AvgShuffleExecutionTime int unsigned,
+AvgSortExecutionTime int unsigned,
+
+MapperClass varchar(80),
+ReducerClass varchar(80),
+PartitionerClass varchar(80),
+CombinerClass varchar(80),
+InputFormatClass varchar(80),
+InputKeyClass varchar(80),
+InputValueClass varchar(80),
+OutputFormatClass varchar(80),
+OutputCompressed tinyint,
+OutputCompressionType  varchar(20),
+OutputCompressionCodec varchar(20),
+OutputKeyClass varchar(80),
+OutputValueClass varchar(80),
+MapOutputKeyClass varchar(80),
+MapOutputValueClass varchar(80),
+MapOutputCompressed tinyint,
+MapOutputCompressionType  varchar(20),
+MapOutputCompressionCodec varchar(20),
+InputDataSizeInMB int unsigned,
+MapOutputSizeInMB int unsigned,
+OutputDataSizeInMB int unsigned,
+MR_JOBCONF  text, 
+InputDir  text, 
+primary key( HodID, MRJobID)
+);
+
+create table if not exists MRJobTSData (
+HodID varchar(20),
+MRJobID varchar(80),
+Timestamp timestamp default 0,      
+MAPPER_COUNT mediumint unsigned,        
+REDUCER_COUNT mediumint unsigned,       
+SORT_COUNT mediumint unsigned,  
+SHUFFLE_COUNT mediumint unsigned,        
+REDUCER_EXECUTION_COUNT mediumint unsigned, 
+FINISHED_MAPPER_COUNT   mediumint unsigned, 
+FINISHED_REDUCER_COUNT mediumint unsigned,
+primary key (HodID, MRJobID, Timestamp),
+index(TimeStamp)
+);
+
+
+create table if not exists HodJobDigest(
+    HodID VARCHAR(20),
+    Timestamp timestamp default 0,
+    AvgCPUBusy  tinyint unsigned,
+    MinCPUBusy  tinyint unsigned,
+    MaxCPUBusy  tinyint unsigned,
+    AvgFreeMemPercentage tinyint unsigned,
+    MinFreeMemPercentage tinyint unsigned,
+    MaxFreeMemPercentage tinyint unsigned,
+    AvgMaxDiskBusyPercentage  TINYINT UNSIGNED,
+    MinMaxDiskBusyPercentage    TINYINT UNSIGNED,
+    MaxMaxDiskBusyPercentage    TINYINT UNSIGNED,
+    AvgNetworkInKBps mediumint unsigned,
+    MinNetworkInKBps mediumint unsigned,
+    MaxNetworkInKBps mediumint unsigned,
+    AvgNetworkOutKBps mediumint unsigned,
+    MinNetworkOutKBps mediumint unsigned,
+    MaxNetworkOutKBps mediumint unsigned,
+    AvgDiskAReadKBps mediumint unsigned,
+    MinDiskAReadKBps  mediumint unsigned,
+    MaxDiskAReadKBps mediumint unsigned,
+    AvgDiskBReadKBps mediumint unsigned,
+    MinDiskBReadKBps mediumint unsigned,
+    MaxDiskBReadKBps mediumint unsigned,
+    AvgDiskCReadKBps mediumint unsigned,
+    MinDiskCReadKBps mediumint unsigned,
+    MaxDiskCReadKBps mediumint unsigned,
+    AvgDiskDReadKBps mediumint unsigned,
+    MinDiskDReadKBps mediumint unsigned,
+    MaxDiskDReadKBps mediumint unsigned,
+    AvgDiskAWriteKBps mediumint unsigned,
+    MinDiskAWriteKBps mediumint UNSIGNED,
+    MaxDiskAWriteKBps mediumint UNSIGNED,
+    AvgDiskBWriteKBps mediumint UNSIGNED,
+    MinDiskBWriteKBps mediumint UNSIGNED,
+    MaxDiskBWriteKBps mediumint UNSIGNED,
+    AvgDiskCWriteKBps mediumint UNSIGNED,
+    MinDiskCWriteKBps mediumint UNSIGNED,
+    MaxDiskCWriteKBps mediumint UNSIGNED,
+    AvgDiskDWriteKBps mediumint UNSIGNED,
+    MinDiskDWriteKBps mediumint UNSIGNED,
+    MaxDiskDWriteKBps mediumint UNSIGNED,
+    AvgDiskUsedPercentage  TINYINT UNSIGNED,
+    MinDiskUsedPercentage    TINYINT UNSIGNED,
+    MaxDiskUsedPercentage    TINYINT UNSIGNED,
+    AvgOverallUsage  TINYINT UNSIGNED,
+    MinOverallUsage TINYINT UNSIGNED,
+    MaxOverallUsage  TINYINT UNSIGNED,
+    primary key(HodId, Timestamp),
+    index(TimeStamp)
+); 
+
+create table if not exists HodJobDigest_5 (
+    HodID VARCHAR(20),
+    Timestamp timestamp default 0,
+    AvgCPUBusy  tinyint unsigned,
+    MinCPUBusy  tinyint unsigned,
+    MaxCPUBusy  tinyint unsigned,
+    AvgFreeMemPercentage tinyint unsigned,
+    MinFreeMemPercentage tinyint unsigned,
+    MaxFreeMemPercentage tinyint unsigned,
+    AvgMaxDiskBusyPercentage  TINYINT UNSIGNED,
+    MinMaxDiskBusyPercentage    TINYINT UNSIGNED,
+    MaxMaxDiskBusyPercentage    TINYINT UNSIGNED,
+    AvgNetworkInKBps mediumint unsigned,
+    MinNetworkInKBps mediumint unsigned,
+    MaxNetworkInKBps mediumint unsigned,
+    AvgNetworkOutKBps mediumint unsigned,
+    MinNetworkOutKBps mediumint unsigned,
+    MaxNetworkOutKBps mediumint unsigned,
+    AvgDiskAReadKBps mediumint unsigned,
+    MinDiskAReadKBps  mediumint unsigned,
+    MaxDiskAReadKBps mediumint unsigned,
+    AvgDiskBReadKBps mediumint unsigned,
+    MinDiskBReadKBps mediumint unsigned,
+    MaxDiskBReadKBps mediumint unsigned,
+    AvgDiskCReadKBps mediumint unsigned,
+    MinDiskCReadKBps mediumint unsigned,
+    MaxDiskCReadKBps mediumint unsigned,
+    AvgDiskDReadKBps mediumint unsigned,
+    MinDiskDReadKBps mediumint unsigned,
+    MaxDiskDReadKBps mediumint unsigned,
+    AvgDiskAWriteKBps mediumint unsigned,
+    MinDiskAWriteKBps mediumint UNSIGNED,
+    MaxDiskAWriteKBps mediumint UNSIGNED,
+    AvgDiskBWriteKBps mediumint UNSIGNED,
+    MinDiskBWriteKBps mediumint UNSIGNED,
+    MaxDiskBWriteKBps mediumint UNSIGNED,
+    AvgDiskCWriteKBps mediumint UNSIGNED,
+    MinDiskCWriteKBps mediumint UNSIGNED,
+    MaxDiskCWriteKBps mediumint UNSIGNED,
+    AvgDiskDWriteKBps mediumint UNSIGNED,
+    MinDiskDWriteKBps mediumint UNSIGNED,
+    MaxDiskDWriteKBps mediumint UNSIGNED,
+    AvgDiskUsedPercentage  TINYINT UNSIGNED,
+    MinDiskUsedPercentage    TINYINT UNSIGNED,
+    MaxDiskUsedPercentage    TINYINT UNSIGNED,
+    AvgOverallUsage  TINYINT UNSIGNED,
+    MinOverallUsage TINYINT UNSIGNED,
+    MaxOverallUsage  TINYINT UNSIGNED,
+    primary key(HodId, Timestamp),
+    index(TimeStamp)
+);
+ 
+create table if not exists HodJobDigest_30 (
+    HodID VARCHAR(20),
+    Timestamp timestamp default 0,
+    AvgCPUBusy  tinyint unsigned,
+    MinCPUBusy  tinyint unsigned,
+    MaxCPUBusy  tinyint unsigned,
+    AvgFreeMemPercentage tinyint unsigned,
+    MinFreeMemPercentage tinyint unsigned,
+    MaxFreeMemPercentage tinyint unsigned,
+    AvgMaxDiskBusyPercentage  TINYINT UNSIGNED,
+    MinMaxDiskBusyPercentage    TINYINT UNSIGNED,
+    MaxMaxDiskBusyPercentage    TINYINT UNSIGNED,
+    AvgNetworkInKBps mediumint unsigned,
+    MinNetworkInKBps mediumint unsigned,
+    MaxNetworkInKBps mediumint unsigned,
+    AvgNetworkOutKBps mediumint unsigned,
+    MinNetworkOutKBps mediumint unsigned,
+    MaxNetworkOutKBps mediumint unsigned,
+    AvgDiskAReadKBps mediumint unsigned,
+    MinDiskAReadKBps  mediumint unsigned,
+    MaxDiskAReadKBps mediumint unsigned,
+    AvgDiskBReadKBps mediumint unsigned,
+    MinDiskBReadKBps mediumint unsigned,
+    MaxDiskBReadKBps mediumint unsigned,
+    AvgDiskCReadKBps mediumint unsigned,
+    MinDiskCReadKBps mediumint unsigned,
+    MaxDiskCReadKBps mediumint unsigned,
+    AvgDiskDReadKBps mediumint unsigned,
+    MinDiskDReadKBps mediumint unsigned,
+    MaxDiskDReadKBps mediumint unsigned,
+    AvgDiskAWriteKBps mediumint unsigned,
+    MinDiskAWriteKBps mediumint UNSIGNED,
+    MaxDiskAWriteKBps mediumint UNSIGNED,
+    AvgDiskBWriteKBps mediumint UNSIGNED,
+    MinDiskBWriteKBps mediumint UNSIGNED,
+    MaxDiskBWriteKBps mediumint UNSIGNED,
+    AvgDiskCWriteKBps mediumint UNSIGNED,
+    MinDiskCWriteKBps mediumint UNSIGNED,
+    MaxDiskCWriteKBps mediumint UNSIGNED,
+    AvgDiskDWriteKBps mediumint UNSIGNED,
+    MinDiskDWriteKBps mediumint UNSIGNED,
+    MaxDiskDWriteKBps mediumint UNSIGNED,
+    AvgDiskUsedPercentage  TINYINT UNSIGNED,
+    MinDiskUsedPercentage    TINYINT UNSIGNED,
+    MaxDiskUsedPercentage    TINYINT UNSIGNED,
+    AvgOverallUsage  TINYINT UNSIGNED,
+    MinOverallUsage TINYINT UNSIGNED,
+    MaxOverallUsage  TINYINT UNSIGNED,
+    primary key(HodId, Timestamp),
+    index(TimeStamp)
+); 
+
+create table if not exists HodJobDigest_120 (
+    HodID VARCHAR(20),
+    Timestamp timestamp default 0,
+    AvgCPUBusy  tinyint unsigned,
+    MinCPUBusy  tinyint unsigned,
+    MaxCPUBusy  tinyint unsigned,
+    AvgFreeMemPercentage tinyint unsigned,
+    MinFreeMemPercentage tinyint unsigned,
+    MaxFreeMemPercentage tinyint unsigned,
+    AvgMaxDiskBusyPercentage  TINYINT UNSIGNED,
+    MinMaxDiskBusyPercentage    TINYINT UNSIGNED,
+    MaxMaxDiskBusyPercentage    TINYINT UNSIGNED,
+    AvgNetworkInKBps mediumint unsigned,
+    MinNetworkInKBps mediumint unsigned,
+    MaxNetworkInKBps mediumint unsigned,
+    AvgNetworkOutKBps mediumint unsigned,
+    MinNetworkOutKBps mediumint unsigned,
+    MaxNetworkOutKBps mediumint unsigned,
+    AvgDiskAReadKBps mediumint unsigned,
+    MinDiskAReadKBps  mediumint unsigned,
+    MaxDiskAReadKBps mediumint unsigned,
+    AvgDiskBReadKBps mediumint unsigned,
+    MinDiskBReadKBps mediumint unsigned,
+    MaxDiskBReadKBps mediumint unsigned,
+    AvgDiskCReadKBps mediumint unsigned,
+    MinDiskCReadKBps mediumint unsigned,
+    MaxDiskCReadKBps mediumint unsigned,
+    AvgDiskDReadKBps mediumint unsigned,
+    MinDiskDReadKBps mediumint unsigned,
+    MaxDiskDReadKBps mediumint unsigned,
+    AvgDiskAWriteKBps mediumint unsigned,
+    MinDiskAWriteKBps mediumint UNSIGNED,
+    MaxDiskAWriteKBps mediumint UNSIGNED,
+    AvgDiskBWriteKBps mediumint UNSIGNED,
+    MinDiskBWriteKBps mediumint UNSIGNED,
+    MaxDiskBWriteKBps mediumint UNSIGNED,
+    AvgDiskCWriteKBps mediumint UNSIGNED,
+    MinDiskCWriteKBps mediumint UNSIGNED,
+    MaxDiskCWriteKBps mediumint UNSIGNED,
+    AvgDiskDWriteKBps mediumint UNSIGNED,
+    MinDiskDWriteKBps mediumint UNSIGNED,
+    MaxDiskDWriteKBps mediumint UNSIGNED,
+    AvgDiskUsedPercentage  TINYINT UNSIGNED,
+    MinDiskUsedPercentage    TINYINT UNSIGNED,
+    MaxDiskUsedPercentage    TINYINT UNSIGNED,
+    AvgOverallUsage  TINYINT UNSIGNED,
+    MinOverallUsage TINYINT UNSIGNED,
+    MaxOverallUsage  TINYINT UNSIGNED,
+    primary key(HodId, Timestamp),
+    index(TimeStamp)
+); 
+create table if not exists HodJobUnprocessed (
+HodID varchar(20),
+primary key(HodId)
+);
+
+create table if not exists QueueInfo(
+Timestamp timestamp default 0,
+HodID VARCHAR(20),
+Queue VARCHAR(20),
+NumOfMachine smallint unsigned,
+status varchar(1),
+index(TimeStamp)
+);
+
+
+create table if not exists cluster_systemstate(
+    Timestamp timestamp default 0,
+    nodes mediumint UNSIGNED, 
+    pids mediumint UNSIGNED,
+    avgBlurbs double,
+    avgBlurbRate double,
+    avgCpuIdle double,
+    avgCpuNice double,
+    avgCpuNicePercent double,
+    avgCpuSystem double,
+    avgCpuUser double,
+    avgCpuIowait double,
+    avgCpuIrq double,
+    avgCpuSoftirq double,
+    avgCpuBusy double,
+    avgLoadOne double,
+    avgLoadFive double,
+    avgLoadFifteen double,
+    avgMemBuffers double,
+    avgMemCached double,
+    avgMemCachedPercent double,
+    avgMemFree double,
+    avgMemFreePercent double,
+    avgMemUser double,
+    avgMemUserPercent double,
+    avgMemShared double,
+    avgMemSharedPercent double,
+    avgMemTotal double,
+    avgSwapTotal double,
+    avgSwapInKbps double,
+    avgSwapOutKbps double,
+    avgBytesIn double,
+    avgBytesOut double,
+    avgPktsIn double,
+    avgPktsOut double,
+    avgDiskFree double,
+    avgDiskTotal double,
+    avgDiskUsed double,
+    avgPartMaxUsed double,
+    avgDiskMaxBusy double,
+    primary key(Timestamp),
+    index(TimeStamp)
+);
+
+create table if not exists cluster_systemstate_5(
+    Timestamp timestamp default 0,
+    nodes mediumint UNSIGNED, 
+    pids mediumint UNSIGNED,
+    avgBlurbs double,
+    avgBlurbRate double,
+    avgCpuIdle double,
+    avgCpuNice double,
+    avgCpuNicePercent double,
+    avgCpuSystem double,
+    avgCpuUser double,
+    avgCpuIowait double,
+    avgCpuIrq double,
+    avgCpuSoftirq double,
+    avgCpuBusy double,
+    avgLoadOne double,
+    avgLoadFive double,
+    avgLoadFifteen double,
+    avgMemBuffers double,
+    avgMemCached double,
+    avgMemCachedPercent double,
+    avgMemFree double,
+    avgMemFreePercent double,
+    avgMemUser double,
+    avgMemUserPercent double,
+    avgMemShared double,
+    avgMemSharedPercent double,
+    avgMemTotal double,
+    avgSwapTotal double,
+    avgSwapInKbps double,
+    avgSwapOutKbps double,
+    avgBytesIn double,
+    avgBytesOut double,
+    avgPktsIn double,
+    avgPktsOut double,
+    avgDiskFree double,
+    avgDiskTotal double,
+    avgDiskUsed double,
+    avgPartMaxUsed double,
+    avgDiskMaxBusy double,
+    primary key(Timestamp),
+    index(TimeStamp)
+);
+
+create table if not exists cluster_systemstate_30(
+    Timestamp timestamp default 0,
+    nodes mediumint UNSIGNED, 
+    pids mediumint UNSIGNED,
+    avgBlurbs double,
+    avgBlurbRate double,
+    avgCpuIdle double,
+    avgCpuNice double,
+    avgCpuNicePercent double,
+    avgCpuSystem double,
+    avgCpuUser double,
+    avgCpuIowait double,
+    avgCpuIrq double,
+    avgCpuSoftirq double,
+    avgCpuBusy double,
+    avgLoadOne double,
+    avgLoadFive double,
+    avgLoadFifteen double,
+    avgMemBuffers double,
+    avgMemCached double,
+    avgMemCachedPercent double,
+    avgMemFree double,
+    avgMemFreePercent double,
+    avgMemUser double,
+    avgMemUserPercent double,
+    avgMemShared double,
+    avgMemSharedPercent double,
+    avgMemTotal double,
+    avgSwapTotal double,
+    avgSwapInKbps double,
+    avgSwapOutKbps double,
+    avgBytesIn double,
+    avgBytesOut double,
+    avgPktsIn double,
+    avgPktsOut double,
+    avgDiskFree double,
+    avgDiskTotal double,
+    avgDiskUsed double,
+    avgPartMaxUsed double,
+    avgDiskMaxBusy double,
+    primary key(Timestamp),
+    index(TimeStamp)
+);
+
+create table if not exists cluster_systemstate_120(
+    Timestamp timestamp default 0,
+    nodes mediumint UNSIGNED, 
+    pids mediumint UNSIGNED,
+    avgBlurbs double,
+    avgBlurbRate double,
+    avgCpuIdle double,
+    avgCpuNice double,
+    avgCpuNicePercent double,
+    avgCpuSystem double,
+    avgCpuUser double,
+    avgCpuIowait double,
+    avgCpuIrq double,
+    avgCpuSoftirq double,
+    avgCpuBusy double,
+    avgLoadOne double,
+    avgLoadFive double,
+    avgLoadFifteen double,
+    avgMemBuffers double,
+    avgMemCached double,
+    avgMemCachedPercent double,
+    avgMemFree double,
+    avgMemFreePercent double,
+    avgMemUser double,
+    avgMemUserPercent double,
+    avgMemShared double,
+    avgMemSharedPercent double,
+    avgMemTotal double,
+    avgSwapTotal double,
+    avgSwapInKbps double,
+    avgSwapOutKbps double,
+    avgBytesIn double,
+    avgBytesOut double,
+    avgPktsIn double,
+    avgPktsOut double,
+    avgDiskFree double,
+    avgDiskTotal double,
+    avgDiskUsed double,
+    avgPartMaxUsed double,
+    avgDiskMaxBusy double,
+    primary key(Timestamp),
+    index(TimeStamp)
+);
+
+create table if not exists dfs_throughput (
+    Timestamp timestamp default 0,
+    nodes mediumint UNSIGNED,
+    pids mediumint UNSIGNED,
+    restarts mediumint UNSIGNED,
+    bytesWrittenPerSec double,
+    bytesReadPerSec double,
+    blocksWrittenPerSec double,
+    blocksReadPerSec double,
+    blocksReplicatedPerSec double,
+    blocksRemovedPerSec double,
+    blocksVerifiedPerSec double,
+    blockVerificationFailuresPerSec double,
+    readsFromLocalClientPerSec double,
+    readsFromLocalRemotePerSec double,
+    writesFromLocalClientPerSec double,
+    writesFromLocalRemotePerSec double,
+    readBlockOperationsPerSec double,
+    numberReadBlockOperations double,
+    writeBlockOperationsPerSec double,
+    numberWriteBlockOperations double,
+    readMetadataOperationsPerSec double,
+    numberReadMetadataOperations double,
+    copyBlockOperationsPerSec double,
+    numberCopyBlockOperations double,
+    replaceBlockOperationsPerSec double,
+    numberReplaceBlockOperations double,
+    heartBeatsPerSec double,
+    numberHeartBeats double,
+    blockReportsPerSec double,
+    numberBlockReports double,
+    primary key(Timestamp),
+    index(TimeStamp)
+);
+
+create table if not exists dfs_throughput_5 (
+    Timestamp timestamp default 0,
+    nodes mediumint UNSIGNED,
+    pids mediumint UNSIGNED,
+    restarts mediumint UNSIGNED,
+    bytesWrittenPerSec double,
+    bytesReadPerSec double,
+    blocksWrittenPerSec double,
+    blocksReadPerSec double,
+    blocksReplicatedPerSec double,
+    blocksRemovedPerSec double,
+    blocksVerifiedPerSec double,
+    blockVerificationFailuresPerSec double,
+    readsFromLocalClientPerSec double,
+    readsFromLocalRemotePerSec double,
+    writesFromLocalClientPerSec double,
+    writesFromLocalRemotePerSec double,
+    readBlockOperationsPerSec double,
+    numberReadBlockOperations double,
+    writeBlockOperationsPerSec double,
+    numberWriteBlockOperations double,
+    readMetadataOperationsPerSec double,
+    numberReadMetadataOperations double,
+    copyBlockOperationsPerSec double,
+    numberCopyBlockOperations double,
+    replaceBlockOperationsPerSec double,
+    numberReplaceBlockOperations double,
+    heartBeatsPerSec double,
+    numberHeartBeats double,
+    blockReportsPerSec double,
+    numberBlockReports double,
+    primary key(Timestamp),
+    index(TimeStamp)
+);
+
+create table if not exists dfs_throughput_30 (
+    Timestamp timestamp default 0,
+    nodes mediumint UNSIGNED,
+    pids mediumint UNSIGNED,
+    restarts mediumint UNSIGNED,
+    bytesWrittenPerSec double,
+    bytesReadPerSec double,
+    blocksWrittenPerSec double,
+    blocksReadPerSec double,
+    blocksReplicatedPerSec double,
+    blocksRemovedPerSec double,
+    blocksVerifiedPerSec double,
+    blockVerificationFailuresPerSec double,
+    readsFromLocalClientPerSec double,
+    readsFromLocalRemotePerSec double,
+    writesFromLocalClientPerSec double,
+    writesFromLocalRemotePerSec double,
+    readBlockOperationsPerSec double,
+    numberReadBlockOperations double,
+    writeBlockOperationsPerSec double,
+    numberWriteBlockOperations double,
+    readMetadataOperationsPerSec double,
+    numberReadMetadataOperations double,
+    copyBlockOperationsPerSec double,
+    numberCopyBlockOperations double,
+    replaceBlockOperationsPerSec double,
+    numberReplaceBlockOperations double,
+    heartBeatsPerSec double,
+    numberHeartBeats double,
+    blockReportsPerSec double,
+    numberBlockReports double,
+    primary key(Timestamp),
+    index(TimeStamp)
+);
+
+create table if not exists dfs_throughput_120 (
+    Timestamp timestamp default 0,
+    nodes mediumint UNSIGNED,
+    pids mediumint UNSIGNED,
+    restarts mediumint UNSIGNED,
+    bytesWrittenPerSec double,
+    bytesReadPerSec double,
+    blocksWrittenPerSec double,
+    blocksReadPerSec double,
+    blocksReplicatedPerSec double,
+    blocksRemovedPerSec double,
+    blocksVerifiedPerSec double,
+    blockVerificationFailuresPerSec double,
+    readsFromLocalClientPerSec double,
+    readsFromLocalRemotePerSec double,
+    writesFromLocalClientPerSec double,
+    writesFromLocalRemotePerSec double,
+    readBlockOperationsPerSec double,
+    numberReadBlockOperations double,
+    writeBlockOperationsPerSec double,
+    numberWriteBlockOperations double,
+    readMetadataOperationsPerSec double,
+    numberReadMetadataOperations double,
+    copyBlockOperationsPerSec double,
+    numberCopyBlockOperations double,
+    replaceBlockOperationsPerSec double,
+    numberReplaceBlockOperations double,
+    heartBeatsPerSec double,
+    numberHeartBeats double,
+    blockReportsPerSec double,
+    numberBlockReports double,
+    primary key(Timestamp),
+    index(TimeStamp)
+);
+
+create table if not exists dfs_individual (
+    Timestamp timestamp default 0,
+    node varchar(80),
+    pids mediumint UNSIGNED,
+    bytesWrittenPerSec double,
+    blocksRemovedPerSec double,
+    readsFromLocalRemotePerSec double,
+    writesFromLocalClientPerSec double,
+    blocksVerifiedPerSec double,
+    blocksWrittenPerSec double,
+    blockVerificationFailuresPerSec double,
+    restarts double,
+    blocksReplicatedPerSec double,
+    bytesReadPerSec double,
+    writesFromLocalRemotePerSec double,
+    readsFromLocalClientPerSec double,
+    blocksReadPerSec double,
+    primary key(node, TimeStamp),
+    index(TimeStamp)
+);
+
+create table if not exists dfs_individual_5 (
+    Timestamp timestamp default 0,
+    node varchar(80),
+    pids mediumint UNSIGNED,
+    bytesWrittenPerSec double,
+    blocksRemovedPerSec double,
+    readsFromLocalRemotePerSec double,
+    writesFromLocalClientPerSec double,
+    blocksVerifiedPerSec double,
+    blocksWrittenPerSec double,
+    blockVerificationFailuresPerSec double,
+    restarts double,
+    blocksReplicatedPerSec double,
+    bytesReadPerSec double,
+    writesFromLocalRemotePerSec double,
+    readsFromLocalClientPerSec double,
+    blocksReadPerSec double,
+    primary key(node, TimeStamp),
+    index(TimeStamp)
+);
+
+create table if not exists dfs_individual_30 (
+    Timestamp timestamp default 0,
+    node varchar(80),
+    pids mediumint UNSIGNED,
+    bytesWrittenPerSec double,
+    blocksRemovedPerSec double,
+    readsFromLocalRemotePerSec double,
+    writesFromLocalClientPerSec double,
+    blocksVerifiedPerSec double,
+    blocksWrittenPerSec double,
+    blockVerificationFailuresPerSec double,
+    restarts double,
+    blocksReplicatedPerSec double,
+    bytesReadPerSec double,
+    writesFromLocalRemotePerSec double,
+    readsFromLocalClientPerSec double,
+    blocksReadPerSec double,
+    primary key(node, TimeStamp),
+    index(TimeStamp)
+);
+
+create table if not exists dfs_individual_120 (
+    Timestamp timestamp default 0,
+    node varchar(80),
+    pids mediumint UNSIGNED,
+    bytesWrittenPerSec double,
+    blocksRemovedPerSec double,
+    readsFromLocalRemotePerSec double,
+    writesFromLocalClientPerSec double,
+    blocksVerifiedPerSec double,
+    blocksWrittenPerSec double,
+    blockVerificationFailuresPerSec double,
+    restarts double,
+    blocksReplicatedPerSec double,
+    bytesReadPerSec double,
+    writesFromLocalRemotePerSec double,
+    readsFromLocalClientPerSec double,
+    blocksReadPerSec double,
+    primary key(node, TimeStamp),
+    index(TimeStamp)
+);
+
+create table if not exists dfs_namenode (
+    Timestamp timestamp default 0,
+    node varchar(80),
+    pids mediumint UNSIGNED,
+    restarts mediumint UNSIGNED,
+    filesDeletedPerSec double,
+    filesCreatedPerSec double,
+    filesOpenedPerSec double,
+    filesRenamedPerSec double,
+    filesListedPerSec double,
+    numberOfTransactionsPerSec double, 
+    AverageTransactions double,
+    timeInSafeMode double,
+    numberOfSyncsPerSec double,
+    AverageSyncTime double,
+    fsImageLoadTime double,
+    numberOfBlockReportPerSec double,
+    AverageBlockReportTime double,
+    BlocksCorrupted double,
+    primary key(node, Timestamp),
+    index(TimeStamp)
+);
+
+create table if not exists dfs_namenode_5 (
+    Timestamp timestamp default 0,
+    node varchar(80),
+    pids mediumint UNSIGNED,
+    restarts mediumint UNSIGNED,
+    filesDeletedPerSec double,
+    filesCreatedPerSec double,
+    filesOpenedPerSec double,
+    filesRenamedPerSec double,
+    filesListedPerSec double,
+    numberOfTransactionsPerSec double, 
+    AverageTransactions double,
+    timeInSafeMode double,
+    numberOfSyncsPerSec double,
+    AverageSyncTime double,
+    fsImageLoadTime double,
+    numberOfBlockReportPerSec double,
+    AverageBlockReportTime double,
+    BlocksCorrupted double,
+    primary key(node, Timestamp),
+    index(TimeStamp)
+);
+
+create table if not exists dfs_namenode_30 (
+    Timestamp timestamp default 0,
+    node varchar(80),
+    pids mediumint UNSIGNED,
+    restarts mediumint UNSIGNED,
+    filesDeletedPerSec double,
+    filesCreatedPerSec double,
+    filesOpenedPerSec double,
+    filesRenamedPerSec double,
+    filesListedPerSec double,
+    numberOfTransactionsPerSec double, 
+    AverageTransactions double,
+    timeInSafeMode double,
+    numberOfSyncsPerSec double,
+    AverageSyncTime double,
+    fsImageLoadTime double,
+    numberOfBlockReportPerSec double,
+    AverageBlockReportTime double,
+    BlocksCorrupted double,
+    primary key(node, Timestamp),
+    index(TimeStamp)
+);
+
+create table if not exists dfs_namenode_120 (
+    Timestamp timestamp default 0,
+    node varchar(80),
+    pids mediumint UNSIGNED,
+    restarts mediumint UNSIGNED,
+    filesDeletedPerSec double,
+    filesCreatedPerSec double,
+    filesOpenedPerSec double,
+    filesRenamedPerSec double,
+    filesListedPerSec double,
+    numberOfTransactionsPerSec double, 
+    AverageTransactions double,
+    timeInSafeMode double,
+    numberOfSyncsPerSec double,
+    AverageSyncTime double,
+    fsImageLoadTime double,
+    numberOfBlockReportPerSec double,
+    AverageBlockReportTime double,
+    BlocksCorrupted double,
+    primary key(node, Timestamp),
+    index(TimeStamp)
+);
+
+create table if not exists MRJobCounters (
+    HodId double,
+    JobId double,
+    MAP_REDUCE_FRAMEWORK_REDUCE_INPUT_GROUPS double,
+    FILE_SYSTEMS_LOCAL_BYTES_WRITTEN double,
+    MAP_REDUCE_FRAMEWORK_MAP_OUTPUT_BYTES double,
+    JOB_COUNTERS__LAUNCHED_MAP_TASKS double,
+    MAP_REDUCE_FRAMEWORK_MAP_OUTPUT_RECORDS double,
+    MAP_REDUCE_FRAMEWORK_MAP_INPUT_RECORDS double,
+    MAP_REDUCE_FRAMEWORK_REDUCE_OUTPUT_RECORDS double,
+    FILE_SYSTEMS_HDFS_BYTES_READ double,
+    JOB_COUNTERS__RACK_LOCAL_MAP_TASKS double,
+    MAP_REDUCE_FRAMEWORK_REDUCE_INPUT_RECORDS double,
+    MAP_REDUCE_FRAMEWORK_COMBINE_OUTPUT_RECORDS double,
+    JOB_COUNTERS__DATA_LOCAL_MAP_TASKS double,
+    FILE_SYSTEMS_HDFS_BYTES_WRITTEN double,
+    FILE_SYSTEMS_LOCAL_BYTES_READ double, 
+    MAP_REDUCE_FRAMEWORK_MAP_INPUT_BYTES double, 
+    JOB_COUNTERS__LAUNCHED_REDUCE_TASKS double,
+    MAP_REDUCE_FRAMEWORK_COMBINE_INPUT_RECORDS double,
+    primary key(HodId, JobId),
+    index(HodId)
+);
+
+create table if not exists rpc_metrics (
+    Timestamp timestamp default 0,
+    nodes double,
+    AverageRpcQueueTime_num_ops double,
+    AverageRpcQueueTime_avg_time double,
+    AverageRpcProcessingTime_num_ops double,
+    AverageRpcProcessingTime_avg_time double,
+    RpcDiscarded_num_ops double,
+    RpcDiscarded_avg_time double,
+    register_num_ops double,
+    register_avg_time double,
+    getProtocolVersion_num_ops double,
+    getProtocolVersion_avg_time double,
+    sendHeartbeat_num_ops double,
+    sendHeartbeat_avg_time double,
+    blockReport_num_ops double,
+    blockReport_avg_time double,
+    getBlockLocations_num_ops double,
+    heartbeat_num_ops double,
+    versionRequest_num_ops double,
+    setPermission_num_ops double,
+    rollFsImage_num_ops double,
+    primary key(timestamp),
+    index(timestamp)
+);
+
+create table if not exists rpc_metrics_5 (
+    Timestamp timestamp default 0,
+    nodes double,
+    AverageRpcQueueTime_num_ops double,
+    AverageRpcQueueTime_avg_time double,
+    AverageRpcProcessingTime_num_ops double,
+    AverageRpcProcessingTime_avg_time double,
+    RpcDiscarded_num_ops double,
+    RpcDiscarded_avg_time double,
+    register_num_ops double,
+    register_avg_time double,
+    getProtocolVersion_num_ops double,
+    getProtocolVersion_avg_time double,
+    sendHeartbeat_num_ops double,
+    sendHeartbeat_avg_time double,
+    blockReport_num_ops double,
+    blockReport_avg_time double,
+    getBlockLocations_num_ops double,
+    heartbeat_num_ops double,
+    versionRequest_num_ops double,
+    setPermission_num_ops double,
+    rollFsImage_num_ops double,
+    primary key(timestamp),
+    index(timestamp)
+);
+
+create table if not exists rpc_metrics_30 (
+    Timestamp timestamp default 0,
+    nodes double,
+    AverageRpcQueueTime_num_ops double,
+    AverageRpcQueueTime_avg_time double,
+    AverageRpcProcessingTime_num_ops double,
+    AverageRpcProcessingTime_avg_time double,
+    RpcDiscarded_num_ops double,
+    RpcDiscarded_avg_time double,
+    register_num_ops double,
+    register_avg_time double,
+    getProtocolVersion_num_ops double,
+    getProtocolVersion_avg_time double,
+    sendHeartbeat_num_ops double,
+    sendHeartbeat_avg_time double,
+    blockReport_num_ops double,
+    blockReport_avg_time double,
+    getBlockLocations_num_ops double,
+    heartbeat_num_ops double,
+    versionRequest_num_ops double,
+    setPermission_num_ops double,
+    rollFsImage_num_ops double,
+    primary key(timestamp),
+    index(timestamp)
+);
+
+create table if not exists rpc_metrics_120 (
+    Timestamp timestamp default 0,
+    nodes double,
+    AverageRpcQueueTime_num_ops double,
+    AverageRpcQueueTime_avg_time double,
+    AverageRpcProcessingTime_num_ops double,
+    AverageRpcProcessingTime_avg_time double,
+    RpcDiscarded_num_ops double,
+    RpcDiscarded_avg_time double,
+    register_num_ops double,
+    register_avg_time double,
+    getProtocolVersion_num_ops double,
+    getProtocolVersion_avg_time double,
+    sendHeartbeat_num_ops double,
+    sendHeartbeat_avg_time double,
+    blockReport_num_ops double,
+    blockReport_avg_time double,
+    getBlockLocations_num_ops double,
+    heartbeat_num_ops double,
+    versionRequest_num_ops double,
+    setPermission_num_ops double,
+    rollFsImage_num_ops double,
+    primary key(timestamp),
+    index(timestamp)
+);
+
+create table if not exists dfs_fsnamesystem_status (
+    Timestamp timestamp default 0,
+    node VARCHAR(80),
+    FilesTotal double,
+    BlocksTotal double,
+    CapacityTotalGB double,
+    CapacityUsedGB double,
+    CapacityRemainingGB double,
+    TotalLoad double,
+    PendingReplicationBlocks double,
+    UnderReplicatedBlocks double,
+    ScheduledReplicationBlocks double,
+    primary key(node, timestamp),
+    index(timestamp)
+);
+
+create table if not exists dfs_fsnamesystem_status_5 (
+    Timestamp timestamp default 0,
+    node VARCHAR(80),
+    FilesTotal double,
+    BlocksTotal double,
+    CapacityTotalGB double,
+    CapacityUsedGB double,
+    CapacityRemainingGB double,
+    TotalLoad double,
+    PendingReplicationBlocks double,
+    UnderReplicatedBlocks double,
+    ScheduledReplicationBlocks double,
+    primary key(node, timestamp),
+    index(timestamp)
+);
+
+create table if not exists dfs_fsnamesystem_status_30 (
+    Timestamp timestamp default 0,
+    node VARCHAR(80),
+    FilesTotal double,
+    BlocksTotal double,
+    CapacityTotalGB double,
+    CapacityUsedGB double,
+    CapacityRemainingGB double,
+    TotalLoad double,
+    PendingReplicationBlocks double,
+    UnderReplicatedBlocks double,
+    ScheduledReplicationBlocks double,
+    primary key(node, timestamp),
+    index(timestamp)
+);
+
+create table if not exists dfs_fsnamesystem_status_120 (
+    Timestamp timestamp default 0,
+    node VARCHAR(80),
+    FilesTotal double,
+    BlocksTotal double,
+    CapacityTotalGB double,
+    CapacityUsedGB double,
+    CapacityRemainingGB double,
+    TotalLoad double,
+    PendingReplicationBlocks double,
+    UnderReplicatedBlocks double,
+    ScheduledReplicationBlocks double,
+    primary key(node, timestamp),
+    index(timestamp)
+);

+ 4 - 0
src/contrib/chukwa/conf/mysql_upgrade_tables

@@ -0,0 +1,4 @@
+alter table dfs_throughput change readsFromLocalRemotePerSec readsFromRemoteClientPerSec double;
+alter table dfs_throughput change writesFromLocalRemotePerSec writesFromRemoteClientPerSec double;
+alter table dfs_individual change readsFromLocalRemotePerSec readsFromRemoteClientPerSec double;
+alter table dfs_individual change writesFromLocalRemotePerSec writesFromRemoteClientPerSec double;

+ 8 - 0
src/contrib/chukwa/conf/nodeActivity.properties

@@ -0,0 +1,8 @@
+log4j.rootLogger=INFO, R 
+log4j.appender.R=org.apache.log4j.RollingFileAppender
+log4j.appender.R.File=${CHUKWA_HOME}/logs/NodeActivityPlugin.log
+log4j.appender.R.MaxFileSize=10MB
+log4j.appender.R.MaxBackupIndex=10
+log4j.appender.R.layout=org.apache.log4j.PatternLayout
+log4j.appender.R.layout.ConversionPattern=%d{ISO8601} %p %t %c{1} - %m%n
+log4j.logger.org.apache.hadoop.chukwa.ikit.DataConfig=INFO, R

+ 8 - 0
src/contrib/chukwa/conf/queueinfo.properties

@@ -0,0 +1,8 @@
+log4j.rootLogger=INFO, R 
+log4j.appender.R=org.apache.log4j.RollingFileAppender
+log4j.appender.R.File=${CHUKWA_HOME}/logs/QueueInfoDataLoader.log
+log4j.appender.R.MaxFileSize=10MB
+log4j.appender.R.MaxBackupIndex=10
+log4j.appender.R.layout=org.apache.log4j.PatternLayout
+log4j.appender.R.layout.ConversionPattern=%d{ISO8601} %p %t %c{1} - %m%n
+log4j.logger.org.apache.hadoop.chukwa.ikit.DataConfig=INFO, R

+ 13 - 0
src/contrib/chukwa/conf/system-data-loader.properties

@@ -0,0 +1,13 @@
+log4j.rootLogger=INFO, stdout, R
+log4j.appender.R=org.apache.hadoop.chukwa.inputtools.log4j.ChukwaDailyRollingFileAppender
+log4j.appender.R.File=${CHUKWA_HOME}/logs/${RECORD_TYPE}.log
+log4j.appender.R.recordType=${RECORD_TYPE}
+log4j.appender.R.layout=org.apache.log4j.PatternLayout
+log4j.appender.R.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n
+
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} %p %t %c{1} - %m%n
+
+log4j.logger.org.apache.hadoop.chukwa.ikit.DataConfig=DEBUG, R
+

+ 8 - 0
src/contrib/chukwa/conf/torque.properties

@@ -0,0 +1,8 @@
+log4j.rootLogger=INFO, R 
+log4j.appender.R=org.apache.log4j.RollingFileAppender
+log4j.appender.R.File=${CHUKWA_HOME}/logs/TorqueDataLoader.log
+log4j.appender.R.MaxFileSize=10MB
+log4j.appender.R.MaxBackupIndex=10
+log4j.appender.R.layout=org.apache.log4j.PatternLayout
+log4j.appender.R.layout.ConversionPattern=%d{ISO8601} %p %t %c{1} - %m%n
+log4j.logger.org.apache.hadoop.chukwa.ikit.DataConfig=INFO, R

+ 8 - 0
src/contrib/chukwa/conf/util.properties

@@ -0,0 +1,8 @@
+log4j.rootLogger=INFO, R 
+log4j.appender.R=org.apache.log4j.RollingFileAppender
+log4j.appender.R.File=${CHUKWA_HOME}/logs/UtilDataLoader.log
+log4j.appender.R.MaxFileSize=10MB
+log4j.appender.R.MaxBackupIndex=10
+log4j.appender.R.layout=org.apache.log4j.PatternLayout
+log4j.appender.R.layout.ConversionPattern=%d{ISO8601} %p %t %c{1} - %m%n
+log4j.logger.org.apache.hadoop.chukwa.ikit.DataConfig=INFO, R

+ 96 - 0
src/contrib/chukwa/docs/README

@@ -0,0 +1,96 @@
+WHAT CHUKWA IS
+
+Chukwa is a data collection system being built to monitor and analyze large
+distributed systems. Chukwa is built on top of Hadoop, an open source 
+Map-Reduce and distributed filesystem implementation, and inherits Hadoop's
+scalability and robustness. Chukwa also includes a flexible and powerful
+toolkit for displaying monitoring and analysis results, in order to make the
+best use of this collected data.
+
+Chukwa is currently in early stages of implementation. It runs, but documentation
+is still sketchy, and many rough edges remain.
+
+Chukwa is being developed as an open source project by Yahoo!, inc.
+The Chukwa development team consists of: Jerome Boulon, Andy Konwinski, Runping Qi,
+Ari Rabkin, Eric Yang, and Mac Yang.
+  
+Questions should be addressed to Mac Yang: macyang@yahoo-inc.com
+
+
+RUNNING CHUKWA -- LOCAL QUICKSTART
+
+
+The Chukwa monitoring system has a number of components.   
+This section gives guidance on starting each of them on your local machine. 
+
+You should start the collector first, then the agent, and finally any adaptors.
+
+*  Compiling and installing Chukwa
+
+   - If Chukwa is in the hadoop contrib directory, you should be able to just
+     say ``ant'' in the project root directory.
+   
+   - Otherwise, 
+
+*  Configuring and starting the Collector
+
+   - Copy conf/chukwa-collector-conf.xml.template to conf/chukwa-collector-conf.xml
+      
+   - Edit the writer.hdfs.filesystem property to point to a real filesystem.
+   
+   - If you are running hadoop, this should be the path to the namenode.
+   
+   - If you are not running hadoop, you can just juse a local path, of the form
+    file:///tmp/chukwa.
+    
+   - Copy conf/chukwa-env.sh-template to conf/chukwa-env.sh.  Set JAVA_HOME in file.
+    
+   - In the chukwa root directory, say ``bash bin/jettyCollector.sh''
+
+*  Configuring and starting the Local Agent
+ 
+  - Copy conf/chukwa-agent-conf.xml.template to conf/chukwa-agent-conf.xml
+  
+  - Copy conf/collectors.template to conf/collectors
+
+  - In the chukwa root directory, say ``bash bin/agent.sh''
+
+*  Starting Adaptors
+  The local agent speaks a simple text-based protocol, by default over port 9093.
+Suppose you want Chukwa to start tailing a file /path/to/file of type MyFileType 
+on localhost:
+
+  - Telnet to localhost 9093
+  
+  - Type [without quotation marks] "ADD CharFileTailerUTF8 MyFileType /path/to/file 0"
+
+  - Chukwa internal Namenode's type is NameNodeType so for namenode log
+  Type [without quotation marks] "ADD CharFileTailerUTF8 NameNodeType /path/to/nameNodeFie 0"
+  
+  - Type "list" -- you should see the adaptor you just started, listed as running. 
+  
+  - Type  "close" to break the connection.
+  
+  If you don't have telnet, you can get the same effect with netcat (``nc''). 
+    
+*  Configuring and starting the demux job
+
+  - Edit bin/chukwa-config.sh to match your system configuration
+  
+  - In the chukwa root directory, say ``bash bin/processSinkFiles.sh'' 
+  
+*  Configuring and starting HICC
+
+  - Download Apache Tomcat from http://tomcat.apache.org/download-60.cgi
+  
+  - Configure CHUKWA_HOME environment variable pointing to the Chukwa home directory.
+
+  - Copy hicc.war into Apache Tomcat webapps directory.
+
+  - Startup Tomcat.
+
+RUNNING CHUKWA -- NETWORKED
+
+Running Chukwa in a networked context is essentially similar to the single-machine
+deployment discussed above.  However, in a network context, you would also need to
+tell the local agent where the collector[s] live, by listing them in conf/collectors.

BIN
src/contrib/chukwa/docs/paper/chukwa0.jpg


BIN
src/contrib/chukwa/docs/paper/chukwa1.jpg


+ 299 - 0
src/contrib/chukwa/docs/paper/chukwa_08.tex

@@ -0,0 +1,299 @@
+% TEMPLATE for Usenix papers, specifically to meet requirements of
+%  USENIX '05
+% originally a template for producing IEEE-format articles using LaTeX.
+%   written by Matthew Ward, CS Department, Worcester Polytechnic Institute.
+% adapted by David Beazley for his excellent SWIG paper in Proceedings,
+%   Tcl 96
+% turned into a smartass generic template by De Clarke, with thanks to
+%   both the above pioneers
+% use at your own risk.  Complaints to /dev/null.
+% make it two column with no page numbering, default is 10 point
+
+% Munged by Fred Douglis <douglis@research.att.com> 10/97 to separate
+% the .sty file from the LaTeX source template, so that people can
+% more easily include the .sty file into an existing document.  Also
+% changed to more closely follow the style guidelines as represented
+% by the Word sample file. 
+% This version uses the latex2e styles, not the very ancient 2.09 stuff.
+\documentclass[letterpaper,twocolumn,10pt]{article}
+\usepackage{usenix,epsfig,endnotes,url}
+\begin{document}
+
+%don't want date printed
+\date{}
+
+%make title bold and 14 pt font (Latex default is non-bold, 16 pt)
+\title{  Chukwa: A large-scale monitoring system}
+
+%for single author (just remove % characters)
+\author{
+{\rm Jerome Boulon}\\
+{\rm jboulon@yahoo-inc.com}\\
+Yahoo!, inc
+\and
+{\rm Andy Konwinski}\\
+{\rm andyk@cs.berkeley.edu}\\
+UC Berkeley
+\and
+{\rm Runping Qi}\\
+{\rm runping@yahoo-inc.com}\\
+Yahoo!, inc
+\and
+{\rm Ariel Rabkin}\\
+{\rm asrabkin@cs.berkeley.edu}\\
+UC Berkeley
+\and
+{\rm Eric Yang}\\
+{\rm eyang@yahoo-inc.com}\\
+Yahoo!, inc
+\and
+{\rm Mac Yang}\\
+{\rm macyang@yahoo-inc.com}\\
+Yahoo!, inc
+% copy the following lines to add more authors
+% \and
+% {\rm Name}\\
+%Name Institution
+} % end author
+
+\maketitle
+
+% Use the following at camera-ready time to suppress page numbers.
+% Comment it out when you first submit the paper for review.
+%\thispagestyle{empty}
+
+\begin{abstract}
+
+We describe the design and initial implementation of Chukwa, a data collection system for monitoring and analyzing large distributed systems. Chukwa is built on top of Hadoop, an open source distributed filesystem and MapReduce implementation, and inherits Hadoop's scalability and robustness. 
+%Chukwa demonstrates that a distributed filesystem and MapReduce implementation are general distributed computing primitives, that can be utilized effectively in 
+Chukwa also includes a flexible and powerful toolkit for displaying monitoring and analysis results, in order to make the best use of this collected data. 
+
+\end{abstract}
+
+\section{Introduction}
+\label{sec:introduction}
+
+Hadoop is a distributed filesystem and MapReduce \cite{mapreduce} implementation that is used pervasively at Yahoo! for a variety of critical business purposes.  Production clusters often include thousands of nodes. Large distributed systems such as Hadoop are fearsomely complex, and can fail in complicated and subtle ways. As a result, Hadoop is extensively instrumented.  A two-thousand node cluster configured for normal operation generates nearly half a terabyte of monitoring data per day, mostly application-level log files.
+
+%I think we need to state that this is not intended only for Hadoop related data, but for all applications that run on our cluster, with Hadoop as the first customer, with others following closely on Hadoop's heels (who else do we have lined up here?)
+This data is invaluable for debugging, performance measurement, and operational monitoring.  However, processing this data in real time at scale is a formidable challenge. A good monitoring system ought to scale out to very large deployments, and ought to handle crashes gracefully.  In Hadoop, only a handful of aggregate metrics, such as task completion rate and available disk space, are computed in real time. The vast bulk of the generated data is stored locally, and accessible via a per-node web interface.  Unfortunately, this mechanism does not facilitate programmatic analysis of the log data, nor the long term archiving of such data.
+
+To make full use of log data, users must first write ad-hoc log aggregation scripts to centralize the required data, and then build mechanisms to analyze the collected data.  Logs are periodically deleted, unless users take the initiative in storing them.
+% [?cite matei @ facebook who did exactly this for them?]
+
+We believe that our situation is typical, and that local storage of logging data is a common model for very large deployments.  To the extent that more sophisticated data management techniques are utilized, they are largely supported by ad-hoc proprietary solutions.  
+A well documented open source toolset for handling monitoring data thus solves a significant practical problem and provides a valuable reference point for future development in this area. 
+
+We did not aim to solve the problem of real-time monitoring for failure detection, which systems such as Ganglia already do well. Rather, we wanted a system that would process large volumes of data, in a timescale of minutes, not seconds, to detect more subtle conditions, and to aid in failure diagnosis. Human engineers do not generally react on a timescale of seconds, and so a processing delay of a few minutes is not a concern for us.
+
+Such a data collection system ought not be developed in isolation. Many problems inherent in monitoring can be solved by relying on existing scalable distributed computing platforms. In particular, we believe that a distributed filesystem is a natural tool for data storage, and that MapReduce is a natural way of processing monitoring data. Leveraging this existing infrastructure drastically reduces the engineering difficulty inherent in large-scale monitoring.
+ 
+ We are in the process of building a system, which we call Chukwa, to demonstrate that practical large-scale can be readily built atop this existing infrastructure. \footnote{In Hindu mythology, Chukwa is the turtle that holds up Maha-pudma, the elephant that hold up the world.  This name is especially appropriate for us, since the the Hadoop mascot is a yellow elephant.}   
+ it uses Hadoop's distributed file system (HDFS) as its data store, and relies on MapReduce jobs to process the data. By leveraging these existing tools, Chukwa can scale to thousands of nodes in both collection and analysis capacities, while providing a standardized and familiar framework  for processing the collected data. Many components of Chukwa are pluggable, allowing easy customization and enhancement.
+ 
+The core components of Chukwa are largely complete, and we expect the system to enter production use at Yahoo! within the next few months. We have some initial operational experience, and preliminary performance metrics.    We begin by discussing our goals and requirements in some detail.  We then describe our design, explaining our motivation for various decisions. We then present some performance data, and conclude by offering some comparisons with related work.
+
+\section{Goals and requirements} 
+
+
+There are two key figures of merit for monitoring systems such as Chukwa: scale and latency.  We intend to use Chukwa to monitor multiple clusters of several thousand hosts, potentially generating several terabytes of data per day.  Our initial goal was a latency of less than ten minutes between the generation of data on cluster nodes and its availability in HDFS for centralized analysis using Hadoop MapReduce. We believe that our design can operate effectively with latencies closer to a minute, as discussed in our conclusion.  Few useful actions can be taken on timescales significantly shorter than that, and therefore we do not believe this limit will be problematic for us.%this statement may need more support
+
+The initial goal for Chukwa is to monitor and analyze several-thousand-node Hadoop deployments. Nothing in our design restricts us from monitoring other clusters, however our goals are primarily driven by the motivating example of Hadoop.  Analysis encompasses many goals:  
+\begin{itemize}
+\item
+Providing canned reports to meet known needs for accounting, capacity planning, performance characterization, utilization.  Some examples:
+%\begin{itemize}
+%\item 
+%Summarize grid usage: disk usage / CPU total, grouped by account, project, and user.  
+%\item 
+%  Measure performance improvement across Hadoop versions
+%  \item 
+%  Assess the quality of service based on waiting time, node availability, and service uptime
+%\end{itemize}
+These can be done in a straightfoward way via MapReduce jobs, provided that the data has been stored suitably.  
+\item
+ Reducing the number and extent of outages through trend analysis and anomaly detection to identify at-risk elements such as compute nodes, name node, switches 
+\item
+  Contributing to Hadoop development in robustness and performance by making possible the analysis of jobs and infrastructure along many different dimensions
+\item
+   Reducing the number of false alerts and increasing the value and confidence level of true alerts through correlation of metrics and environmental information
+\item
+    Reducing the time and effort required to identify and resolve cluster issues by highlighting trouble spots and by correlating metrics and environmental information to provide the required context and history, as well as by bringing together all required tools in one place.
+\end{itemize}
+
+Chukwa can collect a large and open-ended set of time series metrics and logs, as well as  slowly changing dimensions such as machine configuration, related to the state, behavior, characterization, and performance of a Hadoop cluster and processes running on it. Stored data will be available indefinitely, limited only by storage capacity, and not by retrieval speed.  
+
+%Chukwa should be robust against agent crashes
+
+\section{Data Collection}
+
+\begin{figure}
+ \includegraphics[width=75mm]{chukwa0.jpg}
+\caption{The Chukwa collection architecture} 
+\end{figure}
+
+\begin{figure}
+  \includegraphics[width=75mm]{chukwa1.jpg}
+\caption{The agent side}
+\end{figure}
+
+To achieve our scalability goals, we opted early in the design process to make HDFS our chief storage technology. HDFS installations can store petabytes of data, and support fairly high throughput. HDFS also facilitates parallel processing of stored data with MapReduce.
+
+Chukwa thus breaks into two halves -- the pipeline for getting data into a convenient format in HDFS, and a toolkit for analyzing data using MapReduce and displaying it in a helpful way. A pipelined approach to data collection aids flexibility, by providing natural points for adding functionality. We discuss each section of the pipeline in turn, before discussing the user interface and analysis tools offered by Chukwa.
+
+\subsection{Adaptors}
+
+The particular data being collected about a machine will change with time, and from machine to machine. As Hadoop tasks start and stop, different log files must be monitored. We might want to increase our collection rate if we detect anomalies.  And of course, the monitoring package on a given machine must be customized according to the services running on that machine: it makes no sense to collect Hadoop metrics on an NFS server.
+
+As a result, we bundle data collection into small dynamically loadable Adaptors.  At present, Chukwa includes adaptors to collect Hadoop logs, application metrics, and system telemetry. We expect to write adaptors for tasks like counting recoverable disk read errors, retrieving causal logs from X-Trace \cite{xtrace}, and monitoring operating system and Java virtual machine state. 
+
+%FIXME: ruby/failmon
+%The output of an adaptor consists of chunks, each containing one or more semantically meaningful records.  These records, such as lines from a log file or batches of metrics, must be kept together.  This means that adaptors must parse files intensively enough to detect record boundaries, and they must correctly handle buffering.
+
+%These costs are offset by important advantages. Keeping records intact allows collectors to run filters or triggers against data streams, without having to buffer partial lines. In the presence of load balancing across collectors, these filters will still behave properly. Perhaps most importantly, this allows the map phase of the periodic MapReduce process to extract metadata from records and use this metadata as a sort key: a large performance win.  If records were split across collectors, this metadata could be inaccessible.
+
+%FIXME: say something here
+%After a crash, the local agent restarts each adaptor, passing sequence number of the last byte of their output that was successfully sent to a collector.  Adaptors that read from files can seek to that offset before starting.  Adaptors that output ephemeral data, such as CPU load, can simply begin numbering output from this point, to mask  any crash-induced discontinuity from downstream users. 
+
+\subsection{Agent}
+
+Adaptors run within a local agent process on each machine. This process is left permanently running, and is restarted automatically if it crashes. The agent process is responsible for starting and stopping adaptors in response to external commands.  It also provides two crucial services to adaptors. First, it is responsible for forwarding chunks over HTTP to the collectors, where they are written to stable storage. Second, it is responsible for making regular checkpoints of adaptor state, and restarting adaptors at the appropriate position after a crash.  This checkpoint mechanism ensures that data is appropriately resent after a crash.
+
+We opted to put most of the recovery logic in the agents, rather than the collectors. This removes state from the collectors. We considered having agents check with collectors to find out what the last thing they sent was. However, each agent would have to check with each collector, resulting in an exorbitant number of connections if many agents fail and reboot simultaneously.
+
+\subsection{Collector}
+
+The collector is a web service (implemented as a Java servlet) that receives chunks via HTTP, and writes them to stable storage in the Hadoop distributed file system.  
+
+Each collector writes to a sink files in the Hadoop distributed file system. Each sink file contains a sequence of chunks, potentially from many different streams.  Every few minutes, collectors ``rotate'' sink files, by closing their current sink files, and marking them as available for processing. While it would make sense to use HDFS files as circular buffers, the filesystem semantics forbid this.  Instead, each collector closes its current sink file every few minutes, and marks it available for processing.  
+
+An alternate design would be to have each local agent dump its results directly into HDFS. Unfortunately, HDFS does not perform well for filesystems with large numbers of files, due to contention and space limits at the Namenode.  The many-to-one relationship between hosts and collectors helps significantly, although if Chukwa deployments got big enough, some more drastic step might be needed.
+
+Another advantage of having collectors is that it allows us to hide the details of the Chukwa storage cluster, such as its Hadoop version from the agents.  This is important, for instance, when using Chukwa to monitor a development cluster running an unstable version of Hadoop or when using Chukwa to monitor a non-Hadoop cluster.  
+
+\subsection{Demux and archiving}
+
+A pair of MapReduce jobs run every few minutes, taking these sink files as input.  The first job simply archives all the collected data, without processing or interpreting it.  The second job parses out structured data from some of the logs, and loads this structured data into a data store.   For performance reasons, we do record parsing in the Map phase, and extract key-value pairs. Example records include job history reports, task durations, and so forth. We then use the shuffle and sort phases of the Reduce to organize records semantically by application timestamp and type. This forced us to design our adaptors to have adaptors output meaningful records, and not arbitrary chunks of streams. %% FIXME: recast last sentence
+
+ These datastores are also pluggable. For now, we use HDFS files, one file per cluster, per data type, and time period.  So for instance there would be one file for all of a particular clusters datanode logs, for the period from noon to 1pm on a given day.   This is only an interim solution, and we are evaluating various more suitable data stores, with support for structured queries.  Hive, an HDFS-backed data warehouse might also be a good fit here. \cite{hive} 
+ % Hive supports a subset of SQL for queries, which is particularly appealing for the context of ad-hoc analytics. 
+ Column-oriented databases such as HBase, and Hypertable would also be sensible options.  For small deployments, a local relational database would be suitable.
+
+%This de-multiplexing is the phase of Chukwa processing with the highest latency. Hadoop TaskTrackers only poll for work every few seconds, and therefore map-reduce jobs have an inherent latency larger than that.  Unfortunately, we do need this de-multiplexing stage, since HDFS, and structured stores built on top of it, perform much better for large writes than for small ones.
+
+Data stored in HDFS in a structured format can be processed straightforwardly with MapReduce jobs. We envision a library of ``canned'' MapReduce jobs for tasks like finding common failure modes, correlating events in the logs with slowdowns, discovering flakey machines, and so forth.  Since Chukwa data is split into different files based on content, these jobs take as input only a small fraction of the total data volume, and therefore can run relatively quickly.  Most structured storage systems, including Hive and Hypertable, include their own query interfaces. We expect that these interfaces will be used by users who want to do simple ad-hoc queries over stored Chukwa data, with MapReduce being reserved for more complex processing.
+
+
+\section{Data Analysis and Display}
+
+
+
+Collected data is only as useful as the analysis that can be done on it.  To ease analysis of collected data, we've built a flexible, configurable, ``portal-style'' web interface to Chukwa, termed the Hadoop Infrastructure Care Center (HICC). A configurable interface is not simply a frill --- it is necessary, since different users have very different data analysis needs.
+
+\begin{figure}
+% \includegraphics[width=75mm]{widget.png}
+%\caption{The HICC widget catalog} 
+\includegraphics[width=75mm]{hicc_in_action2.png}
+\caption{HICC displaying some DataNode metrics}
+\end{figure}
+
+\subsection{The Use Model}
+
+We expect HICC to be used by four different (though overlapping) constituencies:   users, operators, managers, and developers.  These different groups have different characteristic questions:
+
+
+\begin{itemize}
+\item Users will ask how far along their jobs are, and what resources are available for future jobs. They need access to the logs and output from their jobs.  
+
+\item Operators need to be notified of hardware failures and performance anomalies. They need to be warned about resource shortages, such as storage exhaustion.  
+
+\item Managers need guidance in provisioning, and in apportioning costs. This means that they need tools for analyzing past usage by users and groups, and for projecting future demands.   They need access to figures of merit, such as average job waiting time.
+
+\item Developers need information about the performance in operation, bottlenecks within Hadoop, common failure patterns, and so forth.
+
+\end{itemize}
+
+\subsection{How HICC works}
+
+In practice, a single individual often fulfills more than one of these roles, or some portion of a role. As a result, there is a compelling need to allow individuals to mix and match different components. We chose to do this by bundling each query, or family of queries, into a widget. HICC users can assemble their HICC workspace by selecting widgets from a catalog, in exactly the way that they can customize their personal Yahoo! or Google portal pages.
+
+Some of these components will display the results of canned map-reduce jobs run against data in  Chukwa storage.  Others will perform on-the-fly queries against SQL databases.    Still others might display telemetry collected with Ganglia, or report on recently opened failure tickets.  
+
+HICC stores several kinds of widget state.  There is a global context, through which different widgets can ``collaborate'' and share data. There is a dashboard view, which stores information about the user's preferred layout, and display settings.  There is a widget descriptor file, for storing widget configuration and parameters.   
+
+%HICC is not intended for exploratory, ad-hoc queries. For that, we expect to rely on the query interface of our structured data store.  Since this store is not yet available, we have been using a MySQL database.
+
+\section{Evaluation}
+
+%Chukwa is currently in development, and we have not yet been able to do large-scale tests.  However, we have reason to be confident that Chukwa will comfortably meet our performance goals.
+
+Using logs from a production cluster at Yahoo!, we found that a 2000-node production cluster would generate around 5.5 MB of data per second.  Of this, the vast bulk (more than 95\%) was task tracker logs.  Metrics data accounted for more than half the remainder, with Namenode, HDFS datanode, and JobTracker logs accounting for the rest. This data rate is small enough that Chukwa should impose only very modest overhead on datacenter networks. 
+
+  We conducted a number of small experiments to verify that Chukwa could handle this sort of load.   All tests were run on an internal development cluster at Yahoo.  Machines had four 2.8 GHz Xeon processors, four IDE disks, and 3 GB of RAM, and ran Linux, with a 2.6.9 kernel.  %kernel version 2.6.9-55
+
+We checked for performance limitations at three places: the collector, the HDFS cluster and the map-reduce job.
+To assess collector throughput, we disabled HDFS writes, and measured the throughput between a single agent and collector, connected by gigabit ethernet.  We found that throughput was around 80 MB/sec, and that this limit was imposed by network latency.  Handling this input took only half of one CPU on the collector side, which is an affordable overhead. 
+
+A single Chukwa collector was easily able to saturate the HDFS back-end with very modest CPU cost. Our five-node HDFS test cluster saturated at about 25 megabytes per second.  Even writing 25 megabytes per second, the collector was only using about 10\% of a single core. This is an encouraging number, since it suggests that even small monitoring clusters have ample write bandwidth for current as well as future data collection demands.  
+
+%The bottleneck in our current design is the demux job.  As mentioned, limitations in Hadoop restrict performance 
+%we expect that our write bandwidth would increase if we added additional collectors, since using more than one writer enables the HDFS datanodes to concurrently write across multiple physical disks.  
+
+As mentioned, the bottleneck in our design is the Demux job. We found that our Demux job can easily keep up with incoming data.  Using four worker nodes, we were able to process a gigabyte of data in two and a half minutes; for a throughput of 6.6 MB/sec, which exceeds our target data rate. Larger data volumes improved efficiency significantly:  with 2 GB of data, the processing rate went up to 8.5 MB/sec. Optimizing MapReduce jobs is a reasonably well understood science, and we believe that significant gains can be readily achieved here. 
+
+These results show that Chukwa can maintain latencies well under our ten minute target, while imposing very modest overheads on the cluster: five Chukwa nodes are only 0.25\% of our notional 2000-node cluster. We expect to be able to maintain these latency targets as we scale up the number of nodes being monitored.  Ramping up the size of MapReduce jobs is routine, and the engineering issues are well understood. Even for monitoring hundreds of thousands of nodes, Chukwa's data volumes would be significantly smaller than those seen in our production web indexing clusters.
+
+
+\section{Related Work}
+%\label{sec:related}
+
+Chukwa represents a design point in between two existing classes of systems: log collection frameworks on the one hand, and network management systems on the other.  Chukwa intends to combine the abundance of data display tools of existing NMS systems, with the high throughput and robustness expected of log collection frameworks.
+
+The syslog protocol supported streaming logs across the network as long ago as the late 1980s.  However, syslog had serious defects: no clear solution to the discovery, load balancing, or failure handing problems.  The Scribe system apparently solves some of these problems, but unfortunately, no details of scribe have been published.
+
+Chukwa has some similarity with network monitoring systems such as Nagios, Ganglia, or Tivoli Monitoring \cite{Ganglia, Nagios, tivmon}. The three systems differ in emphasis, but have important commonalities.  All are capable of collecting and storing substantial volumes of metrics data. All include tools for displaying this data.  Nagios and Tivoli monitoring have centralized architectures, while Ganglia is decentralized.  Ganglia, unfortunately, is heavily adapted towards numeric time-series data, and provides minimal support for the sort of complex text-processing necessary for our applications.
+
+\section{Conclusion}
+%\label{sec:conclusion}
+
+Chukwa provides a flexible and powerful toolkit for analyzing displaying collected data.  We expect Chukwa to be very useful in monitoring and managing large system deployments.
+
+Building Chukwa on top of Hadoop resulted in a few design quirks, and a modest latency penalty.  However, it greatly simplified implementation, and leverages the substantial amount of work going into Hadoop.  Hadoop 0.19, which will be released within a few months, should significantly improve the performance of short-running Map tasks, which will allow us to efficiently operate Chukwa on short timescales.
+
+%\iffalse
+%\subsection{Future Work}
+%\fi
+
+%\section{Acknowledgments}
+
+\addcontentsline{toc}{section}{References}
+\begin{thebibliography}{99}
+
+\bibitem{mapreduce}
+Jeffrey Dean and Sanjay Ghemawat. ``MapReduce: Simplified Data Processing on Large Clusters.'' \newblock In \textit{Communications of the ACM}, Volume 51, Issue 1, pp. 107-113, 2008.
+\bibitem{Ganglia}
+Matthew L. Massie, Brent N. Chun, and David E. Culler.  ``The Ganglia Distributed Monitoring System: Design, Implementation, and Experience''.
+\newblock In \textit{Parallel Computing} Volume 30, Issue 7, pp 817-840, 2004.
+\bibitem{Nagios}
+http://www.nagios.org/
+\bibitem{tivmon}
+IBM Tivoli Monitoring.
+\newblock Available online: \texttt{http://www.ibm.com/ software/ tivoli/ products/ monitor/}
+\bibitem{hive}
+Joydeep Sen Sarma.  ``Hive as a contrib project''
+\newblock Available online: https://issues.apache.org/jira/browse/HADOOP-3601
+\bibitem{xtrace}
+Rodrigo Fonseca, George Porter, Randy H. Katz, Scott Shenker, and Ion Stoica.  X-Trace: A Pervasive Network Tracing Framework.
+\newblock In \textit{4th USENIX Symposium on Networked Systems Design \& Implementation (NSDI'07)}, Cambridge, MA, USA, April 2007.
+\end{thebibliography}
+
+\end{document}
+
+%		TODO:
+%	Maybe more depth in related work
+%	More performance numbers
+%	Mention "work in progress" somewhere up front?
+%	Better screen shot for HICC
+
+
+

BIN
src/contrib/chukwa/docs/paper/hicc_in_action2.png


+ 94 - 0
src/contrib/chukwa/docs/paper/usenix.sty

@@ -0,0 +1,94 @@
+% usenix.sty - to be used with latex2e for USENIX.
+% To use this style file, look at the template usenix_template.tex
+%
+% $Id: usenix.sty,v 1.2 2005/02/16 22:30:47 maniatis Exp $
+%
+% The following definitions are modifications of standard article.sty
+% definitions, arranged to do a better job of matching the USENIX
+% guidelines.
+% It will automatically select two-column mode and the Times-Roman
+% font.
+
+%
+% USENIX papers are two-column.
+% Times-Roman font is nice if you can get it (requires NFSS,
+% which is in latex2e.
+
+\if@twocolumn\else\input twocolumn.sty\fi
+\usepackage{times}
+
+%
+% USENIX wants margins of: 1" sides, 1" bottom, and 1" top.
+% 0.25" gutter between columns.
+% Gives active areas of 6.5" x 9"
+%
+\setlength{\textheight}{9.0in}
+\setlength{\columnsep}{0.25in}
+\setlength{\textwidth}{6.50in}
+
+\setlength{\topmargin}{0.0in}
+
+\setlength{\headheight}{0.0in}
+
+\setlength{\headsep}{0.0in}
+
+% Usenix wants no page numbers for camera-ready papers, so that they can
+% number them themselves.  But submitted papers should have page numbers
+% for the reviewers' convenience.
+% 
+%
+% \pagestyle{empty}
+
+%
+% Usenix titles are in 14-point bold type, with no date, and with no
+% change in the empty page headers.  The whole author section is 12 point
+% italic--- you must use {\rm } around the actual author names to get
+% them in roman.
+%
+\def\maketitle{\par
+ \begingroup
+   \renewcommand\thefootnote{\fnsymbol{footnote}}%
+   \def\@makefnmark{\hbox to\z@{$\m@th^{\@thefnmark}$\hss}}%
+    \long\def\@makefntext##1{\parindent 1em\noindent
+            \hbox to1.8em{\hss$\m@th^{\@thefnmark}$}##1}%
+   \if@twocolumn
+     \twocolumn[\@maketitle]%
+     \else \newpage
+     \global\@topnum\z@
+     \@maketitle \fi\@thanks
+ \endgroup
+ \setcounter{footnote}{0}%
+ \let\maketitle\relax
+ \let\@maketitle\relax
+ \gdef\@thanks{}\gdef\@author{}\gdef\@title{}\let\thanks\relax}
+
+\def\@maketitle{\newpage
+ \vbox to 2.5in{
+ \vspace*{\fill}
+ \vskip 2em
+ \begin{center}%
+  {\Large\bf \@title \par}%
+  \vskip 0.375in minus 0.300in
+  {\large\it
+   \lineskip .5em
+   \begin{tabular}[t]{c}\@author
+   \end{tabular}\par}%
+ \end{center}%
+ \par
+ \vspace*{\fill}
+% \vskip 1.5em
+ }
+}
+
+%
+% The abstract is preceded by a 12-pt bold centered heading
+\def\abstract{\begin{center}%
+{\large\bf \abstractname\vspace{-.5em}\vspace{\z@}}%
+\end{center}}
+\def\endabstract{}
+
+%
+% Main section titles are 12-pt bold.  Others can be same or smaller.
+%
+\def\section{\@startsection {section}{1}{\z@}{-3.5ex plus-1ex minus
+    -.2ex}{2.3ex plus.2ex}{\reset@font\large\bf}}

BIN
src/contrib/chukwa/docs/paper/widget.png


+ 23 - 0
src/contrib/chukwa/hadoop-packaging/build-tarball.sh

@@ -0,0 +1,23 @@
+#!/bin/bash
+
+
+#leave all jars in build
+HADOOP_DIR=hadoop-0.18.0-mac01
+TARFILE=hadoop18.tar
+rm -r hadoop-0.18.0-mac01
+mkdir $HADOOP_DIR
+mkdir $HADOOP_DIR/bin $HADOOP_DIR/conf $HADOOP_DIR/lib $HADOOP_DIR/chukwa
+cp ../build/chukwa-hadoop-0.0.1-client.jar $HADOOP_DIR/lib
+cp log4j.properties.templ $HADOOP_DIR/conf/log4j.properties
+tar xf $TARFILE $HADOOP_DIR/bin/hadoop
+patch $HADOOP_DIR/bin/hadoop < patchhadoop.patch
+svn export ../bin $HADOOP_DIR/chukwa/bin
+cp ../bin/VERSION $HADOOP_DIR/chukwa/bin
+svn export ../conf $HADOOP_DIR/chukwa/conf
+svn export ../lib $HADOOP_DIR/chukwa/lib
+cp ../hadoopjars/hadoop-0.18.0-core.jar $HADOOP_DIR/chukwa/lib
+cp ../build/*.jar $HADOOP_DIR/chukwa
+mkdir $HADOOP_DIR/chukwa/var; mkdir $HADOOP_DIR/chukwa/var/run
+cp new-chukwa-conf/* $HADOOP_DIR/chukwa/conf
+# Do something with chukwa-conf 
+tar uvf $TARFILE $HADOOP_DIR

+ 112 - 0
src/contrib/chukwa/hadoop-packaging/log4j.properties.templ

@@ -0,0 +1,112 @@
+# Define some default values that can be overridden by system properties
+hadoop.root.logger=DEBUG,console
+hadoop.log.dir=.
+hadoop.log.file=hadoop.log
+
+# Define the root logger to the system property "hadoop.root.logger".
+log4j.rootLogger=${hadoop.root.logger},DRFA,EventCounter
+
+# Logging Threshold
+log4j.threshhold=ALL
+
+
+
+log4j.logger.org.apache.hadoop.chukwa.ChukwaJobHistory=INFO, jobhistory
+log4j.appender.jobhistory=org.apache.hadoop.chukwa.inputtools.log4j.ChukwaDailyRollingFileAppender
+log4j.appender.jobhistory.File=${hadoop.log.dir}/JobLogHistory.log
+
+log4j.appender.jobhistory.recordType=JobLogHistoryProcessor
+log4j.appender.jobhistory.chukwaClientHostname=localhost
+log4j.appender.jobhistory.chukwaClientPortNum=9093
+
+# Rollver at midnight
+log4j.appender.jobhistory.DatePattern=.yyyy-MM-dd
+
+# 30-day backup
+#log4j.appender.DRFA.MaxBackupIndex=30
+log4j.appender.jobhistory.layout=org.apache.log4j.PatternLayout
+
+# Pattern format: Date LogLevel LoggerName LogMessage
+log4j.appender.jobhistory.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n
+
+
+
+#
+# Daily Rolling File Appender
+#
+
+#log4j.appender.DRFA=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.DRFA.File=${hadoop.log.dir}/${hadoop.log.file}
+
+log4j.appender.DRFA=org.apache.hadoop.chukwa.inputtools.log4j.ChukwaDailyRollingFileAppender
+log4j.appender.DRFA.recordType=HadoopLogProcessor
+log4j.appender.DRFA.chukwaClientHostname=localhost
+log4j.appender.DRFA.chukwaClientPortNum=9093
+
+# Rollver at midnight
+log4j.appender.DRFA.DatePattern=.yyyy-MM-dd
+
+# 30-day backup
+#log4j.appender.DRFA.MaxBackupIndex=30
+log4j.appender.DRFA.layout=org.apache.log4j.PatternLayout
+
+# Pattern format: Date LogLevel LoggerName LogMessage
+log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n
+# Debugging Pattern format
+#log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n
+
+
+#
+# console
+# Add "console" to rootlogger above if you want to use this 
+#
+
+log4j.appender.console=org.apache.log4j.ConsoleAppender
+log4j.appender.console.target=System.err
+log4j.appender.console.layout=org.apache.log4j.PatternLayout
+log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n
+
+#
+# TaskLog Appender
+#
+
+#Default values
+hadoop.tasklog.taskid=null
+hadoop.tasklog.noKeepSplits=4
+hadoop.tasklog.totalLogFileSize=100
+hadoop.tasklog.purgeLogSplits=true
+hadoop.tasklog.logsRetainHours=12
+
+log4j.appender.TLA=org.apache.hadoop.mapred.TaskLogAppender
+log4j.appender.TLA.taskId=${hadoop.tasklog.taskid}
+log4j.appender.TLA.totalLogFileSize=${hadoop.tasklog.totalLogFileSize}
+
+log4j.appender.TLA.layout=org.apache.log4j.PatternLayout
+log4j.appender.TLA.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n
+
+#
+# Rolling File Appender
+#
+
+#log4j.appender.RFA=org.apache.log4j.RollingFileAppender
+#log4j.appender.RFA.File=${hadoop.log.dir}/${hadoop.log.file}
+
+# Logfile size and and 30-day backups
+#log4j.appender.RFA.MaxFileSize=1MB
+#log4j.appender.RFA.MaxBackupIndex=30
+
+#log4j.appender.RFA.layout=org.apache.log4j.PatternLayout
+#log4j.appender.RFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} - %m%n
+#log4j.appender.RFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n
+
+# Custom Logging levels
+
+#log4j.logger.org.apache.hadoop.mapred.JobTracker=DEBUG
+#log4j.logger.org.apache.hadoop.mapred.TaskTracker=DEBUG
+#log4j.logger.org.apache.hadoop.fs.FSNamesystem=DEBUG
+
+#
+# Event Counter Appender
+# Sends counts of logging messages at different severity levels to Hadoop Metrics.
+#
+log4j.appender.EventCounter=org.apache.hadoop.metrics.jvm.EventCounter

+ 3 - 0
src/contrib/chukwa/hadoop-packaging/patchhadoop.patch

@@ -0,0 +1,3 @@
+46a47,48
+> CHUKWA_HOME=`dirname "$0"`/../chukwa ;  CHUKWA_HOME=`cd "$CHUKWA_HOME"; pwd` ;  export CHUKWA_HOME
+> nohup bash $CHUKWA_HOME/bin/agent.sh &> /tmp/chukwa_out < /dev/null &

BIN
src/contrib/chukwa/hadoopjars/hadoop-0.18.0-core.jar


+ 202 - 0
src/contrib/chukwa/lib/ant-LICENSE.txt

@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+

+ 98 - 0
src/contrib/chukwa/lib/ant-README.txt

@@ -0,0 +1,98 @@
+
+                                 A     N     T
+ 
+
+  What is it? 
+  -----------
+  
+  Ant is a Java based build tool. In theory it is kind of like "make" 
+  without makes wrinkles and with the full portability of pure java code.
+
+  
+  Why?
+  ----
+  
+  Why another build tool when there is already make, gnumake, nmake, jam, 
+  and others? Because all of those tools have limitations that its original 
+  author couldn't live with when developing software across multiple platforms. 
+  
+  Make-like tools are inherently shell based. They evaluate a set of 
+  dependencies and then execute commands not unlike what you would issue on a 
+  shell. This means that you can easily extend these tools by using or writing 
+  any program for the OS that you are working on. However, this also means that 
+  you limit yourself to the OS, or at least the OS type such as Unix, that you 
+  are working on.
+  
+  Makefiles are inherently evil as well. Anybody who has worked on them for any 
+  time has run into the dreaded tab problem. "Is my command not executing 
+  because I have a space in front of my tab!!!" said the original author of Ant 
+  way too many times. Tools like Jam took care of this to a great degree, but 
+  still use yet another format to use and remember.
+  
+  Ant is different. Instead a model where it is extended with shell based 
+  commands, it is extended using Java classes. Instead of writing shell 
+  commands, the configuration files are XML based calling out a target tree 
+  where various tasks get executed. Each task is run by an object which 
+  implements a particular Task interface.
+  
+  Granted, this removes some of the expressive power that is inherent by being 
+  able to construct a shell command such as `find . -name foo -exec rm {}` but 
+  it gives you the ability to be cross platform. To work anywhere and 
+  everywhere. And hey, if you really need to execute a shell command, Ant has 
+  an exec rule that allows different commands to be executed based on the OS 
+  that it is executing on.
+
+  The Latest Version
+  ------------------
+
+  Details of the latest version can be found on the Apache Ant
+  Project web site <http://ant.apache.org/>.
+
+
+  Documentation
+  -------------
+
+  Documentation is available in HTML format, in the docs/ directory.
+  For information about building and installing Ant, see
+  docs/manual/index.html
+
+
+  Licensing
+  ---------
+
+  This software is licensed under the terms you may find in the file 
+  named "LICENSE" in this directory.
+  
+  This distribution includes cryptographic software.  The country in 
+  which you currently reside may have restrictions on the import, 
+  possession, use, and/or re-export to another country, of 
+  encryption software.  BEFORE using any encryption software, please 
+  check your country's laws, regulations and policies concerning the
+  import, possession, or use, and re-export of encryption software, to 
+  see if this is permitted.  See <http://www.wassenaar.org/> for more
+  information.
+
+  The U.S. Government Department of Commerce, Bureau of Industry and
+  Security (BIS), has classified this software as Export Commodity 
+  Control Number (ECCN) 5D002.C.1, which includes information security
+  software using or performing cryptographic functions with asymmetric
+  algorithms.  The form and manner of this Apache Software Foundation
+  distribution makes it eligible for export under the License Exception
+  ENC Technology Software Unrestricted (TSU) exception (see the BIS 
+  Export Administration Regulations, Section 740.13) for both object 
+  code and source code.
+
+  The following provides more details on the included cryptographic
+  software:
+
+  For the SSH family of tasks (<sshexec> and <scp>) Ant requires the
+  JSch <http://www.jcraft.com/jsch/index.html> library as well as the
+  Java Cryptography extensions
+  <http://java.sun.com/javase/technologies/security/>.  Ant does not
+  include these libraries itself, but is designed to use them.
+
+  Thanks for using Ant.
+
+                                          The Apache Ant Project
+                                         <http://ant.apache.org/>
+

BIN
src/contrib/chukwa/lib/ant.jar


+ 202 - 0
src/contrib/chukwa/lib/commons-codec-1.3-LICENSE.txt

@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+

+ 15 - 0
src/contrib/chukwa/lib/commons-codec-1.3-README.txt

@@ -0,0 +1,15 @@
+Apache Commons Codec
+Copyright 2001-2008 The Apache Software Foundation
+
+This product includes software developed by
+The Apache Software Foundation (http://www.apache.org/).
+
+--------------------------------------------------------------------------------
+src/test/org/apache/commons/codec/language/DoubleMetaphoneTest.java contains 
+test data from http://aspell.sourceforge.net/test/batch0.tab.
+
+Copyright (C) 2002 Kevin Atkinson (kevina@gnu.org). Verbatim copying
+and distribution of this entire article is permitted in any medium,
+provided this notice is preserved.
+--------------------------------------------------------------------------------
+

BIN
src/contrib/chukwa/lib/commons-codec-1.3.jar


+ 202 - 0
src/contrib/chukwa/lib/commons-fileupload-1.2-LICENSE.txt

@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+

+ 5 - 0
src/contrib/chukwa/lib/commons-fileupload-1.2-README.txt

@@ -0,0 +1,5 @@
+Apache Commons FileUpload
+Copyright 2002-2008 The Apache Software Foundation
+
+This product includes software developed by
+The Apache Software Foundation (http://www.apache.org/).

BIN
src/contrib/chukwa/lib/commons-fileupload-1.2.jar


+ 202 - 0
src/contrib/chukwa/lib/commons-httpclient-3.1-LICENSE.txt

@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+

+ 13 - 0
src/contrib/chukwa/lib/commons-httpclient-3.1-README.txt

@@ -0,0 +1,13 @@
+Introduction
+
+The Hyper-Text Transfer Protocol (HTTP) is perhaps the most significant protocol used on the Internet today. Web services, network-enabled appliances and the growth of network computing continue to expand the role of the HTTP protocol beyond user-driven web browsers, while increasing the number of applications that require HTTP support.
+
+Although the java.net package provides basic functionality for accessing resources via HTTP, it doesn't provide the full flexibility or functionality needed by many applications. The Jakarta Commons HttpClient component seeks to fill this void by providing an efficient, up-to-date, and feature-rich package implementing the client side of the most recent HTTP standards and recommendations. See the Features page for more details on standards compliance and capabilities.
+
+Designed for extension while providing robust support for the base HTTP protocol, the HttpClient component may be of interest to anyone building HTTP-aware client applications such as web browsers, web service clients, or systems that leverage or extend the HTTP protocol for distributed communication.
+
+There are many projects that use HttpClient to provide the core HTTP functionality. Some of these are open source with project pages you can find on the web while others are closed source that you would never see or hear about. The Apache Source License provides maximum flexibility for source and binary reuse. Please see the Applications page for projects using HttpClient.
+History
+
+HttpClient was started in 2001 as a subproject of the Jakarta Commons, based on code developed by the Jakarta Slide project. It was promoted out of the Commons in 2004, graduating to a separate Jakarta project. In 2005, the HttpComponents project at Jakarta was created, with the task of developing a successor to HttpClient 3.x and to maintain the existing codebase until the new one is ready to take over. The Commons project, cradle of HttpClient, left Jakarta in 2007 to become an independent Top Level Project. Later in the same year, the HttpComponents project also left Jakarta to become an independent Top Level Project, taking the responsibility for maintaining HttpClient with it.
+

BIN
src/contrib/chukwa/lib/commons-httpclient-3.1.jar


+ 202 - 0
src/contrib/chukwa/lib/commons-io-1.4-LICENSE.txt

@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+

+ 6 - 0
src/contrib/chukwa/lib/commons-io-1.4-README.txt

@@ -0,0 +1,6 @@
+Apache Commons IO
+Copyright 2002-2008 The Apache Software Foundation
+
+This product includes software developed by
+The Apache Software Foundation (http://www.apache.org/).
+

BIN
src/contrib/chukwa/lib/commons-io-1.4.jar


+ 202 - 0
src/contrib/chukwa/lib/commons-logging-LICENSE.txt

@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+

+ 5 - 0
src/contrib/chukwa/lib/commons-logging-README.txt

@@ -0,0 +1,5 @@
+Apache Commons Logging
+Copyright 2003-2007 The Apache Software Foundation
+
+This product includes software developed by
+The Apache Software Foundation (http://www.apache.org/).

+ 202 - 0
src/contrib/chukwa/lib/commons-logging-adapters-1.1-LICENSE.txt

@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+

BIN
src/contrib/chukwa/lib/commons-logging-adapters-1.1.jar


+ 202 - 0
src/contrib/chukwa/lib/commons-logging-api-1.1-LICENSE.txt

@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+

BIN
src/contrib/chukwa/lib/commons-logging-api-1.1.jar


BIN
src/contrib/chukwa/lib/commons-logging.jar


+ 202 - 0
src/contrib/chukwa/lib/jetty-6.1.11-LICENSE.txt

@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+

+ 142 - 0
src/contrib/chukwa/lib/jetty-6.1.11-README.txt

@@ -0,0 +1,142 @@
+
+This is the Jetty 6 HTTP server and servlet container.
+
+For more information about Jetty, please see the Jetty wiki: 
+
+   http://docs.codehaus.org/display/JETTY/
+
+DIRECTORY LAYOUT
+================
+bin                   utility scripts and executables
+contexts              Deployment directory for context descriptors
+contrib               Source modules for optional jetty packages in the jetty-contrib repository, which has a larger more open group of committers
+etc                   Configuration files
+examples              Example projects
+extras                Source modules for optional jetty packages in the main jetty repository.
+javadoc               Generated javadoc
+lib                   Generated libraries
+LICENSES              License
+logs                  Request log and server log files
+modules               Source modules for core jetty packages
+patches               Optional patches for source modules
+pom.xml               Build configuration for maven
+project-website       Project Website
+README.txt            This file
+resources             Directory for resources to include on classpath
+start.jar             Start jar for jetty
+VERSION.txt           Version history
+webapps               Deployment directory for standard webapps
+
+
+RUNNING JETTY
+=============
+From the release, you can run the server with:
+
+   java -jar start.jar
+
+and then point your browser at 
+
+   http://localhost:8080
+
+and click to the test webapp, where there are some demos and more
+information.
+
+The start command above is equivalent to 
+
+   java -jar start.jar etc/jetty.xml
+
+which gives a configuration file on the commandline. An explicit
+configuration file (or multiple configuration files) may be
+given to select specific configurations.
+
+There is also a unix start script in bin/jetty.sh that can be used
+in /etc/init.d
+
+JETTY DEPENDENCIES
+==================
+
+The Jetty build is rather large, because it bundles many optional
+packages.
+
+Jetty depends ONLY on a jre 1.4 runtime and the three jars found in
+the top level of the $JETTY_HOME/lib directory:
+
+  servlet-api-2.5-$VERSION.jar
+  jetty-$VERSION.jar
+  jetty-util-$VERSION.jar
+ 
+For small foot print applications, these three jars can be 
+trimmed of excess classes - we will soon automate generation
+of such minimal assemblies.
+
+The jars found in the subdirectories are all optional:
+
+  jsp-2.0/*.jar   (depends on java 2 (jre 1.4))
+  jsp-2.1/*.jar   (depends on java 5 (jre 1.5))
+  management/*.jar
+  naming/*.jar
+  plus/*.jar
+  xbean/*.jar
+
+The start.jar includes all these options if they are
+left in the lib subdirectories.
+
+The start.jar will also select the version of JSP to
+use based on the version of the jre available.
+
+
+RUNNING WITH JMX
+================
+
+The server can be run with JMX management with the command:
+
+   java -jar start.jar etc/jetty-jmx.xml etc/jetty.xml
+   
+This command adds the jmx configuration file before the server
+configuration.
+
+RUNNING WITH JETTY PLUS
+=======================
+
+The server can be run as JettyPlus (JNDI, JAAS etc.) with the 
+command:
+
+   java -jar start.jar etc/jetty.xml etc/jetty-plus.xml
+   
+This command adds the plus configuration file after the server configuration file,
+although you will first need to follow the instructions inside the etc/jetty-plus.xml
+file.
+
+RUNNING WITH OTHER CONTAINERS
+=============================
+If you wish to use Continuations in other containers, the jetty-util.jar
+can be included in WEB-INF/lib and will provide waiting continuations
+
+
+BUILDING JETTY
+==============
+
+Jetty uses maven 2 as its build system.  Maven will fetch
+the dependancies, build the server and assemble a runnable
+version:
+
+  mvn install
+
+Jetty itself only needs java 1.4, however to build JSP 2.1 
+support you need to use java5 AND you will need to have
+cvs installed.    If you want to use java1.4,
+then you can use the jsp-2.0 modules instead of the 
+jsp-api-2.1 and  jsp-2.1 modules.
+
+
+DEPENDENCIES 
+============
+The only real dependancy is the servlet api, so only 
+the jars in the top level of the lib directory are needed
+to run Jetty (and they can be trimmed from many applications).
+
+The jars in the subdirectories of lib are all optional, but
+are included on the classpath by the standard start.jar 
+mechanism
+
+

BIN
src/contrib/chukwa/lib/jetty-6.1.11.jar


BIN
src/contrib/chukwa/lib/jetty-util-6.1.11.jar


+ 9 - 0
src/contrib/chukwa/lib/json-LICENSE.txt

@@ -0,0 +1,9 @@
+Copyright (c) 2002 JSON.org
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+The Software shall be used for Good, not Evil.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 

+ 563 - 0
src/contrib/chukwa/lib/json-README.txt

@@ -0,0 +1,563 @@
+
+
+
+
+
+
+Network Working Group                                       D. Crockford
+Request for Comments: 4627                                      JSON.org
+Category: Informational                                        July 2006
+
+
+ The application/json Media Type for JavaScript Object Notation (JSON)
+
+Status of This Memo
+
+   This memo provides information for the Internet community.  It does
+   not specify an Internet standard of any kind.  Distribution of this
+   memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (2006).
+
+Abstract
+
+   JavaScript Object Notation (JSON) is a lightweight, text-based,
+   language-independent data interchange format.  It was derived from
+   the ECMAScript Programming Language Standard.  JSON defines a small
+   set of formatting rules for the portable representation of structured
+   data.
+
+1.  Introduction
+
+   JavaScript Object Notation (JSON) is a text format for the
+   serialization of structured data.  It is derived from the object
+   literals of JavaScript, as defined in the ECMAScript Programming
+   Language Standard, Third Edition [ECMA].
+
+   JSON can represent four primitive types (strings, numbers, booleans,
+   and null) and two structured types (objects and arrays).
+
+   A string is a sequence of zero or more Unicode characters [UNICODE].
+
+   An object is an unordered collection of zero or more name/value
+   pairs, where a name is a string and a value is a string, number,
+   boolean, null, object, or array.
+
+   An array is an ordered sequence of zero or more values.
+
+   The terms "object" and "array" come from the conventions of
+   JavaScript.
+
+   JSON's design goals were for it to be minimal, portable, textual, and
+   a subset of JavaScript.
+
+
+
+Crockford                    Informational                      [Page 1]
+
+RFC 4627                          JSON                         July 2006
+
+
+1.1.  Conventions Used in This Document
+
+   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+   document are to be interpreted as described in [RFC2119].
+
+   The grammatical rules in this document are to be interpreted as
+   described in [RFC4234].
+
+2.  JSON Grammar
+
+   A JSON text is a sequence of tokens.  The set of tokens includes six
+   structural characters, strings, numbers, and three literal names.
+
+   A JSON text is a serialized object or array.
+
+      JSON-text = object / array
+
+   These are the six structural characters:
+
+      begin-array     = ws %x5B ws  ; [ left square bracket
+
+      begin-object    = ws %x7B ws  ; { left curly bracket
+
+      end-array       = ws %x5D ws  ; ] right square bracket
+
+      end-object      = ws %x7D ws  ; } right curly bracket
+
+      name-separator  = ws %x3A ws  ; : colon
+
+      value-separator = ws %x2C ws  ; , comma
+
+   Insignificant whitespace is allowed before or after any of the six
+   structural characters.
+
+      ws = *(
+                %x20 /              ; Space
+                %x09 /              ; Horizontal tab
+                %x0A /              ; Line feed or New line
+                %x0D                ; Carriage return
+            )
+
+2.1.  Values
+
+   A JSON value MUST be an object, array, number, or string, or one of
+   the following three literal names:
+
+      false null true
+
+
+
+Crockford                    Informational                      [Page 2]
+
+RFC 4627                          JSON                         July 2006
+
+
+   The literal names MUST be lowercase.  No other literal names are
+   allowed.
+
+         value = false / null / true / object / array / number / string
+
+         false = %x66.61.6c.73.65   ; false
+
+         null  = %x6e.75.6c.6c      ; null
+
+         true  = %x74.72.75.65      ; true
+
+2.2.  Objects
+
+   An object structure is represented as a pair of curly brackets
+   surrounding zero or more name/value pairs (or members).  A name is a
+   string.  A single colon comes after each name, separating the name
+   from the value.  A single comma separates a value from a following
+   name.  The names within an object SHOULD be unique.
+
+      object = begin-object [ member *( value-separator member ) ]
+      end-object
+
+      member = string name-separator value
+
+2.3.  Arrays
+
+   An array structure is represented as square brackets surrounding zero
+   or more values (or elements).  Elements are separated by commas.
+
+      array = begin-array [ value *( value-separator value ) ] end-array
+
+2.4.  Numbers
+
+   The representation of numbers is similar to that used in most
+   programming languages.  A number contains an integer component that
+   may be prefixed with an optional minus sign, which may be followed by
+   a fraction part and/or an exponent part.
+
+   Octal and hex forms are not allowed.  Leading zeros are not allowed.
+
+   A fraction part is a decimal point followed by one or more digits.
+
+   An exponent part begins with the letter E in upper or lowercase,
+   which may be followed by a plus or minus sign.  The E and optional
+   sign are followed by one or more digits.
+
+   Numeric values that cannot be represented as sequences of digits
+   (such as Infinity and NaN) are not permitted.
+
+
+
+Crockford                    Informational                      [Page 3]
+
+RFC 4627                          JSON                         July 2006
+
+
+         number = [ minus ] int [ frac ] [ exp ]
+
+         decimal-point = %x2E       ; .
+
+         digit1-9 = %x31-39         ; 1-9
+
+         e = %x65 / %x45            ; e E
+
+         exp = e [ minus / plus ] 1*DIGIT
+
+         frac = decimal-point 1*DIGIT
+
+         int = zero / ( digit1-9 *DIGIT )
+
+         minus = %x2D               ; -
+
+         plus = %x2B                ; +
+
+         zero = %x30                ; 0
+
+2.5.  Strings
+
+   The representation of strings is similar to conventions used in the C
+   family of programming languages.  A string begins and ends with
+   quotation marks.  All Unicode characters may be placed within the
+   quotation marks except for the characters that must be escaped:
+   quotation mark, reverse solidus, and the control characters (U+0000
+   through U+001F).
+
+   Any character may be escaped.  If the character is in the Basic
+   Multilingual Plane (U+0000 through U+FFFF), then it may be
+   represented as a six-character sequence: a reverse solidus, followed
+   by the lowercase letter u, followed by four hexadecimal digits that
+   encode the character's code point.  The hexadecimal letters A though
+   F can be upper or lowercase.  So, for example, a string containing
+   only a single reverse solidus character may be represented as
+   "\u005C".
+
+   Alternatively, there are two-character sequence escape
+   representations of some popular characters.  So, for example, a
+   string containing only a single reverse solidus character may be
+   represented more compactly as "\\".
+
+   To escape an extended character that is not in the Basic Multilingual
+   Plane, the character is represented as a twelve-character sequence,
+   encoding the UTF-16 surrogate pair.  So, for example, a string
+   containing only the G clef character (U+1D11E) may be represented as
+   "\uD834\uDD1E".
+
+
+
+Crockford                    Informational                      [Page 4]
+
+RFC 4627                          JSON                         July 2006
+
+
+         string = quotation-mark *char quotation-mark
+
+         char = unescaped /
+                escape (
+                    %x22 /          ; "    quotation mark  U+0022
+                    %x5C /          ; \    reverse solidus U+005C
+                    %x2F /          ; /    solidus         U+002F
+                    %x62 /          ; b    backspace       U+0008
+                    %x66 /          ; f    form feed       U+000C
+                    %x6E /          ; n    line feed       U+000A
+                    %x72 /          ; r    carriage return U+000D
+                    %x74 /          ; t    tab             U+0009
+                    %x75 4HEXDIG )  ; uXXXX                U+XXXX
+
+         escape = %x5C              ; \
+
+         quotation-mark = %x22      ; "
+
+         unescaped = %x20-21 / %x23-5B / %x5D-10FFFF
+
+3.  Encoding
+
+   JSON text SHALL be encoded in Unicode.  The default encoding is
+   UTF-8.
+
+   Since the first two characters of a JSON text will always be ASCII
+   characters [RFC0020], it is possible to determine whether an octet
+   stream is UTF-8, UTF-16 (BE or LE), or UTF-32 (BE or LE) by looking
+   at the pattern of nulls in the first four octets.
+
+           00 00 00 xx  UTF-32BE
+           00 xx 00 xx  UTF-16BE
+           xx 00 00 00  UTF-32LE
+           xx 00 xx 00  UTF-16LE
+           xx xx xx xx  UTF-8
+
+4.  Parsers
+
+   A JSON parser transforms a JSON text into another representation.  A
+   JSON parser MUST accept all texts that conform to the JSON grammar.
+   A JSON parser MAY accept non-JSON forms or extensions.
+
+   An implementation may set limits on the size of texts that it
+   accepts.  An implementation may set limits on the maximum depth of
+   nesting.  An implementation may set limits on the range of numbers.
+   An implementation may set limits on the length and character contents
+   of strings.
+
+
+
+
+Crockford                    Informational                      [Page 5]
+
+RFC 4627                          JSON                         July 2006
+
+
+5. Generators
+
+   A JSON generator produces JSON text.  The resulting text MUST
+   strictly conform to the JSON grammar.
+
+6. IANA Considerations
+
+   The MIME media type for JSON text is application/json.
+
+   Type name: application
+
+   Subtype name: json
+
+   Required parameters: n/a
+
+   Optional parameters: n/a
+
+   Encoding considerations: 8bit if UTF-8; binary if UTF-16 or UTF-32
+
+      JSON may be represented using UTF-8, UTF-16, or UTF-32.  When JSON
+      is written in UTF-8, JSON is 8bit compatible.  When JSON is
+      written in UTF-16 or UTF-32, the binary content-transfer-encoding
+      must be used.
+
+   Security considerations:
+
+   Generally there are security issues with scripting languages.  JSON
+   is a subset of JavaScript, but it is a safe subset that excludes
+   assignment and invocation.
+
+   A JSON text can be safely passed into JavaScript's eval() function
+   (which compiles and executes a string) if all the characters not
+   enclosed in strings are in the set of characters that form JSON
+   tokens.  This can be quickly determined in JavaScript with two
+   regular expressions and calls to the test and replace methods.
+
+      var my_JSON_object = !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(
+             text.replace(/"(\\.|[^"\\])*"/g, ''))) &&
+         eval('(' + text + ')');
+
+   Interoperability considerations: n/a
+
+   Published specification: RFC 4627
+
+
+
+
+
+
+
+
+Crockford                    Informational                      [Page 6]
+
+RFC 4627                          JSON                         July 2006
+
+
+   Applications that use this media type:
+
+      JSON has been used to exchange data between applications written
+      in all of these programming languages: ActionScript, C, C#,
+      ColdFusion, Common Lisp, E, Erlang, Java, JavaScript, Lua,
+      Objective CAML, Perl, PHP, Python, Rebol, Ruby, and Scheme.
+
+   Additional information:
+
+      Magic number(s): n/a
+      File extension(s): .json
+      Macintosh file type code(s): TEXT
+
+   Person & email address to contact for further information:
+      Douglas Crockford
+      douglas@crockford.com
+
+   Intended usage: COMMON
+
+   Restrictions on usage: none
+
+   Author:
+      Douglas Crockford
+      douglas@crockford.com
+
+   Change controller:
+      Douglas Crockford
+      douglas@crockford.com
+
+7. Security Considerations
+
+   See Security Considerations in Section 6.
+
+8. Examples
+
+   This is a JSON object:
+
+   {
+      "Image": {
+          "Width":  800,
+          "Height": 600,
+          "Title":  "View from 15th Floor",
+          "Thumbnail": {
+              "Url":    "http://www.example.com/image/481989943",
+              "Height": 125,
+              "Width":  "100"
+          },
+          "IDs": [116, 943, 234, 38793]
+
+
+
+Crockford                    Informational                      [Page 7]
+
+RFC 4627                          JSON                         July 2006
+
+
+        }
+   }
+
+   Its Image member is an object whose Thumbnail member is an object
+   and whose IDs member is an array of numbers.
+
+   This is a JSON array containing two objects:
+
+   [
+      {
+         "precision": "zip",
+         "Latitude":  37.7668,
+         "Longitude": -122.3959,
+         "Address":   "",
+         "City":      "SAN FRANCISCO",
+         "State":     "CA",
+         "Zip":       "94107",
+         "Country":   "US"
+      },
+      {
+         "precision": "zip",
+         "Latitude":  37.371991,
+         "Longitude": -122.026020,
+         "Address":   "",
+         "City":      "SUNNYVALE",
+         "State":     "CA",
+         "Zip":       "94085",
+         "Country":   "US"
+      }
+   ]
+
+9. References
+
+9.1.  Normative References
+
+   [ECMA]    European Computer Manufacturers Association, "ECMAScript
+             Language Specification 3rd Edition", December 1999,
+             <http://www.ecma-international.org/publications/files/
+             ecma-st/ECMA-262.pdf>.
+
+   [RFC0020] Cerf, V., "ASCII format for network interchange", RFC 20,
+             October 1969.
+
+   [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+             Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+   [RFC4234] Crocker, D. and P.  Overell, "Augmented BNF for Syntax
+             Specifications: ABNF", RFC 4234, October 2005.
+
+
+
+Crockford                    Informational                      [Page 8]
+
+RFC 4627                          JSON                         July 2006
+
+
+   [UNICODE] The Unicode Consortium, "The Unicode Standard Version 4.0",
+             2003, <http://www.unicode.org/versions/Unicode4.1.0/>.
+
+Author's Address
+
+   Douglas Crockford
+   JSON.org
+   EMail: douglas@crockford.com
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Crockford                    Informational                      [Page 9]
+
+RFC 4627                          JSON                         July 2006
+
+
+Full Copyright Statement
+
+   Copyright (C) The Internet Society (2006).
+
+   This document is subject to the rights, licenses and restrictions
+   contained in BCP 78, and except as set forth therein, the authors
+   retain all their rights.
+
+   This document and the information contained herein are provided on an
+   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
+   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
+   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
+   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Intellectual Property
+
+   The IETF takes no position regarding the validity or scope of any
+   Intellectual Property Rights or other rights that might be claimed to
+   pertain to the implementation or use of the technology described in
+   this document or the extent to which any license under such rights
+   might or might not be available; nor does it represent that it has
+   made any independent effort to identify any such rights.  Information
+   on the procedures with respect to rights in RFC documents can be
+   found in BCP 78 and BCP 79.
+
+   Copies of IPR disclosures made to the IETF Secretariat and any
+   assurances of licenses to be made available, or the result of an
+   attempt made to obtain a general license or permission for the use of
+   such proprietary rights by implementers or users of this
+   specification can be obtained from the IETF on-line IPR repository at
+   http://www.ietf.org/ipr.
+
+   The IETF invites any interested party to bring to its attention any
+   copyrights, patents or patent applications, or other proprietary
+   rights that may cover technology that may be required to implement
+   this standard.  Please address the information to the IETF at
+   ietf-ipr@ietf.org.
+
+Acknowledgement
+
+   Funding for the RFC Editor function is provided by the IETF
+   Administrative Support Activity (IASA).
+
+
+
+
+
+
+
+Crockford                    Informational                     [Page 10]
+

BIN
src/contrib/chukwa/lib/json.jar


+ 202 - 0
src/contrib/chukwa/lib/jsp-api-LICENSE.txt

@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+

+ 17 - 0
src/contrib/chukwa/lib/jsp-api-README.txt

@@ -0,0 +1,17 @@
+Apache Tomcat
+Copyright 1999-2007 The Apache Software Foundation
+
+This product includes software developed by
+The Apache Software Foundation (http://www.apache.org/).
+
+The Windows Installer is built with the Nullsoft
+Scriptable Install Sysem (NSIS), which is
+open source software.  The original software and
+related information is available at
+http://nsis.sourceforge.net.
+
+Java compilation software for JSP pages is provided by Eclipse, 
+which is open source software.  The orginal software and 
+related infomation is available at
+http://www.eclipse.org.
+

BIN
src/contrib/chukwa/lib/jsp-api.jar


+ 88 - 0
src/contrib/chukwa/lib/junit-LICENSE.txt

@@ -0,0 +1,88 @@
+Common Public License - v 1.0
+
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+b) in the case of each subsequent Contributor:
+i)	 changes to the Program, and
+ii)	 additions to the Program;
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.
+
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+
+2. GRANT OF RIGHTS
+
+a)	Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+c)	Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+d)	Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a)	it complies with the terms and conditions of this Agreement; and
+b)	its license agreement:
+i)	effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;
+iii)	states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and
+iv)	states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.
+When the Program is made available in source code form:
+
+a)	it must be made available under this Agreement; and
+b)	a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.
+
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.
+
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.
+
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+
+If Recipient institutes patent litigation against a Contributor with respect to a patent applicable to software (including a cross-claim or counterclaim in a lawsuit), then any patent licenses granted by that Contributor to such Recipient under this Agreement shall terminate as of the date such litigation is filed. In addition, if Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed.
+
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.
+
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. IBM is the initial Agreement Steward. IBM may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.

+ 570 - 0
src/contrib/chukwa/lib/junit-README.html

@@ -0,0 +1,570 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+   <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+   <meta name="Author" content="Erich Gamma, Kent Beck, and David Saff">
+   <title>JUnit 4.5</title>
+</head>
+<body>
+
+<h1>
+<b><font color="#00CC00">J</font><font color="#FF0000">U</font><font color="#000000">nit
+4.5</b></h1> 
+<br>Brought to you by <a href="http://www.threeriversinstitute.org">Kent Beck</a>, Erich 
+Gamma, and <a href="http://david.saff.net">David Saff</a>. 
+<br>FAQ edited by <a href="http://www.clarkware.com">Mike Clark</a>. Web mastering by Erik 
+Meade.
+<br>(see also <a href="http://www.junit.org">JUnit.org</a>)
+
+<hr WIDTH="100%">
+<br>8 August 2008
+<p>JUnit is a simple framework to write repeatable tests. It is an instance
+of the xUnit architecture for unit testing frameworks.
+<ul>
+<li>
+<a href="#Summary of">Summary of Changes</a></li>
+
+<li>
+<a href="#Contents">Contents</a></li>
+
+<li>
+<a href="#Installation">Installation</a></li>
+
+<li>
+<a href="#Getting">Getting Started</a></li>
+
+<li>
+<a href="#Documentation">Documentation</a></li>
+<li>
+<a href="#Known Defects">Known Defects</a></li>
+</ul>
+
+<a NAME="Summary of">
+<h2>Summary of Changes in version 4.5</h2>
+
+<h3>Installation</h3>
+
+<ul>
+<li>We are releasing <code>junit-4.5.jar</code>, which contains all the classes
+necessary to run JUnit, and <code>junit-dep-4.5.jar</code>, which leaves out
+hamcrest classes, for developers who already use hamcrest outside of
+JUnit.</li>
+</ul>
+
+<h3>Basic JUnit operation</h3>
+
+<ul>
+<li><p>JUnitCore now more often exits with the correct exit code (0 for
+success, 1 for failure)</p></li>
+<li><p>Badly formed test classes (exceptions in constructors, classes
+without tests, multiple constructors, Suite without @SuiteClasses)
+produce more helpful error messages</p></li>
+<li><p>Test classes whose only test methods are inherited from superclasses
+now run.</p></li>
+<li><p>Optimization to annotation processing can cut JUnit overhead by more than half
+on large test classes, especially when using Theories.  [Bug 1796847]</p></li>
+<li><p>A failing assumption in a constructor ignores the class</p></li>
+<li><p>Correct results when comparing the string "null" with potentially
+null values.  [Bug 1857283]</p></li>
+<li><p>Annotating a class with <code>@RunWith(JUnit4.class)</code> will always invoke the
+default JUnit 4 runner in the current version of JUnit.  This default changed
+from <code>JUnit4ClassRunner</code> in 4.4 to <code>BlockJUnit4ClassRunner</code> in 4.5 (see below),
+and may change again.</p></li>
+</ul>
+
+<h3>Extension</h3>
+
+<ul>
+<li><p><code>BlockJUnit4Runner</code> is a new implementation of the standard JUnit 4
+test class functionality.  In contrast to <code>JUnit4ClassRunner</code> (the old
+implementation):</p>
+
+<ul>
+<li><p><code>BlockJUnit4Runner</code> has a much simpler implementation based on
+Statements, allowing new operations to be inserted into the
+appropriate point in the execution flow.</p></li>
+<li><p><code>BlockJUnit4Runner</code> is published, and extension and reuse are
+encouraged, whereas <code>JUnit4ClassRunner</code> was in an internal package,
+and is now deprecated.</p></li>
+</ul></li>
+<li><p><code>ParentRunner</code> is a base class for runners that iterate over
+a list of "children", each an object representing a test or suite to run.
+<code>ParentRunner</code> provides filtering, sorting, <code>@BeforeClass</code>, <code>@AfterClass</code>,
+and method validation to subclasses.</p></li>
+<li><p><code>TestClass</code> wraps a class to be run, providing efficient, repeated access
+to all methods with a given annotation.</p></li>
+<li><p>The new <code>RunnerBuilder</code> API allows extending the behavior of
+Suite-like custom runners.</p></li>
+<li><p><code>AssumptionViolatedException.toString()</code> is more informative</p></li>
+</ul>
+
+<h3>Extra Runners</h3>
+
+<ul>
+<li><p><code>Parameterized.eachOne()</code> has been removed</p></li>
+<li><p>New runner <code>Enclosed</code> runs all static inner classes of an outer class.</p></li>
+</ul>
+
+<h3>Theories</h3>
+
+<ul>
+<li><p><code>@Before</code> and <code>@After</code> methods are run before and after each set of attempted parameters
+on a Theory, and each set of parameters is run on a new instance of the test class.</p></li>
+<li><p>Exposed API's <code>ParameterSignature.getType()</code> and <code>ParameterSignature.getAnnotations()</code></p></li>
+<li><p>An array of data points can be introduced by a field or method
+marked with the new annotation <code>@DataPoints</code></p></li>
+<li><p>The Theories custom runner has been refactored to make it faster and
+easier to extend</p></li>
+</ul>
+
+<h3>Development</h3>
+
+<ul>
+<li><p>Source has been split into directories <code>src/main/java</code> and
+<code>src/test/java</code>, making it easier to exclude tests from builds, and
+making JUnit more maven-friendly</p></li>
+<li><p>Test classes in <code>org.junit.tests</code> have been organized into
+subpackages, hopefully making finding tests easier.</p></li>
+<li><p><code>ResultMatchers</code> has more informative descriptions.</p></li>
+<li><p><code>TestSystem</code> allows testing return codes and other system-level interactions.</p></li>
+</ul>
+
+<h2>Summary of Changes in version 4.4</h2>
+
+<p>JUnit is designed to efficiently capture developers' intentions about
+their code, and quickly check their code matches those intentions.
+Over the last year, we've been talking about what things developers
+would like to say about their code that have been difficult in the
+past, and how we can make them easier.</p>
+
+<h3>assertThat</h3>
+
+<p>Two years ago, Joe Walnes built a <a href="http://joe.truemesh.com/blog/000511.html">new assertion mechanism</a> on top of what was 
+then <a href="http://www.jmock.org/download.html">JMock 1</a>.  The method name was <code>assertThat</code>, and the syntax looked like this:</p>
+
+<pre><code>assertThat(x, is(3));
+assertThat(x, is(not(4)));
+assertThat(responseString, either(containsString("color")).or(containsString("colour")));
+assertThat(myList, hasItem("3"));
+</code></pre>
+
+<p>More generally:</p>
+
+<pre><code>assertThat([value], [matcher statement]);
+</code></pre>
+
+<p>Advantages of this assertion syntax include:</p>
+
+<ul>
+<li><p>More readable and typeable: this syntax allows you to think in terms of subject, verb, object
+(assert "x is 3") rathern than <code>assertEquals</code>, which uses verb, object, subject (assert "equals 3 x")</p></li>
+<li><p>Combinations: any matcher statement <code>s</code> can be negated (<code>not(s)</code>), combined (<code>either(s).or(t)</code>),
+mapped to a collection (<code>each(s)</code>), or used in custom combinations (<code>afterFiveSeconds(s)</code>)</p></li>
+<li><p>Readable failure messages.  Compare</p>
+
+<pre><code>assertTrue(responseString.contains("color") || responseString.contains("colour"));
+// ==&gt; failure message: 
+// java.lang.AssertionError:
+
+
+assertThat(responseString, anyOf(containsString("color"), containsString("colour")));
+// ==&gt; failure message:
+// java.lang.AssertionError: 
+// Expected: (a string containing "color" or a string containing "colour")
+//      got: "Please choose a font"
+</code></pre></li>
+<li><p>Custom Matchers.  By implementing the <code>Matcher</code> interface yourself, you can get all of the
+above benefits for your own custom assertions.</p></li>
+<li><p>For a more thorough description of these points, see <a href="http://joe.truemesh.com/blog/000511.html">Joe Walnes's
+original post</a>.:</p></li>
+</ul>
+
+<p>We have decided to include this API directly in JUnit.
+It's an extensible and readable syntax, and because it enables
+new features, like <a href="#assumptions">assumptions</a> and <a href="#theories">theories</a>.</p>
+
+<p>Some notes:</p>
+
+<ul>
+<li>The old assert methods are never, ever, going away. <br />
+Developers may continue using the old <code>assertEquals</code>, <code>assertTrue</code>, and
+so on.</li>
+<li><p>The second parameter of an <code>assertThat</code> statement is a <code>Matcher</code>.
+We include the Matchers we want as static imports, like this:</p>
+
+<pre><code>import static org.hamcrest.CoreMatchers.is;
+</code></pre>
+
+<p>or:</p>
+
+<pre><code>import static org.hamcrest.CoreMatchers.*;
+</code></pre></li>
+<li><p>Manually importing <code>Matcher</code> methods can be frustrating.  [Eclipse
+3.3][] includes the ability to 
+define
+"Favorite" classes to import static methods from, which makes it easier 
+(Search for "Favorites" in the Preferences dialog).
+We expect that support for static imports will improve in all Java IDEs in the future.</p></li>
+<li><p>To allow compatibility with a wide variety of possible matchers, 
+we have decided to include the classes from hamcrest-core,
+from the <a href="http://code.google.com/p/hamcrest/">Hamcrest</a> project.  This is the first time that
+third-party classes have been included in JUnit.  </p></li>
+<li><p>To allow developers to maintain full control of the classpath contents, the JUnit distribution also provides an unbundled junit-dep jar,
+ie without hamcrest-core classes included.  This is intended for situations when using other libraries that also depend on hamcrest-core, to
+avoid classloading conflicts or issues.  Developers using junit-dep should ensure a compatible version of hamcrest-core jar (ie 1.1+) is present in the classpath.</p></li>
+<li><p>JUnit currently ships with a few matchers, defined in 
+<code>org.hamcrest.CoreMatchers</code> and <code>org.junit.matchers.JUnitMatchers</code>. <br />
+To use many, many more, consider downloading the <a href="http://hamcrest.googlecode.com/files/hamcrest-all-1.1.jar">full hamcrest package</a>.</p></li>
+<li><p>JUnit contains special support for comparing string and array
+values, giving specific information on how they differ.  This is not
+yet available using the <code>assertThat</code> syntax, but we hope to bring
+the two assert methods into closer alignment in future releases.</p></li>
+</ul>
+
+<h3>assumeThat</h3>
+
+<p><a name="assumptions" />
+Ideally, the developer writing a test has control of all of the forces that might cause a test to fail.
+If this isn't immediately possible, making dependencies explicit can often improve a design. <br />
+For example, if a test fails when run in a different locale than the developer intended,
+it can be fixed by explicitly passing a locale to the domain code.</p>
+
+<p>However, sometimes this is not desirable or possible. <br />
+It's good to be able to run a test against the code as it is currently written, 
+implicit assumptions and all, or to write a test that exposes a known bug.
+For these situations, JUnit now includes the ability to express "assumptions":</p>
+
+<pre><code>import static org.junit.Assume.*
+
+@Test public void filenameIncludesUsername() {
+   assumeThat(File.separatorChar, is('/'));
+   assertThat(new User("optimus").configFileName(), is("configfiles/optimus.cfg"));
+}
+
+@Test public void correctBehaviorWhenFilenameIsNull() {
+   assumeTrue(bugFixed("13356"));  // bugFixed is not included in JUnit
+   assertThat(parse(null), is(new NullDocument()));
+}
+</code></pre>
+
+<p>With this beta release, a failed assumption will lead to the test being marked as passing,
+regardless of what the code below the assumption may assert.
+In the future, this may change, and a failed assumption may lead to the test being ignored:
+however, third-party runners do not currently allow this option.</p>
+
+<p>We have included <code>assumeTrue</code> for convenience, but thanks to the
+inclusion of Hamcrest, we do not need to create <code>assumeEquals</code>,
+<code>assumeSame</code>, and other analogues to the <code>assert*</code> methods.  All of
+those functionalities are subsumed in assumeThat, with the appropriate
+matcher.</p>
+
+<p>A failing assumption in a <code>@Before</code> or <code>@BeforeClass</code> method will have the same effect
+as a failing assumption in each <code>@Test</code> method of the class.</p>
+
+<h3>Theories</h3>
+
+<p><a name="theories" />
+More flexible and expressive assertions, combined with the ability to
+state assumptions clearly, lead to a new kind of statement of intent, 
+which we call a "Theory".  A test captures the intended behavior in
+one particular scenario.  A theory allows a developer to be
+as precise as desired about the behavior of the code in possibly
+infinite numbers of possible scenarios.  For example:</p>
+
+<pre><code>@RunWith(Theories.class)
+public class UserTest {
+  @DataPoint public static String GOOD_USERNAME = "optimus";
+  @DataPoint public static String USERNAME_WITH_SLASH = "optimus/prime";
+
+  @Theory public void filenameIncludesUsername(String username) {
+    assumeThat(username, not(containsString("/")));
+    assertThat(new User(username).configFileName(), containsString(username));
+  }
+}
+</code></pre>
+
+<p>This makes it clear that the user's filename should be included in the
+config file name, only if it doesn't contain a slash.  Another test
+or theory might define what happens when a username does contain a slash.</p>
+
+<p><code>UserTest</code> will attempt to run <code>filenameIncludesUsername</code> on 
+every compatible <code>DataPoint</code> defined in the class.  If any of the
+assumptions fail, the data point is silently ignored.  If all of the
+assumptions pass, but an assertion fails, the test fails.</p>
+
+<p>The support for Theories has been absorbed from the <a href="http://popper.tigris.org">Popper</a>
+project, and <a href="http://popper.tigris.org/tutorial.html">more complete documentation</a> can be found
+there.</p>
+
+<p>Defining general statements in this way can jog the developer's memory
+about other potential data points and tests, also allows <a href="http://www.junitfactory.org">automated
+tools</a> to <a href="http://shareandenjoy.saff.net/2007/04/popper-and-junitfactory.html">search</a> for new, unexpected data
+points that expose bugs.</p>
+
+<h3>Other changes</h3>
+
+<p>This release contains other bug fixes and new features.  Among them:</p>
+
+<ul>
+<li><p>Annotated descriptions</p>
+
+<p>Runner UIs, Filters, and Sorters operate on Descriptions of test
+methods and test classes.  These Descriptions now include the
+annotations on the original Java source element, allowing for richer
+display of test results, and easier development of annotation-based
+filters.</p></li>
+<li><p>Bug fix (1715326): assertEquals now compares all Numbers using their
+native implementation of <code>equals</code>.  This assertion, which passed in
+4.3, will now fail:</p>
+
+<p>assertEquals(new Integer(1), new Long(1));</p>
+
+<p>Non-integer Numbers (Floats, Doubles, BigDecimals, etc),
+which were compared incorrectly in 4.3, are now fixed.</p></li>
+<li><p><code>assertEquals(long, long)</code> and <code>assertEquals(double, double)</code> have
+been re-introduced to the <code>Assert</code> class, to take advantage of
+Java's native widening conversions.  Therefore, this still passes:</p>
+
+<p>assertEquals(1, 1L);</p></li>
+<li><p>The default runner for JUnit 4 test classes has been refactored.
+The old version was named <code>TestClassRunner</code>, and the new is named
+<code>JUnit4ClassRunner</code>.  Likewise, <code>OldTestClassRunner</code> is now
+<code>JUnit3ClassRunner</code>.  The new design allows variations in running
+individual test classes to be expressed with fewer custom classes.
+For a good example, see the source to
+<code>org.junit.experimental.theories.Theories</code>.</p></li>
+<li><p>The rules for determining which runner is applied by default to a
+test class have been simplified:</p>
+
+<ol>
+<li><p>If the class has a <code>@RunWith</code> annotation, the annotated runner
+class is used.</p></li>
+<li><p>If the class can be run with the JUnit 3 test runner (it
+subclasses <code>TestCase</code>, or contains a <code>public static Test suite()</code>
+method), JUnit38ClassRunner is used.</p></li>
+<li><p>Otherwise, JUnit4ClassRunner is used.</p></li>
+</ol>
+
+<p>This default guess can always be overridden by an explicit
+<code>@RunWith(JUnit4ClassRunner.class)</code> or
+<code>@RunWith(JUnit38ClassRunner.class)</code> annotation.</p>
+
+<p>The old class names <code>TestClassRunner</code> and <code>OldTestClassRunner</code>
+remain as deprecated.</p></li>
+<li><p>Bug fix (1739095): Filters and Sorters work correctly on test
+classes that contain a <code>suite</code> method like:</p>
+
+<p>public static junit.framework.Test suite() {
+  return new JUnit4TestAdapter(MyTest.class);
+}</p></li>
+<li><p>Bug fix (1745048): @After methods are now correctly called 
+after a test method times out.</p></li>
+</ul>
+
+<h2>
+<a NAME="Summary of"></a>Summary of Changes in version 4.3.1</h2>
+<p>
+<ul>
+<li>Bug fix: 4.3 introduced a 
+<a href="https://sourceforge.net/tracker/?func=detail&atid=115278&aid=1684562&group_id=15278">bug</a>
+that caused a NullPointerException
+when comparing a null reference to a non-null reference in <tt>assertEquals</tt>.
+This has been fixed.
+<li>Bug fix: The binary jar for 4.3 <a href="https://sourceforge.net/tracker/?func=detail&atid=115278&aid=1686931&group_id=15278">accidentally</a> included the tests and sample code,
+which are now removed for a smaller download, but, as always, available from the
+full zip.
+</ul>
+</p>
+
+<h2>
+<a NAME="Summary of"></a>Summary of Changes with version 4.3</h2>
+<p>
+<ul>
+<li>Changes in array equality.  Using <tt>assertEquals</tt> to compare array contents is now deprecated.
+In the future, <tt>assertEquals</tt> will revert to its pre-4.0 meaning of comparing objects based on
+Java's <tt>Object.equals</tt> semantics.  To compare array contents, use the new, more reliable 
+<tt>Assert.assertArrayEquals</tt> methods.
+<li>The <tt>@Ignore</tt> annotation can now be applied to classes, to ignore the entire class, instead of
+individual methods.
+<li>Originally, developers who wanted to use a static <tt>suite()</tt> method from JUnit 3.x with a JUnit 4.x
+runner had to annotate the class with <tt>@RunWith(AllTests.class)</tt>.  In the common case, this requirement
+has been removed.  However, when such a class is wrapped with a JUnit4TestAdapter (which we believe is rare), the
+results may not be as expected.
+<li>Improved error messages for array comparison("arrays first differed at element [1][0]")
+<li>Bug fix: Inaccessible base class is caught at test construction time.
+<li>Bug fix: Circular suites are caught at test construction time.
+<li>Bug fix: Test constructors that throw exceptions are reported correctly.
+<li><b>For committers and extenders</b>
+<ul>
+<li>Sources now are in a separate "src" directory (this means a big break in the CVS history)
+<li>Improved documentation in <tt>Request</tt>, <tt>RunWith</tt>
+</ul>
+</ul>
+</p>
+
+<h2>
+<a NAME="Summary of"></a>Summary of Changes with version 4.2</h2>
+<p>
+<ul>
+<li>Bug fix: Inaccessible base class is caught at test construction time.
+<li>Bug fix: Circular suites are caught at test construction time.
+<li>Improved error messages for array comparison("arrays first differed at element [1][0]")
+<li>Test constructors that throw exceptions are reported correctly.
+</ul>
+</p>
+
+
+<h2>
+<a NAME="Summary of"></a>Summary of Changes with version 4.1</h2>
+<p>
+<ul>
+<li>Bug fix: listeners now get a correct test running time, rather than always being told 0 secs.
+<li>The @RunWith annotation is now inherited by subclasses: 
+all subclasses of an abstract test class will be run by the same runner.
+<li>The build script fails if the JUnit unit tests fail
+<li>The faq has been updated
+<li>Javadoc has been improved, with more internal links, and package descriptions added (Thanks, Matthias Schmidt!)
+<li>An acknowledgements.txt file has been created to credit outside contributions
+<li>The <tt>Enclosed</tt> runner, which runs all of the static inner classes of a given class, has been added
+to <tt>org.junit.runners</tt>.
+</ul>
+</p>
+
+<h2>Summary of Changes with version 4.0</h2>
+<p>
+The architecture of JUnit 4.0 is a substantial departure from that of earlier releases. 
+Instead of 
+tagging test classes by subclassing junit.framework.TestCase and tagging test methods by 
+starting their name with "test", you now tag test methods with the @Test annotation.
+</p>
+
+
+<h2>
+<a NAME="Contents"></a>Contents of the Release</h2>
+
+<table CELLSPACING=0 CELLPADDING=0 >
+<tr>
+<td><tt>README.html&nbsp;</tt></td>
+
+<td>this file</td>
+</tr>
+
+<tr>
+<td><tt>junit-4.5.jar</tt></td>
+
+<td>a jar file with the JUnit framework, bundled with the hamcrest-core-1.1 dependency.</td>
+</tr>
+
+<tr>
+<td><tt>junit-dep-4.5.jar</tt></td>
+
+<td>a jar file with the JUnit framework, unbundled from any external dependencies.  
+Choosing to use this jar developers will need to also provide in the classpath a compatible version of external dependencies (ie hamcrest-core-1.1+)</td>
+</tr>
+
+<tr>
+<td><tt>junit-4.5-src.jar</tt></td>
+
+<td>a jar file with the source code of the JUnit framework</td>
+</tr>
+
+<tr>
+<td><tt>org/junit</tt></td>
+
+<td>the source code of the basic JUnit annotations and classes</td>
+</tr>
+
+<tr>
+<td><tt>&nbsp;&nbsp;&nbsp; samples</tt></td>
+
+<td>sample test cases</td>
+</tr>
+
+<tr>
+<td><tt>&nbsp;&nbsp;&nbsp; tests</tt></td>
+
+<td>test cases for JUnit itself</td>
+</tr>
+
+<tr>
+<td><tt>javadoc</tt></td>
+
+<td>javadoc generated documentation</td>
+</tr>
+
+<tr>
+<td><tt>doc</tt></td>
+
+<td>documentation and articles</td>
+</tr>
+</table>
+
+<h2>
+<a NAME="Installation"></a>Installation</h2>
+Below are the installation steps for installing JUnit:
+<ol>
+<li>
+unzip the junit4.5.zip file</li>
+
+<li>
+add<i> </i><b>junit-4.5.jar</b> to the CLASSPATH. For example: 
+<tt> set classpath=%classpath%;INSTALL_DIR\junit-4.5.jar;INSTALL_DIR</tt></li>
+
+<li>
+test the installation by running <tt>java org.junit.runner.JUnitCore org.junit.tests.AllTests.</tt></li>
+
+<br><b><font color="#FF0000">Notice</font></b>: that the tests are not
+contained in the junit-4.5.jar but in the installation directory directly.
+Therefore make sure that the installation directory is on the class path
+</ol>
+<b><font color="#FF0000">Important</font></b>: don't install junit-4.5.jar
+into the extension directory of your JDK installation. If you do so the
+test class on the files system will not be found.
+<h2>
+<a NAME="Getting"></a>Getting Started</h2>
+To get started with unit testing and JUnit read the article:
+<a href="doc/cookbook/cookbook.htm">JUnit Cookbook</a>.
+<br>This article describes basic test writing using JUnit 4.
+<p>You find additional samples in the org.junit.samples package:
+<ul>
+<li>
+SimpleTest.java - some simple test cases</li>
+
+<li>
+VectorTest.java - test cases for java.util.Vector</li>
+</ul>
+
+<h2>
+<a NAME="Documentation"></a>Documentation</h2>
+
+<blockquote><a href="doc/cookbook/cookbook.htm">JUnit Cookbook</a>
+<br>&nbsp;&nbsp;&nbsp; A cookbook for implementing tests with JUnit.
+<br><a href="javadoc/index.html">Javadoc</a>
+<br>&nbsp;&nbsp;&nbsp; API documentation generated with javadoc.
+<br><a href="doc/faq/faq.htm">Frequently asked questions</a>
+<br>&nbsp;&nbsp;&nbsp; Some frequently asked questions about using JUnit.
+<br><a href="cpl-v10.html">License</a>
+<br>&nbsp;&nbsp;&nbsp; The terms of the common public license used for JUnit.<br>
+</blockquote>
+The following documents still describe JUnit 3.8.
+<blockquote>
+<br><a href="doc/testinfected/testing.htm">Test Infected - Programmers
+Love Writing Tests</a>
+<br>&nbsp;&nbsp;&nbsp; An article demonstrating the development process
+with JUnit.
+<br><a href="doc/cookstour/cookstour.htm">JUnit - A cooks tour</a>
+</blockquote>
+
+<h2><a NAME="Known Defects"></a>Known Defects</h2>
+<ul>
+<li>Multi-dimensional arrays are not processed correctly by assertEquals.</li>
+</ul>
+
+<hr WIDTH="100%">
+<!--webbot bot="HTMLMarkup" startspan --><a href="http://sourceforge.net"><IMG
+                  src="http://sourceforge.net/sflogo.php?group_id=15278"
+                  width="88" height="31" border="0" alt="SourceForge Logo"></a><!--webbot
+bot="HTMLMarkup" endspan -->
+</body>
+</html>

BIN
src/contrib/chukwa/lib/junit.jar


+ 88 - 0
src/contrib/chukwa/lib/log4j-1.2.13-LICENSE.txt

@@ -0,0 +1,88 @@
+Common Public License - v 1.0
+
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+b) in the case of each subsequent Contributor:
+i)	 changes to the Program, and
+ii)	 additions to the Program;
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.
+
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+
+2. GRANT OF RIGHTS
+
+a)	Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+c)	Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+d)	Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a)	it complies with the terms and conditions of this Agreement; and
+b)	its license agreement:
+i)	effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;
+iii)	states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and
+iv)	states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.
+When the Program is made available in source code form:
+
+a)	it must be made available under this Agreement; and
+b)	a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.
+
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.
+
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.
+
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+
+If Recipient institutes patent litigation against a Contributor with respect to a patent applicable to software (including a cross-claim or counterclaim in a lawsuit), then any patent licenses granted by that Contributor to such Recipient under this Agreement shall terminate as of the date such litigation is filed. In addition, if Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed.
+
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.
+
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. IBM is the initial Agreement Steward. IBM may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.

+ 5 - 0
src/contrib/chukwa/lib/log4j-1.2.13-README.txt

@@ -0,0 +1,5 @@
+Apache log4j
+Copyright 2007 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).

BIN
src/contrib/chukwa/lib/log4j-1.2.13.jar


+ 88 - 0
src/contrib/chukwa/lib/servlet-LICENSE.txt

@@ -0,0 +1,88 @@
+Common Public License - v 1.0
+
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+b) in the case of each subsequent Contributor:
+i)	 changes to the Program, and
+ii)	 additions to the Program;
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.
+
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+
+2. GRANT OF RIGHTS
+
+a)	Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+c)	Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+d)	Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a)	it complies with the terms and conditions of this Agreement; and
+b)	its license agreement:
+i)	effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;
+iii)	states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and
+iv)	states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.
+When the Program is made available in source code form:
+
+a)	it must be made available under this Agreement; and
+b)	a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.
+
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.
+
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.
+
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+
+If Recipient institutes patent litigation against a Contributor with respect to a patent applicable to software (including a cross-claim or counterclaim in a lawsuit), then any patent licenses granted by that Contributor to such Recipient under this Agreement shall terminate as of the date such litigation is filed. In addition, if Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed.
+
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.
+
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. IBM is the initial Agreement Steward. IBM may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.

+ 17 - 0
src/contrib/chukwa/lib/servlet-README.txt

@@ -0,0 +1,17 @@
+Apache Tomcat
+Copyright 1999-2007 The Apache Software Foundation
+
+This product includes software developed by
+The Apache Software Foundation (http://www.apache.org/).
+
+The Windows Installer is built with the Nullsoft
+Scriptable Install Sysem (NSIS), which is
+open source software.  The original software and
+related information is available at
+http://nsis.sourceforge.net.
+
+Java compilation software for JSP pages is provided by Eclipse, 
+which is open source software.  The orginal software and 
+related infomation is available at
+http://www.eclipse.org.
+

+ 88 - 0
src/contrib/chukwa/lib/servlet-api-LICENSE.txt

@@ -0,0 +1,88 @@
+Common Public License - v 1.0
+
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+b) in the case of each subsequent Contributor:
+i)	 changes to the Program, and
+ii)	 additions to the Program;
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.
+
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+
+2. GRANT OF RIGHTS
+
+a)	Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+c)	Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+d)	Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a)	it complies with the terms and conditions of this Agreement; and
+b)	its license agreement:
+i)	effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;
+iii)	states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and
+iv)	states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.
+When the Program is made available in source code form:
+
+a)	it must be made available under this Agreement; and
+b)	a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.
+
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.
+
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.
+
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+
+If Recipient institutes patent litigation against a Contributor with respect to a patent applicable to software (including a cross-claim or counterclaim in a lawsuit), then any patent licenses granted by that Contributor to such Recipient under this Agreement shall terminate as of the date such litigation is filed. In addition, if Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed.
+
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.
+
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. IBM is the initial Agreement Steward. IBM may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.

+ 17 - 0
src/contrib/chukwa/lib/servlet-api-README.txt

@@ -0,0 +1,17 @@
+Apache Tomcat
+Copyright 1999-2007 The Apache Software Foundation
+
+This product includes software developed by
+The Apache Software Foundation (http://www.apache.org/).
+
+The Windows Installer is built with the Nullsoft
+Scriptable Install Sysem (NSIS), which is
+open source software.  The original software and
+related information is available at
+http://nsis.sourceforge.net.
+
+Java compilation software for JSP pages is provided by Eclipse, 
+which is open source software.  The orginal software and 
+related infomation is available at
+http://www.eclipse.org.
+

BIN
src/contrib/chukwa/lib/servlet-api.jar


BIN
src/contrib/chukwa/lib/servlet.jar


+ 88 - 0
src/contrib/chukwa/lib/taglibs-LICENSE.txt

@@ -0,0 +1,88 @@
+Common Public License - v 1.0
+
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+b) in the case of each subsequent Contributor:
+i)	 changes to the Program, and
+ii)	 additions to the Program;
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.
+
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+
+2. GRANT OF RIGHTS
+
+a)	Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+c)	Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+d)	Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a)	it complies with the terms and conditions of this Agreement; and
+b)	its license agreement:
+i)	effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;
+iii)	states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and
+iv)	states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.
+When the Program is made available in source code form:
+
+a)	it must be made available under this Agreement; and
+b)	a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.
+
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.
+
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.
+
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+
+If Recipient institutes patent litigation against a Contributor with respect to a patent applicable to software (including a cross-claim or counterclaim in a lawsuit), then any patent licenses granted by that Contributor to such Recipient under this Agreement shall terminate as of the date such litigation is filed. In addition, if Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed.
+
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.
+
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. IBM is the initial Agreement Steward. IBM may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.

+ 65 - 0
src/contrib/chukwa/lib/taglibs-README.txt

@@ -0,0 +1,65 @@
+                        The JAKARTA-TAGLIBS Project README
+			==================================
+
+
+Introduction
+============
+
+The JAKARTA-TAGLIBS project is a repository of JSP 1.1 and JSP 1.2 custom
+tag libraries and Web Publishing tool Custom Tag Library Extensions (CTLX)
+that have been contributed by developers to the Jakarta project, under the
+Apache Software Foundation license.  Its purpose is to provide examples of
+tag library creation and use, as well as completed tag libraries that can
+be utilized in web applications.
+
+Developers interested in creating new tag libraries, or updating existing
+ones, should subscribe to the TAGLIBS-DEV mailing list at the Jakarta web
+site <http://jakarta.apache.org>.  The file HOWTO-RELEASE gives more
+information on how JSP custom tag libraries and extensions are developed
+and released as part of the Jakarta Taglibs project.
+
+Likewise, users of the contributed tag libraries should subscribe to the
+TAGLIBS-USER mailing list for asking and answering questions about the use
+of the various libraries.
+
+The JAKARTA-TAGLIBS project is independent of the "Java Servlet 2.3 and
+JavaServer Pages Specifications" development process currently being run
+by Java Software, under the Java Community Process.  For more information,
+see JSR-053 on the Java Community Process web site at
+<http://java.sun.com/aboutJava/communityprocess>.
+
+This document contains pointers to more information on several topics,
+described below.
+
+
+Installing and Using the JAKARTA-TAGLIBS Binary Distribution
+============================================================
+
+You can acquire the currently released JAKARTA-TAGLIBS binary files by
+grabbing one of the binary release drops for this project as described at
+<http://jakarta.apache.org/taglibs/binarydist.html>.
+
+For more information about using JAKARTA-TAGLIBS custom tag libraries in
+your own web applications, point your browser at the "doc/binarydist.html"
+file included in the binary distribution.
+
+
+Installing and Using the JAKARTA-TAGLIBS Source Distribution
+============================================================
+
+You can acquire the latest JAKARTA-TAGLIBS source files by grabbing one of
+the automated development source snapshots drops for this project as
+described at <http://jakarta.apache.org/taglibs/sourcedist.html>.
+
+For more information about using the JAKARTA-TAGLIBS source distribution,
+refer to the documentation at <http://jakarta.apache.org/taglibs/sourcedist.html>.
+
+For more information about modifying existing JAKARTA-TAGLIBS custom tag
+libraries, or adding new ones, refer to the documentation at
+<http://jakarta.apache.org/taglibs/addtaglib.html>.
+
+
+=====================================================================
+$Id$
+
+

BIN
src/contrib/chukwa/lib/taglibs.jar


+ 286 - 0
src/contrib/chukwa/src/java/org/apache/hadoop/chukwa/ChukwaArchiveKey.java

@@ -0,0 +1,286 @@
+// File generated by hadoop record compiler. Do not edit.
+package org.apache.hadoop.chukwa;
+
+public class ChukwaArchiveKey extends org.apache.hadoop.record.Record {
+  private static final org.apache.hadoop.record.meta.RecordTypeInfo _rio_recTypeInfo;
+  private static org.apache.hadoop.record.meta.RecordTypeInfo _rio_rtiFilter;
+  private static int[] _rio_rtiFilterFields;
+  static {
+    _rio_recTypeInfo = new org.apache.hadoop.record.meta.RecordTypeInfo("ChukwaArchiveKey");
+    _rio_recTypeInfo.addField("timePartition", org.apache.hadoop.record.meta.TypeID.LongTypeID);
+    _rio_recTypeInfo.addField("dataType", org.apache.hadoop.record.meta.TypeID.StringTypeID);
+    _rio_recTypeInfo.addField("streamName", org.apache.hadoop.record.meta.TypeID.StringTypeID);
+    _rio_recTypeInfo.addField("seqId", org.apache.hadoop.record.meta.TypeID.LongTypeID);
+  }
+  
+  private long timePartition;
+  private String dataType;
+  private String streamName;
+  private long seqId;
+  public ChukwaArchiveKey() { }
+  public ChukwaArchiveKey(
+    final long timePartition,
+    final String dataType,
+    final String streamName,
+    final long seqId) {
+    this.timePartition = timePartition;
+    this.dataType = dataType;
+    this.streamName = streamName;
+    this.seqId = seqId;
+  }
+  public static org.apache.hadoop.record.meta.RecordTypeInfo getTypeInfo() {
+    return _rio_recTypeInfo;
+  }
+  public static void setTypeFilter(org.apache.hadoop.record.meta.RecordTypeInfo rti) {
+    if (null == rti) return;
+    _rio_rtiFilter = rti;
+    _rio_rtiFilterFields = null;
+  }
+  private static void setupRtiFields()
+  {
+    if (null == _rio_rtiFilter) return;
+    // we may already have done this
+    if (null != _rio_rtiFilterFields) return;
+    int _rio_i, _rio_j;
+    _rio_rtiFilterFields = new int [_rio_rtiFilter.getFieldTypeInfos().size()];
+    for (_rio_i=0; _rio_i<_rio_rtiFilterFields.length; _rio_i++) {
+      _rio_rtiFilterFields[_rio_i] = 0;
+    }
+    java.util.Iterator<org.apache.hadoop.record.meta.FieldTypeInfo> _rio_itFilter = _rio_rtiFilter.getFieldTypeInfos().iterator();
+    _rio_i=0;
+    while (_rio_itFilter.hasNext()) {
+      org.apache.hadoop.record.meta.FieldTypeInfo _rio_tInfoFilter = _rio_itFilter.next();
+      java.util.Iterator<org.apache.hadoop.record.meta.FieldTypeInfo> _rio_it = _rio_recTypeInfo.getFieldTypeInfos().iterator();
+      _rio_j=1;
+      while (_rio_it.hasNext()) {
+        org.apache.hadoop.record.meta.FieldTypeInfo _rio_tInfo = _rio_it.next();
+        if (_rio_tInfo.equals(_rio_tInfoFilter)) {
+          _rio_rtiFilterFields[_rio_i] = _rio_j;
+          break;
+        }
+        _rio_j++;
+      }
+      _rio_i++;
+    }
+  }
+  public long getTimePartition() {
+    return timePartition;
+  }
+  public void setTimePartition(final long timePartition) {
+    this.timePartition=timePartition;
+  }
+  public String getDataType() {
+    return dataType;
+  }
+  public void setDataType(final String dataType) {
+    this.dataType=dataType;
+  }
+  public String getStreamName() {
+    return streamName;
+  }
+  public void setStreamName(final String streamName) {
+    this.streamName=streamName;
+  }
+  public long getSeqId() {
+    return seqId;
+  }
+  public void setSeqId(final long seqId) {
+    this.seqId=seqId;
+  }
+  public void serialize(final org.apache.hadoop.record.RecordOutput _rio_a, final String _rio_tag)
+  throws java.io.IOException {
+    _rio_a.startRecord(this,_rio_tag);
+    _rio_a.writeLong(timePartition,"timePartition");
+    _rio_a.writeString(dataType,"dataType");
+    _rio_a.writeString(streamName,"streamName");
+    _rio_a.writeLong(seqId,"seqId");
+    _rio_a.endRecord(this,_rio_tag);
+  }
+  private void deserializeWithoutFilter(final org.apache.hadoop.record.RecordInput _rio_a, final String _rio_tag)
+  throws java.io.IOException {
+    _rio_a.startRecord(_rio_tag);
+    timePartition=_rio_a.readLong("timePartition");
+    dataType=_rio_a.readString("dataType");
+    streamName=_rio_a.readString("streamName");
+    seqId=_rio_a.readLong("seqId");
+    _rio_a.endRecord(_rio_tag);
+  }
+  public void deserialize(final org.apache.hadoop.record.RecordInput _rio_a, final String _rio_tag)
+  throws java.io.IOException {
+    if (null == _rio_rtiFilter) {
+      deserializeWithoutFilter(_rio_a, _rio_tag);
+      return;
+    }
+    // if we're here, we need to read based on version info
+    _rio_a.startRecord(_rio_tag);
+    setupRtiFields();
+    for (int _rio_i=0; _rio_i<_rio_rtiFilter.getFieldTypeInfos().size(); _rio_i++) {
+      if (1 == _rio_rtiFilterFields[_rio_i]) {
+        timePartition=_rio_a.readLong("timePartition");
+      }
+      else if (2 == _rio_rtiFilterFields[_rio_i]) {
+        dataType=_rio_a.readString("dataType");
+      }
+      else if (3 == _rio_rtiFilterFields[_rio_i]) {
+        streamName=_rio_a.readString("streamName");
+      }
+      else if (4 == _rio_rtiFilterFields[_rio_i]) {
+        seqId=_rio_a.readLong("seqId");
+      }
+      else {
+        java.util.ArrayList<org.apache.hadoop.record.meta.FieldTypeInfo> typeInfos = (java.util.ArrayList<org.apache.hadoop.record.meta.FieldTypeInfo>)(_rio_rtiFilter.getFieldTypeInfos());
+        org.apache.hadoop.record.meta.Utils.skip(_rio_a, typeInfos.get(_rio_i).getFieldID(), typeInfos.get(_rio_i).getTypeID());
+      }
+    }
+    _rio_a.endRecord(_rio_tag);
+  }
+  public int compareTo (final Object _rio_peer_) throws ClassCastException {
+    if (!(_rio_peer_ instanceof ChukwaArchiveKey)) {
+      throw new ClassCastException("Comparing different types of records.");
+    }
+    ChukwaArchiveKey _rio_peer = (ChukwaArchiveKey) _rio_peer_;
+    int _rio_ret = 0;
+    _rio_ret = (timePartition == _rio_peer.timePartition)? 0 :((timePartition<_rio_peer.timePartition)?-1:1);
+    if (_rio_ret != 0) return _rio_ret;
+    _rio_ret = dataType.compareTo(_rio_peer.dataType);
+    if (_rio_ret != 0) return _rio_ret;
+    _rio_ret = streamName.compareTo(_rio_peer.streamName);
+    if (_rio_ret != 0) return _rio_ret;
+    _rio_ret = (seqId == _rio_peer.seqId)? 0 :((seqId<_rio_peer.seqId)?-1:1);
+    if (_rio_ret != 0) return _rio_ret;
+    return _rio_ret;
+  }
+  public boolean equals(final Object _rio_peer_) {
+    if (!(_rio_peer_ instanceof ChukwaArchiveKey)) {
+      return false;
+    }
+    if (_rio_peer_ == this) {
+      return true;
+    }
+    ChukwaArchiveKey _rio_peer = (ChukwaArchiveKey) _rio_peer_;
+    boolean _rio_ret = false;
+    _rio_ret = (timePartition==_rio_peer.timePartition);
+    if (!_rio_ret) return _rio_ret;
+    _rio_ret = dataType.equals(_rio_peer.dataType);
+    if (!_rio_ret) return _rio_ret;
+    _rio_ret = streamName.equals(_rio_peer.streamName);
+    if (!_rio_ret) return _rio_ret;
+    _rio_ret = (seqId==_rio_peer.seqId);
+    if (!_rio_ret) return _rio_ret;
+    return _rio_ret;
+  }
+  public Object clone() throws CloneNotSupportedException {
+    ChukwaArchiveKey _rio_other = new ChukwaArchiveKey();
+    _rio_other.timePartition = this.timePartition;
+    _rio_other.dataType = this.dataType;
+    _rio_other.streamName = this.streamName;
+    _rio_other.seqId = this.seqId;
+    return _rio_other;
+  }
+  public int hashCode() {
+    int _rio_result = 17;
+    int _rio_ret;
+    _rio_ret = (int) (timePartition^(timePartition>>>32));
+    _rio_result = 37*_rio_result + _rio_ret;
+    _rio_ret = dataType.hashCode();
+    _rio_result = 37*_rio_result + _rio_ret;
+    _rio_ret = streamName.hashCode();
+    _rio_result = 37*_rio_result + _rio_ret;
+    _rio_ret = (int) (seqId^(seqId>>>32));
+    _rio_result = 37*_rio_result + _rio_ret;
+    return _rio_result;
+  }
+  public static String signature() {
+    return "LChukwaArchiveKey(lssl)";
+  }
+  public static class Comparator extends org.apache.hadoop.record.RecordComparator {
+    public Comparator() {
+      super(ChukwaArchiveKey.class);
+    }
+    static public int slurpRaw(byte[] b, int s, int l) {
+      try {
+        int os = s;
+        {
+          long i = org.apache.hadoop.record.Utils.readVLong(b, s);
+          int z = org.apache.hadoop.record.Utils.getVIntSize(i);
+          s+=z; l-=z;
+        }
+        {
+          int i = org.apache.hadoop.record.Utils.readVInt(b, s);
+          int z = org.apache.hadoop.record.Utils.getVIntSize(i);
+          s+=(z+i); l-= (z+i);
+        }
+        {
+          int i = org.apache.hadoop.record.Utils.readVInt(b, s);
+          int z = org.apache.hadoop.record.Utils.getVIntSize(i);
+          s+=(z+i); l-= (z+i);
+        }
+        {
+          long i = org.apache.hadoop.record.Utils.readVLong(b, s);
+          int z = org.apache.hadoop.record.Utils.getVIntSize(i);
+          s+=z; l-=z;
+        }
+        return (os - s);
+      } catch(java.io.IOException e) {
+        throw new RuntimeException(e);
+      }
+    }
+    static public int compareRaw(byte[] b1, int s1, int l1,
+                                   byte[] b2, int s2, int l2) {
+      try {
+        int os1 = s1;
+        {
+          long i1 = org.apache.hadoop.record.Utils.readVLong(b1, s1);
+          long i2 = org.apache.hadoop.record.Utils.readVLong(b2, s2);
+          if (i1 != i2) {
+            return ((i1-i2) < 0) ? -1 : 0;
+          }
+          int z1 = org.apache.hadoop.record.Utils.getVIntSize(i1);
+          int z2 = org.apache.hadoop.record.Utils.getVIntSize(i2);
+          s1+=z1; s2+=z2; l1-=z1; l2-=z2;
+        }
+        {
+          int i1 = org.apache.hadoop.record.Utils.readVInt(b1, s1);
+          int i2 = org.apache.hadoop.record.Utils.readVInt(b2, s2);
+          int z1 = org.apache.hadoop.record.Utils.getVIntSize(i1);
+          int z2 = org.apache.hadoop.record.Utils.getVIntSize(i2);
+          s1+=z1; s2+=z2; l1-=z1; l2-=z2;
+          int r1 = org.apache.hadoop.record.Utils.compareBytes(b1,s1,i1,b2,s2,i2);
+          if (r1 != 0) { return (r1<0)?-1:0; }
+          s1+=i1; s2+=i2; l1-=i1; l1-=i2;
+        }
+        {
+          int i1 = org.apache.hadoop.record.Utils.readVInt(b1, s1);
+          int i2 = org.apache.hadoop.record.Utils.readVInt(b2, s2);
+          int z1 = org.apache.hadoop.record.Utils.getVIntSize(i1);
+          int z2 = org.apache.hadoop.record.Utils.getVIntSize(i2);
+          s1+=z1; s2+=z2; l1-=z1; l2-=z2;
+          int r1 = org.apache.hadoop.record.Utils.compareBytes(b1,s1,i1,b2,s2,i2);
+          if (r1 != 0) { return (r1<0)?-1:0; }
+          s1+=i1; s2+=i2; l1-=i1; l1-=i2;
+        }
+        {
+          long i1 = org.apache.hadoop.record.Utils.readVLong(b1, s1);
+          long i2 = org.apache.hadoop.record.Utils.readVLong(b2, s2);
+          if (i1 != i2) {
+            return ((i1-i2) < 0) ? -1 : 0;
+          }
+          int z1 = org.apache.hadoop.record.Utils.getVIntSize(i1);
+          int z2 = org.apache.hadoop.record.Utils.getVIntSize(i2);
+          s1+=z1; s2+=z2; l1-=z1; l2-=z2;
+        }
+        return (os1 - s1);
+      } catch(java.io.IOException e) {
+        throw new RuntimeException(e);
+      }
+    }
+    public int compare(byte[] b1, int s1, int l1,
+                         byte[] b2, int s2, int l2) {
+      int ret = compareRaw(b1,s1,l1,b2,s2,l2);
+      return (ret == -1)? -1 : ((ret==0)? 1 : 0);}
+  }
+  
+  static {
+    org.apache.hadoop.record.RecordComparator.define(ChukwaArchiveKey.class, new Comparator());
+  }
+}

+ 96 - 0
src/contrib/chukwa/src/java/org/apache/hadoop/chukwa/Chunk.java

@@ -0,0 +1,96 @@
+/*
+ * 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.hadoop.chukwa;
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.hadoop.chukwa.datacollection.adaptor.*;
+
+/**
+ * A chunk is a sequence of bytes at a particular logical offset in a stream,
+ * and containing one or more "records".
+ *  Chunks have various metadata, such as source, format,
+ * and pointers to record boundaries within the chunk.
+ * 
+ */
+public interface Chunk {
+	
+//these conceptually are really network addresses
+	public String getSource();
+	public void setSource(String logSource);
+	
+	/**
+	 * Get the name of the stream that this Chunk is a chunk of
+	 * @return the name of this stream; e.g. file name
+	 */
+	public String getStreamName();
+	public void setStreamName(String streamName);
+	
+	public String getApplication();  
+  public void setApplication(String a);
+	
+  //These describe the format of the data buffer
+  public String getDataType();
+  public void setDataType(String t);
+
+  /**
+   * @return the user data in the chunk
+   */
+	public byte[] getData();
+	/**
+	 * @param logEvent the user data in the chunk
+	 */
+	public void setData(byte[] logEvent);
+	
+	/**
+	 * get/set the <b>end</b> offsets of records in the buffer.
+	 * 
+	 * We use end, rather than start offsets, since the first start
+	 * offset is always 0, but the last end offset specifies how much of the buffer is valid.
+	 * 
+	 * More precisely, offsets[i] is the offset in the Chunk of the last byte of record i
+	 *  in this chunk.
+	 * @return a list of record end offsets
+	 */
+	public int[] getRecordOffsets();
+	public void setRecordOffsets(int[] offsets);
+	
+	/**
+	 * @return  the byte offset of the first byte not in this chunk.
+	 * 
+	 * We pick this convention so that subtracting sequence IDs yields length.
+	 */
+	public long getSeqID();
+	public void setSeqID(long l);
+
+	/**
+	 * Retrieve a reference to the adaptor that sent this event.
+	 * Used by LocalAgent and Connectors to deliver acks to the appropriate place.
+	 */
+	public Adaptor getInitiator();
+	
+  /**
+   * Estimate the size of this Chunk on the wire, assuming each char of metadata takes two bytes
+   * to serialize.  This is pessimistic.
+   * @return size in bytes that this Chunk might take once serialized.
+   */
+  public int getSerializedSizeEstimate();
+  
+  public void write(DataOutput data) throws IOException;
+}

+ 63 - 0
src/contrib/chukwa/src/java/org/apache/hadoop/chukwa/ChunkBuilder.java

@@ -0,0 +1,63 @@
+/*
+ * 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.hadoop.chukwa;
+
+import java.util.*;
+
+import org.apache.hadoop.io.DataOutputBuffer;
+import java.io.*;
+
+/**
+ * Right now, just handles record collection.
+ *
+ */
+public class ChunkBuilder {
+  
+  ArrayList<Integer> recOffsets = new ArrayList<Integer>();
+  int lastRecOffset = -1;
+  DataOutputBuffer buf = new DataOutputBuffer();
+  /**
+   * Adds the data in rec to an internal buffer; rec can be reused immediately.
+   * @param rec
+   */
+  public void addRecord(byte[] rec)  {
+    lastRecOffset = lastRecOffset + rec.length;
+    recOffsets.add(lastRecOffset);
+    try {
+    buf.write(rec);
+    } catch(IOException e) {
+      throw new RuntimeException("buffer write failed.  Out of memory?", e);
+    }
+  }
+  
+  public Chunk getChunk() {
+    ChunkImpl c = new ChunkImpl();
+    c.setData(buf.getData());
+    c.setSeqID(buf.getLength());
+    int[] offsets = new int[recOffsets.size()];
+    for(int i = 0; i < offsets.length; ++i)
+      offsets[i] = recOffsets.get(i);
+    c.setRecordOffsets(offsets);
+    
+    return c;
+  }
+  
+  
+
+}

+ 234 - 0
src/contrib/chukwa/src/java/org/apache/hadoop/chukwa/ChunkImpl.java

@@ -0,0 +1,234 @@
+/*
+ * 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.hadoop.chukwa;
+
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.ArrayList;
+
+import org.apache.hadoop.chukwa.datacollection.adaptor.Adaptor;
+
+public class ChunkImpl implements org.apache.hadoop.io.Writable, Chunk 
+{
+  
+  private String source = "";
+  private String application = "";
+  private String dataType = "";
+  private byte[] data = null;
+  private int[] recordEndOffsets;
+  
+  private String debuggingInfo="";
+  
+  private transient Adaptor initiator;
+  long seqID;
+  
+  ChunkImpl() {
+  }
+  
+  public static ChunkImpl getBlankChunk() {
+    return new ChunkImpl();
+  }
+  
+  public ChunkImpl(String dataType, String streamName, long seq, byte[] data, Adaptor source) {
+    this.seqID = seq;
+    this.application = streamName;
+    this.dataType = dataType;
+    this.data = data;
+    this.initiator = source;
+    this.source = localHostAddr;
+  }
+  
+  /**
+   *  @see org.apache.hadoop.chukwa.Chunk#getData()
+   */
+  public byte[] getData()	{
+  	return data;
+  }
+  
+  /**
+   *  @see org.apache.hadoop.chukwa.Chunk#setData(byte[])
+   */
+  public void setData(byte[] logEvent) {
+  	this.data = logEvent;
+  }
+  
+  /**
+   * @see org.apache.hadoop.chukwa.Chunk#getStreamName()
+   */
+  public String getStreamName() {
+  	return application;
+  }
+  
+  public void setStreamName(String logApplication)	{
+  	this.application = logApplication;
+  }
+   
+  public String getSource() {
+    return source;
+  }
+  
+  public void setSource(String logSource)	{
+  	this.source = logSource;
+  }
+  
+  public String getDebugInfo() {
+  	return debuggingInfo;
+  }
+  
+  public void setDebugInfo(String a) {
+  	this.debuggingInfo = a;
+  }
+  
+  /**
+   * @see org.apache.hadoop.chukwa.Chunk#getSeqID()
+   */
+  public long getSeqID()  {
+    return seqID;
+  }
+  
+  public void setSeqID(long l) {
+    seqID=l;
+  }
+  
+  public String getApplication(){
+    return application;
+  }
+  
+  public void setApplication(String a){
+    application = a;
+  }
+  
+  public Adaptor getInitiator() {
+    return initiator;
+  }
+  
+  public void setInitiator(Adaptor a) {
+    initiator = a;
+  }
+  
+  
+  public void setLogSource() {
+    source = localHostAddr;
+  }
+  
+  public int[] getRecordOffsets() {
+
+    if(recordEndOffsets == null)
+      recordEndOffsets = new int[] {data.length -1};
+    return recordEndOffsets;
+  }
+  
+  public void setRecordOffsets(int[] offsets) {
+    recordEndOffsets = offsets;
+  }
+  
+  public String getDataType() {
+    return dataType;
+  }
+  
+  public void setDataType(String t) {
+    dataType = t;
+  }
+  
+  /**
+   * @see org.apache.hadoop.io.Writable#readFields(java.io.DataInput)
+   */
+  public void readFields(DataInput in) throws IOException {
+    setSeqID(in.readLong());
+    setSource(in.readUTF());
+    setApplication(in.readUTF());
+    setDataType(in.readUTF());
+    setDebugInfo(in.readUTF());
+    
+    int numRecords = in.readInt();
+    recordEndOffsets = new int[numRecords];
+    for(int i=0; i < numRecords; ++i)
+      recordEndOffsets[i] = in.readInt();
+    data = new byte[recordEndOffsets[recordEndOffsets.length -1]+1 ] ;
+    in.readFully(data);
+    
+  }
+  /**
+   * @see org.apache.hadoop.io.Writable#write(java.io.DataOutput)
+   */
+  public void write(DataOutput out) throws IOException {
+    out.writeLong(seqID);
+    out.writeUTF(source);
+    out.writeUTF(application);
+    out.writeUTF(dataType);
+    out.writeUTF(debuggingInfo);
+    
+    if(recordEndOffsets == null)
+      recordEndOffsets = new int[] {data.length -1};
+      
+    out.writeInt(recordEndOffsets.length);
+    for(int i =0; i < recordEndOffsets.length; ++i)
+      out.writeInt(recordEndOffsets[i]);
+    
+    out.write(data, 0, recordEndOffsets[recordEndOffsets.length -1] + 1); //byte at last offset is valid
+  }
+  
+  public static ChunkImpl read(DataInput in) throws IOException {
+    ChunkImpl w = new ChunkImpl();
+    w.readFields(in);
+    return w;
+  }
+  
+    //FIXME: should do something better here, but this is OK for debugging
+  public String toString() {
+    return source+":" + application +":"+ new String(data)+ "/"+seqID;
+  }
+  
+  private static String localHostAddr;
+  static
+  {
+    try {
+      localHostAddr = InetAddress.getLocalHost().getHostName();
+    } catch (UnknownHostException e) {
+      localHostAddr = "localhost";
+    }
+  }
+  
+  /**
+   * @see org.apache.hadoop.chukwa.Chunk#getSerializedSizeEstimate()
+   */
+  public int getSerializedSizeEstimate() {
+    int size= 2 * (source.length() + application.length() + 
+        dataType.length() + debuggingInfo.length()); //length of strings (pessimistic)
+    size += data.length + 4;
+    if(recordEndOffsets == null)
+      size+=8;
+    else
+      size += 4 * (recordEndOffsets.length + 1); //+1 for length of array
+    size += 8; //uuid
+    return size;
+  }
+
+  public void setRecordOffsets(java.util.Collection<Integer> carriageReturns)
+  {
+    recordEndOffsets = new int [carriageReturns.size()];
+    int i = 0;
+    for(Integer offset:carriageReturns )
+      recordEndOffsets[i++] = offset;
+  }
+	
+}

+ 48 - 0
src/contrib/chukwa/src/java/org/apache/hadoop/chukwa/conf/ChukwaConfiguration.java

@@ -0,0 +1,48 @@
+/*
+ * 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.hadoop.chukwa.conf;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.Path;
+import org.apache.log4j.Logger;
+
+public class ChukwaConfiguration extends Configuration {
+	static Logger log = Logger.getLogger(ChukwaConfiguration.class);
+
+	public ChukwaConfiguration() {
+		this(true);
+	}
+
+	public ChukwaConfiguration(boolean loadDefaults) {
+		super();
+		if (loadDefaults) {
+		  String chukwaHome = System.getenv("CHUKWA_HOME");
+		  if (chukwaHome == null)
+		    chukwaHome = ".";
+		  log.info("chukwaHome is " + chukwaHome);
+		  
+			super.addResource(new Path(chukwaHome + "/conf/chukwa-collector-conf.xml"));
+			log.debug("added chukwa-collector-conf.xml to ChukwaConfiguration");
+			
+			super.addResource(new Path(chukwaHome + "/conf/chukwa-agent-conf.xml"));
+			log.debug("added chukwa-agent-conf.xml to ChukwaConfiguration");
+		}
+	}
+
+}

この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません