1. 程式人生 > >centos7下搭建sentry錯誤日誌伺服器

centos7下搭建sentry錯誤日誌伺服器

centos7下搭建sentry錯誤日誌伺服器

本文主要介紹在centos7 下通過docker安裝sentry

1. docker

安裝(方法一)

1.確保yum packages 是最新的

$ sudo yum update

2.新增yum repo

$ sudo tee /etc/yum.repos.d/docker.repo <<-'EOF'
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF

3.安裝docker

$ sudo yum install docker-engine

4.啟動docker

$ sudo service docker start

5.驗證docker已經啟動

$ sudo docker run hello-world

Unable to find image 'hello-world:latest' locally
latest: Pulling from hello-world
a8219747be10: Pull complete
91c95931e552: Already exists
hello-world:latest: The image you are pulling has been verified.      Important: image verification is a tech preview feature and should not be relied on to provide security.
Digest: sha256:aa03e5d0d5553b4c3473e89c8619cf79df368babd1.7.1cf5daeb82aab55838d
Status: Downloaded newer image for hello-world:latest
Hello from Docker.
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
        (Assuming it was not already locally available.)
 3. The Docker daemon created a new container from that image which runs the
        executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
        to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

For more examples and ideas, visit:
 http://docs.docker.com/userguide/

安裝(方法二)

1.確保yum packages 是最新的

$ sudo yum update

2.執行docker 安裝指令碼

$ curl -fsSL https://get.docker.com/ | sh

3.啟動docker伺服器

$ sudo service docker start

4.驗證docker已經啟動

$ sudo docker run hello-world

2. sentry

sentry 依賴的元件比較多 包括 redis、 postgresql、 outbound email

在安裝sentry前請確保 docker 版本大於1.10

1.安裝git
···
$ sudo yum install git
···
2.下載docker映象並構建容器

$ git clone  https://github.com/getsentry/onpremise.git
$ cd onpremise
$ sudo make build

注: 所有命令都要以sudo許可權執行 否則會報錯docker 未啟動

3.用docker安裝sentry依賴的元件

Redis

docker run \
--detach \
--name sentry-redis \
redis:3.2-alpine

PostgreSQL

docker run \
--detach \
--name sentry-postgres \
--env POSTGRES_PASSWORD=secret \
--env POSTGRES_USER=sentry \
postgres:9.5

Outbound Email

docker run \
--detach \
--name sentry-smtp \
tianon/exim4

注意:接下來所有命令都需要用到 Redis、 PostgreSQL、 Outbound Email中的環境變數,所有命令中需要將將三個映象連線起來

$ sudo docker run \
--detach \
--rm \
--link sentry-redis:redis \
--link sentry-postgres:postgres \
--link sentry-smtp:smtp \
--env SENTRY_SECRET_KEY=${SENTRY_SECRET_KEY} \
${REPOSITORY} \
<command>

其中 SENTRY_SECRET_KEY 可以自己生成
4.在PostgreSQL中生成sentry需要的表

$ sudo docker run \
--detach \
--rm \
--link sentry-redis:redis \
--link sentry-postgres:postgres \
--link sentry-smtp:smtp \
--env SENTRY_SECRET_KEY=${SENTRY_SECRET_KEY} \
-it sentry-onpremise upgrade

在建立過程中會提示建立一個superuser, 根據提示自動輸入郵箱和密碼,該賬戶和密碼很重要, 在sentry部署好以後需要用該賬號登入, 請必須記住賬號和密碼
5.拉起sentry需要的後臺服務

$ sudo docker run \
--detach \
--rm \
--link sentry-redis:redis \
--link sentry-postgres:postgres \
--link sentry-smtp:smtp \
--env SENTRY_SECRET_KEY=${SENTRY_SECRET_KEY} \
--name sentry-worker-01 \
sentry-onpremise run worker

6.拉起sentry需要的cron後臺服務

$ sudo docker run \
--detach \
--rm \
--link sentry-redis:redis \
--link sentry-postgres:postgres \
--link sentry-smtp:smtp \
--env SENTRY_SECRET_KEY=${SENTRY_SECRET_KEY} \
--name sentry-cron \
sentry-onpremise run cron

7.最後拉起sentry的web服務

$ sudo docker run \
--detach \
--rm \
--link sentry-redis:redis \
--link sentry-postgres:postgres \
--link sentry-smtp:smtp \
--env SENTRY_SECRET_KEY=${SENTRY_SECRET_KEY} \
--name sentry-web-01 \
--port 9000:9000 \
sentry-onpremise \
run web

關閉註冊

修改 server.py

SENTRY_FEATURES[‘auth:register’] = True

注:不同版本的docker可能會在–port 引數上有報錯,如果出錯可以嘗試-p 或者–p 同時有些會提示 –d和-rm衝突,去掉–detach即可

最後在瀏覽器中訪問 http://localhost:9000/

注意啟動順序 woker->cron->web, 如果不啟動worker和cron可能會遇到報錯