Index: /branches/amp_3_7_2/extensions/auditing/webui/engine/engine.html
===================================================================
--- /branches/amp_3_7_2/extensions/auditing/webui/engine/engine.html	(revision 2749)
+++ /branches/amp_3_7_2/extensions/auditing/webui/engine/engine.html	(working copy)
@@ -2,20 +2,16 @@
     <div class="col-md-12">
         <ul class="nav nav-tabs">
             <li role="presentation" ng-class="{ active: url_contain('/engine/kibana') }">
-                <a ui-sref="index.auditing.engine.kibana"><span class="tab-header">{{ 'Kibana' | T }}</span></a>
+                <a ui-sref="index.auditing.engine.kibana"><span class="tab-header">{{ 'Search & Analytics' | T }}</span></a>
             </li>
             <li role="presentation" ng-class="{ active: url_contain('/engine/acquisition') }">
                 <a ui-sref="index.auditing.engine.acquisition"><span class="tab-header">{{ 'Data Acquisition' | T
                     }}</span></a>
             </li>
-            <li role="presentation" ng-class="{ active: url_contain('/engine/elastic') }">
-                <a ui-sref="index.auditing.engine.elastic"><span class="tab-header">{{ 'Elasticsearch' | T }}</span></a>
-            </li>
         </ul>
     </div>
     <div class="content-wrapper">
         <div class="" ng-show="url_contain('/engine/kibana')" ui-view="kibana"></div>
         <div class="" ng-show="url_contain('/engine/acquisition')" ui-view="acquisition"></div>
-        <div class="" ng-show="url_contain('/engine/elastic')" ui-view="elastic"></div>
     </div>
 </div>
Index: /branches/amp_3_7_2/extensions/auditing/webui/engine/engine.service.js
===================================================================
--- /branches/amp_3_7_2/extensions/auditing/webui/engine/engine.service.js	(revision 2749)
+++ /branches/amp_3_7_2/extensions/auditing/webui/engine/engine.service.js	(working copy)
@@ -10,7 +10,9 @@
                 getConfig: getConfig,
                 postConfig: postConfig,
                 getStatus: getStatus,
-                postStatus: postStatus
+                postStatus: postStatus,
+                getServicesStatus: getServicesStatus,
+                restartService: restartService,
             };
             function getConfig(app) {
                 return apiService.get('/composer_config/' + app);
@@ -24,4 +26,10 @@
             function postStatus(app, data) {
                 return apiService.post2('/composer_status/' + app, JSON.stringify(data));
             }
+            function getServicesStatus() {
+                return apiService.get('/observability-status');
+            }
+            function restartService(serviceName) {
+                return apiService.post2('/observability-restart', JSON.stringify({service: serviceName}));
+            }
         }]);
Index: /branches/amp_3_7_2/extensions/auditing/webui/engine/kibana/kibana.controller.js
===================================================================
--- /branches/amp_3_7_2/extensions/auditing/webui/engine/kibana/kibana.controller.js	(revision 2749)
+++ /branches/amp_3_7_2/extensions/auditing/webui/engine/kibana/kibana.controller.js	(working copy)
@@ -93,5 +93,32 @@
             kibanaViewModel.jump2kibana = function () {
                 window.open("/kibana4/app/kibana", '_blank')
             }
+
+            kibanaViewModel.getServicesStatus = function () {
+                engineService.getServicesStatus().then(function (res) {
+                    if (res && res.status === 200) {
+                        kibanaViewModel.services = res.data;
+                    }
+                });
+            }
+
+            kibanaViewModel.restartService = function (service) {
+                kibanaViewModel.showProgressBar();
+                let serviceName = "";
+                if (service.toLowerCase().includes("elasticsearch")) {
+                    serviceName = "elasticsearch";
+                } else if (service.toLowerCase().includes("kibana")) {
+                    serviceName = "kibana";
+                }
+                engineService.restartService(serviceName).then(function (res) {
+                    if (res && res.status === 200) {
+                        alert("The service has been restarted successfully!");
+                    } else {
+                        alert("Failed to restart the service.");
+                    }
+                    $rootScope.$broadcast('endLoading', true);
+                });
+            }
+            kibanaViewModel.getServicesStatus();
         }
     ])
