You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@metron.apache.org by ni...@apache.org on 2017/10/21 12:11:40 UTC
metron git commit: METRON-1260 Include Alerts UI in Ambari Service
Check (nickwallen) closes apache/metron#804
Repository: metron
Updated Branches:
refs/heads/master ad9851aff -> b4aa0859a
METRON-1260 Include Alerts UI in Ambari Service Check (nickwallen) closes apache/metron#804
Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/b4aa0859
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/b4aa0859
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/b4aa0859
Branch: refs/heads/master
Commit: b4aa0859a2a8f7b53d52c7332e5975d443a77ca2
Parents: ad9851a
Author: nickwallen <ni...@nickallen.org>
Authored: Sat Oct 21 08:10:48 2017 -0400
Committer: nickallen <ni...@apache.org>
Committed: Sat Oct 21 08:10:48 2017 -0400
----------------------------------------------------------------------
.../package/scripts/alerts_ui_commands.py | 38 +++++++++++++++++
.../CURRENT/package/scripts/alerts_ui_master.py | 7 +---
.../package/scripts/management_ui_commands.py | 44 +++++++++++++-------
.../package/scripts/management_ui_master.py | 2 +-
.../CURRENT/package/scripts/metron_service.py | 16 +++++++
.../CURRENT/package/scripts/rest_commands.py | 30 ++++++++++++-
.../CURRENT/package/scripts/service_check.py | 6 +++
7 files changed, 120 insertions(+), 23 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/metron/blob/b4aa0859/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/alerts_ui_commands.py
----------------------------------------------------------------------
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/alerts_ui_commands.py b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/alerts_ui_commands.py
index eabdbcb..92ddcf9 100644
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/alerts_ui_commands.py
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/alerts_ui_commands.py
@@ -21,6 +21,8 @@ limitations under the License.
from resource_management.core.logger import Logger
from resource_management.core.resources.system import Execute, File
+import metron_service
+
# Wrap major operations and functionality in this class
class AlertsUICommands:
__params = None
@@ -31,16 +33,52 @@ class AlertsUICommands:
self.__params = params
def start_alerts_ui(self):
+ """
+ Start the Alerts UI
+ :param env: Environment
+ """
Logger.info('Starting Alerts UI')
Execute("service metron-alerts-ui start")
Logger.info('Done starting Alerts UI')
def stop_alerts_ui(self):
+ """
+ Stop the Alerts UI
+ :param env: Environment
+ """
Logger.info('Stopping Alerts UI')
Execute("service metron-alerts-ui stop")
Logger.info('Done stopping Alerts UI')
def restart_alerts_ui(self, env):
+ """
+ Restart the Alerts UI
+ :param env: Environment
+ """
Logger.info('Restarting the Alerts UI')
Execute('service metron-alerts-ui restart')
Logger.info('Done restarting the Alerts UI')
+
+ def status_alerts_ui(self, env):
+ """
+ Performs a status check for the Alerts UI
+ :param env: Environment
+ """
+ Logger.info('Status check the Alerts UI')
+ metron_service.check_http(
+ self.__params.hostname,
+ self.__params.metron_alerts_ui_port,
+ self.__params.metron_user)
+
+ def service_check(self, env):
+ """
+ Performs a service check for the Alerts UI
+ :param env: Environment
+ """
+ Logger.info('Checking connectivity to Alerts UI')
+ metron_service.check_http(
+ self.__params.hostname,
+ self.__params.metron_alerts_ui_port,
+ self.__params.metron_user)
+
+ Logger.info("Alerts UI service check completed successfully")
http://git-wip-us.apache.org/repos/asf/metron/blob/b4aa0859/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/alerts_ui_master.py
----------------------------------------------------------------------
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/alerts_ui_master.py b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/alerts_ui_master.py
index adf05a7..85c3be3 100644
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/alerts_ui_master.py
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/alerts_ui_master.py
@@ -67,11 +67,8 @@ class AlertsUIMaster(Script):
def status(self, env):
from params import status_params
env.set_params(status_params)
- cmd = format('curl --max-time 3 {hostname}:{metron_alerts_ui_port}')
- try:
- get_user_call_output(cmd, user=status_params.metron_user)
- except ExecutionFailed:
- raise ComponentIsNotRunning()
+ commands = AlertsUICommands(status_params)
+ commands.status_alerts_ui(env)
def restart(self, env):
from params import params
http://git-wip-us.apache.org/repos/asf/metron/blob/b4aa0859/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/management_ui_commands.py
----------------------------------------------------------------------
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/management_ui_commands.py b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/management_ui_commands.py
index 7427046..0f9194f 100644
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/management_ui_commands.py
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/management_ui_commands.py
@@ -20,10 +20,11 @@ limitations under the License.
from resource_management.core.logger import Logger
from resource_management.core.resources.system import Execute, File
-from resource_management.core.exceptions import ComponentIsNotRunning
from resource_management.core.exceptions import ExecutionFailed
from resource_management.libraries.functions.get_user_call_output import get_user_call_output
+import metron_service
+
# Wrap major operations and functionality in this class
class ManagementUICommands:
__params = None
@@ -34,39 +35,52 @@ class ManagementUICommands:
self.__params = params
def start_management_ui(self):
+ """
+ Starts the Management UI
+ :param env: Environment
+ """
Logger.info('Starting Management UI')
Execute("service metron-management-ui start")
Logger.info('Done starting Management UI')
def stop_management_ui(self):
+ """
+ Stops the Management UI
+ :param env: Environment
+ """
Logger.info('Stopping Management UI')
Execute("service metron-management-ui stop")
Logger.info('Done stopping Management UI')
def restart_management_ui(self, env):
+ """
+ Restarts the Management UI
+ :param env: Environment
+ """
Logger.info('Restarting the Management UI')
Execute('service metron-management-ui restart')
Logger.info('Done restarting the Management UI')
- def check_status(self, env):
+ def status_management_ui(self, env):
+ """
+ Performs a status check for the Management UI
+ :param env: Environment
+ """
Logger.info('Status check the Management UI')
- cmd = "curl --max-time 3 {0}:{1}"
- try:
- Execute(
- cmd.format(self.__params.hostname, self.__params.metron_management_ui_port),
- tries=3,
- try_sleep=5,
- logoutput=False,
- user=self.__params.metron_user)
- except:
- raise ComponentIsNotRunning()
+ metron_service.check_http(
+ self.__params.hostname,
+ self.__params.metron_management_ui_port,
+ self.__params.metron_user)
def service_check(self, env):
"""
Performs a service check for the Management UI
:param env: Environment
"""
- from params import status_params
- env.set_params(status_params)
- self.check_status(env)
+ Logger.info('Checking connectivity to Management UI')
+ metron_service.check_http(
+ self.__params.hostname,
+ self.__params.metron_management_ui_port,
+ self.__params.metron_user)
+
Logger.info("Management UI service check completed successfully")
http://git-wip-us.apache.org/repos/asf/metron/blob/b4aa0859/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/management_ui_master.py
----------------------------------------------------------------------
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/management_ui_master.py b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/management_ui_master.py
index 15bcd94..dad8f12 100644
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/management_ui_master.py
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/management_ui_master.py
@@ -73,7 +73,7 @@ class ManagementUIMaster(Script):
from params import status_params
env.set_params(status_params)
commands = ManagementUICommands(status_params)
- commands.check_status(env)
+ commands.status_management_ui(env)
def restart(self, env):
from params import params
http://git-wip-us.apache.org/repos/asf/metron/blob/b4aa0859/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/metron_service.py
----------------------------------------------------------------------
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/metron_service.py b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/metron_service.py
index 2ae0b08..d8b8b10 100644
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/metron_service.py
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/metron_service.py
@@ -20,12 +20,14 @@ import subprocess
from datetime import datetime
from resource_management.core.logger import Logger
+from resource_management.core.exceptions import ComponentIsNotRunning
from resource_management.core.exceptions import Fail
from resource_management.core.resources.system import Directory, File
from resource_management.core.resources.system import Execute
from resource_management.core.source import InlineTemplate
from resource_management.libraries.functions import format as ambari_format
from resource_management.libraries.functions.get_user_call_output import get_user_call_output
+
from metron_security import kinit
@@ -443,3 +445,17 @@ def check_kafka_acl_groups(params, groups, user=None):
cmd = template.format(params.kafka_bin_dir, params.zookeeper_quorum, group, user)
err_msg = "Missing Kafka group access; group={0}, user={1}".format(group, user)
execute(cmd, user=params.kafka_user, err_msg=err_msg)
+
+def check_http(host, port, user):
+ """
+ Check for a valid HTTP response.
+ :param hostname: The hostname.
+ :param port: The port number.
+ :param user: Execute the HTTP request as.
+ """
+ cmd = "curl -sS --max-time 3 {0}:{1}".format(host, port)
+ Logger.info('Checking HTTP connectivity; host={0}, port={1}, user={2} cmd={3}'.format(host, port, user, cmd))
+ try:
+ Execute(cmd, tries=3, try_sleep=5, logoutput=False, user=user)
+ except:
+ raise ComponentIsNotRunning()
http://git-wip-us.apache.org/repos/asf/metron/blob/b4aa0859/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/rest_commands.py
----------------------------------------------------------------------
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/rest_commands.py b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/rest_commands.py
index 542fc08..0828e3a 100755
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/rest_commands.py
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/rest_commands.py
@@ -77,6 +77,9 @@ class RestCommands:
metron_service.init_kafka_acl_groups(self.__params, groups)
def start_rest_application(self):
+ """
+ Start the REST application
+ """
Logger.info('Starting REST application')
if self.__params.security_enabled:
@@ -110,6 +113,9 @@ class RestCommands:
Logger.info('Done starting REST application')
def stop_rest_application(self):
+ """
+ Stop the REST application
+ """
Logger.info('Stopping REST application')
# Get the pid associated with the service
@@ -153,21 +159,41 @@ class RestCommands:
Logger.info('Done stopping REST application')
def restart_rest_application(self, env):
+ """
+ Restart the REST application
+ :param env: Environment
+ """
Logger.info('Restarting the REST application')
self.stop_rest_application()
self.start_rest_application()
Logger.info('Done restarting the REST application')
+ def status_rest_application(self, env):
+ """
+ Performs a status check for the REST application
+ :param env: Environment
+ """
+ Logger.info('Status check the REST application')
+ metron_service.check_http(
+ self.__params.hostname,
+ self.__params.metron_rest_port,
+ self.__params.metron_user)
+
def service_check(self, env):
"""
- Performs a service check for the Metron API.
+ Performs a service check for the REST application
:param env: Environment
"""
+ Logger.info('Checking connectivity to REST application')
+ metron_service.check_http(
+ self.__params.hostname,
+ self.__params.metron_rest_port,
+ self.__params.metron_user)
+
Logger.info('Checking Kafka topics for the REST application')
metron_service.check_kafka_topics(self.__params, self.__get_topics())
if self.__params.security_enabled:
-
Logger.info('Checking Kafka topic ACL for the REST application')
metron_service.check_kafka_acls(self.__params, self.__get_topics())
http://git-wip-us.apache.org/repos/asf/metron/blob/b4aa0859/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/service_check.py
----------------------------------------------------------------------
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/service_check.py b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/service_check.py
index 1aebecb..2007f36 100755
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/service_check.py
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/service_check.py
@@ -28,6 +28,7 @@ from indexing_commands import IndexingCommands
from profiler_commands import ProfilerCommands
from rest_commands import RestCommands
from management_ui_commands import ManagementUICommands
+from alerts_ui_commands import AlertsUICommands
class ServiceCheck(Script):
@@ -64,6 +65,11 @@ class ServiceCheck(Script):
mgmt_cmds = ManagementUICommands(params)
mgmt_cmds.service_check(env)
+ # check the alerts UI
+ Logger.info("Performing Alerts UI service check")
+ alerts_cmds = AlertsUICommands(params)
+ alerts_cmds.service_check(env)
+
Logger.info("Metron service check completed successfully")
exit(0)