玩转树莓派

剖析Pi-Dashboard的机制

2020-08-26  本文已影响0人  刘小白DOER

    笔者试用了一下树莓派实验室发布的一款开源的 IoT 设备监控工具Pi Dashboard (Pi 仪表盘) ,界面简洁实用,可以查看树莓派很多状态。局部界面如下:

        作为做过前端bootstrap的小鲜肉来说,太熟悉这个风格了,情不自禁要看看到底怎么来监控树莓派的状态的,可以作为linux服务器监控的一种手段。

1、安装Pi Dashboard

    首先安装 Nginx(或 Apache)和 PHP,笔者使用的是Apache,具体安装在这两个程序可以参考我的文章-树莓派安装LAMP,部署个人网页

    命令行进入到/var/www/html目录,此目录是web服务器目录,通过GitHub 部署pi-dashboard。

cd /var/www/html

sudo git clone https://github.com/spoonysonny/pi-dashboard.git

2、浏览器访问

    浏览器输入http://ipaddress/pi-dashboard/来访问,可以查看CPU、内存、进程等实时数据。

3、源码index.php

    那这些状态参数是怎么打印显示出来的呢?笔记查看index.php后发现每个参数对应$D数组的其中一个数值,index.php文件没有数组$D的具体信息,查看开头require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'device.php');

    原来在device.php里面,那这个被调用的文件就是完成读取树莓派参数的功能。

4、核心device.php

    文件里面有数组建立的代码$D = Array();,简单看几个参数怎么赋值$D数组的。

    cpu温度赋值:(哈哈,大家可以参考我的另外文章,四种方法查看树莓派CPU温度

    if (($str = @file("/sys/class/thermal/thermal_zone0/temp")) !== false){

        $D['cpu']['temp'] = $str;

    }

    else{

        $D['cpu']['temp'] = 0;

    }

cpu频率赋值,也是读取文件内容:

if (($str = @file("/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq")) !== false){

        $D['cpu']['freq'] = $str[0];

    }

    else{

        $D['cpu']['freq'] = 0;

    }

  user等树莓派信息赋值,这个是通过函数赋值的。  

    总计一下,数组$D里面的数值是通过文件读取写入数组和php的函数赋值的。

5、改写device.php

     在文件末尾加上打印的功能,直接在命令行打印出树莓派状态,开启上帝模式,就不需要web服务器apache啦 。

echo "<pre>";

print_r($D);

echo "<pre>";

    添加后,修改执行权限,chmod +x device.php。

    在命令行输入/usr/bin/php device.php,执行代码。

  代码是按格式打印出数组$D,看看局部打印效果:

    当然如果要更加好看简便,只能一个个echo数组$D里面的参数了。比如:echo "memory_total:". $D['mem']['total']."\n";更加一目了然。

 6、展望一下

    选择有很多linux服务器,我要用这样的方法    来监控,该怎么实现呢?我需要一个树莓派做监控服务器,上面部署监控主页面。

    界面左侧可以通过列表IP显示所有服务器,点击哪个就显示哪个服务器IP的dashboard,主界面还要显示所有服务器的主要状态吧,这就需要统计服务器的状态并统一显示在主界面上。那可以在各个服务器上面的index.php里面将主要参数插入到树莓派监控服务器的数据库,树莓派监控服务器再统一调用显示。

上一篇 下一篇

猜你喜欢

热点阅读