🚨
サーバーへのアクセスを LED に反映する
赤:POST 緑:GET
Arduino側
void setup() {
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
}
uint64_t r_count = 0;
uint64_t g_count = 0;
void loop() {
char ch = Serial.read();
if (ch == 'R') {
r_count = 0;
}
if (r_count == 0) {
digitalWrite(2, HIGH);
}
if (r_count == 60 * 0.25) {
digitalWrite(2, LOW);
}
r_count++;
if (ch == 'G') {
g_count = 0;
}
if (g_count == 0) {
digitalWrite(3, HIGH);
}
if (g_count == 60 * 0.25) {
digitalWrite(3, LOW);
}
g_count++;
delay(1000 / 60);
}
- 'R' を受信したら赤の LED を 0.25 秒間点灯す (緑も同様)
- Arduino IDE で 'R' や 'G' を送って正しく動いていれば次へ
PC側
require "serialport"
require "open3"
SerialPort.open("/dev/cu.usbmodem1414401", 9600) do |sp|
Open3.popen3("ssh xxx tailf /var/log/nginx/access.log") do |_stdin, stdout, _stderr, _thread|
loop do
s = stdout.gets
if s.match?(/GET/)
sp.write("G")
end
if s.match?(/POST/)
sp.write("R")
end
end
end
end
- SSH でログをひっぱってくる
- 仮に GET なら 'G' で POST なら 'R' を Arduino に送る
応用してできそうなこと
- 青LEDを追加して何かの監視に割り当てる
- 5xx のときだけ赤LEDをしばらく灯す
- 5xx なら圧電スピーカーを鳴らす
- 特定のパスにアクセスされたときだけアラートする
- フルカラーLEDを追加して紫なども監視に割り当てる
- デプロイ中だけアラートする
- RSpec でのテストの状況を反映する
Discussion