Skip to content

Monitoring the sending and delivery of events to Sentry

Notifications You must be signed in to change notification settings

leads-su/sentry-monitoring

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

Мониторинг доставки событий в Sentry

Цель:

  • убедиться что мы можем отправлять события в Sentry (получаем 20X код ответа при отправке)
  • убедиться что события доставлены в конкретные issue

Отправка фейковых событий

Отправка события на store endpoint:

PROJECT_ID=0;
HOST=''
SENTRY_KEY=''

curl -v \
    -d '{"exception":{"values":[{"type":"Test issue","value":"store"}]}}' \
    -H 'Content-type: application/json' \
    -H "X-Sentry-Auth: Sentry sentry_version=7, sentry_key=$SENTRY_KEY" \
    "https://$HOST/api/$PROJECT_ID/store/"

Отправка события на envelope endpoint:

PROJECT_ID=0;
HOST=''
SENTRY_KEY=''

# подготовка тела запроса
echo '{"sdk":{"name":"sentry.javascript.vue","version":"7.54.0"},"trace":{"environment":"monitoring"}}' > body.json
echo '{"type":"event"}' >> body.json
echo '{"exception":{"values":[{"type":"Test issue","value":"envelope"}]}}' >> body.json

curl -v \
  -H 'Content-type: text/plain' \
  --data-binary @body.json \
  "https://$HOST/api/$PROJECT_ID/envelope/?sentry_key=$SENTRY_KEY&sentry_version=7"

Отправка события через tunnel на envelope endpoint:

PROJECT_ID=0;
HOST=''
SENTRY_KEY=''

# подготовка тела запроса
# авторизация в теле прямо из клиента, нам она не нужна, но для правдоподобности оставим
echo '{"sdk":{"name":"sentry.javascript.vue","version":"7.54.0"},"trace":{"environment":"monitoring"},"dsn":"https://'$SENTRY_KEY'@'$HOST'/'$PROJECT_ID'"}' > body.json
echo '{"type":"event"}' >> body.json
echo '{"exception":{"values":[{"type":"Test issue","value":"envelope tunnel"}]}}' >> body.json

# мы отправляем туда же, куда обычно шлем запросы, потому что под капотом свой обработчик
# он преобразует запрос и перенаправит его на сервер Sentry
curl -v \
  -H 'Content-type: text/plain' \
  --data-binary @body.json \
  "https://$HOST/api/$PROJECT_ID/envelope/$SENTRY_KEY/"

Теперь у нас есть 3 разных issue, которые нужно мониторить на предмет давности доставки событий.

Мониторинг доставляемости событий по проектам

Проверка сколько секунд назад было последнее событие в issue через API (нужно выполнить для каждого сгенерированного issue на прошлых шагах):

ISSUE_ID=0
SENTRY_TOKEN=""
HOST=''

lastSeen=$(curl -s -H "Authorization: Bearer $SENTRY_TOKEN" "https://$HOST/api/0/issues/$ISSUE_ID/" | grep -o -m 1 '"lastSeen":"[^"]*' | grep -o -m 1 '[^"]*$')
timeDiff=$(( $(date -d "$lastSeen" +"%s") - $(date +%s) ))
timeDiff=${timeDiff#-}

echo $timeDiff

About

Monitoring the sending and delivery of events to Sentry

Topics

Resources

Stars

Watchers

Forks