알림
알림을 받으려면 두 가지를 설정합니다. 알림을 받을 채널(Telegram, Discord, Slack)과, 언제 보낼지 정하는 알림 규칙입니다. 채널만 만들면 알림이 오지 않습니다.
Telegram
1. BotFather로 봇 만들기
- Telegram에서 @BotFather를 검색합니다 (파란색 인증 마크 확인).
/newbot명령어를 전송하여 봇 생성을 시작합니다.- 봇의 표시 이름을 입력합니다 (예:
EveryUp Alerts). - 봇의 **사용자 이름(username)**을 입력합니다. 이름은 반드시
bot으로 끝나야 합니다 (예:everyup_alerts_bot). - BotFather가 Bot Token을 응답합니다. 이 값을 복사해 두세요.
토큰 예시:
123456789:ABCdefGHIjklMNOpqrSTUvwxYZ
2. Chat ID 확인하기
Chat ID는 EveryUp이 메시지를 어디로 보낼지 지정하는 값입니다. 개인 채팅, 그룹, 채널 모두 지원합니다.
개인 채팅 (봇과 1:1)
- Telegram에서 내 봇을 찾아 아무 메시지나 보냅니다 (예:
/start). - 브라우저에서 아래 URL에 접속합니다:
https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates - JSON 응답에서
"chat":{"id": 123456789}를 찾습니다.id값이 Chat ID입니다.
그룹 채팅
- 봇을 대상 그룹에 초대합니다.
- 그룹에서 아무 메시지나 전송합니다.
- 위의
getUpdatesURL에 접속합니다. "chat":{"id": -100123456789}항목을 찾습니다. 그룹 Chat ID는 항상-100으로 시작합니다.
채널
- 봇을 채널의 관리자로 추가합니다 ("메시지 게시" 권한 필요).
- 채널에 메시지를 하나 전송합니다.
getUpdates를 확인하면 채널의 Chat ID가 표시됩니다 (-100으로 시작).
3. EveryUp에 채널 추가하기
- 알림 화면의 알림 채널 탭에서 추가를 누르고 유형으로 Telegram을 고릅니다.
- 표시 이름을 입력하고 Bot Token과 채팅 ID에 앞에서 확인한 값을 붙여넣습니다.
- 테스트 전송으로 메시지가 오는지 확인한 뒤 추가를 누릅니다. 테스트 전송은 채널을 저장하지 않습니다.
문제 해결
| 증상 | 원인 및 해결 방법 |
|---|---|
getUpdates가 빈 [] 반환 | 봇이 아직 메시지를 받은 적이 없습니다. 봇에게 메시지를 먼저 보낸 후 다시 시도하세요. |
| 그룹에서 봇이 동작하지 않음 | 그룹 접근 권한을 활성화하세요: BotFather에서 /mybots → 봇 선택 → Bot Settings → Group Privacy → 끄기. |
401 Unauthorized 오류 | Bot Token이 유효하지 않거나 만료되었습니다. BotFather에서 /token으로 새 토큰을 발급받으세요. |
| 테스트 알림이 수신되지 않음 | Chat ID를 다시 확인하세요. 그룹/채널의 경우 봇이 추가되어 있고 전송 권한이 있는지 확인하세요. 설정을 수정한 뒤에는 채널 목록의 테스트 버튼으로 다시 확인합니다. |
Discord
1. 웹훅 만들기
- Discord 서버에서 서버 설정 → 연동 → 웹훅으로 이동합니다.
- 새 웹훅을 누릅니다.
- 이름을 설정하고 (예:
EveryUp Alerts) 대상 채널을 선택합니다. - 원하는 경우 아바타 이미지를 업로드합니다.
- 웹훅 URL 복사를 눌러 URL을 저장합니다.
URL 예시:
https://discord.com/api/webhooks/1234567890/ABCdefGHIjklMNOpqrSTUvwxYZ
팁: 서버 전체 관리자 권한이 없어도 채널의 웹훅 관리 권한만 있으면 그 채널에 웹훅을 만들 수 있습니다.
2. EveryUp에 채널 추가하기
- 알림 화면의 알림 채널 탭에서 추가를 누르고 유형으로 Discord를 고릅니다.
- 표시 이름을 입력하고 Webhook URL을 붙여넣습니다.
- 테스트 전송으로 메시지가 오는지 확인한 뒤 추가를 누릅니다.
문제 해결
| 증상 | 원인 및 해결 방법 |
|---|---|
Invalid Webhook Token 오류 | URL이 불완전하거나 잘못 붙여넣어졌습니다. https://discord.com/api/webhooks/로 시작하는 전체 URL을 사용하세요. |
| 테스트 알림이 수신되지 않음 | 웹훅이 삭제되었을 수 있습니다. 서버 설정 → 연동 → 웹훅에서 존재 여부를 확인하세요. |
404 Unknown Webhook 오류 | 웹훅이 삭제되었습니다. 새 웹훅을 만들고 EveryUp에서 URL을 업데이트하세요. |
Webhook URL must use HTTPS 또는 도메인 검증 오류 | EveryUp은 공식 Discord 도메인의 HTTPS Webhook URL만 허용합니다. |
| 전송 속도 제한(Rate limit) | Discord는 웹훅별 전송 횟수를 제한합니다. 잠시 후 자동으로 재시도됩니다. |
Slack
1. Slack 앱 만들기
- https://api.slack.com/apps 에 접속해 Create New App을 누릅니다.
- From scratch를 선택하고 앱 이름(예:
EveryUp Alerts)을 입력한 뒤 워크스페이스를 선택합니다. - Create App을 누릅니다.
2. Incoming Webhooks 켜기
- 앱 설정 페이지의 좌측 메뉴에서 Incoming Webhooks로 이동합니다.
- Activate Incoming Webhooks를 On으로 전환합니다.
- 페이지 하단의 Add New Webhook to Workspace를 누릅니다.
- 알림을 받을 채널을 선택하고 **허용(Allow)**을 누릅니다.
- 생성된 Webhook URL을 복사합니다.
URL 예시:
https://hooks.slack.com/services/T.../B.../xxxx...
팁: 같은 Slack 앱에서 웹훅을 여러 개 만들어 각각 다른 채널로 보낼 수 있습니다. 처음 앱을 설치할 때 말고는 추가 권한이 필요하지 않습니다.
3. EveryUp에 채널 추가하기
- 알림 화면의 알림 채널 탭에서 추가를 누르고 유형으로 Slack을 고릅니다.
- 표시 이름을 입력하고 Webhook URL을 붙여넣습니다.
- 테스트 전송으로 메시지가 오는지 확인한 뒤 추가를 누릅니다.
문제 해결
| 증상 | 원인 및 해결 방법 |
|---|---|
404 또는 invalid_payload 오류 | Webhook URL이 유효하지 않거나 앱이 제거되었습니다. Slack 앱 설정에서 웹훅을 다시 생성하세요. |
| 테스트 알림이 수신되지 않음 | 봇이 채널에서 제거되지 않았는지 확인하세요. 채널의 통합 탭을 확인하세요. |
channel_not_found 오류 | 대상 채널이 삭제되었거나 이름이 변경되었습니다. 올바른 채널을 지정하여 새 웹훅을 추가하세요. |
Webhook URL must use HTTPS 또는 도메인 검증 오류 | EveryUp은 hooks.slack.com의 공식 HTTPS Webhook URL만 허용합니다. |
| 메시지 지연 | 트래픽이 많을 때 Slack이 메시지를 대기열에 넣기도 합니다. EveryUp이 자동으로 재시도합니다. |
채널 관리
- 채널을 추가하기 전에는 입력 화면의 테스트 전송으로, 추가한 뒤에는 채널 목록의 테스트 버튼으로 테스트 알림을 보냅니다.
- 채널을 지우지 않고 잠시 멈추려면 채널 목록의 토글로 끕니다.
알림 규칙
서비스 장애를 포함한 모든 알림은 켜져 있는 규칙의 조건을 만족할 때만 발송됩니다. 알림 화면의 알림 규칙 탭에서 추가를 누르고 세 단계를 채웁니다.
- 대상: 카테고리와 지표를 고르고 규칙 이름을 정합니다. 대상을 비워 두면 그 카테고리의 모든 대상에 적용됩니다. API 요청 카테고리는 서비스를 꼭 골라야 합니다.
- 조건: 프리셋을 고르거나, 직접 설정에서 연산자와 임계값을 정합니다.
- 알림: 심각도를 정하고 보낼 알림 채널을 고릅니다. 여러 채널을 고르면 모두에 보내고, 하나도 고르지 않으면 켜져 있는 모든 채널로 보냅니다.
| 카테고리 | 지표 | 쓰는 예 |
|---|---|---|
| 헬스체크 | HTTP STATUS, RESPONSE TIME | Docker 서비스나 업타임 모니터가 응답하지 않을 때 |
| API 요청 | 에러율, p95 지연, p99 지연 | 특정 서비스의 에러율이 기준을 넘을 때 |
| 로그 | 로그 레벨, API 요청 | ERROR 로그가 들어올 때 |
| 메트릭 | 앱이 보낸 OpenTelemetry 메트릭 이름 | jvm.memory.used가 기준을 넘을 때 |
| 인프라 | CPU, MEMORY, DISK | 디스크 사용률이 90%를 넘을 때 |
인프라 규칙 세 개(High CPU Usage, High Memory Usage, Disk Almost Full)가 처음부터 들어 있지만 꺼져 있습니다. 필요하면 규칙 목록의 토글로 켜세요.
API 요청 규칙의 평가 조건
에러율·p95·p99 규칙은 설정한 최근 시간 범위의 요청을 1분마다 평가합니다. 에러율은 해당 범위에 요청이 20건 이상, p95·p99는 응답 시간이 측정된 요청이 20건 이상이어야 판정합니다. 요청이 적으면 임계값을 넘는 요청이 있어도 이 규칙은 발송하지 않습니다. 이 주기는 API 요청 규칙에만 해당하며, 헬스체크·로그·인프라 규칙의 평가 방식과는 다릅니다.