Index: /branches/amp_3_7_2/extensions/auditing/webui/engine/kibana/kibana.html
===================================================================
--- /branches/amp_3_7_2/extensions/auditing/webui/engine/kibana/kibana.html	(revision 2749)
+++ /branches/amp_3_7_2/extensions/auditing/webui/engine/kibana/kibana.html	(working copy)
@@ -5,14 +5,14 @@
         </div>
         <div class="">
             <form class="form-horizontal" role="form">
-                <div class="form-group">
-                    <label class="control-label col-md-3">{{ 'Status' | T}}</label>
-                    <div class="col-md-6">
-                        <span ng-if="auditKibana.loading"><i class="fa fa-spinner fa-spin fa-2x fa-fw"></i></span>
-                        <span title="{{'Not Running'|T}}" ng-if="!auditKibana.loading&&!auditKibana.status_info.running"><i class="fa fa-times-circle fa-2x" style="color:#D30000;"></i></span>
-                        <span title="{{'Running'|T}}" ng-if="!auditKibana.loading&&auditKibana.status_info.running"><i class="fa fa-check-circle fa-2x" style="color: green;"></i></span>
-                    </div>
-                </div>
+                <!--                <div class="form-group">-->
+                <!--                    <label class="control-label col-md-3">{{ 'Status' | T}}</label>-->
+                <!--                    <div class="col-md-6">-->
+                <!--                        <span ng-if="auditKibana.loading"><i class="fa fa-spinner fa-spin fa-2x fa-fw"></i></span>-->
+                <!--                        <span title="{{'Not Running'|T}}" ng-if="!auditKibana.loading&&!auditKibana.status_info.running"><i class="fa fa-times-circle fa-2x" style="color:#D30000;"></i></span>-->
+                <!--                        <span title="{{'Running'|T}}" ng-if="!auditKibana.loading&&auditKibana.status_info.running"><i class="fa fa-check-circle fa-2x" style="color: green;"></i></span>-->
+                <!--                    </div>-->
+                <!--                </div>-->
                 <div class="form-group" ng-if="auditKibana.status_info.running">
                     <label class="control-label col-md-3">{{ 'Visit Website' | T}}</label>
                     <div class="col-md-6" style="padding-top: 8px;">
@@ -24,33 +24,58 @@
                 </div>
             </form>
         </div>
+        <div class="table-responsive">
+            <table class="table table-striped table-hover">
+                <thead>
+                <tr>
+                    <th class="name">{{'Service Name' | T}}</th>
+                    <th>{{'Status' | T}}</th>
+                    <th>{{'Action' | T}}</th>
+                </tr>
+                </thead>
+                <tbody>
+                <tr ng-repeat="item in auditKibana.services">
+                    <td>{{ item.label | T}}</td>
+                    <td>{{ item.value ? 'Running' : 'Not Running'}}</td>
+                    <td>
+                        <a class="icon-box" title="{{ 'Restart Service' | T }}"
+                           ng-click="auditKibana.restartService(item.label)" style="margin-right: 2px;"><i
+                                class="array-reboot an-row-icon"></i></a>&nbsp;
+                    </td>
+                </tr>
+                </tbody>
+            </table>
+            <div style="text-align: center" ng-if="auditKibana.loading">
+                <img src="app/images/loading.gif">
+            </div>
+        </div>
     </div>
