在网站运维中常常需要知道服务器运行情况,以及各方面指标是否存在异常,以便第一时间进行处理。虽然现在阿里云在这方面已经有了很完善的解决方案。不过,最近看到一个名叫“server酱”专做消息推送的工具。按耐不住自己的好奇心,又去尝试了下~[呲牙]
Server酱是什么
「Server酱」,英文名「ServerChan」,是从服务器、路由器等设备上推消息到手机的工具。这是来自官方的介绍。
Server酱如何开通
登录Server酱网站,用微信扫描登录,然后设置消息通道,即可。全过程仅仅需要1分钟。
Server酱支持哪些渠道
新版Server酱,是一个支持多消息通道、并对此进行统一管理的平台。
通过它,可以实现以下消息通道的推送:
- 企业微信应用消息:无需安装企业微信客户端,可在微信中直接收到消息,内容显示文
- 手机客户端:Andorid有官方测试版,iOS 可用 Bark 通道
- 群机器人:企业微信、钉钉、飞书群
- 邮件和短信:通过自定义通道调用云服务实现
- 微信服务号和测试号:依赖模板消息接口(微信可能会在某天下线该接口,建议配置多个通道随时切换)
关于上述Server酱所支持渠道,这个是我为什么尝试选择使用它的原因。可以通过自己实际需要去定制化的推送到不同终端,并且设置不繁琐,方便快捷。
好了,接下来就看下实践效果。
实践
案例:实时获取服务器cpu、内存、磁盘可用空间使用情况,并通过server酱推送。
- 首先,定义获取cpu、内存、磁盘可用空间使用情况的方法
function get_used_status(){
$fp = popen('top -b -n 2 | grep -E "^(Cpu|Mem|Tasks)"',"r");//获取某一时刻系统cpu和内存使用情况
$rs = "";
while(!feof($fp)){
$rs .= fread($fp,1024);
}
pclose($fp);
$sys_info = explode("\n",$rs);
$task_info = explode(",",$sys_info[3]);//进程 数组
$cpu_info = explode(",",$sys_info[4]); //CPU占有量 数组
$mem_info = explode(",",$sys_info[5]); //内存占有量 数组
//正在运行的进程数
$task_running = trim(trim($task_info[1],'running'));
//CPU占有量
$cpu_usage = trim(trim($cpu_info[0],'Cpu(s): '),'%us'); //百分比
//内存占有量
$mem_total = trim(trim($mem_info[0],'Mem: '),'k total');
$mem_used = trim($mem_info[1],'k used');
$mem_usage = round(100*intval($mem_used)/intval($mem_total),2); //百分比
$fp = popen('df -lh | grep -E "^(/)"',"r");
$rs = fread($fp,1024);
pclose($fp);
$rs = preg_replace("/\s{2,}/",' ',$rs); //把多个空格换成 “_”
$hd = explode(" ",$rs);
$hd_avail = trim($hd[3],'G'); //磁盘可用空间大小 单位G
$hd_usage = trim($hd[4],'%'); //挂载点 百分比
//print_r($hd);
//检测时间
$fp = popen("date +\"%Y-%m-%d %H:%M\"","r");
$rs = fread($fp,1024);
pclose($fp);
$detection_time = trim($rs);
return array('cpu_usage'=>$cpu_usage,'mem_usage'=>$mem_usage,'hd_avail'=>$hd_avail,'hd_usage'=>$hd_usage,'task_running'=>$task_running,'detection_time'=>$detection_time);
}
2.然后,定义server酱推送方法
function sct_send( $text , $desp = '' , $key = '[SENDKEY]' )
{
$postdata = array( 'title' => $text, 'desp' => $desp );
return curl('https://sctapi.ftqq.com/'.$key.'.send',$postdata);
}
3.最后,调用并获取服务器基本信息,并推送消息。
$linux_info = get_used_status();
$title = '服务器使用情况';
$desc = 'CPU占用量:'.$linux_info['cpu_usage'].'%,内存占用量:'.$linux_info['mem_usage'].'%,磁盘可用空间大小:'.$linux_info['hd_usage'].'G';
$desc .= '---- 检测时间:'.$linux_info['detection_time'];
sct_send($title,$desc,$key); //此处的key即为 在server酱上获取到的key
4.最终推送效果图:
总结
server酱虽然比不上一些大而全的解决方案,但是它在消息推送处理方面,一直做的很专注。效果也确实很明显。所以,如果是和我一样有好奇心,并且爱动手的还不快来,实际操作下~
本文暂时没有评论,来添加一个吧(●'◡'●)