witersen
3 years ago
9 changed files with 18 additions and 692 deletions
@ -1,319 +0,0 @@ |
|||||||
<template> |
|
||||||
<div> |
|
||||||
<Card :bordered="false" :dis-hover="true"> |
|
||||||
<p slot="title"> |
|
||||||
<Icon type="md-bulb" /> |
|
||||||
{{ systemBrif.os }} |
|
||||||
</p> |
|
||||||
<div> |
|
||||||
<Row> |
|
||||||
<Col span="4"> |
|
||||||
<div class="statusTop">负载状态</div> |
|
||||||
<Tooltip placement="bottom" max-width="200"> |
|
||||||
<Circle |
|
||||||
:percent="statusInfo.load.percent" |
|
||||||
dashboard |
|
||||||
:size="100" |
|
||||||
:stroke-color="statusInfo.load.color" |
|
||||||
class="statusCircle" |
|
||||||
> |
|
||||||
<span class="demo-circle-inner" style="font-size: 24px" |
|
||||||
>{{ statusInfo.load.percent }}%</span |
|
||||||
> |
|
||||||
</Circle> |
|
||||||
<div slot="content"> |
|
||||||
<p>最近1分钟平均负载:{{ statusInfo.load.cpuLoad1Min }}</p> |
|
||||||
<p>最近5分钟平均负载:{{ statusInfo.load.cpuLoad5Min }}</p> |
|
||||||
<p>最近15分钟平均负载:{{ statusInfo.load.cpuLoad15Min }}</p> |
|
||||||
</div> |
|
||||||
</Tooltip> |
|
||||||
<div class="statusBottom">{{ statusInfo.load.title }}</div> |
|
||||||
</Col> |
|
||||||
<Col span="4"> |
|
||||||
<div class="statusTop">CPU使用率</div> |
|
||||||
<Tooltip placement="bottom" max-width="200"> |
|
||||||
<Circle |
|
||||||
:percent="statusInfo.cpu.percent" |
|
||||||
dashboard |
|
||||||
:size="100" |
|
||||||
:stroke-color="statusInfo.cpu.color" |
|
||||||
class="statusCircle" |
|
||||||
> |
|
||||||
<span class="demo-circle-inner" style="font-size: 24px" |
|
||||||
>{{ statusInfo.cpu.percent }}%</span |
|
||||||
> |
|
||||||
</Circle> |
|
||||||
<div slot="content"> |
|
||||||
<p v-for="item in statusInfo.cpu.cpu" :key="item">{{ item }}</p> |
|
||||||
<p>物理CPU个数:{{ statusInfo.cpu.cpuPhysical }}</p> |
|
||||||
<p>物理CPU的总核心数:{{ statusInfo.cpu.cpuCore }}</p> |
|
||||||
<p>物理CPU的线程总数:{{ statusInfo.cpu.cpuProcessor }}</p> |
|
||||||
</div> |
|
||||||
</Tooltip> |
|
||||||
<div class="statusBottom">{{ statusInfo.cpu.cpuCore }}核心</div> |
|
||||||
</Col> |
|
||||||
<Col span="4"> |
|
||||||
<div class="statusTop">内存使用率</div> |
|
||||||
<Circle |
|
||||||
:percent="statusInfo.mem.percent" |
|
||||||
dashboard |
|
||||||
:size="100" |
|
||||||
:stroke-color="statusInfo.mem.color" |
|
||||||
class="statusCircle" |
|
||||||
> |
|
||||||
<span class="demo-circle-inner" style="font-size: 24px" |
|
||||||
>{{ statusInfo.mem.percent }}%</span |
|
||||||
> |
|
||||||
</Circle> |
|
||||||
<div class="statusBottom"> |
|
||||||
{{ statusInfo.mem.memUsed }} / {{ statusInfo.mem.memTotal }}(MB) |
|
||||||
</div> |
|
||||||
</Col> |
|
||||||
<Col span="4" v-for="(item, index) in diskList" :key="index"> |
|
||||||
<div class="statusTop">{{ item.mountedOn }}</div> |
|
||||||
<Tooltip placement="bottom" max-width="200"> |
|
||||||
<div slot="content"> |
|
||||||
<p>文件系统:{{ item.fileSystem }}</p> |
|
||||||
<p>容量:{{ item.size }}</p> |
|
||||||
<p>已使用:{{ item.used }}</p> |
|
||||||
<p>可使用:{{ item.avail }}</p> |
|
||||||
<p>使用率:{{ item.percent }}%</p> |
|
||||||
<p>挂载点:{{ item.mountedOn }}</p> |
|
||||||
</div> |
|
||||||
<Circle |
|
||||||
:percent="item.percent" |
|
||||||
dashboard |
|
||||||
:size="100" |
|
||||||
:stroke-color="item.color" |
|
||||||
class="statusCircle" |
|
||||||
> |
|
||||||
<span class="demo-circle-inner" style="font-size: 24px" |
|
||||||
>{{ item.percent }}%</span |
|
||||||
> |
|
||||||
</Circle> |
|
||||||
</Tooltip> |
|
||||||
<div class="statusBottom"> |
|
||||||
{{ item.used }} / |
|
||||||
{{ item.size }} |
|
||||||
</div> |
|
||||||
</Col> |
|
||||||
</Row> |
|
||||||
</div> |
|
||||||
</Card> |
|
||||||
<Card :bordered="false" :dis-hover="true" style="margin-top: 10px"> |
|
||||||
<p slot="title"> |
|
||||||
<Icon type="ios-options" /> |
|
||||||
统计 |
|
||||||
</p> |
|
||||||
<div> |
|
||||||
<Row :gutter="16"> |
|
||||||
<Col span="4"> |
|
||||||
<Card :dis-hover="true"> |
|
||||||
<div style="text-align: center"> |
|
||||||
<p>仓库占用</p> |
|
||||||
<h2 style="color: #28bcfe">{{ systemBrif.repSize }}</h2> |
|
||||||
</div> |
|
||||||
</Card> |
|
||||||
</Col> |
|
||||||
<Col span="4"> |
|
||||||
<Card :dis-hover="true"> |
|
||||||
<div style="text-align: center"> |
|
||||||
<p>备份占用</p> |
|
||||||
<h2 style="color: #28bcfe">{{ systemBrif.backupSize }}</h2> |
|
||||||
</div> |
|
||||||
</Card> |
|
||||||
</Col> |
|
||||||
<Col span="4"> |
|
||||||
<Card :dis-hover="true"> |
|
||||||
<div style="text-align: center"> |
|
||||||
<p>SVN仓库</p> |
|
||||||
<h2 style="color: #28bcfe">{{ systemBrif.repCount }}</h2> |
|
||||||
</div> |
|
||||||
</Card> |
|
||||||
</Col> |
|
||||||
<Col span="4"> |
|
||||||
<Card :dis-hover="true"> |
|
||||||
<div style="text-align: center"> |
|
||||||
<p>SVN用户</p> |
|
||||||
<h2 style="color: #28bcfe">{{ systemBrif.repUser }}</h2> |
|
||||||
</div> |
|
||||||
</Card> |
|
||||||
</Col> |
|
||||||
<Col span="4"> |
|
||||||
<Card :dis-hover="true"> |
|
||||||
<div style="text-align: center"> |
|
||||||
<p>SVN分组</p> |
|
||||||
<h2 style="color: #28bcfe">{{ systemBrif.repGroup }}</h2> |
|
||||||
</div> |
|
||||||
</Card> |
|
||||||
</Col> |
|
||||||
<Col span="4"> |
|
||||||
<Card :dis-hover="true"> |
|
||||||
<div style="text-align: center"> |
|
||||||
<p>运行日志/条</p> |
|
||||||
<h2 style="color: #28bcfe">{{ systemBrif.logCount }}</h2> |
|
||||||
</div> |
|
||||||
</Card> |
|
||||||
</Col> |
|
||||||
</Row> |
|
||||||
</div> |
|
||||||
</Card> |
|
||||||
</div> |
|
||||||
</template> |
|
||||||
|
|
||||||
<script> |
|
||||||
export default { |
|
||||||
data() { |
|
||||||
return { |
|
||||||
/** |
|
||||||
* 硬盘信息 |
|
||||||
*/ |
|
||||||
diskList: [], |
|
||||||
/** |
|
||||||
* 状态信息 |
|
||||||
*/ |
|
||||||
statusInfo: { |
|
||||||
load: { |
|
||||||
cpuLoad15Min: 0.22, |
|
||||||
cpuLoad5Min: 0.28, |
|
||||||
cpuLoad1Min: 0.32, |
|
||||||
percent: 16, |
|
||||||
color: "#28bcfe", |
|
||||||
}, |
|
||||||
cpu: { |
|
||||||
percent: 28.2, |
|
||||||
cpu: ["Intel(R) Xeon(R) Platinum 8255C CPU @ 2.50GHz"], |
|
||||||
cpuPhysical: 1, |
|
||||||
cpuPhysicalCore: 1, |
|
||||||
cpuCore: 1, |
|
||||||
cpuProcessor: 1, |
|
||||||
color: "#28bcfe", |
|
||||||
}, |
|
||||||
mem: { |
|
||||||
memTotal: 1838, |
|
||||||
memUsed: 975, |
|
||||||
memFree: 863, |
|
||||||
percent: 53, |
|
||||||
color: "#28bcfe", |
|
||||||
}, |
|
||||||
}, |
|
||||||
/** |
|
||||||
* 统计信息 |
|
||||||
*/ |
|
||||||
systemBrif: { |
|
||||||
os: "", |
|
||||||
repSize: 0, |
|
||||||
repCount: 0, |
|
||||||
repUser: 0, |
|
||||||
repGroup: 0, |
|
||||||
logCount: 0, |
|
||||||
backupSize: 0, |
|
||||||
}, |
|
||||||
}; |
|
||||||
}, |
|
||||||
computed: {}, |
|
||||||
created() {}, |
|
||||||
mounted() { |
|
||||||
var that = this; |
|
||||||
this.GetDisk(); |
|
||||||
this.GetSystemStatus(); |
|
||||||
this.GetSystemAnalysis(); |
|
||||||
//设置定时器 |
|
||||||
that.timer = window.setInterval(() => { |
|
||||||
setTimeout(that.GetSystemStatus(), 0); |
|
||||||
}, 3000); |
|
||||||
//离开页面清除定时器 |
|
||||||
that.$once("hook:beforeDestroy", () => { |
|
||||||
clearInterval(that.timer); |
|
||||||
}); |
|
||||||
}, |
|
||||||
methods: { |
|
||||||
/** |
|
||||||
* 获取磁盘 |
|
||||||
*/ |
|
||||||
GetDisk() { |
|
||||||
var that = this; |
|
||||||
var data = {}; |
|
||||||
that.$axios |
|
||||||
.post("/api.php?c=Statistics&a=GetDisk&t=web", data) |
|
||||||
.then(function (response) { |
|
||||||
var result = response.data; |
|
||||||
if (result.status == 1) { |
|
||||||
// that.$Message.success(result.message); |
|
||||||
that.diskList = result.data; |
|
||||||
} else { |
|
||||||
that.$Message.error(result.message); |
|
||||||
} |
|
||||||
}) |
|
||||||
.catch(function (error) { |
|
||||||
console.log(error); |
|
||||||
that.$Message.error("出错了 请联系管理员!"); |
|
||||||
}); |
|
||||||
}, |
|
||||||
/** |
|
||||||
* 获取状态 |
|
||||||
*/ |
|
||||||
GetSystemStatus() { |
|
||||||
var that = this; |
|
||||||
var data = {}; |
|
||||||
that.$axios |
|
||||||
.post("/api.php?c=Statistics&a=GetSystemStatus&t=web", data) |
|
||||||
.then(function (response) { |
|
||||||
var result = response.data; |
|
||||||
if (result.status == 1) { |
|
||||||
// that.$Message.success(result.message); |
|
||||||
that.statusInfo = result.data; |
|
||||||
} else { |
|
||||||
that.$Message.error(result.message); |
|
||||||
} |
|
||||||
}) |
|
||||||
.catch(function (error) { |
|
||||||
console.log(error); |
|
||||||
that.$Message.error("出错了 请联系管理员!"); |
|
||||||
}); |
|
||||||
}, |
|
||||||
/** |
|
||||||
* 获取统计 |
|
||||||
*/ |
|
||||||
GetSystemAnalysis() { |
|
||||||
var that = this; |
|
||||||
var data = {}; |
|
||||||
that.$axios |
|
||||||
.post("/api.php?c=Statistics&a=GetSystemAnalysis&t=web", data) |
|
||||||
.then(function (response) { |
|
||||||
var result = response.data; |
|
||||||
if (result.status == 1) { |
|
||||||
// that.$Message.success(result.message); |
|
||||||
that.systemBrif = result.data; |
|
||||||
} else { |
|
||||||
that.$Message.error(result.message); |
|
||||||
} |
|
||||||
}) |
|
||||||
.catch(function (error) { |
|
||||||
console.log(error); |
|
||||||
that.$Message.error("出错了 请联系管理员!"); |
|
||||||
}); |
|
||||||
}, |
|
||||||
}, |
|
||||||
}; |
|
||||||
</script> |
|
||||||
|
|
||||||
<style> |
|
||||||
.statusTop { |
|
||||||
width: 140px; |
|
||||||
text-align: center; |
|
||||||
margin-bottom: 5px; |
|
||||||
|
|
||||||
white-space: nowrap; |
|
||||||
overflow: hidden; |
|
||||||
text-overflow: ellipsis; |
|
||||||
} |
|
||||||
.statusCircle { |
|
||||||
margin-left: 20px; |
|
||||||
} |
|
||||||
.statusBottom { |
|
||||||
width: 140px; |
|
||||||
text-align: center; |
|
||||||
margin-bottom: 15px; |
|
||||||
} |
|
||||||
</style> |
|
@ -1,70 +0,0 @@ |
|||||||
<?php |
|
||||||
/* |
|
||||||
* @Author: witersen |
|
||||||
* @Date: 2022-04-24 23:37:05 |
|
||||||
* @LastEditors: witersen |
|
||||||
* @LastEditTime: 2022-05-07 14:00:06 |
|
||||||
* @Description: QQ:1801168257 |
|
||||||
*/ |
|
||||||
|
|
||||||
namespace app\controller; |
|
||||||
|
|
||||||
use app\service\Statistics as ServiceStatistics; |
|
||||||
|
|
||||||
class Statistics extends Base |
|
||||||
{ |
|
||||||
/** |
|
||||||
* 服务层对象 |
|
||||||
* |
|
||||||
* @var object |
|
||||||
*/ |
|
||||||
private $ServiceStatistics; |
|
||||||
|
|
||||||
function __construct() |
|
||||||
{ |
|
||||||
parent::__construct(); |
|
||||||
|
|
||||||
$this->ServiceStatistics = new ServiceStatistics(); |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* 获取状态 |
|
||||||
* |
|
||||||
* 负载状态 |
|
||||||
* CPU使用率 |
|
||||||
* 内存使用率 |
|
||||||
*/ |
|
||||||
public function GetSystemStatus() |
|
||||||
{ |
|
||||||
$result = $this->ServiceStatistics->GetSystemStatus(); |
|
||||||
json2($result); |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* 获取硬盘 |
|
||||||
* |
|
||||||
* 获取硬盘数量和每个硬盘的详细信息 |
|
||||||
*/ |
|
||||||
public function GetDisk() |
|
||||||
{ |
|
||||||
$result = $this->ServiceStatistics->GetDisk(); |
|
||||||
json2($result); |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* 获取统计 |
|
||||||
* |
|
||||||
* 操作系统类型 |
|
||||||
* 仓库占用体积 |
|
||||||
* SVN仓库数量 |
|
||||||
* SVN用户数量 |
|
||||||
* SVN分组数量 |
|
||||||
* 计划任务数量 |
|
||||||
* 运行日志数量 |
|
||||||
*/ |
|
||||||
public function GetSystemAnalysis() |
|
||||||
{ |
|
||||||
$result = $this->ServiceStatistics->GetSystemAnalysis(); |
|
||||||
json2($result); |
|
||||||
} |
|
||||||
} |
|
@ -1,260 +0,0 @@ |
|||||||
<?php |
|
||||||
/* |
|
||||||
* @Author: witersen |
|
||||||
* @Date: 2022-04-24 23:37:05 |
|
||||||
* @LastEditors: witersen |
|
||||||
* @LastEditTime: 2022-05-07 01:45:39 |
|
||||||
* @Description: QQ:1801168257 |
|
||||||
*/ |
|
||||||
|
|
||||||
namespace app\service; |
|
||||||
|
|
||||||
class Statistics extends Base |
|
||||||
{ |
|
||||||
function __construct() |
|
||||||
{ |
|
||||||
parent::__construct(); |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* 获取状态 |
|
||||||
* |
|
||||||
* 负载状态 |
|
||||||
* CPU使用率 |
|
||||||
* 内存使用率 |
|
||||||
*/ |
|
||||||
public function GetSystemStatus() |
|
||||||
{ |
|
||||||
/** |
|
||||||
* ----------负载计算开始---------- |
|
||||||
*/ |
|
||||||
$laodavg = FunShellExec("cat /proc/loadavg | awk '{print $1,$2,$3}'"); |
|
||||||
$laodavg = $laodavg['result']; |
|
||||||
$laodavgArray = explode(' ', $laodavg); |
|
||||||
|
|
||||||
//获取CPU15分钟前到现在的负载平均值 |
|
||||||
$cpuLoad15Min = (float)trim($laodavgArray[2]); |
|
||||||
|
|
||||||
//获取CPU5分钟前到现在的负载平均值 |
|
||||||
$cpuLoad5Min = (float)trim($laodavgArray[1]); |
|
||||||
|
|
||||||
//获取CPU1分钟前到现在的负载平均值 |
|
||||||
$cpuLoad1Min = (float)trim($laodavgArray[0]); |
|
||||||
|
|
||||||
//获取cpu总核数 |
|
||||||
$cpuCount = FunShellExec('grep -c "model name" /proc/cpuinfo'); |
|
||||||
$cpuCount = $cpuCount['result']; |
|
||||||
$cpuCount = (int)trim($cpuCount); |
|
||||||
|
|
||||||
//一分钟的平均负载 / (cpu总核数 * 2),超过100则为100 不超100为真实值取整 |
|
||||||
$percent = round($cpuLoad1Min / ($cpuCount * 2) * 100, 1); |
|
||||||
if ($percent > 100) { |
|
||||||
$percent = 100; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* ----------负载计算结束---------- |
|
||||||
*/ |
|
||||||
$data['load'] = [ |
|
||||||
'cpuLoad15Min' => $cpuLoad15Min, |
|
||||||
'cpuLoad5Min' => $cpuLoad5Min, |
|
||||||
'cpuLoad1Min' => $cpuLoad1Min, |
|
||||||
'percent' => $percent, |
|
||||||
'color' => FunGetColor($percent)['color'], |
|
||||||
'title' => FunGetColor($percent)['title'] |
|
||||||
]; |
|
||||||
|
|
||||||
/** |
|
||||||
* ----------cpu计算开始---------- |
|
||||||
*/ |
|
||||||
/** |
|
||||||
* cpu使用率 |
|
||||||
* |
|
||||||
* %Cpu(s): 0.0 us, 3.2 sy, 0.0 ni, 96.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st |
|
||||||
* |
|
||||||
* us user CPU time 用户空间占用CPU百分比 |
|
||||||
* sy system CPU time 内核空间占用CPU百分比 |
|
||||||
* ni nice CPU 用户进程空间内改变过优先级的进程占用CPU百分比 |
|
||||||
* id idle 空闲CPU百分比 |
|
||||||
* wa iowait 等待输入输出的CPU时间百分比 |
|
||||||
* hi hardware 硬件中断 |
|
||||||
* si software 软件中断 |
|
||||||
* st steal 实时 |
|
||||||
*/ |
|
||||||
$topResult = FunShellExec('top -b -n 1 | grep Cpu'); |
|
||||||
$topResult = $topResult['result']; |
|
||||||
preg_match('/ni,(.*?)id/', $topResult, $matches); |
|
||||||
$id = 100 - (float)trim($matches[1]); |
|
||||||
|
|
||||||
//cpu型号 |
|
||||||
$cpuModelArray = []; |
|
||||||
$cpuModelName = FunShellExec("cat /proc/cpuinfo | grep 'model name' | uniq"); |
|
||||||
$cpuModelName = $cpuModelName['result']; |
|
||||||
$explodeArray = explode("\n", trim($cpuModelName)); |
|
||||||
foreach ($explodeArray as $value) { |
|
||||||
if (trim($value) != '') { |
|
||||||
$tempArray = explode(':', $value); |
|
||||||
array_push($cpuModelArray, trim($tempArray[1])); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
//物理cpu个数 |
|
||||||
$cpuPhysical = FunShellExec("cat /proc/cpuinfo | grep 'physical id' | sort -u | wc -l"); |
|
||||||
$cpuPhysical = $cpuPhysical['result']; |
|
||||||
$cpuPhysical = (int)trim($cpuPhysical); |
|
||||||
|
|
||||||
//每个物理cpu的物理核心数 |
|
||||||
$cpuPhysicalCore = FunShellExec("cat /proc/cpuinfo | grep 'cpu cores' | wc -l"); |
|
||||||
$cpuPhysicalCore = $cpuPhysicalCore['result']; |
|
||||||
$cpuPhysicalCore = (int)trim($cpuPhysicalCore); |
|
||||||
|
|
||||||
//总物理核心数 = 物理cpu个数 * 每个物理cpu的物理核心数(每个物理cpu的物理核心数都一样吗?) |
|
||||||
$cpuCore = $cpuPhysical * $cpuPhysicalCore; |
|
||||||
|
|
||||||
//逻辑核心总数(线程总数) |
|
||||||
$cpuProcessor = FunShellExec("cat /proc/cpuinfo | grep 'processor' | wc -l"); |
|
||||||
$cpuProcessor = $cpuProcessor['result']; |
|
||||||
$cpuProcessor = (int)trim($cpuProcessor); |
|
||||||
|
|
||||||
/** |
|
||||||
* ----------cpu计算结束---------- |
|
||||||
*/ |
|
||||||
$data['cpu'] = [ |
|
||||||
'percent' => round($id, 1), |
|
||||||
'cpu' => $cpuModelArray, |
|
||||||
'cpuPhysical' => $cpuPhysical, |
|
||||||
'cpuPhysicalCore' => $cpuPhysicalCore, |
|
||||||
'cpuCore' => $cpuCore, |
|
||||||
'cpuProcessor' => $cpuProcessor, |
|
||||||
'color' => FunGetColor($id)['color'] |
|
||||||
]; |
|
||||||
|
|
||||||
/** |
|
||||||
* ----------内存计算开始---------- |
|
||||||
*/ |
|
||||||
/** |
|
||||||
* MemTotal 总内存 |
|
||||||
* MemFree 空闲内存 |
|
||||||
* MemAvailable 可用内存(MemFree + 可回收的内存),系统中有些内存虽然已被使用但是可以回收,比如cache、buffer、slab都有一部分可以回收 |
|
||||||
*/ |
|
||||||
//物理内存总量 |
|
||||||
$memTotal = FunShellExec("cat /proc/meminfo | grep 'MemTotal' | awk '{print $2}'"); |
|
||||||
$memTotal = $memTotal['result']; |
|
||||||
$memTotal = (int)trim($memTotal); |
|
||||||
|
|
||||||
//操作系统可用内存总量(没有使用空闲内存) |
|
||||||
$memFree = FunShellExec("cat /proc/meminfo | grep 'MemAvailable' | awk '{print $2}'"); |
|
||||||
$memFree = $memFree['result']; |
|
||||||
$memFree = (int)trim($memFree); |
|
||||||
|
|
||||||
//操作系统已使用内存总量 |
|
||||||
$memUsed = $memTotal - $memFree; |
|
||||||
|
|
||||||
//内存使用率 |
|
||||||
$percent = round($memUsed / $memTotal * 100, 1); |
|
||||||
|
|
||||||
/** |
|
||||||
* ----------内存计算结束---------- |
|
||||||
*/ |
|
||||||
$data['mem'] = [ |
|
||||||
'memTotal' => round($memTotal / 1024), |
|
||||||
'memUsed' => round($memUsed / 1024), |
|
||||||
'memFree' => round($memFree / 1024), |
|
||||||
'percent' => $percent, |
|
||||||
'color' => FunGetColor($percent)['color'] |
|
||||||
]; |
|
||||||
|
|
||||||
return message(200, 1, '成功', $data); |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* 获取硬盘 |
|
||||||
* |
|
||||||
* 获取硬盘数量和每个硬盘的详细信息 |
|
||||||
*/ |
|
||||||
public function GetDisk() |
|
||||||
{ |
|
||||||
$rs = FunShellExec('df -lh | grep -E "^(/)"'); |
|
||||||
$rs = $rs['result']; |
|
||||||
|
|
||||||
//将多个连续的空格换为一个 |
|
||||||
$result = preg_replace("/\s{2,}/", ' ', $rs); |
|
||||||
|
|
||||||
//多个硬盘 |
|
||||||
$diskArray = explode("\n", $result); |
|
||||||
|
|
||||||
$data = []; |
|
||||||
|
|
||||||
//处理 |
|
||||||
foreach ($diskArray as $value) { |
|
||||||
if (trim($value) != '') { |
|
||||||
$diskInfo = explode(" ", $value); |
|
||||||
array_push($data, [ |
|
||||||
'fileSystem' => $diskInfo[0], |
|
||||||
'size' => $diskInfo[1], |
|
||||||
'used' => $diskInfo[2], |
|
||||||
'avail' => $diskInfo[3], |
|
||||||
'percent' => (int)str_replace('%', '', $diskInfo[4]), |
|
||||||
'mountedOn' => $diskInfo[5], |
|
||||||
'color' => FunGetColor((int)str_replace('%', '', $diskInfo[4]))['color'] |
|
||||||
]); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
return message(200, 1, '成功', $data); |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* 获取统计 |
|
||||||
* |
|
||||||
* 操作系统类型 |
|
||||||
* 仓库占用体积 |
|
||||||
* SVN仓库数量 |
|
||||||
* SVN用户数量 |
|
||||||
* SVN分组数量 |
|
||||||
* 计划任务数量 |
|
||||||
* 运行日志数量 |
|
||||||
*/ |
|
||||||
public function GetSystemAnalysis() |
|
||||||
{ |
|
||||||
//操作系统类型和版本 |
|
||||||
$os = FunShellExec("cat /etc/redhat-release"); |
|
||||||
$os = $os['result']; |
|
||||||
|
|
||||||
//仓库占用体积 |
|
||||||
$repSize = FunFormatSize(FunGetDirSizeDu($this->config_svn['rep_base_path'])); |
|
||||||
|
|
||||||
//备份占用体积 |
|
||||||
$backupSize = FunFormatSize(FunGetDirSizeDu($this->config_svn['backup_base_path'])); |
|
||||||
|
|
||||||
//SVN仓库数量 |
|
||||||
$repCount = count($this->SVNAdminRep->GetSimpleRepList()); |
|
||||||
|
|
||||||
//SVN用户数量 |
|
||||||
$userCount = $this->SVNAdminUser->GetSvnUserList($this->passwdContent); |
|
||||||
if ($userCount === '0') { |
|
||||||
return message(200, 0, '文件格式错误(不存在[users]标识)'); |
|
||||||
} |
|
||||||
$userCount = count($userCount); |
|
||||||
|
|
||||||
//SVN分组数量 |
|
||||||
$groupCount = $this->SVNAdminGroup->GetSvnGroupList($this->authzContent); |
|
||||||
if ($userCount === '0') { |
|
||||||
return message(200, 0, '文件格式错误(不存在[groups]标识)'); |
|
||||||
} |
|
||||||
$groupCount = count($groupCount); |
|
||||||
|
|
||||||
//运行日志数量 |
|
||||||
$logCount = $this->database->count('logs', ['log_id[>]' => 0]); |
|
||||||
|
|
||||||
return message(200, 1, '成功', [ |
|
||||||
'os' => trim($os), |
|
||||||
'repSize' => $repSize, |
|
||||||
'repCount' => $repCount, |
|
||||||
'repUser' => $userCount, |
|
||||||
'repGroup' => $groupCount, |
|
||||||
'logCount' => $logCount, |
|
||||||
'backupSize' => $backupSize |
|
||||||
]); |
|
||||||
} |
|
||||||
} |
|
Loading…
Reference in new issue