Twilio+CloudFunctions+Stackdriver에서 장애 알림을 전화로 알립니다.

소개 (동기 부여)



상용 환경이지만, 외부 위탁이라든지 큰 감시가 필요 없기 때문에 URL의 소통을 할 수 없으면 경고 날리고 싶을 때가 있다.
이벤트 로그라든지 퍼포먼스라든지 아무래도 좋기 때문에, 서비스가 정말로 사용할 수 없게 되었을 때만 경보를 원한다.

그렇다고 해서, 심야에 slack라든지 메일로 눈치채는 것이 없기 때문에, 전화를 갖고 싶다.
하지만 stackdriver라든지 메일이나 slack에게 밖에 통지할 수 없다.
URL의 소통을 할 수 없으면 전화를 걸어 주었으면 한다.

twilio(트위리오)란 무엇인가?



webAPI에 의해 자동으로 전화를 걸거나 SMS 보내거나 하는 사람.

본사는 미국의 twilio사가 하고 있고, 일본에서는 KDDI가 대리점으로서 서비스를 제공하고 있다.
용도로는, 자동의 음성 안내라든지에도 사용되고 있다.

요금은 얼마 안 된다. 가 트라이얼로 500엔분이 최초로 받을 수 있다.
  • 전화 번호 108엔/월
  • 발신(휴대전송) 16.2엔/분
  • 착신(0120/0800받는 사람) 21.6/분

  • 자세한 내용은 웹에서 h tps : ///와 ぃぃ오.ぢーぇb. 코 m/p 리세/

    이번 시도



    twilio와 google cloud functions를 사용하여 서버리스 경고 알림을 만드는 방법을 만듭니다.
    왜 CloudFunctions를 사용했는가 하면, 내용에 따라 경고의 대상이나 전화의 내용을 바꾸거나 하려면 CloudFunctions의 함수로
    자유롭게 설정할 수 있는 편이 좋지 않을까 생각했으니까.



    twilio 계정 만들기



    h tps : ///와 ぃぃ오.ぢーぇb. 코m/
    여기에서 보통 계정 만들기.

    로그인 후 화면





    프로젝트 만들기





    솔로 활동이지만 무엇입니까?





    로그인 후 대시보드





    전화번호 얻기





    전화번호 가챠 수 있다





    취득 완료





    취득한 전화 번호를 확인할 수 있다







    CloudFunction 만들기



    index.js
    
    exports.twiliotest = function(event, context) {
    // Download the Node helper library from twilio.com/docs/node/install
    // These consts are your accountSid and authToken from twilio.com/user/account
    const accountSid = 'XXXXXXXXXXXXXXXXXXXXXXXXXXX';
    const authToken = 'XXXXXXXXXXXXXXXXXXXXXXXXXXX';
    const Twilio = require('twilio');
    const client = new Twilio(accountSid, authToken);
    
    client.api.calls
      .create({
        url: 'http://demo.twilio.com/docs/voice.xml',
        to: '+XXXXXXXXXXXXX',
        from: '+XXXXXXXXXXXX',
        method: 'GET',
      })
      .then(call => console.log(call.sid));
    }
    

    package.json
    {
        "name": "twiliotest",
        "version": "0.0.1",
        "dependencies": {
          "twilio": "^3.18.0",
          "querystring": "^0.2.0"
        }
    }
    
    $ gcloud functions deploy twiliotest --trigger-http

    모니터링 대상 VM 만들기



    이번에는 GCE에서 VM(CentOS 7)을 만들고 Nginx를 설치해 둔다.
    $ sudo yum install -y nginx
    $ sudo systemctl start nginx
    

    Stackdriver 설정



    UptimeCheck 설정





    Notification 설정


    WEBHOOKS 에서 방금 만든 CloudFunction을 호출합니다.




    동작 확인



    Nginx 중지


    $ sudo systemctl stop nginx
    

    잠시 기다리면 ...

    걸려왔다!





    미래에 대해



    이번은 트라이얼판이었기 때문에, 「twilio 사용해 주셔서 감사합니다. 시험의 내용이 아니고 임의의 콜한다면 유료판 사용해」라는 메시지가 되어 있었다.
    (억양이 굉장한 편언감 있음)

    경고 내용에 따라 전화 내용을 변경하고 싶습니다.

    좋은 웹페이지 즐겨찾기