Repository: hive Updated Branches: refs/heads/branch-3 36c33ca06 -> c0a9d3ba1
HIVE-20267: Expanding WebUI to include form to dynamically config log levels (Zoltan Chovan reviewed by Prasanth Jayachandran) Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/c0a9d3ba Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/c0a9d3ba Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/c0a9d3ba Branch: refs/heads/branch-3 Commit: c0a9d3ba18dd42f315d001daa5f99b5e1aedfa52 Parents: 36c33ca Author: Zoltan Chovan <[email protected]> Authored: Wed Sep 19 09:57:52 2018 -0700 Committer: Prasanth Jayachandran <[email protected]> Committed: Thu Sep 20 12:10:06 2018 -0700 ---------------------------------------------------------------------- .../hive-webapps/hiveserver2/hiveserver2.jsp | 1 + .../hive-webapps/hiveserver2/llap.html | 1 + .../hive-webapps/hiveserver2/logconf.jsp | 140 +++++++++++++++++++ .../resources/hive-webapps/static/js/logconf.js | 40 ++++++ 4 files changed, 182 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/c0a9d3ba/service/src/resources/hive-webapps/hiveserver2/hiveserver2.jsp ---------------------------------------------------------------------- diff --git a/service/src/resources/hive-webapps/hiveserver2/hiveserver2.jsp b/service/src/resources/hive-webapps/hiveserver2/hiveserver2.jsp index 5d82029..c238369 100644 --- a/service/src/resources/hive-webapps/hiveserver2/hiveserver2.jsp +++ b/service/src/resources/hive-webapps/hiveserver2/hiveserver2.jsp @@ -79,6 +79,7 @@ String remoteUser = request.getRemoteUser(); <li><a href="/conf">Hive Configuration</a></li> <li><a href="/stacks">Stack Trace</a></li> <li><a href="/llap.html">Llap Daemons</a></li> + <li><a href="/logconf.jsp">Configure logging</a></li> </ul> </div><!--/.nav-collapse --> </div> http://git-wip-us.apache.org/repos/asf/hive/blob/c0a9d3ba/service/src/resources/hive-webapps/hiveserver2/llap.html ---------------------------------------------------------------------- diff --git a/service/src/resources/hive-webapps/hiveserver2/llap.html b/service/src/resources/hive-webapps/hiveserver2/llap.html index e1424b8..62ac1b0 100644 --- a/service/src/resources/hive-webapps/hiveserver2/llap.html +++ b/service/src/resources/hive-webapps/hiveserver2/llap.html @@ -37,6 +37,7 @@ <li><a href="/conf">Hive Configuration</a></li> <li><a href="/stacks">Stack Trace</a></li> <li><a href="/llap.html">Llap Daemons</a></li> + <li><a href="/logconf.jsp">Configure logging</a></li> </ul> </div><!--/.nav-collapse --> </div> http://git-wip-us.apache.org/repos/asf/hive/blob/c0a9d3ba/service/src/resources/hive-webapps/hiveserver2/logconf.jsp ---------------------------------------------------------------------- diff --git a/service/src/resources/hive-webapps/hiveserver2/logconf.jsp b/service/src/resources/hive-webapps/hiveserver2/logconf.jsp new file mode 100644 index 0000000..a5747c0 --- /dev/null +++ b/service/src/resources/hive-webapps/hiveserver2/logconf.jsp @@ -0,0 +1,140 @@ +<%-- +/** + * 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. + */ +--%> +<%@ page contentType="text/html;charset=UTF-8" + import="org.apache.hadoop.conf.Configuration" + import="org.apache.hadoop.hive.conf.HiveConf" + import="org.apache.hadoop.hive.conf.HiveConf.ConfVars" + import="org.apache.hive.common.util.HiveVersionInfo" + import="org.apache.hive.http.HttpServer" + import="org.apache.hive.service.cli.operation.Operation" + import="org.apache.hive.service.cli.operation.SQLOperation" + import="org.apache.hadoop.hive.ql.QueryInfo" + import="org.apache.hive.service.cli.session.SessionManager" + import="org.apache.hive.service.cli.session.HiveSession" + import="javax.servlet.ServletContext" + import="java.util.Collection" + import="java.util.Date" + import="java.util.List" + import="jodd.util.HtmlEncoder" +%> + +<% + ServletContext ctx = getServletContext(); + Configuration conf = (Configuration)ctx.getAttribute("hive.conf"); + long startcode = conf.getLong("startcode", System.currentTimeMillis()); + SessionManager sessionManager = + (SessionManager)ctx.getAttribute("hive.sm"); + String remoteUser = request.getRemoteUser(); +%> + +<!--[if IE]> +<!DOCTYPE html> +<![endif]--> +<?xml version="1.0" encoding="UTF-8" ?> +<html lang="en"> +<head> + <meta charset="utf-8"> + <title>HiveServer2</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta name="description" content=""> + + <link href="/static/css/bootstrap.min.css" rel="stylesheet"> + <link href="/static/css/bootstrap-theme.min.css" rel="stylesheet"> + <link href="/static/css/hive.css" rel="stylesheet"> + + <link rel="stylesheet" type="text/css" href="/static/css/json.human.css"> + <script src="/static/js/jquery.min.js"></script> + <script src="/static/js/json.human.js"></script> + <script src="/static/js/logconf.js"></script> +</head> + +<body> + <div class="navbar navbar-fixed-top navbar-default"> + <div class="container"> + <div class="navbar-header"> + <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <a class="navbar-brand" href="/hiveserver2.jsp"><img src="/static/hive_logo.jpeg" alt="Hive Logo"/></a> + </div> + <div class="collapse navbar-collapse"> + <ul class="nav navbar-nav"> + <li class="active"><a href="/">Home</a></li> + <li><a href="/logs/">Local logs</a></li> + <li><a href="/jmx">Metrics Dump</a></li> + <li><a href="/conf">Hive Configuration</a></li> + <li><a href="/stacks">Stack Trace</a></li> + <li><a href="/llap.html">Llap Daemons</a></li> + <li><a href="/logconf.jsp">Configure logging</a></li> + </ul> + </div><!--/.nav-collapse --> + </div> + </div> + + + <div class="container"> + <div class="row inner_header"> + <div class="page-header"> + <h2>Configure HiveServer2 logging</h2> + </div> + </div> + <div class="row"> + + <div id="current-logs-container"> + <table id="current-logs-table" class="table"> + <thead> + <tr> + <th>Logger name</th> + <th>Log level</th> + </tr> + </thead> + <tbody id="current-logs"> + + </tbody> + </table> + </div> + + <h2>Set new logging rules</h2> + + <form class="form-inline"> + <div class="form-group"> + <input type="text" id="logger-name" class="form-control" placeholder="Logger name"> + </div> + <div class="form-group"> + <select id="log-level" class="form-control"> + <option value="TRACE">TRACE</option> + <option value="DEBUG">DEBUG</option> + <option value="INFO">INFO</option> + <option value="WARN">WARN</option> + <option value="ERROR">ERROR</option> + <option value="FATAL">FATAL</option> + </select> + </div> + + <button id="log-level-submit" type="button" class="btn btn-primary">Submit</button> + </form> + + </div> + </div> + +</body> +</html> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/hive/blob/c0a9d3ba/service/src/resources/hive-webapps/static/js/logconf.js ---------------------------------------------------------------------- diff --git a/service/src/resources/hive-webapps/static/js/logconf.js b/service/src/resources/hive-webapps/static/js/logconf.js new file mode 100644 index 0000000..a95b29a --- /dev/null +++ b/service/src/resources/hive-webapps/static/js/logconf.js @@ -0,0 +1,40 @@ +$(document).ready(function () { + + // init the table with the current loggers + loadLoggers(); + + // set up event handler for submitting the form + $("#log-level-submit").click(function(e) { + setLoggersWithLevel(e); + }); +}); + +function setLoggersWithLevel(e) { + console.log("handler called"); + var loggerName = $("#logger-name").val(); + var logLevel = $("#log-level").val(); + var data = JSON.stringify( { "loggers" : [ { "logger" : loggerName, "level" : logLevel } ] } ); + + $.post('conflog', data, function() { + loadLoggers(); + }); +} + +function loadLoggers() { + // clear the current content + $("#current-logs").html(""); + + // load and render the new + $.getJSON('conflog', function (data) { + var loggers = data.loggers; + + $.each(loggers, function(i, logger) { + var logger_information = "<tr>\n" + + " <td>" + logger.logger + "</td>\n" + + " <td>" + logger.level + "</td>\n" + + " </tr>"; + $("#current-logs").append(logger_information); + }); + + }); +}
