前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Sentry集中化日志管理

使用Sentry集中化日志管理

作者头像
星哥玩云
发布2022-07-13 13:09:18
6890
发布2022-07-13 13:09:18
举报
文章被收录于专栏:开源部署

在调试程序中,通过日志分期来排查BUG是一个重要手段,它可以说是程序调试的利器。

关于日志管理

随着应用组件变多,那么各coder对输出日志五花八门,有写入stdout,有写stderr, 有写到syslog,也有写到xxx.log的。那么这将导致平台应用日志分布在各个地方,无法统一管理。

为什么使用Sentry

Sentry是一个集中式日志管理系统。它具备以下优点:

  • 多项目,多用户
  • 界面友好
  • 可以配置异常出发规则,例如发送邮件
  • 支持主流语言接口

安装

参考 https://docs.getsentry.com/on-premise/server/installation/

Requirements

  • Linux Server
  • PostgreSQL
  • redis-server
  • Python 2/3
  • Nginx

步骤

安装依赖包

sudo apt-get install python-setuptools python-pip python-dev libxslt1-dev libxml2-dev libz-dev libffi-dev libssl-dev libpq-dev libyaml-dev

安装Sentry

pip install -U sentry==8.0.0rc2

配置

vim sentry.conf.py

DATABASES = {     'default': {         'ENGINE': 'sentry.db.postgres',         'NAME': 'sentry',         'USER': 'postgres',         'PASSWORD': '123456',         'HOST': 'localhost',         'PORT': '5432',     } }

EMAIL_HOST = 'smtp.exmail.qq.com' EMAIL_HOST_PASSWORD = 'HE*******' EMAIL_HOST_USER = 'hewx@doordu.com' EMAIL_PORT = 25 EMAIL_USE_TLS = False

设置配置文件路径到环境变量

export SENTRY_CONF=/home/hewx/workbench/sentry

初始化数据库

sentry update

配置Web Server

sudo apt-get install nginx-full sudo vim /etc/nginx/sites-enabled/default

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; }

启动

启动Wokers

sentry celery worker -B

启动Web服务

sentry start

实例

PHP

使用浏览器访问sentry,并创建一个项目

参考PHP使用指令http://10.0.0.180/sentry/45183e54fa36/settings/install/php/

<?php

require_once "vendor/autoload.php";

$client = new Raven_Client('http://5d68caa5e36c4eaa8f7c0601a521fab6:b5917e01d45f4656ab2d943264b90377@10.0.0.180/3');

$error_handler = new Raven_ErrorHandler($client); $error_handler->registerExceptionHandler(); $error_handler->registerErrorHandler(); $error_handler->registerShutdownFunction();

$client->captureMessage("这里发生了一个错误");

$i = 1 / 0;

?>

Python

pip install raven

from raven import Client

client = Client('http://f1ba62aa87cb4fc1a36d9e4f96017e99:96f5feef13dc4d45825e73548cd5b784@10.0.0.180/4')

try:     1 / 0 except ZeroDivisionError:     client.captureException()

JavaScript

<!DOCTYPE html> <html>   <head>     <meta charset="utf-8">     <title>Sentry Test</title>   </head>   <body>     <script src="https://cdn.ravenjs.com/2.0.1/raven.min.js"></script>     <script>       Raven.config('http://e896b37840444a41adc9a80aa1292dcb@10.0.0.180/5').install()

      try {           doSomething(a[0])       } catch(e) {           Raven.captureException(e)       }

    </script>   </body> </html>

Android

https://github.com/joshdholtz/Sentry-Android/tree/android-studio-ify

import com.joshdholtz.sentry.Sentry;

public class MainActivity extends AppCompatActivity {

    @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);

        Sentry.init(this, "http://10.0.0.180", "http://340137fc1dc6443e99d9d02b8f1638d0:cfd6587578e742948b60d72442fb4ac8@10.0.0.180/6");         Sentry.captureMessage("OMG this works woooo");

        int a = 1 / 0;     } ......

RuntimeException: Unable to start activity ComponentInfo{com.joshdholtz.sentrytesting/com.joshdholtz.sentryapp.MainActivity}: java.lang.ArithmeticException: divide by zero   Module "android.app.ActivityThread", line 2189, in performLaunchActivity   Module "android.app.ActivityThread", line 2238, in handleLaunchActivity   Module "android.app.ActivityThread", line 138, in access$800   Module "android.app.ActivityThread$H", line 1201, in handleMessage   Module "android.os.Handler", line 102, in dispatchMessage   Module "android.os.Looper", line 136, in loop   Module "android.app.ActivityThread", line 5016, in main   Module "java.lang.reflect.Method", in invokeNative   Module "java.lang.reflect.Method", line 515, in invoke   Module "com.android.internal.os.ZygoteInit$MethodAndArgsCaller", line 792, in run   Module "com.android.internal.os.ZygoteInit", line 608, in main   Module "dalvik.system.NativeStart", in main

ArithmeticException: divide by zero   Module "com.joshdholtz.sentryapp.MainActivity", line 20, in onCreate   Module "android.app.Activity", line 5251, in performCreate   Module "android.app.Instrumentation", line 1087, in callActivityOnCreate   Module "android.app.ActivityThread", line 2153, in performLaunchActivity   Module "android.app.ActivityThread", line 2238, in handleLaunchActivity   Module "android.app.ActivityThread", line 138, in access$800   Module "android.app.ActivityThread$H", line 1201, in handleMessage   Module "android.os.Handler", line 102, in dispatchMessage   Module "android.os.Looper", line 136, in loop   Module "android.app.ActivityThread", line 5016, in main   Module "java.lang.reflect.Method", in invokeNative   Module "java.lang.reflect.Method", line 515, in invoke   Module "com.android.internal.os.ZygoteInit$MethodAndArgsCaller", line 792, in run   Module "com.android.internal.os.ZygoteInit", line 608, in main   Module "dalvik.system.NativeStart", in main

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档