centos 6.5 sentry搭建過程

sentry安裝手冊

 sentry  cenots6.5 PostgreSQL

Sentry 是一個實時的事件日誌和聚合平臺,基於 Django 構建。 Sentry 可以幫助你將 Python 程序的所有 exception 自動記錄下來,然後在一個好用的 UI 上呈現和搜索。處理 exception 是每個程序的必要部分,所以 Sentry 也幾乎可以說是所有項目的必備組件。

sentry官方提供了一個控制檯,也可以自己搭建,參考文檔 SENTRY

sentry需要的軟件環境有

  • 一個基於UNIX架構的系統,本文使用Centos6.5
  • Python2.7
  • python-setuptools, python-pip, python-dev, libxslt1-dev, libxml2-dev, libz-dev, libffi-dev, libssl-dev, libpq-dev, libyaml-dev
  • PostgreSQL 注意:從sentry8.0開始,就不在支持MySQL數據庫了
  • Redis 有版本要求,本文使用的是3.0.7

ps: 本文通過pip安裝sentry,如果通過編譯安裝,還需要Node.js >= 0.12以上的版本

系統開發者環境

關於系統需要的一些開發者環境就不做贅述,常用的可以通過以下兩條命令安裝

yum -y install gcc gcc-c++ ncurses-devel perl pcre-devel openssl openssl-devel

yum -y groupinstall "Development Tools"

yum install libxslt-devel # 後期可能會遇到一個安裝lxml失敗的問題,可以通過  解決

 

安裝Python2.7

因爲Centos6.5系統默認的python版本是2.6.6,需要升級下python,同時要不影響yum的使用(yum使用python2.6)

1.下載Python2.7.11安裝包

yum -y install gcc gcc-c++ ncurses-devel perl pcre-devel openssl openssl-devel

如果沒有wget命令,可以通過yum -y install wget安裝

2.解壓並進入python包

tar -zxvf Python-2.7.11.tgz&&cd Python-2.7.11

3.編譯

./configure

如果報錯,可根據錯誤提示,看看是不是缺少什麼包

4.安裝

make&&make install

5.安裝完成以後,備份原來的python2.6

mv /usr/bin/python /usr/bin/python2.6.6

6.創建python2.7的鏈接,

ln -s /usr/local/bin/python2.7 /usr/bin/python

7.配置yum使用python2.6,

sudo vim /usr/bin/yum

 把第一行#!/usr/bin/python改爲#!/usr/bin/python2.6.6

8.測試在終端中輸入python,顯示版本2.7.11,同時yum可繼續使用

安裝pip

pip是一個比較好用的python包管理器,建議使用

1.下載get-pip.py文件

wget https://bootstrap.pypa.io/get-pip.py

2.安裝

pip python get-pip.py

安裝virtualenv

virtualenv是python的一套虛擬環境,爲了解決不同python項目,依賴的包會有衝突的情況

1.

pip install -U virtualenv

2.在你需要的位置,新建sentry文件夾,

mkdir /home/sentry

3.創建虛擬環境,

virtualenv /home/sentry

4.激活sentry環境,

source /home/sentry/bin/activate

 ps:從該環境退出使用命令deactivate

5.此時,可以在該環境中安裝各種需要的python包,需要使用的時候激活該環境就可以

安裝redis

1.從官網下載最新的穩定版本,

wget http://download.redis.io/releases/redis-3.0.7.tar.gz

2.解壓並進入文件夾,

tar -zxvf redis-3.0.7.tar.gz&&cd redis-stable

3.安裝 

make

可能會遇到的一些異常:

1.make[2]: cc: Command not found

異常原因:沒有安裝gcc

解決方案:yum install gcc-c++

2.zmalloc.h:51:31: error: jemalloc/jemalloc.h: No such file or directory

異常原因:一些編譯依賴或原來編譯遺留出現的問題

解決方案:make distclean。清理一下,然後再make。
在make成功以後,需要make test。在make test出現異常。

異常一:

couldn't execute "tclsh8.5": no such file or directory

異常原因:沒有安裝tcl

解決方案:yum install -y tcl。

4.安裝成功以後,會有 redis-server,redis-cli 等執行文件

安裝PostgreSQL

再次說明下,從sentry8.0以後開始 就不支持MySQL了…我被mysql的問題卡了好久,死活刪不掉索引,如果喜歡折騰,可以自己查看下源碼,看看如何解決。

  • 涉及PostgreSQL,後期有個問題,是psycopg2模塊,安裝失敗,可通過yum install postgresql-devel解決,所以我們在這裏,先安裝好。

