Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/djproject/urls.py
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/djproject/urls.py	(revision 2805)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/djproject/urls.py	(working copy)
@@ -23,7 +23,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
+from hive.controller.utils import handle_observability_status_req, handle_observability_restart_req
 from hive.an_opensearch import opensearch_proxy, get_opensearch_sso_token
 from hive.controller.system_metrics import handle_get_latest_system_metrics, handle_get_historical_system_metrics
 from hive.controller.generic_controller import handle_service_query_req
@@ -89,6 +89,7 @@
     re_path(r'^elastic/(?P<path>.*)', elastic_proxy),
     re_path(r'^log-analysis/(?P<path>.*)', opensearch_proxy),
     re_path(r'^observability-status$', handle_observability_status_req),
+    re_path(r'^observability-restart$', handle_observability_restart_req),
     re_path(r'^opensearch-sso-token$', get_opensearch_sso_token),
     re_path(r'^reporting/(?P<app>\w+)/(?P<filename>.*)$', reporting_downloading_handler),
     re_path(r'^reporting_logo$', reporting_logo_handler),
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/observability/observability.html
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/observability/observability.html	(revision 2805)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/observability/observability.html	(working copy)
@@ -39,6 +39,17 @@
                         </div>
                     </td>
                 </ng-container>
+                <ng-container matColumnDef="actions">
+                    <th mat-header-cell *matHeaderCellDef class="w-10">Actions</th>
+                    <td mat-cell *matCellDef="let element">
+                        <div class="row-action">
+                            <button mat-icon-button color="primary" (click)="restartService(element)"
+                                matTooltip="Restart Service">
+                                <fa-icon [icon]="['fas', 'rotate-right']"></fa-icon>
+                            </button>
+                        </div>
+                    </td>
+                </ng-container>
                 <tr mat-header-row *matHeaderRowDef="dataColumns"></tr>
                 <tr mat-row *matRowDef="let row; columns: dataColumns;"></tr>
                 <tr class="mat-row table-no-data" *matNoDataRow>
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/observability/observability.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/observability/observability.ts	(revision 2805)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/observability/observability.ts	(working copy)
@@ -18,7 +18,7 @@
 export class Observability implements OnInit {
 
   totalRecords: number = 0;
-  dataColumns = ['serial', 'name', 'status'];
+  dataColumns = ['serial', 'name', 'status', 'actions'];
   dataSource = new MatTableDataSource([]);
   @ViewChild(MatPaginator) paginator!: MatPaginator;
 
@@ -82,6 +82,36 @@
       }
     });
   }
