Введение в Sentry.
Sentry— это инструмент отслеживания ошибок с открытым исходным кодом, который помогает разработчикам отслеживать и исправлять ошибки в системе в режиме реального времени. Ориентирован на мониторинг ошибок и извлечение всей информации, необходимой для постобработки, поддерживает практически все основные языки разработки (JS/Java/Python/php) и платформа, а также предоставляет веб-интерфейс для отображения ошибок вывода.
Официальный сайт Сентри:sentry.io/
сторожевая установка
sentryЭто инструмент с открытым исходным кодом, который можно создать самостоятельно.
Официально поддерживает как установку, так и работуSentryсерверный метод,Dockerа такжеPython. Рекомендуемое использованиеDocker.
Конечно, для тех, кто только начинаетsentryЕсли вы студент, вы также можете напрямую воспользоваться бесплатной услугой, предоставляемой официальным лицом, но есть некоторые ограничения.
Давайте сначала познакомимся с тем, как использовать официальные бесплатные сервисы во фронтенд-проектах.sentry.
Как использовать часовой в своем проекте
-
Сначала вам нужно
sentryЗарегистрируйте аккаунт на официальном сайте. После регистрации выберите создание нового проекта,sentryПоддерживает несколько фреймворков, выбирайте среди нихvueСоздайте проект. Я создал проект под названием test. -
Создание страницы проекта приведет к автоматическому переходу на страницу проекта How to configure vue. Далее следуйте инструкциям по внедрению в код vue.
sentry. в состоянии пройтиcdnилиnpmПредставлять. Мы используемnpmПредставлять. При импорте необходимо указатьinitФункция проходит аdsnпараметр. Этот параметр является единственным элементом, который мы только что создали, и система автоматически сгенерирует его при создании проекта. Если вы не передадите этот параметр,sentryОшибки отправляться не будут.
// main.js
import * as Sentry from '@sentry/browser';
import * as Integrations from '@sentry/integrations';
// 在生产环境中让sentry报错
process.env.NODE_ENV === "production" && Sentry.init({
dsn: 'https://1111a5bc59b54778b75f4e3a92f2e462@sentry.io/1447145',
integrations: [
new Integrations.Vue({
Vue,
attachProps: true,
}),
],
});
Добавьте в проект и директорию файл .sentryclirc, а токен в нем можно получить из ключей апи в аватарке в левом верхнем углу.
[auth]
token="your token"
[defaults]
url = https://sentry.io
org = "your org"
project = test
Затем мы делаем ошибку в коде, мы можем сделатьsentryзахвачен. Как имитировать онлайн-среду для локального доступа к файлам в dist? нужно установить одинhttp-server, просто запустите службу http в папке dist.
npm i http-server
cd dist
http-server -p 8888
Уведомление:Ошибки, обнаруженные sentry, не выводятся в консоль..
Вы можете увидеть в сети,sentryБыл отправлен неверный запрос со следующими параметрами запроса:
Далее мы можем увидеть сообщение об ошибке, только что загруженное в фоновом режиме, и в то же времяsentryСообщение об ошибке также будет отправлено на ваш почтовый ящик.
Просмотр сообщений об ошибках
Найдите в фоне наш тестовый проект, нажмите на него и вы увидите дополнительное сообщение об ошибке.
source-map.
Загрузить исходную карту
Есть несколько способов загрузки. в состоянии пройтиsentry-cliЗагрузить через командную строкуsource-map, но его нужно загрузить вручную. также можно использоватьwebpack-pluginЭтот плагин можно найти вbuildавтоматически загружать одновременноsource-map. В этой статье используется стратегия автоматической загрузки.
Конфигурация проекта:
// webpack.prod.conf
const SentryCliPlugin = require("@sentry/webpack-plugin");
plugins:[
new SentryCliPlugin({
include: "./dist",
release: process.env.RELEASE_VERSION,
configFile: "sentry.properties"
})
]
// main.js
Sentry.init({
dsn: "https://4ec86726f2ba40338f66837c6b959eed@sentry.io/1447158",
integrations: [
new Integrations.Vue({
Vue,
attachProps: true
}),
new Integrations.RewriteFrames()
],
release: process.env.RELEASE_VERSION
});
// prod.env.js
"use strict";
const release = "test-1";
process.env.RELEASE_VERSION = release;
module.exports = {
NODE_ENV: '"production"',
RELEASE_VERSION: `"${release}"`
};
Гарантированоpluginsа такжеSentry.initв обеих конфигурацияхreleaseНомера версий одинаковые, поэтомуsentryбыть способнымsource-mapФайлы находятся во взаимно однозначном соответствии.
После модификации пересобираем проект, процесс сборки медленный:
После того, как мы переходим на задний план, мы можем видеть, что в версии есть еще одна версияtest-1версия, которая является версией, которую мы только что загрузили.
source-mapдокумент.В это время мы снова вызываем ошибку, и мы видим конкретное местоположение ошибок.
GitHub, связанный с часовым
Его можно установить в Настройки -> ИнтеграцияsentryСвяжите различные сервисы, такие какgithub、jiraЖдать. связанныйgithubПосле этого вы можете напрямую создать задачу для исключения.
sentryэтот склад.Открытьgithub,существуетsentryПод этим репозиторием я нашел дополнительную задачу, которую мы только что создали.
в нашемgithubпредставитьcommitВ то время, если вы добавите ненормальный идентификатор, например:
git commit -m 'Fixes TEST-3'
Это будет в следующем выпускеbuildкогда,sentryавтоматически изменит статус исключения сunresolvedсталиresolved, и выдаст разностный адрес этого представления.
Построить сторожевую службу
Есть два официальных способа построить часовую самостоятельно:
Докер рекомендуется. Давайте познакомимся с тем, как собрать sentry через докер.
Сначала вам нужно скачать докер Адрес настольной версии для Mac:Хубэй.docker.com/editions/co…
Он имеет встроенную командную строку docker, docker-compose и т. д.
Затем вам нужно перейти на github, чтобы тянутьSentry On-Premise, это официальный репозиторий для установки sentry через докер, в котором пошагово описано, как собрать sentry.
Создайте этапы обслуживания:
cd onpremise
// 创建本地数据库
docker volume create --name=sentry-data && docker volume create --name=sentry-postgres
// 创建环境配置文件
cp -n .env.example .env
// 构建docker服务
docker-compose build
// 产生秘钥,将其作为SENTRY_SECRET_KEY加入到.env文件中
// 创建数据库,用交互式的提示生成管理员账号
docker-compose run --rm web upgrade
// 启动所有服务
docker-compose up -d
Если процесс прошел нормально, теперь вы можете посетить localhost:9000, чтобы увидеть страницу входа в систему sentry, и войти в систему с только что созданной учетной записью администратора и паролем.
Меры предосторожности
- При использовании локально собранного sentry для создания проекта я обнаружил, что столбец dsn был пуст, и система не генерировала его автоматически. Вам нужно склеить этот dsn самостоятельно. Он состоит из следующих частей, а именно протокола, открытого ключа, закрытого ключа, хоста, пути (обычно пустого) и идентификатора проекта.
'{PROTOCOL}://{PUBLIC_KEY}:{SECRET_KEY}@{HOST}/{PATH}{PROJECT_ID}'
//类似这样,把它放在sentry.init中的dsn即可
http://4cf10206ef27409bbb64f68b:a67a0eb5513e43ab883af3f3@localhost:9000/2