diff --git a/app/common/directives/app-header.html b/app/common/directives/app-header.html
index c9378ae..3258968 100644
--- a/app/common/directives/app-header.html
+++ b/app/common/directives/app-header.html
@@ -12,7 +12,7 @@
 	</div>
     <div class="header__functions" ng-class="{'active' : toggle}">
 	    <a class="header__info" ng-click="toggle = !toggle"><span>Server Info</span><i class="icon icon-angle" aria-hidden="true"></i></a>
-        <a href="#/server-health/event-log" class="header__server-health">Server health <i class="icon icon-angle" aria-hidden="true"></i><span class="status-light__error">{{dataService.server_health}}</span></a>
+        <a href="#/server-health/event-log" class="header__server-health">Server health <i class="icon icon-angle" aria-hidden="true"></i><span ng-class="{'status-light__error': dataService.server_health == 'Critical', 'status-light__warn': dataService.server_health == 'Warning', 'status-light__good': dataService.server_health == 'Good'}">{{dataService.server_health}}</span></a>
         <a href="#/server-control/power-operations" class="header__server-power" role="button">Server power <i class="icon icon-angle" aria-hidden="true"></i><span ng-class="{'status-light__off': dataService.server_state == 'Off', 'status-light__disabled': dataService.server_state == 'Unreachable', 'status-light__good': dataService.server_state == 'Running', 'status-light__warn': dataService.server_state == 'Quiesced'}">{{dataService.server_state}}</span></a>
         <p class="header__refresh">Data last refreshed<span>{{dataService.last_updated |date:'h:mm:ss MMM dd yyyy'}}</span></p>
         <button class="header__page-refresh" ng-click="refresh()" aria-label="refresh page data"><span>Refresh</span><svg data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 52.18 51.91"><path class="cls-1" d="M38,20.77H52v-14H48.3v6.07A26,26,0,1,0,48.7,38H44.32a22.14,22.14,0,1,1,1.8-20.92H38v3.67Z" transform="translate(0.16 0.14)"/></button>
diff --git a/app/common/directives/app-header.js b/app/common/directives/app-header.js
index 6a9493b..cb4704e 100644
--- a/app/common/directives/app-header.js
+++ b/app/common/directives/app-header.js
@@ -13,6 +13,12 @@
                 'controller': ['$rootScope', '$scope','dataService', 'userModel', '$location', function($rootScope, $scope, dataService, userModel, $location){
                     $scope.dataService = dataService;
 
+                    $scope.loadServerHealth = function(){
+                        APIUtils.getLogs().then(function(result){
+                            dataService.updateServerHealth(result.data);
+                        });
+                    }
+
                     $scope.loadServerStatus = function(){
                         if(!userModel.isLoggedIn()){
                             return;
@@ -37,8 +43,13 @@
                         });
                     }
 
-                    $scope.loadServerStatus();
-                    $scope.loadNetworkInfo();
+                    function loadData(){
+                       $scope.loadServerStatus();
+                       $scope.loadNetworkInfo();
+                       $scope.loadServerHealth();
+                    }
+
+                    loadData();
 
                     $scope.logout = function(){
                         userModel.logout(function(status, error){
@@ -51,8 +62,7 @@
                     }
 
                     $scope.refresh = function(){
-                        $scope.loadServerStatus();
-                        $scope.loadNetworkInfo();
+                        loadData();
 
                         //Add flash class to header timestamp on click of refresh
                         var myEl = angular.element( document.querySelector( '.header__refresh' ) );
@@ -64,8 +74,7 @@
                     }
 
                     var loginListener = $rootScope.$on('user-logged-in', function(event, arg){
-                        $scope.loadServerStatus();
-                        $scope.loadNetworkInfo();
+                        loadData();
                     });
 
                     $scope.$on('$destroy', function(){
