自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

微服務(wù)架構(gòu)統(tǒng)一異常監(jiān)控Sentry

開發(fā) 架構(gòu)
sentry主要用于實(shí)時(shí)監(jiān)控的應(yīng)用服務(wù),收集相關(guān)應(yīng)用服務(wù)在運(yùn)行狀態(tài)時(shí)出現(xiàn)的異?;蛘咤e(cuò)誤日志信息,并且sentry會(huì)通過自身集成的通知渠道將錯(cuò)誤信息推送給維護(hù)人員。

1、sentry[1]

sentry是一個(gè)跨平臺(tái)的錯(cuò)誤監(jiān)控和搜集的異常上報(bào)監(jiān)控系統(tǒng)。sentry主要用于實(shí)時(shí)監(jiān)控的應(yīng)用服務(wù),收集相關(guān)應(yīng)用服務(wù)在運(yùn)行狀態(tài)時(shí)出現(xiàn)的異?;蛘咤e(cuò)誤日志信息,并且sentry會(huì)通過自身集成的通知渠道將錯(cuò)誤信息推送給維護(hù)人員。

sentry收集到的異?;蛘咤e(cuò)誤日志,會(huì)在告警規(guī)則的匹配下,第一時(shí)間讓維護(hù)人員接收到服務(wù)運(yùn)行的異常信息,便于快速定位問題以及解決問題。

sentry支持絕大多數(shù)的語言以及框架,使用相對(duì)便捷。

2、sentry特點(diǎn)

優(yōu)點(diǎn):

  • 產(chǎn)品體驗(yàn)好,功能完善。
  • 接入工作量少。
  • Sentry專注于 Error、Exception、Crash??梢圆榭吹骄唧w的錯(cuò)誤信息和調(diào)用棧,能快速定位問題代碼。
  • 提供豐富的上下文信息。SDK 會(huì)自動(dòng)上報(bào)基礎(chǔ)信息,也支持上報(bào)自定義的信息,便于排查問題。
  • 自動(dòng)合并重復(fù)問題。重復(fù)的報(bào)錯(cuò)被自動(dòng)合并且累計(jì)次數(shù),避免開發(fā)者在大量重復(fù)冗余的信息尋找 bug 的蛛絲馬跡。
  • 主動(dòng)郵件告警。不用再等客戶反饋后才開始排查問題。
  • 能通過主動(dòng)上報(bào)的事件,準(zhǔn)確定位是自身的服務(wù)的問題還是第三方平臺(tái)的問題(大多數(shù)在使用三方平臺(tái)的時(shí)候,很難會(huì)在服務(wù)出現(xiàn)問題的時(shí)候,去想到是三方平臺(tái)的問題。)
  • 幫助前端項(xiàng)目更快的發(fā)現(xiàn)問題。

缺點(diǎn):

  • 部署依賴繁多,30左右個(gè)容器依賴。
  • 維護(hù)成本較高,待日均接口請(qǐng)求量規(guī)模較大的時(shí)候,sentry單實(shí)例部署會(huì)引發(fā)雪崩的問題(大量請(qǐng)求發(fā)到sentry,造成sentry響應(yīng)延遲、Redis隊(duì)列內(nèi)存占滿、NGINX出現(xiàn)504等等),會(huì)拖垮服務(wù)本身。

規(guī)避sentry雪崩的優(yōu)化

保障Sentry服務(wù)端高可用。

  • 使用sentry SaaS服務(wù)。
  • 自建的sentry實(shí)例高可用(成功高)。

在SDK上設(shè)置請(qǐng)求sentry的超時(shí)時(shí)間

合理設(shè)置SDK的采樣率。

  • 0.00: 拒絕發(fā)送任何事件。
  • 1.00: 發(fā)送全部事件。

sentry在高負(fù)載下,應(yīng)及時(shí)熔斷處理,比如優(yōu)化采樣率為0.00。

SDK使用異步發(fā)送請(qǐng)求,避免同步阻塞。

sentry實(shí)例采用環(huán)境隔離的方式使用。

通過隊(duì)列來緩沖請(qǐng)求至 Sentry 的并發(fā)壓力。

3、組件架構(gòu)

sentry組件架構(gòu)。

sentry組件架構(gòu)

4、安裝

準(zhǔn)備sentry的工作目錄:

mkdir sentry && cd $_
touch sentry.env docker-compose.yml # 分別填充以下內(nèi)容

DotEnv

sentry.env:

SENTRY_SECRET_KEY=0x4r6f^0ak5w_3)w1ybh2qbr4@-0tr33ey)lf*e5_cq55xae&5-)r*=9
DB_PASSWORD="bw1knjWnUA"
DB_USER=sentry

docker-compose安裝sentry

將以下內(nèi)容填充到docker-compose.yml中:

version: '2'
volumes:
pgdb:
services:
redis:
image: redis:alpine
restart: always
#command: /bin/sh -c "redis-server --requirepass $$REDIS_HOST_PASSWORD"
postgres:
image: postgres
environment:
POSTGRES_USER: $$DB_USER
POSTGRES_PASSWORD: $$DB_PASSWORD
POSTGRES_DB: sentry
volumes:
- pgdb:/var/lib/postgresql/data
env_file:
- sentry.env
sentry:
image: sentry
links:
- redis
- postgres
ports:
- 9000:9000
environment:
SENTRY_SECRET_KEY: $$SENTRY_SECRET_KEY
SENTRY_POSTGRES_HOST: postgres
SENTRY_DB_USER: $$DB_USER
SENTRY_DB_PASSWORD: $$DB_PASSWORD
SENTRY_REDIS_HOST: redis
env_file:
- sentry.env
cron:
image: sentry
links:
- redis
- postgres
command: "sentry run cron"
environment:
SENTRY_SECRET_KEY: $$SENTRY_SECRET_KEY
SENTRY_POSTGRES_HOST: postgres
SENTRY_DB_USER: $$DB_USER
SENTRY_DB_PASSWORD: $$DB_PASSWORD
SENTRY_REDIS_HOST: redis
env_file:
- sentry.env
worker:
image: sentry
links:
- redis
- postgres
command: "sentry run worker"
environment:
SENTRY_SECRET_KEY: $$SENTRY_SECRET_KEY
SENTRY_POSTGRES_HOST: postgres
SENTRY_DB_USER: $$DB_USER
SENTRY_DB_PASSWORD: $$DB_PASSWORD
SENTRY_REDIS_HOST: redis
env_file:
- sentry.env

