2019-01-30 11:18:23 +00:00
|
|
|
<div layout="column" layout-align="start stretch" ng-controller="managerStatusController as ctrl" ng-if="mctrl.tab === 'status'"
|
2019-01-31 14:50:18 +00:00
|
|
|
class="">
|
2018-05-10 10:06:51 +00:00
|
|
|
|
|
|
|
<!-- Loading ring -->
|
2018-11-02 07:42:56 +00:00
|
|
|
<div class='uil-ring-css' ng-show="ctrl.load">
|
2018-03-07 15:18:37 +00:00
|
|
|
<div></div>
|
|
|
|
</div>
|
2017-11-23 10:22:27 +00:00
|
|
|
|
2018-07-02 12:54:33 +00:00
|
|
|
<!-- Headline -->
|
2019-01-30 11:18:23 +00:00
|
|
|
<div ng-show="!ctrl.load" layout="column" layout-padding>
|
2018-07-02 12:54:33 +00:00
|
|
|
<span class="font-size-18"><i class="fa fa-fw fa-heartbeat" aria-hidden="true"></i> Status</span>
|
2019-01-30 11:18:23 +00:00
|
|
|
<span class="md-subheader">Check the status of all Wazuh manager daemons <span ng-show="ctrl.selectedNode">({{ctrl.selectedNode}})</span></span>
|
2018-10-18 14:55:23 +00:00
|
|
|
</div>
|
2019-01-30 11:18:23 +00:00
|
|
|
|
2019-03-04 16:21:07 +00:00
|
|
|
<div ng-show="!ctrl.load" layout="row" layout-padding class="wz-padding-top-0 wz-padding-bottom-0">
|
|
|
|
<div ng-show="ctrl.selectedNode" layout="column" layout-align="center" class="height-35 wz-select-input">
|
2018-11-02 07:42:56 +00:00
|
|
|
<select class="kuiSelect wz-border-none cursor-pointer max-height-35" id="categoryBox" ng-model="ctrl.selectedNode"
|
|
|
|
ng-change="ctrl.changeNode(ctrl.selectedNode)" aria-label="Select node">
|
|
|
|
<option ng-repeat="node in ctrl.nodes" value="{{node.name}}">{{node.name}}</option>
|
2018-10-18 14:55:23 +00:00
|
|
|
</select>
|
|
|
|
</div>
|
2019-02-12 15:19:10 +00:00
|
|
|
<div flex></div>
|
|
|
|
<div layout="column" class="height-40 wz-no-padding">
|
2019-02-15 15:37:52 +00:00
|
|
|
<button ng-if="mctrl.clusterInfo.status === 'enabled' && !mctrl.showConfirmRestart" class="btn wz-button height-35"
|
2019-02-21 14:42:12 +00:00
|
|
|
ng-disabled="mctrl.isRestarting" ng-click="mctrl.showConfirmRestart = true"><i class="fa fa-refresh"
|
|
|
|
ng-class="mctrl.isRestarting ? 'fa-spin fa-spinner' : ''"></i>
|
2019-02-12 15:19:10 +00:00
|
|
|
Restart cluster
|
|
|
|
</button>
|
2019-02-15 15:37:52 +00:00
|
|
|
<button ng-if="mctrl.clusterInfo.status !== 'enabled' && !mctrl.showConfirmRestart" class="btn wz-button height-35"
|
2019-02-21 14:42:12 +00:00
|
|
|
ng-disabled="mctrl.isRestarting" ng-click="mctrl.showConfirmRestart = true"><i class="fa fa-refresh"
|
|
|
|
ng-class="mctrl.isRestarting ? 'fa-spin fa-spinner' : ''"></i>
|
2019-02-12 15:19:10 +00:00
|
|
|
Restart manager
|
|
|
|
</button>
|
2019-02-15 15:37:52 +00:00
|
|
|
<div ng-show="mctrl.showConfirmRestart" class="confirmEmbedBubble confirmEmbedBubbleInline">
|
|
|
|
<div layout="row no-wrap">
|
|
|
|
<span ng-if="mctrl.clusterInfo.status === 'enabled'" class="wz-padding-top-10 wz-padding-left-8">The
|
2019-02-18 13:54:07 +00:00
|
|
|
cluster will be restarted </span>
|
2019-02-15 15:37:52 +00:00
|
|
|
<span ng-if="mctrl.clusterInfo.status !== 'enabled'" class="wz-padding-top-10 wz-padding-left-8">The
|
2019-02-18 13:54:07 +00:00
|
|
|
manager will be restarted </span>
|
2019-02-15 15:37:52 +00:00
|
|
|
</div>
|
|
|
|
<div layout="row">
|
2019-02-21 13:51:43 +00:00
|
|
|
<md-button class="cancelBtn btn-info" type="button" ng-click="mctrl.showConfirmRestart = false">
|
|
|
|
Cancel</md-button>
|
2019-02-15 15:37:52 +00:00
|
|
|
<md-button ng-if="mctrl.clusterInfo.status === 'enabled'" class="btn wz-button" type="button"
|
|
|
|
ng-click="mctrl.restartCluster();mctrl.showConfirmRestart = false"><i aria-hidden='true' class='fa fa-fw fa-check'></i>
|
|
|
|
Confirm</md-button>
|
|
|
|
<md-button ng-if="mctrl.clusterInfo.status !== 'enabled'" class="btn wz-button" type="button"
|
|
|
|
ng-click="mctrl.restartManager();mctrl.showConfirmRestart = false"><i aria-hidden='true' class='fa fa-fw fa-check'></i>
|
|
|
|
Confirm</md-button>
|
|
|
|
</div>
|
|
|
|
</div>
|
2019-02-12 15:19:10 +00:00
|
|
|
</div>
|
2018-07-02 12:54:33 +00:00
|
|
|
</div>
|
|
|
|
<!-- End headline -->
|
|
|
|
|
2018-11-02 07:42:56 +00:00
|
|
|
<div layout="row" class="wz-margin-top-10 wz-margin-right-8 wz-margin-left-8" ng-show="ctrl.clusterError && !ctrl.load">
|
2018-10-18 14:55:23 +00:00
|
|
|
<div flex class="euiCallOut euiCallOut--warning">
|
|
|
|
<div class="euiCallOutHeader">
|
|
|
|
<svg class="euiIcon euiIcon--medium euiCallOutHeader__icon" aria-hidden="true" xmlns="http://www.w3.org/2000/svg"
|
|
|
|
xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
|
|
|
|
<defs>
|
2019-02-22 08:20:49 +00:00
|
|
|
<path id="help-a" d="M13.6 12.186l-1.357-1.358c-.025-.025-.058-.034-.084-.056.53-.794.84-1.746.84-2.773a4.977 4.977 0 0 0-.84-2.772c.026-.02.059-.03.084-.056L13.6 3.813a6.96 6.96 0 0 1 0 8.373zM8 15A6.956 6.956 0 0 1 3.814 13.6l1.358-1.358c.025-.025.034-.057.055-.084C6.02 12.688 6.974 13 8 13a4.978 4.978 0 0 0 2.773-.84c.02.026.03.058.056.083l1.357 1.358A6.956 6.956 0 0 1 8 15zm-5.601-2.813a6.963 6.963 0 0 1 0-8.373l1.359 1.358c.024.025.057.035.084.056A4.97 4.97 0 0 0 3 8c0 1.027.31 1.98.842 2.773-.027.022-.06.031-.084.056l-1.36 1.358zm5.6-.187A4 4 0 1 1 8 4a4 4 0 0 1 0 8zM8 1c1.573 0 3.019.525 4.187 1.4l-1.357 1.358c-.025.025-.035.057-.056.084A4.979 4.979 0 0 0 8 3a4.979 4.979 0 0 0-2.773.842c-.021-.027-.03-.059-.055-.084L3.814 2.4A6.957 6.957 0 0 1 8 1zm0-1a8.001 8.001 0 1 0 .003 16.002A8.001 8.001 0 0 0 8 0z">
|
2019-02-21 13:51:43 +00:00
|
|
|
</path>
|
2018-10-18 14:55:23 +00:00
|
|
|
</defs>
|
|
|
|
<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#help-a" fill-rule="evenodd"></use>
|
|
|
|
</svg>
|
2018-11-02 07:42:56 +00:00
|
|
|
<span class="euiCallOutHeader__title">{{ctrl.clusterError}}</span>
|
2018-10-18 14:55:23 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
2018-06-14 11:41:20 +00:00
|
|
|
<!-- Daemons status section -->
|
2019-03-04 16:21:07 +00:00
|
|
|
<div ng-show="!ctrl.load && !ctrl.clusterError">
|
|
|
|
<md-card flex class="wz-md-card wz-margin-bottom-25">
|
2019-03-04 16:31:58 +00:00
|
|
|
<md-card-content class="daemons-card">
|
2019-03-04 16:37:12 +00:00
|
|
|
<div ng-repeat="daemon in ctrl.daemons" class="daemon-label">
|
2019-03-04 16:31:58 +00:00
|
|
|
<p ng-class="ctrl.getDaemonStatusClass(daemon.value)" class="round daemon-bullet"></p>
|
|
|
|
<p class="daemon-name">{{daemon.key}}</p>
|
2019-03-04 16:21:07 +00:00
|
|
|
</div>
|
2018-06-14 11:41:20 +00:00
|
|
|
</md-card-content>
|
|
|
|
</md-card>
|
|
|
|
</div>
|
|
|
|
<!-- End daemons status section -->
|
2017-12-18 16:52:23 +00:00
|
|
|
|
2018-06-14 11:41:20 +00:00
|
|
|
<!-- Agents status section -->
|
2018-11-02 07:42:56 +00:00
|
|
|
<div layout="row" layout-align="start center" ng-show="!ctrl.load && !ctrl.clusterError">
|
2018-06-14 11:41:20 +00:00
|
|
|
<md-card flex class="wz-metric-color wz-md-card">
|
|
|
|
<md-card-content layout="row" class="wz-padding-metric">
|
|
|
|
<div flex class="wz-text-truncatable">Total agents:
|
2018-11-02 07:42:56 +00:00
|
|
|
<span class="wz-text-bold">{{ctrl.agentsCountTotal}}</span>
|
2018-06-14 11:41:20 +00:00
|
|
|
</div>
|
|
|
|
<div flex class="wz-text-truncatable">Active:
|
2018-11-02 07:42:56 +00:00
|
|
|
<span class="wz-text-bold">{{ctrl.agentsCountActive}}</span>
|
2018-06-14 11:41:20 +00:00
|
|
|
</div>
|
|
|
|
<div flex class="wz-text-truncatable">Disconnected:
|
2018-11-02 07:42:56 +00:00
|
|
|
<span class="wz-text-bold">{{ctrl.agentsCountDisconnected}}</span>
|
2018-06-14 11:41:20 +00:00
|
|
|
</div>
|
2018-11-02 07:42:56 +00:00
|
|
|
<div flex class="wz-text-truncatable">Never connected: <span class="wz-text-bold">{{ctrl.agentsCountNeverConnected}}</span>
|
2018-06-14 11:41:20 +00:00
|
|
|
</div>
|
|
|
|
<div flex class="wz-text-truncatable">Agents coverage:
|
2018-11-02 07:42:56 +00:00
|
|
|
<span class="wz-text-bold">{{(ctrl.agentsCoverity | number:2)}}%</span>
|
2018-06-14 11:41:20 +00:00
|
|
|
</div>
|
|
|
|
</md-card-content>
|
|
|
|
</md-card>
|
|
|
|
</div>
|
|
|
|
<!-- End agents status section -->
|
2017-12-18 16:52:23 +00:00
|
|
|
|
2018-11-02 07:42:56 +00:00
|
|
|
<div layout="row" layout-align="start stretch" layout-wrap ng-if="!ctrl.load && !ctrl.clusterError">
|
2018-06-14 11:41:20 +00:00
|
|
|
<!-- Manager information section -->
|
|
|
|
<md-card flex class="wz-md-card">
|
|
|
|
<md-card-content>
|
2018-11-02 07:42:56 +00:00
|
|
|
<i class="fa fa-fw fa-server" aria-hidden="true"></i> <span ng-if="ctrl.selectedNode" class="wz-headline-title">{{ctrl.selectedNode}}
|
2019-02-21 13:51:43 +00:00
|
|
|
information</span> <span ng-if="!ctrl.selectedNode" class="wz-headline-title">Manager
|
|
|
|
information</span>
|
2018-06-14 11:41:20 +00:00
|
|
|
<md-divider class="wz-margin-top-10"></md-divider>
|
|
|
|
<div layout="row" class="wz-padding-top-10">
|
|
|
|
<span flex="25">Version</span>
|
2019-01-30 11:18:23 +00:00
|
|
|
<span class="wz-text-right color-grey">{{ctrl.managerInfo.version ? ctrl.managerInfo.version :
|
|
|
|
'-'}}</span>
|
2018-06-14 11:41:20 +00:00
|
|
|
</div>
|
|
|
|
<div layout="row" class="wz-padding-top-10">
|
|
|
|
<span flex="25">Compilation date</span>
|
2018-11-02 07:42:56 +00:00
|
|
|
<span class="wz-text-right color-grey">{{ctrl.managerInfo.compilation_date ?
|
|
|
|
ctrl.managerInfo.compilation_date : '-'}}</span>
|
2018-06-14 11:41:20 +00:00
|
|
|
</div>
|
|
|
|
<div layout="row" class="wz-padding-top-10">
|
|
|
|
<span flex="25">Installation path</span>
|
2018-11-02 07:42:56 +00:00
|
|
|
<span class="wz-text-right color-grey">{{ctrl.managerInfo.path ? ctrl.managerInfo.path : '-'}}</span>
|
2018-06-14 11:41:20 +00:00
|
|
|
</div>
|
|
|
|
<div layout="row" class="wz-padding-top-10">
|
|
|
|
<span flex="25">Installation type</span>
|
2018-11-02 07:42:56 +00:00
|
|
|
<span class="wz-text-right color-grey">{{ctrl.managerInfo.type ? ctrl.managerInfo.type : '-'}}</span>
|
2018-06-14 11:41:20 +00:00
|
|
|
</div>
|
|
|
|
<div layout="row" class="wz-padding-top-10">
|
|
|
|
<span flex="25">Agents limit</span>
|
2019-01-30 11:18:23 +00:00
|
|
|
<span class="wz-text-right color-grey">{{ctrl.managerInfo.max_agents ? ctrl.managerInfo.max_agents
|
|
|
|
: '-'}}</span>
|
2018-06-14 11:41:20 +00:00
|
|
|
</div>
|
|
|
|
<div layout="row" class="wz-padding-top-10">
|
|
|
|
<span flex="25">OpenSSL Support</span>
|
2019-01-30 11:18:23 +00:00
|
|
|
<span class="wz-text-right color-grey">{{ctrl.managerInfo.openssl_support ?
|
|
|
|
ctrl.managerInfo.openssl_support
|
2018-10-18 14:55:23 +00:00
|
|
|
: '-'}}</span>
|
2018-06-14 11:41:20 +00:00
|
|
|
</div>
|
|
|
|
</md-card-content>
|
|
|
|
</md-card>
|
|
|
|
<!-- End manager information section -->
|
2017-11-23 10:22:27 +00:00
|
|
|
|
2018-06-14 11:41:20 +00:00
|
|
|
<!-- Last registered agent section -->
|
2018-11-02 07:42:56 +00:00
|
|
|
<md-card flex class="wz-md-card" ng-show="ctrl.agentInfo && ctrl.agentInfo.id !== '000'">
|
2018-06-14 11:41:20 +00:00
|
|
|
<md-card-content>
|
2019-02-21 13:51:43 +00:00
|
|
|
<i class="fa fa-fw fa-tv" aria-hidden="true"></i> <span class="wz-headline-title">Last registered
|
|
|
|
agent</span>
|
2018-06-14 11:41:20 +00:00
|
|
|
<md-divider class="wz-margin-top-10"></md-divider>
|
|
|
|
<div layout="row" class="wz-padding-top-10">
|
|
|
|
<span flex="25">Name</span>
|
2018-11-02 07:42:56 +00:00
|
|
|
<span class="wz-text-right color-grey">{{ctrl.agentInfo.name ? ctrl.agentInfo.name : '-'}}</span>
|
2018-06-14 11:41:20 +00:00
|
|
|
</div>
|
|
|
|
<div layout="row" class="wz-padding-top-10">
|
|
|
|
<span flex="25">ID</span>
|
2018-11-02 07:42:56 +00:00
|
|
|
<span class="wz-text-right color-grey">{{ctrl.agentInfo.id ? ctrl.agentInfo.id : '-'}}</span>
|
2018-06-14 11:41:20 +00:00
|
|
|
</div>
|
|
|
|
<div layout="row" class="wz-padding-top-10">
|
|
|
|
<span flex="25">Status</span>
|
2018-11-02 07:42:56 +00:00
|
|
|
<span class="wz-text-right color-grey">{{ctrl.agentInfo.status ? ctrl.agentInfo.status : '-'}}</span>
|
2018-06-14 11:41:20 +00:00
|
|
|
</div>
|
|
|
|
<div layout="row" class="wz-padding-top-10">
|
|
|
|
<span flex="25">IP Address</span>
|
2018-11-02 07:42:56 +00:00
|
|
|
<span class="wz-text-right color-grey">{{ctrl.agentInfo.ip ? ctrl.agentInfo.ip : '-'}}</span>
|
2018-06-14 11:41:20 +00:00
|
|
|
</div>
|
|
|
|
<div layout="row" class="wz-padding-top-10">
|
|
|
|
<span flex="25">Date add</span>
|
2018-11-02 07:42:56 +00:00
|
|
|
<span class="wz-text-right color-grey">{{ctrl.agentInfo.dateAdd ? ctrl.agentInfo.dateAdd : '-'}}</span>
|
2018-06-14 11:41:20 +00:00
|
|
|
</div>
|
|
|
|
<div layout="row" class="wz-padding-top-10">
|
|
|
|
<span flex="25">Version</span>
|
2018-11-02 07:42:56 +00:00
|
|
|
<span class="wz-text-right color-grey">{{ctrl.agentInfo.version ? ctrl.agentInfo.version : '-'}}</span>
|
2018-06-14 11:41:20 +00:00
|
|
|
</div>
|
2018-11-02 07:42:56 +00:00
|
|
|
<div layout="row" class="wz-padding-top-10" ng-if="ctrl.agentInfo.id !== '000'">
|
2018-06-14 11:41:20 +00:00
|
|
|
<span flex="25">Last keep alive</span>
|
2019-01-30 11:18:23 +00:00
|
|
|
<span class="wz-text-right color-grey">{{ctrl.agentInfo.lastKeepAlive ?
|
|
|
|
ctrl.agentInfo.lastKeepAlive : '-'}}</span>
|
2018-06-14 11:41:20 +00:00
|
|
|
</div>
|
|
|
|
<div layout="row" class="wz-padding-top-10">
|
|
|
|
<span flex="25">Operating system</span>
|
2018-11-02 07:42:56 +00:00
|
|
|
<span class="wz-text-right color-grey">{{ctrl.agentInfo.os.name ? ctrl.agentInfo.os.name +
|
|
|
|
ctrl.agentInfo.os.version : ctrl.agentInfo.os.uname ? ctrl.agentInfo.os.uname : '-'}}</span>
|
2018-06-14 11:41:20 +00:00
|
|
|
</div>
|
|
|
|
</md-card-content>
|
|
|
|
</md-card>
|
|
|
|
<!-- End last registered agent section -->
|
2017-11-21 15:26:50 +00:00
|
|
|
</div>
|
2019-03-04 16:37:12 +00:00
|
|
|
</div>
|