-<!--    <div class="widget">-->
-<!--        <div class="widget-header">-->
-<!--            <span class="tab-header-1">{{'Running Configuration' | T}}</span>-->
-<!--        </div>-->
-<!--        <div class="">-->
-<!--            <form class="form-horizontal" name="kibanaform" verify-scope="tipStyle: 1" unsaved-warning-form>-->
-<!--                <div class="form-group">-->
-<!--                    <label class="control-label col-md-3">{{ 'Language' | T}}</label>-->
-<!--                    <div class="col-md-6">-->
-<!--                        <select ng-verify class="form-control" ng-model="auditKibana.config_info.language">-->
-<!--                            <option ng-repeat="row in langs" value='{{row.name}}'>{{row.verbose_name | T}}</option>-->
-<!--                        </select>-->
-<!--                    </div>-->
-<!--                </div>-->
-<!--                <div class="form-group col-md-offset-3">-->
-<!--                    <div class="col-md-offset-3 col-md-6">-->
-<!--                        <button ng-show="kibanaform.$dirty" class="btn btn-primary" ng-verify="control:'kibanaform'"-->
-<!--                                ng-click="auditKibana.submit()">{{ 'Save Changes' | T}}-->
-<!--                        </button>-->
-<!--                        <button ng-show="kibanaform.$dirty" type="reset" class="btn btn-default btn-cancel"-->
-<!--                                ng-click="kibanaform.$dirty=false;auditKibana.cancel()">{{'Cancel' | T}}-->
-<!--                        </button>-->
-<!--                    </div>-->
-<!--                </div>-->
-<!--            </form>-->
-<!--        </div>-->
-<!--    </div>-->
+    <!--    <div class="widget">-->
+    <!--        <div class="widget-header">-->
+    <!--            <span class="tab-header-1">{{'Running Configuration' | T}}</span>-->
+    <!--        </div>-->
+    <!--        <div class="">-->
+    <!--            <form class="form-horizontal" name="kibanaform" verify-scope="tipStyle: 1" unsaved-warning-form>-->
+    <!--                <div class="form-group">-->
+    <!--                    <label class="control-label col-md-3">{{ 'Language' | T}}</label>-->
+    <!--                    <div class="col-md-6">-->
+    <!--                        <select ng-verify class="form-control" ng-model="auditKibana.config_info.language">-->
+    <!--                            <option ng-repeat="row in langs" value='{{row.name}}'>{{row.verbose_name | T}}</option>-->
+    <!--                        </select>-->
+    <!--                    </div>-->
+    <!--                </div>-->
+    <!--                <div class="form-group col-md-offset-3">-->
+    <!--                    <div class="col-md-offset-3 col-md-6">-->
+    <!--                        <button ng-show="kibanaform.$dirty" class="btn btn-primary" ng-verify="control:'kibanaform'"-->
+    <!--                                ng-click="auditKibana.submit()">{{ 'Save Changes' | T}}-->
+    <!--                        </button>-->
+    <!--                        <button ng-show="kibanaform.$dirty" type="reset" class="btn btn-default btn-cancel"-->
+    <!--                                ng-click="kibanaform.$dirty=false;auditKibana.cancel()">{{'Cancel' | T}}-->
+    <!--                        </button>-->
+    <!--                    </div>-->
+    <!--                </div>-->
+    <!--            </form>-->
+    <!--        </div>-->
+    <!--    </div>-->
 </div>
 
Index: /branches/amp_3_7_2/src/webui/webui/htdocs/new/src/djproject/urls.py
===================================================================
--- /branches/amp_3_7_2/src/webui/webui/htdocs/new/src/djproject/urls.py	(revision 2749)
+++ /branches/amp_3_7_2/src/webui/webui/htdocs/new/src/djproject/urls.py	(working copy)
@@ -16,6 +16,7 @@
 from hive.report.generate_report import handle_report_generation
 from hive.controller.backup_controller import handle_backup_req
 from hive.controller.restore_controller import handle_restore_req
+from hive.controller.utils import handle_observability_status_req, handle_observability_restart_req
 
 js_info_dict = {
     #'packages': ('your.app.package',),
@@ -98,6 +99,8 @@
     url(r'^UpdateFrontend$', UpdateFrontend),
     url(r'^upload$', upload),
     url(r'^register_complete$', register_complete),
+    url(r'^observability-status$', handle_observability_status_req),
+    url(r'^observability-restart$', handle_observability_restart_req),
 )
 
 handler404 = 'hive.shared.custom_404_view'
