欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Sentry的安裝、配置、使用教程(Sentry日志手機(jī)系統(tǒng))

 更新時(shí)間:2022年07月23日 08:37:26   作者:程序設(shè)計(jì)實(shí)驗(yàn)室  
Sentry?是一個(gè)實(shí)時(shí)事件日志記錄和聚合平臺(tái),由于ExceptionLess官方提供的客戶端只有.Net/.NetCore平臺(tái)和js的,本文繼續(xù)介紹另一個(gè)日志收集系統(tǒng)Sentry,感興趣的朋友一起看看吧

前言

上一篇文章介紹了ExceptionLess這個(gè)日志收集系統(tǒng):ExceptionLess的安裝、配置、使用

由于ExceptionLess官方提供的客戶端只有.Net/.NetCore平臺(tái)和js的,本文繼續(xù)介紹另一個(gè)日志收集系統(tǒng):Sentry

Sentry 是一個(gè)實(shí)時(shí)事件日志記錄和聚合平臺(tái)。(官方說(shuō)的是錯(cuò)誤監(jiān)控 Error Monitor)它專門(mén)用于監(jiān)視錯(cuò)誤和提取執(zhí)行適當(dāng)?shù)氖潞蟛僮魉璧乃行畔?,而無(wú)需使用標(biāo)準(zhǔn)用戶反饋循環(huán)的任何麻煩。

Sentry使用Python(Django)開(kāi)發(fā),功能非常豐富,相比起ExceptionLess來(lái)說(shuō)也重得多(這也是我們?cè)?NetCore平臺(tái)使用ExceptionLess的原因),其支持的平臺(tái)很全,基本主流編程語(yǔ)言/框架都有,看圖

除了.NetCore項(xiàng)目,其他的我都使用Sentry來(lái)收集日志和報(bào)錯(cuò)信息,整體使用下來(lái)還是非常不錯(cuò)的,(就是有點(diǎn)耗內(nèi)存),請(qǐng)準(zhǔn)備好一臺(tái)內(nèi)存足夠大的服務(wù)器,起碼8G吧~

安裝

和ExceptionLess一樣,Sentry也可以在線使用,只需要注冊(cè)一個(gè)賬號(hào)就行了

不過(guò)既然是開(kāi)源免費(fèi)的,還是自己部署一套比較自由,速度也比較快(Sentry服務(wù)器在國(guó)外)

老規(guī)矩,使用docker做本地部署,最開(kāi)始用這玩意的時(shí)候安裝折騰得很,后來(lái)官方自己出了個(gè)方便的安裝腳本,現(xiàn)在安裝應(yīng)該是很容易了。

首先拉取這個(gè)項(xiàng)目到本地:https://github.com/getsentry/self-hosted

然后進(jìn)入項(xiàng)目目錄,執(zhí)行./install.sh,經(jīng)過(guò)漫長(zhǎng)的pull和build,根據(jù)提示輸入管理員的用戶名和密碼,就完事了

官方提供的這個(gè)方案也是通過(guò)docker-compose管理容器的,以后我們也可以通過(guò)docker-compose相關(guān)的命令來(lái)手動(dòng)啟停系統(tǒng)。

跑起來(lái)后訪問(wèn)http://ip:9000就可以看到登錄界面(端口根據(jù)實(shí)際配置可能不一樣)

用剛才創(chuàng)建的用戶名密碼登錄就行了

配置

Sentry的配置項(xiàng)是真的多,到現(xiàn)在大部分我都還沒(méi)搞清楚,我只是簡(jiǎn)單的配置了郵件、端口這些,就可以用得飛起了

接上面的,把官方提供的那個(gè)self-host項(xiàng)目clone下來(lái)之后,可以看到里面有個(gè)sentry文件夾,配置文件就在這目錄里。

郵件配置在config.yml文件中,(比ExceptionLess好的一點(diǎn)是郵箱地址終于不需要轉(zhuǎn)義了)

這里以騰訊企業(yè)郵箱配置為例,在配置中找到# Mail Server #這個(gè)“節(jié)點(diǎn)”

