検証環境
RTX1210 BootROM Ver. 1.04
RTX1210 FlashROM Table Ver. 1.00
RTX1210 Rev.14.01.38 (Fri Jul 10 09:41:02 2020)
前提
注意事項
このスクリプトだけは Shift-JIS で保存しなければならない。
pattern = "筐体内温度%(℃%): (%d+)"
が拾えない、Slackへのペイロードが空になるなどの不具合が起きる。
monitor_hardware.lua
monitor_hardware.lua
--
-- monitor_hardware.lua (Shift-JIS)
-- Hardware monitoring
--
require "strict"
local slack = require "slack"
local idle_time = 43200 -- = 60 * 60 * 12 [s]
local function log(priority, message)
if priority == "DEBUG" then
rt.syslog("notice", message)
else
rt.syslog("info", message)
slack.post(priority, message)
end
end
local resource_table = {
cpu_5sec = { index = 1, pattern = "(%d+)%%%(5sec%)", name = "CPU(5sec)", unit = "%" }, -- (1)
cpu_1min = { index = 2, pattern = "(%d+)%%%(1min%)", name = "CPU(1min)", unit = "%" },
cpu_5min = { index = 3, pattern = "(%d+)%%%(5min%)", name = "CPU(5min)", unit = "%" },
memory = { index = 4, pattern = "(%d+)%% used", name = "Memory", unit = "%" },
packet_small = { index = 5, pattern = "(%d+)%%%(small%)", name = "Packet Buffer(small)", unit = "%" },
packet_middle = { index = 6, pattern = "(%d+)%%%(middle%)", name = "Packet Buffer(middle)", unit = "%" },
packet_large = { index = 7, pattern = "(%d+)%%%(large%)", name = "Packet Buffer(large)", unit = "%" },
packet_huge = { index = 8, pattern = "(%d+)%%%(huge%)", name = "Packet Buffer(huge)", unit = "%" },
temp = { index = 9, pattern = "筐体内温度%(℃%): (%d+)", name = "Temperature", unit = "C" }
}
local function rt_res_status()
local cmd = "show environment"
local rtn, str = rt.command(cmd)
local rtn_table = {}
local rtn_message = ""
if rtn and str then
for k, v in pairs(resource_table) do
local value = str:match(v.pattern)
if value then
rtn_table[v.index] = v.name .. ": " .. value .. v.unit
end
end
for i, v in ipairs(rtn_table) do
rtn_message = rtn_message .. " " .. v
end
return rtn, rtn_message
end
end
while true do
local rtn, rtn_message = rt_res_status()
if rtn then
print(rtn_message) -- for DEBUG
log("info", "(monitor_hardware.lua) " .. rtn_message)
else
log("info", "(monitor_hardware.lua) Failed to get environment information.")
end
rt.sleep(idle_time)
end
(1): pairs()
が順序保証しないことに気づくまでしばらくハマった。
スケジュール
起動時に実行するよう設定。
schedule at 2 startup * lua /lua/monitor_hardware.lua
最終回予告
No-IP DDNSを定時更新してみる。