生成sentry secret key填充到sentry.env中的SENTRY_SECRET_KEY。

docker run --rm sentry config generate-secret-key

初始化數(shù)據(jù)庫以及創(chuàng)建登錄用戶。

docker-compose up -d # 部署sentry以及相關(guān)依賴的服務(wù)
docker-compose exec sentry sentry upgrade ## create user and password.

5、sentry dashboard使用

使用前面創(chuàng)建的用戶以及密碼登錄:

sentry dashboard login

創(chuàng)建項(xiàng)目:

創(chuàng)建項(xiàng)目

一個(gè)配置demo:

配置demo

大概就是這些,具體的各語言的SDK還要看對(duì)應(yīng)的文檔以及源碼。

6、go sentry測試

本實(shí)例,將通過創(chuàng)建一個(gè)go語言編寫的demo服務(wù),測試錯(cuò)誤上報(bào)到sentry的效果

創(chuàng)建go項(xiàng)目:

mkdir go-sentry-gin
cd $_

初始化模塊:

go mod init go-gin-sentry
go get github.com/getsentry/sentry-go
go get github.com/getsentry/sentry-go/gin

source code:

package main
import (
"github.com/getsentry/sentry-go"
sentrygin "github.com/getsentry/sentry-go/gin"
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
err := sentry.Init(sentry.ClientOptions{
Dsn: "http://c0056580f26c469c8cc31d780d1995a8@localhost:9000/6",
Environment: "dev",
Release: "go-sentry-gin@0.0.1",
Debug: true,
})
if err != nil {
sentry.CaptureMessage("Sentry initialization failed." + err.Error())
}
r := gin.Default()
r.Use(sentrygin.New(sentrygin.Options{}))
r.Use(func(ctx *gin.Context) {
if hub := sentrygin.GetHubFromContext(ctx); hub != nil {
hub.Scope().SetTag("someRandomTag", "maybeYouNeedIt")
ctx.Next()
}
})
r.GET("/demo", func(c *gin.Context) {
if hub := sentrygin.GetHubFromContext(c); hub != nil {
hub.WithScope(func(scope *sentry.Scope) {
scope.SetExtra("unwantedQuery", "someQueryDataMaybe")
hub.CaptureMessage("User provided unwanted query string, but we recovered just fine")
})
c.Status(http.StatusOK)
}
panic("error occured")
})
r.Run()
}

運(yùn)行后,訪問服務(wù)路由,錯(cuò)誤日志信息即上報(bào)到sentry上。

打開項(xiàng)目詳情頁,即可看到整個(gè)項(xiàng)目的狀態(tài)信息。

go-gin-sentry相關(guān)信息

7、參考

  1. Introducing Snuba: Sentry's New Search Infrastructure。
  2. 轉(zhuǎn)轉(zhuǎn)商業(yè)前端錯(cuò)誤監(jiān)控系統(tǒng)(Sentry)策略升級(jí)。
  3. Sentry(v20)云原生架構(gòu)探索,前/后端監(jiān)控與事件日志大數(shù)據(jù)分析,高性能高可用可擴(kuò)展可伸縮集群。
  4. 事件存儲(chǔ)過程。
  5. sentry系列的文章。

參考資料

[1]sentry官網(wǎng): https://sentry.io/welcome/。

責(zé)任編輯:姜華 來源: 云原生生態(tài)圈
相關(guān)推薦

2020-12-11 09:06:50

異常監(jiān)控云服務(wù)

2022-11-28 07:35:52

前端錯(cuò)誤

2023-07-28 09:23:24

微服務(wù)架構(gòu)

2024-04-03 12:14:15

微服務(wù)架構(gòu)監(jiān)控

2020-08-26 08:21:59

微服務(wù)

2020-09-02 08:10:33

微服務(wù)標(biāo)準(zhǔn)化設(shè)計(jì)

2019-10-24 11:17:57

架構(gòu)運(yùn)維技術(shù)

2022-11-16 09:03:35

Sentry前端監(jiān)控

2022-08-16 10:44:11

Sentry前端異常

2021-09-14 23:50:17

Sentry后端監(jiān)控

2021-09-27 19:41:31

監(jiān)控Sentry Alerts

2021-10-11 19:36:08

監(jiān)控Sentry架構(gòu)

2021-10-09 23:33:55

監(jiān)控

2022-05-07 10:09:01

開發(fā)Java日志

2023-11-28 14:32:04

2016-03-25 09:57:09

統(tǒng)一監(jiān)控報(bào)警平臺(tái)運(yùn)維

2024-03-06 14:58:52

客戶端微服務(wù)架構(gòu)

2020-06-10 10:20:24

微服務(wù)架構(gòu)WEB2.0

2021-10-09 00:00:40

Sentr 監(jiān)控架構(gòu)

2021-11-27 23:54:44

監(jiān)控Snuba數(shù)據(jù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)