一、centos7 docker方式部署sentry


 

 

一、什么是Sentry?

Sentry可以幫助我們完成以下工作:例如,線上有一個bug,代碼的某處邏輯的NullPointerException造成了這個問題,Sentry會立即發現錯誤,並通過郵件或其他基於通知規則的集成通知到相關責任人員,這個通知可以把我們引入到一個指示板,這個指示板為我們提供了快速分類問題所需的上下文,如:頻率、用戶影響、代碼那一部分受到影響以及那個團隊可能是問題的所有者。

然后,它會顯示幫助我們調試的詳細信息,比如堆棧跟蹤、堆棧本地信息、前面的事件、可能導致問題的提交以及在錯誤發生時捕獲的定制數據。我們還可以在JIRA等項目管理工具中自動開始跟蹤問題。

 

二、Sentry原理

Sentry到底是如何實現實時日志監控報警的呢?首先,Sentry是一個C/S架構,我們需要在自己應用中集成Sentry的SDK才能在應用發生錯誤是將錯誤信息發送給Sentry服務端。根據語言和框架的不同,我們可以選擇自動或自定義設置特殊的錯誤類型報告給Sentry服務端。

 

而Sentry的服務端分為web、cron、worker這幾個部分,應用(客戶端)發生錯誤后將錯誤信息上報給web,web處理后放入消息隊列或Redis內存隊列,worker從隊列中消費數據進行處理。

 

三、安裝部署(docker方式安裝)

Sentry服務依賴比較多,並且官方也推薦使用docker方式進行安裝,需要先部署docker環境

1.安裝docker環境

# 安裝docker依賴環境
[root@sentry ~]# yum install -y yum-utils device-mapper-persistent-data lvm2

# 添加yum源
[root@sentry ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 安裝docker-ce
[root@sentry ~]# yum install docker-ce

# 安裝docker-compose
[root@sentry ~]# curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

[root@sentry ~]# chmod +x /usr/local/bin/docker-compose
[root@sentry ~]# ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

# 或者直接通過pip方式安裝
[root@sentry ~]# git clone https://github.com/getsentry/onpremise.git 
  

pip install docker-compose

  

docker官方文檔:

https://docs.docker.com/install/linux/docker-ce/centos/

https://docs.docker.com/compose/install/

 

2.啟動docker服務

[root@sentry ~]# systemctl start docker
[root@sentry ~]# systemctl enable docker

 

3.從sentry官方網站下載源碼

[root@sentry ~]# git clone https://github.com/getsentry/onpremise.git

然后切換到onpremise目錄下,可以直接執行./install.sh腳本進行一鍵安裝,不過在安裝之前需要修改幾個配置項

[root@sentry ~]# cd onpremise
[root@sentry onpremise]# vim docker-compose.yml
# NOTE: This docker-compose.yml is meant to be just an example of how
# you could accomplish this on your own. It is not intended to work in
# all use-cases and must be adapted to fit your needs. This is merely
# a guideline.

# See docs.getsentry.com/on-premise/server/ for full
# instructions

version: '3.4'

x-defaults: &defaults
  restart: unless-stopped
  build:
    context: .
    args:
      SENTRY_IMAGE: ${SENTRY_IMAGE}
  depends_on:
    - redis
    - postgres
    - memcached
    - smtp
  env_file: .env
  environment:
    SENTRY_EMAIL_BACKEND: 'django_smtp_ssl.SSLEmailBackend'
    SENTRY_MAILER_EMAIL_BACKEND: EMAIL_BACKEND
    SENTRY_MEMCACHED_HOST: memcached
    SENTRY_REDIS_HOST: redis
    
    # 新增以下內容,也可以不配置,等全部安裝好,首次進入系統時也可以進行配置
    SENTRY_POSTGRES_HOST: postgres
    SENTRY_EMAIL_HOST: "smtp.mxhichina.com"
    SENTRY_EMAIL_USER: "xulei@xl-blog.cn"
    SENTRY_SERVER_EMAIL: "xulei@xl-blog.cn"
    SENTRY_EMAIL_PASSWORD: "passwod"
    SENTRY_EMAIL_USE_TLS: "false"  # 如果你使用的服務器不讓用25端口,則需要開啟TLS,將flase改為true即可
    SENTRY_EMAIL_PORT: 25  # TLS為true改為456或587
  volumes:
    - sentry-data:/var/lib/sentry/files


services:
  smtp:
    restart: unless-stopped
    image: tianon/exim4

  memcached:
    restart: unless-stopped
    image: memcached:1.5-alpine

  redis:
    restart: unless-stopped
    image: redis:3.2-alpine

  postgres:
    restart: unless-stopped
    image: postgres:9.5
    volumes:
      - sentry-postgres:/var/lib/postgresql/data

  web:
    <<: *defaults
    ports:
      - '9000:9000'

  cron:
    <<: *defaults
    command: run cron

  worker:
    <<: *defaults
    command: run worker


volumes:
    sentry-data:
      external: true
    sentry-postgres:
      external: true

修改sentry.conf.py文件

[root@sentry onpremise]# vim sentry.conf.py
# 在文件首部增加這兩行代碼,如果不加的話,可以在后面使用郵件功能會出現”SMTPServerDisconnected: Connection unexpectedly closed“錯誤

import socket

socket.setdefaulttimeout(20)

現在可以執行./install.sh腳本進行自動安裝,腳本安裝過程中會讓你輸入郵箱和密碼,這個是作用於首次登陸時使用

腳本安裝完,可以執行以下命令啟動容器

[root@sentry onpremise]# docker-compose up -d
WARNING: The SENTRY_IMAGE variable is not set. Defaulting to a blank string.
Creating network "onpremise_default" with the default driver
Creating onpremise_postgres_1 ... done
Creating onpremise_redis_1 ... done
Creating onpremise_smtp_1 ... done
Creating onpremise_memcached_1 ... done
Creating onpremise_web_1 ... done
Creating onpremise_cron_1 ... done
Creating onpremise_worker_1 ... done

 

四、登陸sentry后台

sentry服務默認是啟動在9000端口,你可以在瀏覽器中輸入http://<你的ip>:9000

 輸入剛剛執行腳本時輸入的賬號和密碼登陸即可。

然后我們進入到admin后台,測試一下郵件功能,看郵件是否能正常發送,如果你的郵箱收到如下信息,則說明郵件服務配置無問題:

五、Sentry初次體驗

經過上面的步驟,Sentry的基礎環境也都配置好,接下來我們需要來感受一下Sentry的強大之處

1.創建一個project

 創建完成后,點擊python代碼,因為我們是用python代碼進行測試,Sentry會為我們生成一個簡單的測試demo,不過我們需要先安裝它的sdk

 

把上面的代碼放到自己的py文件中,執行后,系統會報錯,這個時候你可以在后台看到這個錯誤,這個代碼中最主要的是init目標中的代碼,Sentry也是通過它給服務端上報錯誤信息的

 

以上就是全部安裝過程


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM