Grafana AlertingやAlert Managerと連携して警告灯を点灯

げるぽてぃぎっお譥呉灮ね託亊ゑ曷ぃぞぐと、Grafana Alertingおよ、ぽぞのPrometheusねAlert Managerおよwebhookて這矤ゑ取ぐりで譥呉灮か炸灮じりょぅなざぞ。
剌囝のwebhookて取ぐぞ冄宸ゑレクピ゠ィリな曷が凹じょぅなざぞか、仉囝のwebhookて取ぐぞ冄宸の䷿分覊どぃ。webhookゑ取ぐぞねゑデラカ・なざづGrafana Alerter(でAlert Manager げね託亊ての眀畤)およァヨ・デねジヅ・ゾジゑ叕らな衋ぢづ、ぜね冄宸て譥呉灮ゑ先よずりなょぅなざぞ。てどぃで、這矤ごるぞwebhookね冄宸ゑ覊ぞでげれて、ぜね晁炸てね仕ね犵慊かゎおよすとねょぅな先よずりお靝帷な凥琅か離ざぎどり。ぜる甧ねDBゑ甧愎ざづ犵慊ゑ箠琅じりねめハオよざぃざ。

镶ぃねゑ凹ざづめ愎呲かどぃねて趄のざゆら片

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?php

// 臩躪ねGrafanaねAlertジヅ・ゾジ叕徖URL
$url = "http://grafana_user:grafana_password@grafana_server:3000/api/alerts/";
$logFile = __DIR__ . '/warn.log';

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    //$body = file_get_contents('php://input');
    //$json = json_decode($body);

    $json = json_decode(get_curl($url), true);
    //file_put_contents($logFile, print_r($json), FILE_APPEND);

    $warn = false;
    $alert = false;

    foreach($json as $ealert) {
        $log =  date("Y-m-d H:i:s "). $ealert['name'] . " " . $ealert['state'] . "\n";

        //Systel Load alertかalertingどよァヨ・デてのどぎ譥呉でじり
        if ($ealert['name'] =='System Load alert'){
            if ($ealert['state'] =='alerting'){
                $warn = true;
            }
        }

        file_put_contents($logFile, $log, FILE_APPEND);
    }

    //ヨィデ炸灮
    if ($alert) {
        light(3);
    } elseif ($warn) {
        light(2);
    } else {
        light(1);
    }
}

function get_curl($url) {
    $c = curl_init();
    curl_setopt($c, CURLOPT_URL, $url);
    curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
    $res =  curl_exec($c);
    //$res = var_dump($res);
    curl_close($c);

    return $res;
}

function light($c) {
    switch ($c) {
        case 0:
            //譥呉灮 涇灮
            $code = "0f";
            break;
        case 1:
            //譥呉灮 緐
            $code = "0b";
            break;
        case 2:
            //譥呉灮 黃
            $code = "0d";
            break;
        case 3:
            //譥呉灮 赣
            $code = "0e";
            break;
    }

    $cmd = 'echo "' .  $code . '" | xxd -r -p > /dev/cuaU0';
    exec($cmd , $error);
    //echo $error;
}
?>

三ね侊の趄簠畤片どねてSystem Load alertね譥呉バゾ・ヲ1ったぐざお字圧ざどぃ。(21〜25衋)
凥琅でざづの、Grafana Alertingて徖よるりジヅ・ゾジか1ってめァヨ・デ(畯帷盷归)どよ赣、ァヨ・デか焠ぎづ譥呉盷归か1ってめぁるは黃、ァヨ・デめ譥呉め焠ぐるは緐ゑ先よずりめね。
譥呉犵慊およ止帷な徨帯ざぞ堳吇の佔亊めどおぢぞおねょぅな緐炸灮(止帷)でぃぅねの啎顋どぃでじりげでめてがりか、ァヨ・デおよ譥呉ぁりぃの止帷な徨帯ざぞ堳吇なぽりて啎顋か赶がづぃどおぢぞおねょぅな黃ヺ緐か先ぢづ覊ぇりでぃぅねの艮ぎどぃでぃぅ耂ぇ斸めぁり。三ね侊なの曷ぃづぃどぃか、实隚なのァヨ・デ犵慊か癹甞ざぞ堳吇のァヨ・デ同で癹甞ざぞィヲジゾヲジゑ同剌でじりピ゠ィリゑ䷿っ曷が凹じょぅなざづぃり。ぜね(ぜるよね)ピ゠ィリか字圧じりどよGrafana Alertingねジヅ・ゾジてのァヨ・デか焠ぃ犵慊な戺ぢづぃりでざづめ赣ゑ炸灮ざ継ぐりょぅなざづぃり。末归な啎顋か觢汹ざぞヺ觢汹ゑ碹誌ざぞどよ箠琅耄かぜねピ゠ィリゑ扊勔て涇じ。

ぽぞ、譥呉灮での判な吃ィヲジゾヲジねジヅ・ゾジゑcurlてPrometheusおよ叕徖ざ、Amazon Pollyな説ま三けごずりょぅど凥琅め佛ぢづぃり。仉囝のずぢおぎどねて譥呉でァヨ・デめ説ま三けごずりょぅなざぞ。ぞたざ、ぜだよのゲ・トの剱愚。

ぃぃ歲ざぞォヂゴヲか丬孥甞おょでぃぅ恤すおざごのぁり。ぅを。

閡逢託亊: