Skip to content

Notifications ​

Alerts need two things: a channel to receive them (Telegram, Discord, or Slack) and an alert rule that decides when to send them. A channel on its own sends nothing.

Telegram ​

1. Create a bot with BotFather ​

  1. Open Telegram and search for @BotFather (look for the blue verified checkmark).
  2. Send /newbot to start the bot creation wizard.
  3. Enter a display name for your bot (e.g., EveryUp Alerts).
  4. Enter a username. It must be unique and end with bot (e.g., everyup_alerts_bot).
  5. BotFather will respond with your Bot Token. Save it; you'll need it in EveryUp.

Example Token: 123456789:ABCdefGHIjklMNOpqrSTUvwxYZ

2. Get the Chat ID ​

The Chat ID tells EveryUp where to deliver messages. It works for private chats, groups, and channels.

Private Chat (1:1 with your bot) ​

  1. Find your bot in Telegram and send it any message (e.g., /start).
  2. In your browser, open:
    https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates
  3. Find "chat":{"id": 123456789} in the JSON. That number is your Chat ID.

Group Chat ​

  1. Add your bot to the group.
  2. Send any message in the group.
  3. Visit the getUpdates URL above.
  4. Find "chat":{"id": -100123456789}. Group IDs always start with -100.

Channel ​

  1. Add your bot as an Administrator of the channel (with "Post Messages" permission).
  2. Send a message in the channel.
  3. Check getUpdates. The channel's Chat ID appears there, starting with -100.

3. Add the channel in EveryUp ​

  1. On the 알림 (Alerts) screen, open the 알림 채널 (Channels) tab, click 추가 (Add), and choose Telegram as the type.
  2. Enter a 표시 이름 (display name), then paste the Bot Token and the Chat ID into 채팅 ID (Chat ID).
  3. Click 테스트 전송 (Send test) to confirm the message arrives, then click 추가 (Add). Sending a test does not save the channel.

Troubleshooting ​

SymptomCause & Fix
getUpdates returns empty []The bot hasn't received any messages yet. Send it a message and try again.
Bot doesn't respond in a groupEnable group access: in BotFather, send /mybots, select your bot, then Bot Settings → Group Privacy → Turn off.
401 UnauthorizedBot Token is invalid or revoked. Generate a new one via /token in BotFather.
Test notification not deliveredDouble-check the Chat ID. For groups/channels, make sure the bot has been added and has send permission. After updating the settings, use the 테스트 (Test) button in the channel list to retry.

Discord ​

1. Create a webhook ​

  1. In your Discord server, go to Server Settings → Integrations → Webhooks.
  2. Click New Webhook.
  3. Give it a name (e.g., EveryUp Alerts) and select the target channel.
  4. Optionally upload a custom avatar.
  5. Click Copy Webhook URL and save it.

Example URL: https://discord.com/api/webhooks/1234567890/ABCdefGHIjklMNOpqrSTUvwxYZ

Tip: You don't need server-wide admin rights; the Manage Webhooks permission on a channel is enough to create a webhook there.

2. Add the channel in EveryUp ​

  1. On the 알림 (Alerts) screen, open the 알림 채널 (Channels) tab, click 추가 (Add), and choose Discord as the type.
  2. Enter a 표시 이름 (display name) and paste the Webhook URL.
  3. Click 테스트 전송 (Send test) to confirm the message arrives, then click 추가 (Add).

Troubleshooting ​

SymptomCause & Fix
Invalid Webhook Token errorThe URL is incomplete or malformed. Paste the full URL starting with https://discord.com/api/webhooks/.
Test notification not receivedThe webhook may have been deleted. Verify it still exists under Server Settings → Integrations → Webhooks.
404 Unknown WebhookWebhook was deleted. Create a new one and update the URL in EveryUp.
Webhook URL must use HTTPS or domain validation errorEveryUp only accepts official Discord HTTPS Webhook URLs on allowed Discord domains.
Rate limitedDiscord enforces per-webhook rate limits. This is temporary, and EveryUp retries automatically.

