zoukankan      html  css  js  c++  java
  • centos 配置sentry+钉钉+邮件通知

    1.sentry官方推荐docker方式安装。使用docker-compose,最好是centos7

    2.卸载旧版本

    yum remove docker  docker-common  docker-selinux  docker-engine

    3.安装依赖包

    yum install -y yum-utils   device-mapper-persistent-data   lvm2

    4.添加docker yum源

    yum-config-manager     --add-repo     https://download.docker.com/linux/centos/docker-ce.repo

    5.可选操作:允许拓展最新的不稳定repository

    yum-config-manager --enable docker-ce-edge

    6.安装Docker

    yum -y install docker-ce

    7.启动Docker

    systemctl start docker

    8.测试Docker

    docker run hello-world

    出现这个表示成功

    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.
        (amd64)
     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

    9.安装依赖,需要用到git,docker-compose,pip等组件

    yum install epel-release
    yum  install -y python-pip
    pip  install docker-compose
    yum install git

    安装第三个的时候会报错:

    Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-SL8ohy/pycparser/
    You are using pip version 8.1.2, however version 19.1.1 is available.
    You should consider upgrading via the 'pip install --upgrade pip' command.

    然后我升级了

     pip install --upgrade pip

    发现还是报错:

     ERROR: Complete output from command python setup.py egg_info:
        ERROR: Traceback (most recent call last):
          File "<string>", line 1, in <module>
          File "/tmp/pip-install-5OHP7Q/pycparser/setup.py", line 65, in <module>
            cmdclass={'install': install, 'sdist': sdist},
          File "/usr/lib64/python2.7/distutils/core.py", line 112, in setup
            _setup_distribution = dist = klass(attrs)
          File "/usr/lib/python2.7/site-packages/setuptools/dist.py", line 269, in __init__
            _Distribution.__init__(self,attrs)
          File "/usr/lib64/python2.7/distutils/dist.py", line 287, in __init__
            self.finalize_options()
          File "/usr/lib/python2.7/site-packages/setuptools/dist.py", line 302, in finalize_options
            ep.load()(self, ep.name, value)
          File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2341, in load
            return self.resolve()
          File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2351, in resolve
            raise ImportError(str(exc))
        ImportError: 'module' object has no attribute 'check_specifier'
        ----------------------------------------
    ERROR: Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-5OHP7Q/pycparser/

    解决:

    pip install --upgrade setuptools==30.1.0

    如果报这个错误:

    /usr/lib/python2.7/site-packages/requests/ __init__。py:91: RequestsDependencyWarning: urllib3(1.22)或chardet(2.2.1)与受支持的版本不匹配!  RequestsDependencyWarning)

    先卸载

    sudo pip uninstall urllib3
    sudo pip uninstall chardet
    sudo pip install requests

    10.浏览器打开:https://github.com/getsentry/onpremise ,查看README.md步骤

    [root@iZ2zecyg8c7tlv5yz9c9vhZ www]# mkdir -p data/{sentry,postgres}
    [root@iZ2zecyg8c7tlv5yz9c9vhZ www]# ll
    total 4
    drwxr-xr-x 4 root root 4096 Jun  6 18:18 data
    [root@iZ2zecyg8c7tlv5yz9c9vhZ www]# 

    11.克隆该项目

    git clone https://github.com/getsentry/onpremise.git
    [root@iZ2zecyg8c7tlv5yz9c9vhZ www]# git clone https://github.com/getsentry/onpremise.git
    Cloning into 'onpremise'...
    remote: Enumerating objects: 190, done.
    remote: Total 190 (delta 0), reused 0 (delta 0), pack-reused 190
    Receiving objects: 100% (190/190), 37.55 KiB | 0 bytes/s, done.
    Resolving deltas: 100% (90/90), done.
    [root@iZ2zecyg8c7tlv5yz9c9vhZ www]# ll
    total 8
    drwxr-xr-x 4 root root 4096 Jun  6 18:18 data
    drwxr-xr-x 3 root root 4096 Jun  6 18:19 onpremise
    [root@iZ2zecyg8c7tlv5yz9c9vhZ www]# 

    12.进入onpremise目录

    [root@iZ2zecyg8c7tlv5yz9c9vhZ www]# cd onpremise/
    [root@iZ2zecyg8c7tlv5yz9c9vhZ onpremise]# ll
    total 36
    -rw-r--r-- 1 root root  1946 Jun  6 18:19 config.yml
    -rw-r--r-- 1 root root  1240 Jun  6 18:19 docker-compose.yml
    -rw-r--r-- 1 root root    24 Jun  6 18:19 Dockerfile
    -rw-r--r-- 1 root root   500 Jun  6 18:19 Makefile
    -rw-r--r-- 1 root root  2306 Jun  6 18:19 README.md
    -rw-r--r-- 1 root root    19 Jun  6 18:19 requirements.txt
    -rw-r--r-- 1 root root 11257 Jun  6 18:19 sentry.conf.py
    [root@iZ2zecyg8c7tlv5yz9c9vhZ onpremise]# cp -n .env.example .env
    [root@iZ2zecyg8c7tlv5yz9c9vhZ onpremise]# docker-compose build

    13.生成秘钥:(copy最后一行的秘钥)

    [root@iZ2zecyg8c7tlv5yz9c9vhZ onpremise]# docker-compose run --rm web config generate-secret-key
    /usr/lib/python2.7/site-packages/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.24.1) or chardet (2.2.1) doesn't match a supported version!
      RequestsDependencyWarning)
    Creating network "onpremise_default" with the default driver
    ERROR: Volume sentry-data declared as external, but could not be found. Please create the volume manually using `docker volume create --name=sentry-data` and try again.
    [root@iZ2zecyg8c7tlv5yz9c9vhZ onpremise]# docker volume create --name=sentry-data && docker volume create --name=sentry-postgres
    sentry-data
    sentry-postgres
    Status: Downloaded newer image for memcached:1.5-alpine
    Creating onpremise_postgres_1  ... done
    Creating onpremise_smtp_1      ... done
    Creating onpremise_redis_1     ... done
    Creating onpremise_memcached_1 ... done
    38v@*^_b&&00%4yk8uvthl^8h3ycg3)1ovuf&&q+=^5#vrsj0h

    14 将秘钥添加进入docker-compose.yml

    vim docker-compose.yml
    environment:
        SENTRY_SECRET_KEY: '38v@*^_b&&00%4yk8uvthl^8h3ycg3)1ovuf&&q+=^5#vrsj0h'
        SENTRY_MEMCACHED_HOST: memcached
        SENTRY_REDIS_HOST: redis
        SENTRY_POSTGRES_HOST: postgres
        SENTRY_EMAIL_HOST: smtp
      volumes:

    15.创建数据库(在创建数据的时候会提示我们是否需要创建管理员,我们选择Y,填入对应的邮箱地址和密码,等一下登陆WEB需要,是否是超级管理员也选择Y)

    docker-compose run --rm web upgrade

    16.启动所有服务

    docker-compose up -d

    17.验证docker启动状态

    docker ps

    到此我们的sentry就已经部署完成了,访问我们的  服务器ip:9000端口就可以看见sentry的界面

    root@iZ2zecyg8c7tlv5yz9c9vhZ onpremise]# docker ps
    CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS              PORTS                    NAMES
    bf6f7118caae        onpremise_worker       "/entrypoint.sh run …"   57 seconds ago      Up 56 seconds       9000/tcp                 onpremise_worker_1
    e4becbb4b226        onpremise_cron         "/entrypoint.sh run …"   57 seconds ago      Up 56 seconds       9000/tcp                 onpremise_cron_1
    320e80f03c7c        onpremise_web          "/entrypoint.sh run …"   57 seconds ago      Up 56 seconds       0.0.0.0:9000->9000/tcp   onpremise_web_1
    4b534ff5ffdb        memcached:1.5-alpine   "docker-entrypoint.s…"   8 minutes ago       Up 8 minutes        11211/tcp                onpremise_memcached_1
    c45bbcd62618        redis:3.2-alpine       "docker-entrypoint.s…"   8 minutes ago       Up 8 minutes        6379/tcp                 onpremise_redis_1
    1c1c90b47c0b        postgres:9.5           "docker-entrypoint.s…"   8 minutes ago       Up 8 minutes        5432/tcp                 onpremise_postgres_1
    d3ba6bef6c12        tianon/exim4           "docker-entrypoint.s…"   8 minutes ago       Up 8 minutes        25/tcp                   onpremise_smtp_1

    18.浏览器输入服务器ip+9000端口就可以访问

    19.点击用户可更改中文模式和时间

    20.配置钉钉通知:

     vim requirements.txt 

    # Add plugins here
    sentry-dingtalk-new
    django-smtp-ssl~=1.0
    redis-py-cluster==1.3.4
    docker-compose build
    docker-compose restart

    在web端,创建项目,配置,查看是否有dingtalk。在钉钉拉一个组,创建自定义机器人。将连接copy放入dingtalkRoot 里,保存,点击test plugin 测试查看消息

    21.配置邮箱:

    vim config.yml 

    username 邮箱地址

    password不是密码。是客户端授权密码

    mail.backend: 'django_smtp_ssl.SSLEmailBackend'  # Use dummy if you want to disable email entirely
    mail.host: 'smtphz.qiye.163.com'
    mail.port: 994
    mail.username: 'xxxx@xxx.com'
    mail.password: 'xxxx'
    mail.use-tls: true
    # The email address to send on behalf of
    mail.from: 'xxx@xxxcom'
    $ docker-compose build
    $ docker-compose up -d

    然后重新运行

    22.在c# 中

    导入 sentry 包

    x1:公钥,x2:私钥,xxx:服务器ip,5=项目id

    using Sentry;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace SentryTest {
        class Program {
            static void Main(string[] args) {
                using (SentrySdk.Init("http://x1:x2@xxx:9000/5")) {
                    try {
                        var s = (0/1);
                        SentrySdk.CaptureMessage("ppp9");
                    }
                    catch (Exception ex) {
                        //SentrySdk.CaptureException(ex);
                    }
                }
            }
    
        }
    }
  • 相关阅读:
    IO复用三种方式
    sql server如何通过pivot对数据进行行列转换(进阶)
    sql server排序规则冲突问题解决
    sql server如何通过pivot对数据进行行列转换
    sql server如何通过排序控制insert into ... select ... 语句的记录插入顺序
    sql server如何用不同语种语言显示报错的错误消息
    Python编程求解第1天1分钱之后每天两倍持续一个月的等比数列问题
    sql server临时删除/禁用非聚集索引并重新创建加回/启用的简便编程方法研究对比
    sql server通过临时存储过程实现使用参数添加文件组脚本复用
    sql server重建全库索引和更新全库统计信息通用脚本
  • 原文地址:https://www.cnblogs.com/elsons/p/10986036.html
Copyright © 2011-2022 走看看