서틀버스 위치알림 모니터링

내가 셔틀버스를 자주 타지 않아 버스위치 알림이 정상적으로 동작되는지 잘 몰랐다. 최근에 스마트폰의 밧데리가 부어올라서 전원이 꺼져 있는 것을 알았다. 매일 아침마다 동작하는지를 확인하기도 귀챦아서 모니터링하는 데몬을 만들었다.

버스위치알림을 호출하는 쉘스크립트에 실행여부와 응답여부를 체크하는 것을 추가했다. 응답여부는 1분에 한번씩 총 20번 체크한다.

실행여부는 호출후 1분 뒤에 점검해서 1분이내 받은 자료가 없으면 실행되지 않고 있는 것을 의미한다.

응답여부는 종료되지 않거나 응답횟수도 전체횟수보다 적은 경우 마지막 응답시간을 체크한다. 최종 응답시간이 2분이 넘었으면 제대로 응답하지 않는다고 판단한다.

오류가 발생한 경우 PHPMailer를 이용해서 메일로 오류메세지와 관련 로그파일을 첨부하여 보내준다.

나는 메일은 자주 확인하는 편이니, 장애가 나면 나도 알 수 있다.

참고사이트 : https://doolyit.tistory.com/134

 

<?php

    include(“mail.php”);
    $fileLines = file(“../../../node.js/shuttle.json”);

    if ($fileLines != false) {
        foreach($fileLines as $line) {
            $obj = json_decode($line);
            $notidate  = $obj->notidate;
            $keepgoing = $obj->keepgoing;
            $curcnt    = $obj->curcnt;
            $maxcnt    = $obj->maxcnt;

            if ($keepgoing != “STOP” || $curcnt < $maxcnt) {

                date_default_timezone_set(“Asia/Seoul”);
                $currdate = date(“m/d H:i:s”);
                $timegap = abs(strtotime($notidate) – strtotime($currdate))/ 60;        //unit : minute

                if ($timegap > 2) {     // 2분 초과시
                    $content  = “응답이 지연되고 있습니다.(” . round($timegap,1) . “분)\n<br><br>”;
                    $content .= “notidate[$notidate]keepgoing[$keepgoing]curcnt[$curcnt]maxcnt[$maxcnt]\n<br>”;
                    sendmail($content);
                    echo $content;
                }
            }
       }
    } else {
        echo “파일 읽기 오류!!”;
    }
?>

 

Leave a Comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.