You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ds...@apache.org on 2016/02/04 00:11:54 UTC
ambari git commit: AMBARI-14902 Make AMS Grafana component available
as a repo package (dsen)
Repository: ambari
Updated Branches:
refs/heads/trunk d89f8a5f9 -> ad67efd2d
AMBARI-14902 Make AMS Grafana component available as a repo package (dsen)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/ad67efd2
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/ad67efd2
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/ad67efd2
Branch: refs/heads/trunk
Commit: ad67efd2d67dfefb2fb20249bfc42e4d569b7a07
Parents: d89f8a5
Author: Dmytro Sen <ds...@apache.org>
Authored: Thu Feb 4 01:09:56 2016 +0200
Committer: Dmytro Sen <ds...@apache.org>
Committed: Thu Feb 4 01:09:56 2016 +0200
----------------------------------------------------------------------
ambari-metrics/ambari-metrics-assembly/pom.xml | 289 ++++++-------------
.../src/main/assembly/grafana.xml | 59 ++++
.../conf/unix/ambari-metrics-grafana | 172 +++++++++++
.../conf/unix/ams-grafana-env.sh | 38 +++
.../conf/unix/ams-grafana.ini | 255 ++++++++++++++++
ambari-metrics/ambari-metrics-grafana/pom.xml | 124 ++++++++
.../src/main/assemblies/empty.xml | 21 ++
ambari-metrics/pom.xml | 4 +
pom.xml | 4 +-
9 files changed, 769 insertions(+), 197 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/ad67efd2/ambari-metrics/ambari-metrics-assembly/pom.xml
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-assembly/pom.xml b/ambari-metrics/ambari-metrics-assembly/pom.xml
index e963b00..dfc9351 100644
--- a/ambari-metrics/ambari-metrics-assembly/pom.xml
+++ b/ambari-metrics/ambari-metrics-assembly/pom.xml
@@ -30,11 +30,12 @@
<name>Ambari Metrics Assembly</name>
<packaging>pom</packaging>
<version>2.0.0.0-SNAPSHOT</version>
- <description>Ambari Metrics</description>
+ <description>Ambari Metrics Assembly</description>
<properties>
<collector.dir>${project.basedir}/../ambari-metrics-timelineservice</collector.dir>
<monitor.dir>${project.basedir}/../ambari-metrics-host-monitoring</monitor.dir>
+ <grafana.dir>${project.basedir}/../ambari-metrics-grafana</grafana.dir>
<hadoop-sink.dir>${project.basedir}/../ambari-metrics-hadoop-sink</hadoop-sink.dir>
<storm-sink.dir>${project.basedir}/../ambari-metrics-storm-sink</storm-sink.dir>
<flume-sink.dir>${project.basedir}/../ambari-metrics-flume-sink</flume-sink.dir>
@@ -119,6 +120,22 @@
</configuration>
</execution>
<execution>
+ <id>grafana</id>
+ <phase>package</phase>
+ <goals>
+ <goal>single</goal>
+ </goals>
+ <configuration>
+ <attach>false</attach>
+ <finalName>ambari-metrics-grafana-${project.version}</finalName>
+ <appendAssemblyId>false</appendAssemblyId>
+ <descriptors>
+ <descriptor>src/main/assembly/grafana.xml</descriptor>
+ </descriptors>
+ <tarLongFileMode>gnu</tarLongFileMode>
+ </configuration>
+ </execution>
+ <execution>
<id>hadoop-sink</id>
<phase>package</phase>
<goals>
@@ -191,85 +208,39 @@
<defaultGroupname>root</defaultGroupname>
</configuration>
<executions>
- <!--ambari-metrics-monitor-->
+ <!--ambari-metrics-grafana-->
<execution>
- <id>ambari-metrics-monitor</id>
+ <id>ambari-metrics-grafana</id>
<!-- unbinds rpm creation from maven lifecycle -->
<phase>package</phase>
<goals>
<goal>rpm</goal>
</goals>
<configuration>
- <name>ambari-metrics-monitor</name>
+ <name>ambari-metrics-grafana</name>
<group>Development</group>
<needarch>x86_64</needarch>
<autoRequires>false</autoRequires>
- <requires>
- <require>${python.ver}</require>
- <require>gcc</require>
- <require>${python.devel}</require>
- </requires>
- <preremoveScriptlet>
- <scriptFile>src/main/package/rpm/preremove.sh</scriptFile>
- <fileEncoding>utf-8</fileEncoding>
- </preremoveScriptlet>
<mappings>
<mapping>
- <directory>${resmonitor.install.dir}</directory>
- <username>root</username>
- <groupname>root</groupname>
+ <!--grafana-->
+ <directory>/usr/lib/ambari-metrics-grafana/</directory>
<sources>
<source>
- <location>
- ${monitor.dir}/src/main/python/__init__.py
- </location>
- </source>
- <source>
- <location>
- ${monitor.dir}/src/main/python/main.py
- </location>
+ <location>${grafana.dir}/target/grafana/${grafana.folder}</location>
</source>
</sources>
</mapping>
<mapping>
- <directory>${resmonitor.install.dir}/core</directory>
- <sources>
- <source>
- <location>
- ${monitor.dir}/src/main/python/core
- </location>
- </source>
- </sources>
- </mapping>
- <mapping>
- <directory>${resmonitor.install.dir}/psutil</directory>
- <sources>
- <source>
- <location>
- ${monitor.dir}/src/main/python/psutil
- </location>
- <excludes>
- <exclude>build/**</exclude>
- <exclude>build/*</exclude>
- </excludes>
- </source>
- </sources>
- </mapping>
- <mapping>
- <directory>${resmonitor.install.dir}/ambari_commons</directory>
+ <directory>/usr/lib/ambari-metrics-grafana/bin</directory>
+ <filemode>755</filemode>
<sources>
<source>
- <location>
- ${project.basedir}/../../ambari-common/src/main/python/ambari_commons
- </location>
+ <location>${grafana.dir}/target/grafana/${grafana.folder}/bin</location>
</source>
</sources>
</mapping>
<mapping>
- <directory>/etc/ambari-metrics-monitor/conf</directory>
- <configuration>true</configuration>
- </mapping>
- <mapping>
<directory>/usr/sbin</directory>
<filemode>755</filemode>
<username>root</username>
@@ -277,219 +248,144 @@
<directoryIncluded>false</directoryIncluded>
<sources>
<source>
- <location>
- ${monitor.dir}/conf/unix/ambari-metrics-monitor
- </location>
- <filter>true</filter>
- </source>
- </sources>
- </mapping>
- </mappings>
- </configuration>
- </execution>
-
- <!--ambari-metrics-collector-->
- <execution>
- <id>ambari-metrics-collector</id>
- <phase>package</phase>
- <goals>
- <goal>rpm</goal>
- </goals>
- <configuration>
- <name>ambari-metrics-collector</name>
- <copyright>2012, Apache Software Foundation</copyright>
- <group>Development</group>
- <description>Maven Recipe: RPM Package.</description>
- <autoRequires>false</autoRequires>
- <requires>
- <require>${python.ver}</require>
- </requires>
-
- <defaultFilemode>644</defaultFilemode>
- <defaultDirmode>755</defaultDirmode>
- <defaultUsername>root</defaultUsername>
- <defaultGroupname>root</defaultGroupname>
-
- <mappings>
- <mapping>
- <!--jars-->
- <directory>/usr/lib/ambari-metrics-collector/</directory>
- <sources>
- <source>
- <location>${collector.dir}/target/lib</location>
- </source>
- <source>
- <location>
- ${collector.dir}/target/ambari-metrics-timelineservice-${project.version}.jar
- </location>
- </source>
- </sources>
- </mapping>
- <mapping>
- <!--embedded applications-->
- <directory>/usr/lib/ams-hbase/</directory>
- <sources>
- <source>
- <location>${collector.dir}/target/embedded/${hbase.folder}</location>
- <excludes>
- <exclude>bin/**</exclude>
- <exclude>bin/*</exclude>
- </excludes>
- </source>
- </sources>
- </mapping>
- <mapping>
- <directory>/usr/lib/ams-hbase/bin</directory>
- <filemode>755</filemode>
- <sources>
- <source>
- <location>${collector.dir}/target/embedded/${hbase.folder}/bin</location>
- </source>
- </sources>
- </mapping>
- <mapping>
- <directory>/usr/lib/ams-hbase/lib/</directory>
- <sources>
- <source>
- <location>${collector.dir}/target/lib</location>
- <includes>
- <include>phoenix*.jar</include>
- <include>antlr*.jar</include>
- </includes>
- </source>
- </sources>
- </mapping>
- <mapping>
- <directory>/usr/lib/ams-hbase/lib/hadoop-native/</directory>
- <sources>
- <source>
- <location>${project.build.directory}/ambari-metrics-collector-${project.version}/ambari-metrics-collector-${project.version}/hbase/lib/hadoop-native</location>
+ <location>${grafana.dir}/conf/unix/ambari-metrics-grafana</location>
+ <filter>false</filter>
</source>
</sources>
</mapping>
<mapping>
- <directory>/usr/sbin</directory>
+ <directory>/etc/ambari-metrics-grafana/conf</directory>
<filemode>755</filemode>
<username>root</username>
<groupname>root</groupname>
<directoryIncluded>false</directoryIncluded>
<sources>
<source>
- <location>${collector.dir}/conf/unix/ambari-metrics-collector</location>
+ <location>${grafana.dir}/conf/unix/ams-grafana-env.sh</location>
<filter>false</filter>
</source>
</sources>
</mapping>
<mapping>
- <directory>/etc/ambari-metrics-collector/conf</directory>
+ <directory>/etc/ambari-metrics-grafana/conf</directory>
<configuration>true</configuration>
<sources>
<source>
- <location>${collector.dir}/conf/unix/ams-env.sh</location>
- </source>
- <source>
- <location>${collector.dir}/conf/unix/ams-site.xml</location>
- </source>
- <source>
- <location>${collector.dir}/conf/unix/log4j.properties</location>
- </source>
- <source>
- <location>${collector.dir}/target/embedded/${hbase.folder}/conf/hbase-site.xml</location>
+ <location>${grafana.dir}/conf/unix/ams-grafana.ini</location>
</source>
</sources>
</mapping>
<mapping>
- <directory>/etc/ams-hbase/conf</directory>
- <configuration>true</configuration>
- <sources>
- <source>
- <location>${collector.dir}/target/embedded/${hbase.folder}/conf</location>
- <includes>
- <include>*.*</include>
- </includes>
- </source>
- </sources>
+ <directory>/var/run/ambari-metrics-grafana</directory>
</mapping>
<mapping>
- <directory>/var/run/ams-hbase</directory>
+ <directory>/var/lib/ambari-metrics-grafana</directory>
</mapping>
<mapping>
- <directory>/var/lib/ambari-metrics-collector</directory>
+ <directory>/var/log/ambari-metrics-grafana</directory>
</mapping>
</mappings>
</configuration>
</execution>
- <!--hadoop-sink-->
+ <!--ambari-metrics-monitor-->
<execution>
- <id>ambari-metrics-hadoop-sink</id>
+ <id>ambari-metrics-monitor</id>
+ <!-- unbinds rpm creation from maven lifecycle -->
<phase>package</phase>
<goals>
<goal>rpm</goal>
</goals>
-
<configuration>
- <name>ambari-metrics-hadoop-sink</name>
- <copyright>2012, Apache Software Foundation</copyright>
+ <name>ambari-metrics-monitor</name>
<group>Development</group>
- <description>Maven Recipe: RPM Package.</description>
-
- <defaultDirmode>755</defaultDirmode>
- <defaultFilemode>644</defaultFilemode>
- <defaultUsername>root</defaultUsername>
- <defaultGroupname>root</defaultGroupname>
-
- <postinstallScriptlet>
- <scriptFile>${project.build.directory}/resources/rpm/sink/postinstall.sh</scriptFile>
+ <needarch>x86_64</needarch>
+ <autoRequires>false</autoRequires>
+ <requires>
+ <require>${python.ver}</require>
+ <require>gcc</require>
+ <require>${python.devel}</require>
+ </requires>
+ <preremoveScriptlet>
+ <scriptFile>src/main/package/rpm/preremove.sh</scriptFile>
<fileEncoding>utf-8</fileEncoding>
- </postinstallScriptlet>
-
+ </preremoveScriptlet>
<mappings>
<mapping>
- <directory>/usr/lib/ambari-metrics-hadoop-sink</directory>
+ <directory>${resmonitor.install.dir}</directory>
+ <username>root</username>
+ <groupname>root</groupname>
<sources>
<source>
- <location>${hadoop-sink.dir}/target/ambari-metrics-hadoop-sink-with-common-${project.version}.jar</location>
+ <location>
+ ${monitor.dir}/src/main/python/__init__.py
+ </location>
+ </source>
+ <source>
+ <location>
+ ${monitor.dir}/src/main/python/main.py
+ </location>
</source>
</sources>
</mapping>
<mapping>
- <directory>/usr/lib/flume/lib</directory>
+ <directory>${resmonitor.install.dir}/core</directory>
<sources>
<source>
- <location>${flume-sink.dir}/target/ambari-metrics-flume-sink-with-common-${project.version}.jar</location>
+ <location>
+ ${monitor.dir}/src/main/python/core
+ </location>
</source>
</sources>
</mapping>
<mapping>
- <directory>/usr/lib/storm/lib</directory>
+ <directory>${resmonitor.install.dir}/psutil</directory>
<sources>
<source>
- <location>${storm-sink.dir}/target/ambari-metrics-storm-sink-with-common-${project.version}.jar</location>
+ <location>
+ ${monitor.dir}/src/main/python/psutil
+ </location>
+ <excludes>
+ <exclude>build/**</exclude>
+ <exclude>build/*</exclude>
+ </excludes>
</source>
</sources>
</mapping>
<mapping>
- <directory>/usr/lib/ambari-metrics-kafka-sink</directory>
+ <directory>${resmonitor.install.dir}/ambari_commons</directory>
<sources>
<source>
- <location>${kafka-sink.dir}/target/${kafka.sink.jar}</location>
+ <location>
+ ${project.basedir}/../../ambari-common/src/main/python/ambari_commons
+ </location>
</source>
</sources>
</mapping>
- <mapping>
- <directory>/usr/lib/ambari-metrics-kafka-sink/lib</directory>
+ <mapping>
+ <directory>/etc/ambari-metrics-monitor/conf</directory>
+ <configuration>true</configuration>
+ </mapping>
+ <mapping>
+ <directory>/usr/sbin</directory>
+ <filemode>755</filemode>
+ <username>root</username>
+ <groupname>root</groupname>
+ <directoryIncluded>false</directoryIncluded>
<sources>
<source>
- <location>${kafka-sink.dir}/target/lib</location>
+ <location>
+ ${monitor.dir}/conf/unix/ambari-metrics-monitor
+ </location>
+ <filter>true</filter>
</source>
</sources>
</mapping>
</mappings>
</configuration>
-
</execution>
+
</executions>
</plugin>
</plugins>
@@ -844,6 +740,7 @@
<assemblydescriptor.collector>src/main/assembly/collector.xml</assemblydescriptor.collector>
<assemblydescriptor.monitor>src/main/assembly/monitor.xml</assemblydescriptor.monitor>
<assemblydescriptor.sink>src/main/assembly/sink.xml</assemblydescriptor.sink>
+ <assemblydescriptor.grafana>src/main/assembly/grafana.xml</assemblydescriptor.grafana>
<packagingFormat>jar</packagingFormat>
</properties>
<build>
http://git-wip-us.apache.org/repos/asf/ambari/blob/ad67efd2/ambari-metrics/ambari-metrics-assembly/src/main/assembly/grafana.xml
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-assembly/src/main/assembly/grafana.xml b/ambari-metrics/ambari-metrics-assembly/src/main/assembly/grafana.xml
new file mode 100644
index 0000000..fe6da7f
--- /dev/null
+++ b/ambari-metrics/ambari-metrics-assembly/src/main/assembly/grafana.xml
@@ -0,0 +1,59 @@
+<?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.
+ -->
+
+<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1 http://maven.apache.org/xsd/assembly-1.1.1.xsd">
+ <id>grafana</id>
+ <formats>
+ <format>dir</format>
+ <format>tar.gz</format>
+ </formats>
+
+ <fileSets>
+ <fileSet>
+ <directory>${grafana.dir}/target/grafana/${grafana.folder}</directory>
+ <outputDirectory>lib</outputDirectory>
+ </fileSet>
+ </fileSets>
+
+ <files>
+ <file>
+ <source>${grafana.dir}/conf/unix/ams-grafana.ini</source>
+ <outputDirectory>conf</outputDirectory>
+ </file>
+ <file>
+ <source>${grafana.dir}/conf/unix/ams-grafana-env.sh</source>
+ <outputDirectory>conf</outputDirectory>
+ </file>
+ <file>
+ <source>${grafana.dir}/conf/unix/ambari-metrics-grafana</source>
+ <outputDirectory>bin</outputDirectory>
+ </file>
+ </files>
+
+ <dependencySets>
+ <dependencySet>
+ <useProjectArtifact>false</useProjectArtifact>
+ <excludes>
+ <exclude>*</exclude>
+ </excludes>
+ </dependencySet>
+ </dependencySets>
+
+</assembly>
http://git-wip-us.apache.org/repos/asf/ambari/blob/ad67efd2/ambari-metrics/ambari-metrics-grafana/conf/unix/ambari-metrics-grafana
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-grafana/conf/unix/ambari-metrics-grafana b/ambari-metrics/ambari-metrics-grafana/conf/unix/ambari-metrics-grafana
new file mode 100644
index 0000000..1de5401
--- /dev/null
+++ b/ambari-metrics/ambari-metrics-grafana/conf/unix/ambari-metrics-grafana
@@ -0,0 +1,172 @@
+#!/usr/bin/env 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
+
+# chkconfig: 2345 80 05
+# description: Grafana web server & backend
+# processname: grafana
+# config: /etc/grafana/ams-grafana.ini
+# pidfile: /var/run/grafana.pid
+
+### BEGIN INIT INFO
+# Provides: grafana
+# Required-Start: $all
+# Required-Stop: $remote_fs $syslog
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Start grafana at boot time
+### END INIT INFO
+
+# tested on
+# 1. New lsb that define start-stop-daemon
+# 3. Centos with initscripts package installed
+
+PATH=/bin:/usr/bin:/sbin:/usr/sbin
+NAME=grafana-server
+DESC="Grafana Server"
+
+if [ -f "/etc/ambari-metrics-grafana/conf/ams-grafana-env.sh" ]; then
+ . "/etc/ambari-metrics-grafana/conf/ams-grafana-env.sh"
+fi
+
+GRAFANA_USER=${AMS_USER}
+GRAFANA_GROUP=${AMS_USER_GROUP}
+GRAFANA_HOME=${AMS_GRAFANA_HOME_DIR}
+CONF_DIR=${AMS_GRAFANA_CONF_DIR}
+WORK_DIR=$GRAFANA_HOME
+DATA_DIR=${AMS_GRAFANA_DATA_DIR}
+LOG_DIR=${AMS_GRAFANA_LOG_DIR}
+CONF_FILE=$CONF_DIR/ams-grafana.ini
+MAX_OPEN_FILES=10000
+PID_FILE=${AMS_GRAFANA_PID_DIR}/$NAME.pid
+DAEMON=$GRAFANA_HOME/bin/$NAME
+
+if [ `id -u` -ne 0 ]; then
+ echo "You need root privileges to run this script"
+ exit 4
+fi
+
+if [ ! -x $DAEMON ]; then
+ echo "Program not installed or not executable"
+ exit 5
+fi
+
+#
+# init.d / servicectl compatibility (openSUSE)
+#
+if [ -f /etc/rc.status ]; then
+ . /etc/rc.status
+ rc_reset
+fi
+
+#
+# Source function library.
+#
+if [ -f /etc/rc.d/init.d/functions ]; then
+ . /etc/rc.d/init.d/functions
+fi
+
+# overwrite settings from default file
+[ -e /etc/sysconfig/$NAME ] && . /etc/sysconfig/$NAME
+
+DAEMON_OPTS="--pidfile=${PID_FILE} --config=${CONF_FILE} cfg:default.paths.data=${DATA_DIR} cfg:default.paths.logs=${LOG_DIR}"
+
+function isRunning() {
+ status -p $PID_FILE $NAME > /dev/null 2>&1
+}
+
+case "$1" in
+ start)
+ echo -n $"Starting $DESC: .... "
+
+ isRunning
+ if [ $? -eq 0 ]; then
+ echo "Already running."
+ exit 0
+ fi
+
+ # Prepare environment
+ mkdir -p "$LOG_DIR" "$DATA_DIR" && chown "$GRAFANA_USER":"$GRAFANA_GROUP" "$LOG_DIR" "$DATA_DIR"
+ touch "$PID_FILE" && chown "$GRAFANA_USER":"$GRAFANA_GROUP" "$PID_FILE"
+
+ if [ -n "$MAX_OPEN_FILES" ]; then
+ ulimit -n $MAX_OPEN_FILES
+ fi
+
+ # Start Daemon
+ cd $GRAFANA_HOME
+ su -s /bin/sh -c "nohup ${DAEMON} ${DAEMON_OPTS} >> /dev/null 3>&1 &" $GRAFANA_USER 2> /dev/null
+ return=$?
+ if [ $return -eq 0 ]
+ then
+ sleep 1
+ # check if pid file has been written two
+ if ! [[ -s $PID_FILE ]]; then
+ echo "FAILED"
+ exit 1
+ fi
+ i=0
+ timeout=10
+ # Wait for the process to be properly started before exiting
+ until { cat "$PID_FILE" | xargs kill -0; } >/dev/null 2>&1
+ do
+ sleep 1
+ i=$(($i + 1))
+ if [ $i -gt $timeout ]; then
+ echo "FAILED"
+ exit 1
+ fi
+ done
+ fi
+
+ echo "OK"
+ exit $return
+ ;;
+ stop)
+ echo -n "Stopping $DESC ..."
+
+ if [ -f "$PID_FILE" ]; then
+ killproc -p $PID_FILE -d 20 $NAME
+ if [ $? -eq 1 ]; then
+ echo -n "$DESC is not running but pid file exists, cleaning up"
+ elif [ $? -eq 3 ]; then
+ PID="`cat $PID_FILE`"
+ echo -n "Failed to stop $DESC (pid $PID)"
+ exit 1
+ fi
+ rm -f "$PID_FILE"
+ echo "OK"
+ exit 0
+ else
+ echo -n "(not running)"
+ fi
+ exit 0
+ ;;
+ status)
+ status -p $PID_FILE $NAME
+ exit $?
+ ;;
+ restart|force-reload)
+ if [ -f "$PID_FILE" ]; then
+ $0 stop
+ sleep 1
+ fi
+ $0 start
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|restart|force-reload|status}"
+ exit 3
+ ;;
+esac
http://git-wip-us.apache.org/repos/asf/ambari/blob/ad67efd2/ambari-metrics/ambari-metrics-grafana/conf/unix/ams-grafana-env.sh
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-grafana/conf/unix/ams-grafana-env.sh b/ambari-metrics/ambari-metrics-grafana/conf/unix/ams-grafana-env.sh
new file mode 100644
index 0000000..20986cb
--- /dev/null
+++ b/ambari-metrics/ambari-metrics-grafana/conf/unix/ams-grafana-env.sh
@@ -0,0 +1,38 @@
+#!/usr/bin/env 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
+
+# Set environment variables here.
+
+# AMS user
+export AMS_USER=ams
+
+# AMS user group
+export AMS_USER_GROUP=hadoop
+
+# AMS Grafana Home Dir
+export AMS_GRAFANA_HOME_DIR=/usr/lib/ambari-metrics-grafana
+
+# AMS Grafana Conf Dir
+export AMS_GRAFANA_CONF_DIR=/etc/ambari-metrics-grafana/conf
+
+# AMS Grafana Data Dir
+export AMS_GRAFANA_DATA_DIR=/var/lib/ambari-metrics-grafana
+
+# AMS Grafana Log Dir
+export AMS_GRAFANA_LOG_DIR=/var/log/ambari-metrics-grafana
+
+# AMS Grafana PID Dir
+export AMS_GRAFANA_PID_DIR=/var/run/ambari-metrics-grafana
http://git-wip-us.apache.org/repos/asf/ambari/blob/ad67efd2/ambari-metrics/ambari-metrics-grafana/conf/unix/ams-grafana.ini
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-grafana/conf/unix/ams-grafana.ini b/ambari-metrics/ambari-metrics-grafana/conf/unix/ams-grafana.ini
new file mode 100644
index 0000000..e42a92f
--- /dev/null
+++ b/ambari-metrics/ambari-metrics-grafana/conf/unix/ams-grafana.ini
@@ -0,0 +1,255 @@
+
+##################### Grafana Configuration Example #####################
+#
+# Everything has defaults so you only need to uncomment things you want to
+# change
+
+# possible values : production, development
+; app_mode = production
+
+#################################### Paths ####################################
+[paths]
+# Path to where grafana can store temp files, sessions, and the sqlite3 db (if that is used)
+#
+;data = /var/lib/grafana
+data = /var/lib/ambari-metrics-grafana
+#
+# Directory where grafana can store logs
+#
+;logs = /var/log/grafana
+logs = /var/log/ambari-metrics-grafana
+
+
+#################################### Server ####################################
+[server]
+# Protocol (http or https)
+;protocol = http
+
+# The ip address to bind to, empty will bind to all interfaces
+;http_addr =
+
+# The http port to use
+;http_port = 3000
+
+# The public facing domain name used to access grafana from a browser
+;domain = localhost
+
+# Redirect to correct domain if host header does not match domain
+# Prevents DNS rebinding attacks
+;enforce_domain = false
+
+# The full public facing url
+;root_url = %(protocol)s://%(domain)s:%(http_port)s/
+
+# Log web requests
+;router_logging = false
+
+# the path relative working path
+;static_root_path = public
+static_root_path = /usr/lib/ambari-metrics-grafana/public
+
+# enable gzip
+;enable_gzip = false
+
+# https certs & key file
+;cert_file =
+;cert_key =
+
+#################################### Database ####################################
+[database]
+# Either "mysql", "postgres" or "sqlite3", it's your choice
+;type = sqlite3
+;host = 127.0.0.1:3306
+;name = grafana
+;user = root
+;password =
+
+# For "postgres" only, either "disable", "require" or "verify-full"
+;ssl_mode = disable
+
+# For "sqlite3" only, path relative to data_path setting
+;path = grafana.db
+
+#################################### Session ####################################
+[session]
+# Either "memory", "file", "redis", "mysql", "postgres", default is "file"
+;provider = file
+
+# Provider config options
+# memory: not have any config yet
+# file: session dir path, is relative to grafana data_path
+# redis: config like redis server e.g. `addr=127.0.0.1:6379,pool_size=100,db=grafana`
+# mysql: go-sql-driver/mysql dsn config string, e.g. `user:password@tcp(127.0.0.1:3306)/database_name`
+# postgres: user=a password=b host=localhost port=5432 dbname=c sslmode=disable
+;provider_config = sessions
+
+# Session cookie name
+;cookie_name = grafana_sess
+
+# If you use session in https only, default is false
+;cookie_secure = false
+
+# Session life time, default is 86400
+;session_life_time = 86400
+
+#################################### Analytics ####################################
+[analytics]
+# Server reporting, sends usage counters to stats.grafana.org every 24 hours.
+# No ip addresses are being tracked, only simple counters to track
+# running instances, dashboard and error counts. It is very helpful to us.
+# Change this option to false to disable reporting.
+;reporting_enabled = true
+
+# Google Analytics universal tracking code, only enabled if you specify an id here
+;google_analytics_ua_id =
+
+#################################### Security ####################################
+[security]
+# default admin user, created on startup
+;admin_user = admin
+
+# default admin password, can be changed before first start of grafana, or in profile settings
+;admin_password = admin
+
+# used for signing
+;secret_key = SW2YcwTIb9zpOOhoPsMm
+
+# Auto-login remember days
+;login_remember_days = 7
+;cookie_username = grafana_user
+;cookie_remember_name = grafana_remember
+
+# disable gravatar profile images
+;disable_gravatar = false
+
+# data source proxy whitelist (ip_or_domain:port seperated by spaces)
+;data_source_proxy_whitelist =
+
+#################################### Users ####################################
+[users]
+# disable user signup / registration
+;allow_sign_up = true
+
+# Allow non admin users to create organizations
+;allow_org_create = true
+
+# Set to true to automatically assign new users to the default organization (id 1)
+;auto_assign_org = true
+
+# Default role new users will be automatically assigned (if disabled above is set to true)
+;auto_assign_org_role = Viewer
+
+# Background text for the user field on the login page
+;login_hint = email or username
+
+#################################### Anonymous Auth ##########################
+[auth.anonymous]
+# enable anonymous access
+;enabled = false
+
+# specify organization name that should be used for unauthenticated users
+;org_name = Main Org.
+
+# specify role for unauthenticated users
+;org_role = Viewer
+
+#################################### Github Auth ##########################
+[auth.github]
+;enabled = false
+;allow_sign_up = false
+;client_id = some_id
+;client_secret = some_secret
+;scopes = user:email,read:org
+;auth_url = https://github.com/login/oauth/authorize
+;token_url = https://github.com/login/oauth/access_token
+;api_url = https://api.github.com/user
+;team_ids =
+;allowed_organizations =
+
+#################################### Google Auth ##########################
+[auth.google]
+;enabled = false
+;allow_sign_up = false
+;client_id = some_client_id
+;client_secret = some_client_secret
+;scopes = https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email
+;auth_url = https://accounts.google.com/o/oauth2/auth
+;token_url = https://accounts.google.com/o/oauth2/token
+;api_url = https://www.googleapis.com/oauth2/v1/userinfo
+;allowed_domains =
+
+#################################### Auth Proxy ##########################
+[auth.proxy]
+;enabled = false
+;header_name = X-WEBAUTH-USER
+;header_property = username
+;auto_sign_up = true
+
+#################################### Basic Auth ##########################
+[auth.basic]
+;enabled = true
+
+#################################### Auth LDAP ##########################
+[auth.ldap]
+;enabled = false
+;config_file = /etc/grafana/ldap.toml
+
+#################################### SMTP / Emailing ##########################
+[smtp]
+;enabled = false
+;host = localhost:25
+;user =
+;password =
+;cert_file =
+;key_file =
+;skip_verify = false
+;from_address = admin@grafana.localhost
+
+[emails]
+;welcome_email_on_sign_up = false
+
+#################################### Logging ##########################
+[log]
+# Either "console", "file", default is "console"
+# Use comma to separate multiple modes, e.g. "console, file"
+;mode = console, file
+
+# Buffer length of channel, keep it as it is if you don't know what it is.
+;buffer_len = 10000
+
+# Either "Trace", "Debug", "Info", "Warn", "Error", "Critical", default is "Trace"
+;level = Info
+
+# For "console" mode only
+[log.console]
+;level =
+
+# For "file" mode only
+[log.file]
+;level =
+# This enables automated log rotate(switch of following options), default is true
+;log_rotate = true
+
+# Max line number of single file, default is 1000000
+;max_lines = 1000000
+
+# Max size shift of single file, default is 28 means 1 << 28, 256MB
+;max_lines_shift = 28
+
+# Segment log daily, default is true
+;daily_rotate = true
+
+# Expired days of log file(delete after max days), default is 7
+;max_days = 7
+
+#################################### AMPQ Event Publisher ##########################
+[event_publisher]
+;enabled = false
+;rabbitmq_url = amqp://localhost/
+;exchange = grafana_events
+
+;#################################### Dashboard JSON files ##########################
+[dashboards.json]
+;enabled = false
+;path = /var/lib/grafana/dashboards
+path = /usr/lib/ambari-metrics-grafana/public/dashboards
http://git-wip-us.apache.org/repos/asf/ambari/blob/ad67efd2/ambari-metrics/ambari-metrics-grafana/pom.xml
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-grafana/pom.xml b/ambari-metrics/ambari-metrics-grafana/pom.xml
new file mode 100644
index 0000000..45ca1a0
--- /dev/null
+++ b/ambari-metrics/ambari-metrics-grafana/pom.xml
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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 xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>ambari-metrics</artifactId>
+ <groupId>org.apache.ambari</groupId>
+ <version>2.0.0.0-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>ambari-metrics-grafana</artifactId>
+ <name>Ambari Metrics Grafana</name>
+ <packaging>pom</packaging>
+ <version>2.1.0.0.0</version>
+ <description>Ambari Metrics Grafana</description>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <version>1.8</version>
+ <executions>
+ <execution>
+ <id>parse-version</id>
+ <phase>validate</phase>
+ <goals>
+ <goal>parse-version</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>regex-property</id>
+ <goals>
+ <goal>regex-property</goal>
+ </goals>
+ <configuration>
+ <name>ambariVersion</name>
+ <value>${project.version}</value>
+ <regex>^([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)(\.|-).*</regex>
+ <replacement>$1.$2.$3.$4</replacement>
+ <failIfNoMatch>false</failIfNoMatch>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.rat</groupId>
+ <artifactId>apache-rat-plugin</artifactId>
+ <configuration>
+ <excludes>
+ <exclude>conf/unix/ams-grafana.ini</exclude>
+ </excludes>
+ </configuration>
+ <executions>
+ <execution>
+ <phase>test</phase>
+ <goals>
+ <goal>check</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <version>1.7</version>
+ <executions>
+ <execution>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ <configuration>
+ <target name="Download Ambari Grafana">
+ <mkdir dir="${project.build.directory}/grafana" />
+ <get
+ src="${grafana.tar}"
+ dest="${project.build.directory}/grafana/grafana.tgz"
+ usetimestamp="true"
+ />
+ <untar
+ src="${project.build.directory}/grafana/grafana.tgz"
+ dest="${project.build.directory}/grafana"
+ compression="gzip"
+ />
+ <get
+ src="${ambari-grafana.tar}"
+ dest="${project.build.directory}/grafana/ambari-grafana.tgz"
+ usetimestamp="true"
+ />
+ <untar
+ src="${project.build.directory}/grafana/ambari-grafana.tgz"
+ dest="${project.build.directory}/grafana/${grafana.folder}/public/app/plugins/datasource"
+ compression="gzip"
+ />
+ </target>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+
+ </build>
+
+</project>
http://git-wip-us.apache.org/repos/asf/ambari/blob/ad67efd2/ambari-metrics/ambari-metrics-grafana/src/main/assemblies/empty.xml
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-grafana/src/main/assemblies/empty.xml b/ambari-metrics/ambari-metrics-grafana/src/main/assemblies/empty.xml
new file mode 100644
index 0000000..35738b1
--- /dev/null
+++ b/ambari-metrics/ambari-metrics-grafana/src/main/assemblies/empty.xml
@@ -0,0 +1,21 @@
+<!--
+ 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.
+-->
+<assembly>
+ <id>empty</id>
+ <formats/>
+</assembly>
http://git-wip-us.apache.org/repos/asf/ambari/blob/ad67efd2/ambari-metrics/pom.xml
----------------------------------------------------------------------
diff --git a/ambari-metrics/pom.xml b/ambari-metrics/pom.xml
index 44964d4..3ca8d54 100644
--- a/ambari-metrics/pom.xml
+++ b/ambari-metrics/pom.xml
@@ -34,6 +34,7 @@
<module>ambari-metrics-storm-sink</module>
<module>ambari-metrics-timelineservice</module>
<module>ambari-metrics-host-monitoring</module>
+ <module>ambari-metrics-grafana</module>
<module>ambari-metrics-assembly</module>
</modules>
<properties>
@@ -49,6 +50,9 @@
<hbase.winpkg.folder>hbase-0.98.4.2.2.4.2-0002-hadoop2</hbase.winpkg.folder>
<hadoop.winpkg.zip>https://msibuilds.blob.core.windows.net/hdp/2.x/2.2.4.2/2/hadoop-2.6.0.2.2.4.2-0002.winpkg.zip</hadoop.winpkg.zip>
<hadoop.winpkg.folder>hadoop-2.6.0.2.2.4.2-0002</hadoop.winpkg.folder>
+ <grafana.folder>grafana-2.6.0</grafana.folder>
+ <grafana.tar>https://grafanarel.s3.amazonaws.com/builds/grafana-2.6.0.linux-x64.tar.gz</grafana.tar>
+ <ambari-grafana.tar>https://github.com/u39kun/ambari-grafana/raw/master/dist/ambari-grafana.tgz</ambari-grafana.tar>
<resmonitor.install.dir>
/usr/lib/python2.6/site-packages/resource_monitoring
</resmonitor.install.dir>
http://git-wip-us.apache.org/repos/asf/ambari/blob/ad67efd2/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index fe139b8..57c6de7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -335,7 +335,7 @@
<exclude>contrib/views/slider/src/main/resources/ui/app/assets/javascripts/**</exclude>
<exclude>contrib/views/slider/src/main/resources/ui/bower_components/**</exclude>
<exclude>contrib/views/slider/src/main/resources/ui/runner.js</exclude>
- <exclude>contrib/views/storm/src/main/resources/libs/**</exclude>
+ <exclude>contrib/views/storm/src/main/resources/libs/**</exclude>
<exclude>contrib/views/storm/src/main/resources/styles/default.css</exclude>
<exclude>contrib/views/storm/src/main/resources/templates/**</exclude>
<exclude>contrib/addons/package/deb/nagios_addon_deb_control</exclude>
@@ -355,6 +355,8 @@
<exclude>**/velocity.log*</exclude>
<!-- Metrics module -->
+ <!-- grafana -->
+ <exclude>ambari-metrics/ambari-metrics-grafana/conf/unix/ams-grafana.ini</exclude>
<!-- psutil : external lib, Apache 2.0 license included as a source file -->
<exclude>ambari-metrics/target/**</exclude>
<exclude>ambari-metrics/ambari-metrics-host-monitoring/src/main/python/psutil/**</exclude>