Sentry监控系统搭建流程及钉钉告警配置

Sentry监控系统搭建流程

1.安装Sentry

(1)更新docker版本

注意:最新21版本docker要求在19.3.05版本及以上,如果版本过低,需要更新(更新前要先卸载旧版本)
列出所有包
sudo yum list installed | grep docker
删除相关包
sudo yum -y remove dockerXXXXXX
sudo yum -y remove docker-ceXXXXXX
更新docker-ce版本:
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

yum list docker-ce --showduplicates | sort -r

yum install docker-ce-19.03.6

(2)安装依赖

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

(3)启动sentry

git clone https://github.com/getsentry/onpremise.git

然后进入onpremise目录

执行 ./install.sh(过程中可能会让你配置管理员账号)

执行完成后使用docker-compose up -d 启动

2.配置钉钉告警

有两种方法

(1)在requirements.txt加入以下内容,然后重启所有应用(改方式有缺点,插件是别人写的,告警内容有限,不可修改)
sentry-dingtalk-notify
sentry-dingtalk-new

(2)自己写一个接口,接收sentry发送的数据(),由自己的程序处理完后再发送到钉钉,告警方式选择webhooks,填写自己的接口地址即可
在这里插入图片描述

在这里插入图片描述

#!/usr/bin/python
# -*- coding: utf-8 -*-

import json
import os
from flask import request, Flask  # flask模块
from dingtalkchatbot.chatbot import DingtalkChatbot  # 钉钉发送群消息模块


# 将数据写入到文件中
def Open(s):
    Path = './temp.json'
    # 判断文件是否存在
    if os.path.exists(Path):
        os.remove(Path)  # 先删除文件
    # 文件不存在时,将数据写入到文件中
    f = open(Path, 'w')
    print(s, file=f)
    f.close()


# 接收数据
def GetData():
    PostData = request.get_data()  # 获取jira POST请求的原始数据
    Data = Data = json.loads(PostData)  # 将json格式的数据转换为字典
    sonData = json.dumps(Data, ensure_ascii=False, indent=4)  # 格式化json数据
    return Data


# Open函数和GetData函数用作获取数据,对数据进行分析使用

# Flask通用配置
app = Flask(__name__)
app.config['JSON_AS_ASCII'] = False


@app.route('/webhook/test/', methods=['POST'])
def IssueCreate():
    Open(GetData())
    project = GetData()['project']
    level = GetData()['level']
    url = GetData()['url']
    environment = GetData()['event']['environment']
    types=GetData()['event']['title']
    messages = GetData()['message']
    culprit = GetData()['culprit']
    message = str('##' + '项目:%s' % project + '##' + '\n'
                  '告警等级:%s' % level + '\n'
                  '错误地址:%s' % url + '\n'
                  '环境:%s' % environment + '\n'
                  '类型:%s' % types + '\n'                              
                  '主要告警信息:%s' % messages + '\n'
                  '主要原因:%s' % culprit + '\n'
                  )
    print(message)
    send_message(message)
    return "OK", 200


def send_message(message):
    webhook = 'https://oapi.dingtalk.com/robot/send?access_token='
    xiaoding = DingtalkChatbot(webhook)
    xiaoding.send_text(msg=message, is_at_all=True)  # is_at_all参数为True表示@所有人


if __name__ == '__main__':
    app.run(debug=False, host='部署的IP', port=8888)

3.数据备份和导入

注意:该方法太暴力,备份后的数据重新导入会存在问题,建议只备份某些需要的表

(1)数据备份

进入docker容器 postgres-db 容器id
docker exec -it 容器ID /bin/bash
进入postgres数据库
psql -U postgres
导出命令
pg_dump -U postgres traffic > ./traffic.sql
从容器导出到宿主机
docker cp postgres-db:/var/lib/postgresql/traffic.sql /data

(2)数据导入

从容器导出到宿主机
docker cp /data/traffic.sql postgres-db:/var/lib/postgresql/
进入docker容器 postgres-db 容器id
docker exec -it 容器ID /bin/bash
进入postgres数据库
psql -U postgres 删除该库的所有数据然后重新导入
切换postgres用户
su - postgres
导入命令
psql -U postgres -d postgres < traffic.sql

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值