mail.backend: 'smtp'  # Use dummy if you want to disable email entirely
mail.host: 'smtp.exmail.qq.com'
mail.port: 465
mail.username: 'demo@demo.com'
mail.password: 'password'
mail.use-tls: false
# mail.use-ssl: false
mail.from: 'demo@demo.com'

這樣就可以正常發(fā)郵件了~

那么端口要怎么改呢,舊版的onpremise(也就是這個(gè)self-host項(xiàng)目)是直接在docker-compose.yml里改的,不過(guò)現(xiàn)在不推薦修改這個(gè)文件了(官方的這個(gè)compose配置文件我甚至看不懂)

現(xiàn)在通過(guò)環(huán)境變量設(shè)置,使用ll -a列出項(xiàng)目目錄下所有文件,可以發(fā)現(xiàn)有個(gè).env文件,環(huán)境變量就在這文件里配置,里面有一行配置端口的

SENTRY_BIND=9000

直接修改就完事了~

使用

Sentry的界面比ExceptionLess的復(fù)雜很多,里面的信息也更多,讓人看得眼花繚亂

作為日志收集工具的話,主要就是看“問(wèn)題”頁(yè)面,可以篩選某個(gè)項(xiàng)目,也可以看全部,這點(diǎn)比ExceptionLess直觀一些

點(diǎn)擊某一個(gè)問(wèn)題進(jìn)去可以看到錯(cuò)誤詳情

如果是Python這類動(dòng)態(tài)語(yǔ)言,甚至可以直接看到是哪段代碼報(bào)錯(cuò),太方便了

然后性能頁(yè)面可以細(xì)化到每個(gè)請(qǐng)求的相應(yīng)時(shí)間、錯(cuò)誤頻率、訪問(wèn)的用戶數(shù)量等

然后再點(diǎn)進(jìn)去某一個(gè)URL還能看到訪問(wèn)這個(gè)URL的用戶的一些信息,包括IP地址,用戶名(如果已登錄),頁(yè)面停留時(shí)間,用戶都是哪些時(shí)間段訪問(wèn)啥的,指標(biāo)太多了,有些不太懂,反正功能是很強(qiáng)的就對(duì)了~

大概就這些吧,其他功能我還沒(méi)有深入,等后續(xù)繼續(xù)學(xué)習(xí)后再來(lái)更新博客。

項(xiàng)目集成

首先可以看官網(wǎng)文檔,還是比較全的,而且大部分語(yǔ)言都提供了集成的Demo。

文檔地址:https://docs.sentry.io/

一些Demo:https://github.com/getsentry/sentry-dotnet/tree/main/samples

直接上幾個(gè)項(xiàng)目集成的例子吧

本身在Sentry中創(chuàng)建項(xiàng)目時(shí),系統(tǒng)也會(huì)顯示一個(gè)簡(jiǎn)單的集成指引,這里把我魔改的代碼放上來(lái)

Django項(xiàng)目

首先根據(jù)指引需要安裝一個(gè)pip包

pip install sentry-sdk

我習(xí)慣將項(xiàng)目配置settings.py放在config包下,然后把拆分出來(lái)的配置一個(gè)個(gè)都列在這個(gè)包中,方便管理

config下創(chuàng)建sentry.py,代碼如下

import logging
import sentry_sdk
from sentry_sdk.integrations.django import DjangoIntegration
from sentry_sdk.integrations.logging import LoggingIntegration
from sentry_sdk.integrations.redis import RedisIntegration
sentry_logging = LoggingIntegration(
    level=logging.INFO,  # Capture info and above as breadcrumbs
    event_level=logging.ERROR  # Send errors as events
)
sentry_sdk.init(
    # 反正dsn這行無(wú)腦復(fù)制sentry上顯示的就行
    dsn="http://key@sentry地址/id",
    integrations=[DjangoIntegration(), RedisIntegration(), sentry_logging],

    # 這里設(shè)置為1代表捕捉100%的transaction 用于性能監(jiān)控
    traces_sample_rate=1,
    send_default_pii=True,
)