Slack ​

1. Create a Slack app ​

  1. Go to https://api.slack.com/apps and click Create New App.
  2. Choose From scratch, give it a name (e.g., EveryUp Alerts), and select your workspace.
  3. Click Create App.

2. Turn on Incoming Webhooks ​

  1. In your app's settings, navigate to Incoming Webhooks in the left sidebar.
  2. Toggle Activate Incoming Webhooks to On.
  3. Click Add New Webhook to Workspace at the bottom of the page.
  4. Select the channel where you want alerts to appear and click Allow.
  5. Copy the Webhook URL that appears.

Example URL: https://hooks.slack.com/services/T.../B.../xxxx...

Tip: One Slack app can have several webhooks, each posting to a different channel. No permissions are needed beyond the initial app installation.

3. Add the channel in EveryUp ​

  1. On the 알림 (Alerts) screen, open the 알림 채널 (Channels) tab, click 추가 (Add), and choose Slack as the type.
  2. Enter a 표시 이름 (display name) and paste the Webhook URL.
  3. Click 테스트 전송 (Send test) to confirm the message arrives, then click 추가 (Add).

Troubleshooting ​

SymptomCause & Fix
404 or invalid_payload errorThe Webhook URL is invalid or the app was uninstalled. Re-create the webhook from your Slack app settings.
Test notification not receivedMake sure the bot hasn't been removed from the channel. Check the channel's Integrations tab.
channel_not_foundThe target channel was deleted or renamed. Add a new webhook pointing to the correct channel.
Webhook URL must use HTTPS or domain validation errorEveryUp only accepts official Slack HTTPS Webhook URLs on hooks.slack.com.
Messages delayedSlack may occasionally queue messages during high traffic. EveryUp will retry automatically with exponential backoff.

Managing channels ​

  • Send a test notification with 테스트 전송 (Send test) before adding a channel, or with the 테스트 (Test) button in the channel list afterwards.
  • To pause a channel without deleting it, turn it off with its toggle in the channel list.

Alert rules ​

Every alert, including service outages, is sent only when an enabled rule's condition is met. On the 알림 (Alerts) screen, open the 알림 규칙 (Alert rules) tab, click 추가 (Add), and fill in three steps:

  1. 대상 (Target): pick a 카테고리 (category) and a 지표 (metric), and name the rule in 규칙 이름 (rule name). Leaving 대상 empty applies the rule to every target in the category. The API 요청 (API requests) category requires a service.
  2. 조건 (Condition): pick a 프리셋 (preset), or set an operator and threshold under 직접 설정 (custom).
  3. 알림 (Notify): set the 심각도 (severity) and choose the 알림 채널 (channels). Several channels all receive the alert; choosing none sends it to every enabled channel.
CategoryMetricsExample
헬스체크 (Health check)HTTP STATUS, RESPONSE TIMEA Docker service or uptime monitor stops responding
API 요청 (API requests)에러율 (error rate), p95 지연, p99 지연 (p95/p99 latency)A service's error rate crosses a threshold
로그 (Logs)로그 레벨 (log level), API 요청 (API status)An ERROR log arrives
메트릭 (Metrics)The name of an OpenTelemetry metric your app sendsjvm.memory.used crosses a threshold
인프라 (Infrastructure)CPU, MEMORY, DISKDisk usage goes above 90%

Three infrastructure rules (High CPU Usage, High Memory Usage, Disk Almost Full) exist from the start but are turned off. Turn them on with their toggles in the rule list if you want them.

API request rule evaluation ​

Error-rate, p95, and p99 rules evaluate the configured recent time window once a minute. Error-rate rules need at least 20 requests in that window; p95 and p99 rules need at least 20 requests with measured response times. With fewer requests, these rules do not send an alert even if individual requests cross a threshold. This cadence applies only to API request rules; health-check, log, and infrastructure rules use different evaluation paths.

Released under the MIT License.