+
+  restartService(element: any) {
+    this._confirmation.openConfirmDialog({
+      title: 'Restart Service',
+      message: `Are you sure you want to restart the ${element?.label} service?`,
+      confirmButtonText: 'Restart',
+      cancelButtonText: 'Cancel',
+      confirmButtonColor: 'primary'
+    }).subscribe((confirmed: boolean) => {
+      if (confirmed) {
+        const payload = {
+          service: element?.service
+        };
+        this._system.restartObservabilityService(payload).pipe(take(1)).subscribe({
+          next: (result: any) => {
+            if (result?.status) {
+              this._notification.showSuccess(result?.message);
+              this.getObservabilityStatus();
+            } else {
+              this._notification.showError(result?.message);
+            }
+          },
+          error: error => {
+            this._notification.showError(`Error: ${error?.message}`);
+            console.log(error);
+          }
+        });
+      }
+    });
+  }
 }
 
 @Component({
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/constants/api_urls.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/constants/api_urls.ts	(revision 2805)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/constants/api_urls.ts	(working copy)
@@ -23,6 +23,7 @@
   WEBCONSOLE_HANDLE_REQ_URL: `${PREFIX}/cm/ajax/webconsole/_handle_request`,
   // System
   GET_OBSERVABILITY_STATUS_URL: `${PREFIX}/observability-status`,
+  RESTART_OBSERVABILITY_SERVICE_URL: `${PREFIX}/observability-restart`,
   GET_OPENSEARCH_SSO_TOKEN_URL: `${PREFIX}/opensearch-sso-token`,
   GET_SYSTEM_HOST_CONFIG_URL: `${PREFIX}/api/cm/system/HostSettings/_fields`,
   UPDATE_SYSTEM_HOST_CONFIG_URL: `${PREFIX}/api/cm/system/HostSettings/_update`,
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/services/system-service.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/services/system-service.ts	(revision 2805)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/services/system-service.ts	(working copy)
@@ -1,6 +1,6 @@
-import {Injectable} from '@angular/core';
-import {URLS} from '../constants/api_urls';
-import {HttpService} from './http';
+import { Injectable } from '@angular/core';
+import { URLS } from '../constants/api_urls';
+import { HttpService } from './http';
 
 @Injectable({
   providedIn: 'root'
@@ -445,6 +445,10 @@
 
   getObservabilityStatus() {
     return this.http.get(URLS.GET_OBSERVABILITY_STATUS_URL);
+  }
+
+  restartObservabilityService(payload: any) {
+    return this.http.post(URLS.RESTART_OBSERVABILITY_SERVICE_URL, payload);
   }
 
   getOpenSearchAuthToken() {
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/shared/shared-module.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/shared/shared-module.ts	(revision 2805)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/shared/shared-module.ts	(working copy)
@@ -66,7 +66,7 @@
   solidIcons.faPause, solidIcons.faEnvelope,
   solidIcons.faChevronDown, solidIcons.faPlay, solidIcons.faPlusCircle,
   solidIcons.faCheckCircle, solidIcons.faExclamationCircle, solidIcons.faExclamationTriangle, solidIcons.faQuestion,
-  solidIcons.faDownload, solidIcons.faFolderTree,
+  solidIcons.faDownload, solidIcons.faFolderTree, solidIcons.faRotateRight,
 ];
 
 const customRegularIcons = [
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/hive/controller/utils.py
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/hive/controller/utils.py	(revision 2805)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/hive/controller/utils.py	(working copy)
@@ -3,7 +3,7 @@
 from django.http import HttpResponse, JsonResponse
 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
+from hive.services.utils import get_observability_services_status, perform_observability_services_restart
 
 def handle_observability_status_req(request, path=None):
     try:
@@ -20,6 +20,37 @@
         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)
+        oper_log('error', 'system', 'Exception while observability services status.,  details: {}'.format(str(e)))
+        message = 'Exception while observability services status,  details: {}'.format(str(e))
+        raise ge.GenericError(500, 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 ['opensearch', 'opensearch-dashboards', 'logstash', 'telegraf']:
+                return HttpResponse(json.dumps({
+                    'error': 400,
+                    'message': "Please mention the 'service' name to restart.(opensearch, opensearch-dashboards, logstash, telegraf)"
+                }), 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(str(e)))
+        message = 'Exception while restarting the observability services,  details: {}'.format(str(e))
+        raise ge.GenericError(500, message)
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/hive/services/utils.py
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/hive/services/utils.py	(revision 2805)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/hive/services/utils.py	(working copy)
@@ -1,5 +1,6 @@
 import json
 import os
+import subprocess
 import dateutil
 
 from django.http import HttpResponse
@@ -21,7 +22,7 @@
         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']})
+            result.append({'value': process >= 1, 'label': service['label'], 'service': service['value']})
         return result
     except Exception as e:
         oper_log('error', 'system', "Exception while fetching observability services status.")
@@ -33,6 +34,38 @@
         }), 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."
+            }
+        else:
+            return {
+                "status": False,
+                "message": "Failed to restart the service. Exit code: {}".format(exit_code)
+            }
+
+    except Exception as e:
+        oper_log('error', 'system', "Exception while restarting the observability services.")
+        message = str(e).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)
+
+
 def construct_json_response(metrics):
     json_response = {
         "data": metrics["data"]