然后在settings.py里引入就完事了

from config import sentry

Flutter項(xiàng)目

根據(jù)指引首先要添加依賴

dependencies:
  sentry_flutter: ^5.1.0

PS:現(xiàn)在這個(gè)依賴出了6.x版本了,初始化的時(shí)候是用異步操作的,我還沒(méi)更新,就先用5.x版本了

這是原本main.dart中的App初始化代碼

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  if (Platform.isAndroid) {
      // 以下兩行 設(shè)置android狀態(tài)欄為透明的沉浸。
      SystemUiOverlayStyle systemUiOverlayStyle = SystemUiOverlayStyle(statusBarColor: Colors.transparent);
      SystemChrome.setSystemUIOverlayStyle(systemUiOverlayStyle);
  }
  Global.init().then((value) => runApp(MyApp()));
}

引入Sentry之后,需要包裝一層

import 'package:sentry_flutter/sentry_flutter.dart';
void main() {
  WidgetsFlutterBinding.ensureInitialized();

  SentryFlutter.init(
    (options) {
      options.dsn = 'http://1335793bf7684f21918248b11cebbf9c@sentry.sblt.deali.cn:9800/9';
    },
    appRunner: () {
      if (Platform.isAndroid) {
        SystemUiOverlayStyle systemUiOverlayStyle = SystemUiOverlayStyle(statusBarColor: Colors.transparent);
        SystemChrome.setSystemUIOverlayStyle(systemUiOverlayStyle);
      }
      Global.init().then((value) => runApp(MyApp()));
    }
  );
}

也就是把原本啟動(dòng)App的代碼放在SentryFlutter的appRunner里執(zhí)行。

AspNetCore項(xiàng)目

雖然AspNetCore項(xiàng)目我們使用ExceptionLess來(lái)采集日志,不過(guò)在切換到ExceptionLess之前,也用了一段時(shí)間的Sentry,Sentry支持的平臺(tái)那么豐富,在AspNetCore中使用自然也是沒(méi)問(wèn)題的。

根據(jù)官方指引首先安裝依賴

dotnet add package Sentry.AspNetCore -v 3.19.0

然后將sentry的配置寫(xiě)在appsettings.json

"Sentry": {
  "Dsn": "https://examplePublicKey@o0.ingest.sentry.io/0",
  "MaxRequestBodySize": "Always",
  "SendDefaultPii": true,
  "MinimumBreadcrumbLevel": "Debug",
  "MinimumEventLevel": "Warning",
  "AttachStackTrace": true,
  "Debug": true,
  "DiagnosticsLevel": "Error"
}

跟ExceptionLess不同,sentry不用注冊(cè)服務(wù)和添加中間件的方式,而是實(shí)現(xiàn)了IWebHostBuilder的擴(kuò)展方法,在ConfigureWebHostDefaults時(shí)就hook到系統(tǒng)中,理論上功能會(huì)更強(qiáng),ExceptionLess通過(guò)中間件只能捕捉到類似URL不存在這類HTTP異常,如果是程序中報(bào)錯(cuò)是需要手動(dòng)catch后submit的;而sentry是采用hook的形式(官網(wǎng)說(shuō)的),可以捕捉到未處理的異常并且上報(bào)。(根據(jù)微軟文檔中AspNetCore的啟動(dòng)過(guò)程推測(cè)出的,理解得不深如果有錯(cuò)誤請(qǐng)大佬們指正~)

所以對(duì)于AspNetCore3.1項(xiàng)目,修改Program.cs文件,添加一行代碼 webBuilder.UseSentry();

public static IHostBuilder CreateHostBuilder(string[] args) =>
  Host.CreateDefaultBuilder(args)
  .ConfigureWebHostDefaults(webBuilder => {
    webBuilder.UseSentry();
    webBuilder.UseStartup<Startup>();
  });

對(duì)于AspNetCore6項(xiàng)目,也是Program.cs文件(.Net6也只有這文件)