1.PostgreSQL官網介紹,centos6.5 默認yum安裝的postgresql版本是8.4,使用該版本數據庫,安裝sentry,在創建數據庫的時候,一直有一個語言錯誤,the error was:language “plpgsql” does not exist,查詢了很多postgresql地方,原本是可以通過CREATE LANGUAGE plpgsql;解決的,但是還是一直報這個錯誤,所以我使用了postgresql9.2版本,該問題解決。

2.導入9.2版本的yum包 

yum install https://download.postgresql.org/pub/repos/yum/9.2/redhat/rhel-6-x86_64/pgdg-redhat92-9.2-8.noarch.rpm

3.安裝postgresql9.2 

yum install postgresql92-server postgresql92-contrib

4.初始化數據庫

 service postgresql-9.2 initdb

5.添加服務

chkconfig postgresql-9.2 on

 啓動服務 

sudo service postgresql-9.2 restart

6.PostgreSQL在創建後,會創建一個postgres的用戶,只有該用戶可以使用psql控制檯 需要切換到該用戶 

sudo su postgres

psql

7.創建用戶

CREATE USER sentry WITH PASSWORD 'sentry';

8.創建數據庫

CREATE DATABASE sentry OWNER sentry;

9.修改下配置文件,在/var/lib/pgsql/9.2/data/下有兩個配置文件postgresql.conf和pg_hba.conf

10.修改pg_hba.conf最下面的host把需要的host的ident參數,改爲trust

11.修改postgresql.conf下面的listen_addresses = ‘*’

12.保存重啓postgresql 

sudo service postgresql-9.2 restart

安裝sentry

本文通過pip安裝,十分簡單 運行命令

 pip install -U sentry

即可,該過程時間有點長,可能遇到某些包,下載終端,超時,重複運行該命令即可,遇到某些錯誤,都是一些包未安裝導致的,可根據錯誤提示,具體查看是缺少什麼。

1.安裝完成後,初始化sentry環境 

sentry init /etc/sentry

,會在該文件下出現sentry的兩個配置文件,sentry.conf.py 和 config.yml,在sentry.conf.py 中需要配置 postgresql和redis數據庫的鏈接信息,根據自己情況,配置就可以。在config.yml中配置mail信息

2.因爲我們創建了sentry數據庫,就不需要執行官網說的createdb -E utf-8 sentry,我們之間寫入數據,執行SENTRY_CONF=/etc/sentry sentry upgrade,數據寫入完成,會自動提示,是否創建用戶,按照提示操作即可。

3.此時通過SENTRY_CONF=/etc/sentry sentry run web啓動,訪問http://localhost:9000/就可以看到界面了。

4.sentry需要同時啓動worker和cron,是sentry的隊列和任務(個人理解),對於這個,我使用supervisor管理,supervisor的安裝過程,就不在贅述,下面是supervisor的項目配置

[program:sentry-web]
directory=/www/sentry/
environment=SENTRY_CONF="/etc/sentry"
command=/www/sentry/bin/sentry start
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=syslog
stderr_logfile=syslog

[program:sentry-worker]
directory=/www/sentry/
environment=SENTRY_CONF="/etc/sentry"
command=/www/sentry/bin/sentry celery worker
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=syslog
stderr_logfile=syslog

[program:sentry-cron]
directory=/www/sentry/
environment=SENTRY_CONF="/etc/sentry"
command=/www/sentry/bin/sentry celery beat
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=syslog
stderr_logfile=syslog

ps:路徑和日誌地址,安裝實際情況配置,啓動worker依賴一個python消息隊列的包,不能以root的權限啓動,同時建議 三個的日誌,不要寫在一個文件裏面…

5.使用nginx代理

sentry支持所有版本的nginx,nginx的安裝很簡單,不在贅述。

修改nginx配置文件添加

location / {
  proxy_pass         http://localhost:9000;
  proxy_redirect     off;

  proxy_set_header   Host              $host;
  proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
  proxy_set_header   X-Forwarded-Proto $scheme;
}

reload nginx即可。

6.清除舊數據

crontab -e

0 3 * * * sentry cleanup --days=30

備註:更高級的用法和配置還沒接觸到,只是簡單的搭建起來,遇到各種文件,官網的文檔纔是王道!!!

常見報錯解決辦法:

ValueError: jpeg is required unless explicitly disabled using –disable-jpeg, aborting

經搜索,找到以下方案:

sudo yum install libjpeg-turbo-devel

Package libffi was not found in the pkg-config search path.

sudo yum install libffi-devel

UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe5 in position 4: ordinal not in range

import sys   
reload(sys) # Python2.5 初始化後會刪除 sys.setdefaultencoding 這個方法,我們需要重新載入   
sys.setdefaultencoding('utf-8') 

參考文章:

  • http://blogmao.com/post/sentry

  • http://stackoverflow.com/questions/22073516/failed-to-install-python-cryptography-package-with-pip-and-setup-py

  • http://blog.csdn.net/a657941877/article/details/9063883

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章