[linux]在Yeelink云端架设笔记本运行监视器

Photobucket

发现最近结合 Raspberry Pi“树莓派”Yeelink的项目越来越多啦。认识@Yeelink姜工 也有一阵子,一直感觉没有很好的机会来体验Yeelink。一方面,这些数据的采集最好要经历较长一段时间看得出曲线趋势才比较有意思,而手边不管是Arduino还是RPi还是以开发学习为目的,把它们直接固定下来开始在户外风吹日晒地采集数据,还是有点舍不得;另一方面,想要真正得到精确的数据,还是有不少东西需要学习,元件需要采购。

脑子一转,为什么不直接上传自己本子的数据呢?一方面,硬件方面没有投入,用的就是现成的电脑,直接利用操作系统以及板载的传感器获取数据。因为都是在用 Ubuntu Linux 嘛,现有大多数的Yeelink相关教程,尤其是面向RPi的教程,对于其在PC上的应用还是很有参考意义。As for windows, I am not really care…

目前在我本子的Yeelink页面上已经记录了4项数据:分别是CPU两个核心的温度(i3为硬双核、软4核),内存占用和CPU使用率。分别通过

$ sensors
$ free -m
$ iostat

这三个命令来获取,配合正则表达式取值。其中sensors命令来自lm-sensors安装包,iostat来自sysstat安装包,可以分别通过apt-get来安装。

取值成功以后,通过crontab实现定时运行,并上传数据到Yeelink。具体的上传脚本如下:

#!/bin/sh
# File path: ~/sh/laptop_sensors.sh
# author: Weihong Guan (@aGuegu) 2013-01-16
# replace  with your application

apikey=
url_core0=http://api.yeelink.net/v1.0/device//sensor//datapoints 
url_core1=http://api.yeelink.net/v1.0/device//sensor//datapoints
url_mem=http://api.yeelink.net/v1.0/device//sensor//datapoints
url_cpu=http://api.yeelink.net/v1.0/device//sensor//datapoints

sensors_result=$(sensors)
tmp_core0=$(echo "$sensors_result" | grep "Core 0" | egrep "[-]?[[:digit:]]+\.[[:digit:]]" -o | head -n 1)
tmp_core1=$(echo "$sensors_result" | grep "Core 1" | egrep "[-]?[[:digit:]]+\.[[:digit:]]" -o | head -n 1)

mem_used=$(free -m | grep "Mem" | egrep "[[:digit:]]+" -o | head -n 2 | tail -n 1)
cpu_load=$(iostat -c | tail -n 2 | egrep "[[:digit:].]+" -o | head -n 1)

echo $tmp_core0 
echo $tmp_core1

curl -d "{\"value\":$tmp_core0}" -H "U-ApiKey: $apikey" $url_core0 
curl -d "{\"value\":$tmp_core1}" -H "U-ApiKey: $apikey" $url_core1 
curl -d "{\"value\":$mem_used}" -H "U-ApiKey: $apikey" $url_mem 
curl -d "{\"value\":$cpu_load}" -H "U-ApiKey: $apikey" $url_cpu 

exit 0

根据自己的实际,替换脚本中<>的内容,就可以使用了。然后通过

crontab -e

内部的编辑就是这样:
Photobucket

crontab可以按照分、时、日、月、星期来指定脚本的运行日期,相应项目设置为”*”则表示不设置,即任意都行。加上“/n”则表示每n个单位运行。虽然其控制不能到秒,但是可以使用一点技巧,在每分钟执行的脚本里面将相关指令用delay设置间隔运行多次,以达到每隔数秒运行一次的效果。crontab会直接以root身份来运行脚本,如果脚本没有可执行权限的话,就通过 source 来调用就是。

具体的操作可以参考,不再复述:
5分钟用树莓派搭建图像监控
20 Linux System Monitoring Tools Every SysAdmin Should Know
Linux Read CPU Temperature Sensor Chip Data

本子的温度传感器有点少,如果是台式机的话,应该通过lm-sensors可以获取更多数据,包括CPU风扇转速等等。按照类似的思路,可以在毫无额外设备(Arduino,RPi,温度传感器等等)的情况下,直接监控系统的运行情况。有点类似于cPanel服务器后台中可以监视到系统的CPU使用率,空间流量等数据,以图表方式展示,还是很直观。网络管理员也可以参考这样的方法,远程监视多个服务器的运行情况,再配合Yeelink的通知机制进行及时地应对。虽然Yeelink结合Arduino、RPi的应用比较多,但是相信在PC上运行更“原生态”一些,反而可以将其在RPi上的应用,可以看作是从PC到嵌入式系统的移植。

根据Yeelink的API说明,基本就是使用GET/POST/DELETE等方式访问相关页面,这些通过cURL都能很轻松实现,有提交地址相匹配的APIkey就行。而在上传的数据,基本就是一个时间点和数据构成的二维表。Yeelink根据这个二维表生成图表。数据的提交也不能过于频繁,Yeelink要求的间隔时间为大于10秒,所以就目前的情况而言,实现“视频监控”还不太现实。Yeelink的图表生成,不会因为停止提交数据而终止,空档的两边会用直线进行连接。这样倒也能判断一些例如系统关机、开机之类的事件。

目前我的笔记本在Yeelink上的页面为:http://www.yeelink.net/devices/1709。题图中显示的是CPU的Core0的温度曲线。其中高坡的那一段,是我正在编译Kernel,耗时20分钟左右,可见编译Kernel对于CPU来说还真是一个累活儿。:)

关于aGuegu

向着更高的逼格
此条目发表在Shell, Ubuntu | Linux分类目录,贴了, , , , , , , , , 标签。将固定链接加入收藏夹。
  • COOL!
    希望能看到你把Yeelink的能力全部发挥出来,另外,别忘了试试事件触发系统哦…