var builder = WebApplication.CreateBuilder(args);
builder.WebHost.UseSentry();

搞定,然后sentry就會(huì)捕捉異常并提交

也可以手動(dòng)提交,比如

void Demo([FromServices] IHub sentry) {
  // 提交普通信息
  sentry.CaptureMessage("hello", SentryLevel.Debug);
  
  try {
    // 會(huì)出錯(cuò)的代碼
  }
  catch (Exception err) {
      sentry.CaptureException(err);
  }
}

當(dāng)然根據(jù)文檔也可以不用依賴注入

using Sentry;
try {
    // 會(huì)出錯(cuò)的代碼
}
catch (Exception err) {
    SentrySdk.CaptureException(err);
}

OK,先這些吧,其他例子直接看官網(wǎng)就行~

到此這篇關(guān)于Sentry的安裝、配置、使用的文章就介紹到這了,更多相關(guān)Sentry 安裝使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • django框架F&Q 聚合與分組操作示例

    django框架F&Q 聚合與分組操作示例

    這篇文章主要介紹了django框架F&Q 聚合與分組操作,結(jié)合實(shí)例形式詳細(xì)分析了Django框架查詢條件取對(duì)象中某列值、構(gòu)建搜索條件以及聚合查詢等相關(guān)操作技巧,需要的朋友可以參考下
    2019-12-12
  • 如何用python插入獨(dú)創(chuàng)性聲明

    如何用python插入獨(dú)創(chuàng)性聲明

    這篇文章主要介紹了如何用python插入獨(dú)創(chuàng)性聲明,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-03-03
  • python實(shí)現(xiàn)WebSocket服務(wù)端過(guò)程解析

    python實(shí)現(xiàn)WebSocket服務(wù)端過(guò)程解析

    這篇文章主要介紹了python實(shí)現(xiàn)WebSocket服務(wù)端過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • python如何在文件中部插入信息

    python如何在文件中部插入信息

    這篇文章主要介紹了python如何在文件中部插入信息問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 使用OpenCV獲取圖像某點(diǎn)的顏色值,并設(shè)置某點(diǎn)的顏色

    使用OpenCV獲取圖像某點(diǎn)的顏色值,并設(shè)置某點(diǎn)的顏色

    這篇文章主要介紹了使用OpenCV獲取圖像某點(diǎn)的顏色值,并設(shè)置某點(diǎn)的顏色,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • 淺析Python?WSGI的使用

    淺析Python?WSGI的使用

    WSGI也稱之為web服務(wù)器通用網(wǎng)關(guān)接口,全稱是web?server?gateway?interface。這篇文章主要為大家介紹了Python?WSGI的使用,希望對(duì)大家有所幫助
    2023-04-04
  • python 爬取馬蜂窩景點(diǎn)翻頁(yè)文字評(píng)論的實(shí)現(xiàn)

    python 爬取馬蜂窩景點(diǎn)翻頁(yè)文字評(píng)論的實(shí)現(xiàn)

    這篇文章主要介紹了python 爬取馬蜂窩景點(diǎn)翻頁(yè)文字評(píng)論的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • Python信息抽取之亂碼解決辦法

    Python信息抽取之亂碼解決辦法

    這篇文章主要介紹了Python信息抽取之亂碼解決辦法的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • python使用Paramiko模塊實(shí)現(xiàn)遠(yuǎn)程文件拷貝

    python使用Paramiko模塊實(shí)現(xiàn)遠(yuǎn)程文件拷貝

    這篇文章主要為大家詳細(xì)介紹了python使用Paramiko模塊實(shí)現(xiàn)遠(yuǎn)程文件拷貝,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • Python標(biāo)準(zhǔn)庫(kù)之typing的用法(類型標(biāo)注)

    Python標(biāo)準(zhǔn)庫(kù)之typing的用法(類型標(biāo)注)

    這篇文章主要介紹了Python標(biāo)準(zhǔn)庫(kù)之typing的用法(類型標(biāo)注),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06

最新評(píng)論