Index: /branches/amp_3_7_2/src/webui/webui/htdocs/new/src/hive/controller/utils.py
===================================================================
--- /branches/amp_3_7_2/src/webui/webui/htdocs/new/src/hive/controller/utils.py	(nonexistent)
+++ /branches/amp_3_7_2/src/webui/webui/htdocs/new/src/hive/controller/utils.py	(working copy)
@@ -0,0 +1,63 @@
+import json
+
+from django.http import HttpResponse
+
+from cm.lib.libbasic_operation import oper_log
+from hive.custom_exceptions import generic_exception as ge
+from hive.services.utils import get_observability_services_status, perform_observability_services_restart
+
+
+def handle_observability_status_req(request, path=None):
+    try:
+        if request.method == 'GET':
+            status_data = get_observability_services_status()
+
+            return HttpResponse(
+                json.dumps(status_data),
+                content_type='application/json'
+            )
+
+        else:
+            return HttpResponse(json.dumps({
+                'error': 400,
+                'message': "Invalid HTTP method"
+            }), content_type='application/json', status=400)
+
+    except ge.GenericError as e:
+        oper_log('error', 'system', e.message)
+        return ge.handle_exception(e)
+    except Exception as e:
+        oper_log('error', 'system', 'Exception while observability services status.,  details: {}'.format(e.message))
+        e.message = 'Exception while observability services status,  details: {}'.format(str(e.message))
+        raise ge.GenericError(500, e.message)
+
+
+def handle_observability_restart_req(request, path=None):
+    try:
+        if request.method == 'POST':
+            payload = json.loads(request.body)
+            if "service" not in payload or payload['service'] not in ['elasticsearch', 'kibana']:
+                return HttpResponse(json.dumps({
+                    'error': 400,
+                    'message': "Please mention the 'service' name to restart.(elasticsearch, kibana)"
+                }), content_type='application/json', status=400)
+            status_data = perform_observability_services_restart(payload['service'])
+
+            return HttpResponse(
+                json.dumps(status_data),
+                content_type='application/json'
+            )
+
+        else:
+            return HttpResponse(json.dumps({
+                'error': 400,
+                'message': "Invalid HTTP method"
+            }), content_type='application/json', status=400)
+
+    except ge.GenericError as e:
+        oper_log('error', 'system', e.message)
+        return ge.handle_exception(e)
+    except Exception as e:
+        oper_log('error', 'system', 'Exception while restarting the observability services.,  details: {}'.format(e.message))
+        e.message = 'Exception while restarting the observability services,  details: {}'.format(str(e.message))
+        raise ge.GenericError(500, e.message)
Index: /branches/amp_3_7_2/src/webui/webui/htdocs/new/src/hive/services/utils.py
===================================================================
--- /branches/amp_3_7_2/src/webui/webui/htdocs/new/src/hive/services/utils.py	(nonexistent)
+++ /branches/amp_3_7_2/src/webui/webui/htdocs/new/src/hive/services/utils.py	(working copy)
@@ -0,0 +1,56 @@
+import json
+import os
+import subprocess
+
+from django.http import HttpResponse
+
+from cm.lib.libbasic_operation import oper_log
+
+
+def get_observability_services_status():
+    try:
+        services_list = [
+            {'value': 'elasticsearch', 'label': 'Search & Analytics Engine (ElasticSearch)'},
+            {'value': 'kibana', 'label': 'Logs Dashboards (Kibana)'},
+        ]
+        result = []
+        for service in services_list:
+            process = len(os.popen('ps aux | grep "' + service[
+                'value'] + '" | grep -v grep | grep -v tail | grep -v keepH5ssAlive').readlines())
+            result.append({'value': process >= 1, 'label': service['label']})
+        return result
+    except Exception as e:
+        oper_log('error', 'system', "Exception while fetching observability services status.")
+        message = str(e.message).replace("'", "")
+        message = 'Error while fetching observability services status, details: {}'.format(message)
+        return HttpResponse(json.dumps({
+            "message": "while fetching observability services status",
+            "details": "{}".format(message)
+        }), content_type="application/json", status=500)
+
+
+def perform_observability_services_restart(service_name):
+    command = ["/bin/systemctl", "restart", service_name]
+    try:
+        process = subprocess.Popen(
+            command,
+            stdout=subprocess.PIPE,
+            stderr=subprocess.PIPE
+        )
+        stdout, stderr = process.communicate()
+        exit_code = process.returncode
+
+        if exit_code == 0:
+            return {
+                "status": True,
+                "message": "The service has been restarted successfully."
+            }
+
+    except Exception as e:
+        oper_log('error', 'system', "Exception while restarting the observability services.")
+        message = str(e.message).replace("'", "")
+        message = 'Exception while restarting the observability services, details: {}'.format(message)
+        return HttpResponse(json.dumps({
+            "message": "Exception while restarting the observability services",
+            "details": "{}".format(message)
+        }), content_type="application/json", status=500)
