텔레그램은 보안과 속도에 주안점을 둔 클라우드-기반 모바일과 데스크톱 Message App으로 2024년 기준으로 전세계 인구 중 약 10억 정도가 사용하는 것으로 확인되었으며, 2백만 명의 하루 동안 해당 제품 및 서비스 사용자 수를 가지고 있는 것으로 확인됩니다. (Daily Active User 기준)
텔레그램 특징 중 “개방성”은 누구나 무료 활용 가능한 오픈 API를 사용자에게 제공하고 있으며 이를 활용하여 간단한 시스템 모니터링을 구축해보도록 하겠습니다.
서버 인프라 관리를 위해서는 서버 장애 , 메트릭의 특정 조건을 부여하여 SMS , 메일 등 여러 플랫폼을 통해 알림을 받게 되는데, 이보다 간편하고 접근이 쉬운 텔레그램 App를 통해 메세지를 받아보기로 합니다.
텔레그램은 자유 오픈 소스 기반 채팅 프로그램 이며, 프로토콜과 API, 아이폰 및 안드로이드 앱의 소스 코드를 공개하여서 모든 개발자가 자유롭게 수정, 개발할 수 있습니다.
텔레그램의 모니터링을 구현하기 위해 ‘봇’, ‘그룹’ , ‘채널’의 개념을 사전에 알아보기로 합니다.
“봇” 은 Telegram 앱 내에서 실행되는 작은 애플리케이션인데, 이를 사용하여 모든 종류의 작업이나 서비스를 지원하며, 인터페이스를 통해 봇과 상호작용하며, 사용자의 입력과 요청을 처리하는 소유자의 서버와 연결합니다.
“그룹”은 소위 말하는 카카오톡 단체방, 디스코드 서버 General 채팅방으로 비슷하며 방에 입장한 참가자들이 대화를 주고받을 수 있는 것이 기본 값입니다.
“채널”은 채널 방식 수신이나 관리자가 아닌 이상 대화나 글을 게시 할 수 없고 조회만 가능한 것이 특징입니다. 채널 주인이 어떠한 채널에 글을 게시하면 그 게시글은 글을 게시한 유저 프로필이 아닌 채널 이름과 사진 등 채널의 정보로 작성된 것으로 보여집니다.
이 글에서는 Telegram이 제공하는 Botfather을 통해 Token을 발행하여 봇을 생성하고, 이를 채널에 추가하여 모니터링 조건에 따라 알림을 받을 수 있는 로직을 구현해보겠습니다.
맨 처음 Telegram을 설치하고 검색 창에 아래 Botfather를 검색하여 ” /newbot ” 메세지를 전송합니다.
해당 메세지를 전송하게 되면 내가 만들 봇에 대한 이름을 생성을 할 수 있습니다.
이번 경우에는 비즈스프링 에러 봇 탐지를 위한 ” BizSpring_ERR_bot” 으로 명명합니다. 해당 봇에 username (닉네임)도 비슷한 의미를 가진 이름으로 생성합니다.
텔레그램에 사용할 봇을 생성하였다면, 메세지를 받을 Channel을 생성하여 해당 Channel 에 내가 만든 봇과 수신자들을 그룹에 넣도록 합니다. 해당 Channel에는 각각의 chat_id 가 부여되는데요. 해당 id 값을 확인하기 위해 test 라는 메세지를 해당 채널에 전송해봅니다. 여기에서는 Telegram_monitor 으로 채널 이름을 짓도록 하겠습니다.
해당 메세지를 보내게 되면 위의 URL으로 요청을 하여 내가 보낸 message 값과 chat_id 값을 확인할 수 있고, 이 값을 통하여 Python 혹은 Shell Script 으로 텔레그램 알림을 구현할 수 있습니다.
단, getUpdates 경우 일정 시간이 지나면 서버에서 삭제되므로, 메세지를 전송 후 바로 chat_id값을 확인하는 것이 좋겠습니다. 텔레그램 API가 지원하는 기능은 아래 링크에서 확인할 수 있습니다.
https://core.telegram.org/bots/api
Python 뿐만 아니라 Shell -Script , Java 등 여러 언어로 내가 만든 봇의 Telegram Token 값과 Chat_id으로 여러가지로 활용할 수 있으니, 탐지 기준을 정하여 한번 도전해보는 것도 좋을 것 같습니다.
