linux中Sentry事件日志实战

不管你用什么编程语言,都会面临如何处理错误日志的问题。很多程序员对错误日志放任自流,直到出现故障了才追悔莫及,如果问我怎么办,我会推荐 Sentry!

Sentry 是一个错误记录和聚合的平台,只要看看它漂亮的界面就会喜欢上它:

sentry
sentry

关于如何安装 Sentry,官方文档里已经给出了详细的说明,建议大家仔细阅读,一般通过 Virtualenv 来安装 Sentry,具体可以参考:学习搭建Python环境。

提醒:我在安装 7.5 的时候,测试有循环重定向,如果你也是可以安装 7.4:

pip install sentry==7.4.3
安装完毕后,假设我们要监控 PHP 错误日志,那么通常是在我们的业务代码里嵌入官方的 PHP SDK,不过这样肯定会影响到性能,好在我们可以通过错误日志曲线救国,只要定期扫描错误日志,把新生成的数据发送给 Sentry 就好了。

BTW:如果发现 Sentry 中的错误计数器始终是一,即便有新的错误也不更新,那么多半是因为没有权限生成 celerybeat-schedule 文件,缺省是生成在进程的 cwd 目录中。

如何才能发现新生成的数据呢?需要记录扫描到了哪个位置,可以通过 Logcheck 中提供的 logtail 或者 logtail2 来实现这个功能,至于它俩的区别,可以参见 man 文档,简单点儿说,如果日志被 rotate 的话,logtail 可能会丢失旧日志中的数据,而 logtail2 不会。

<?php

require_once __DIR__ . '/raven-php/lib/Raven/Autoloader.php';

Raven_Autoloader::register();

$dsn = 'http://your/dsn';

$options = array(
    'tags' => array(
        'php_version' => phpversion(),
    ),
    'trace' => false,
);

$pattern_content = '^\[([^]]+)] PHP ([^:]+):\s+(.+)';

$parrern_level = implode('|', array(
    'debug',
    'info',
    'warning',
    'error',
    'fatal',
));

$client = new Raven_Client($dsn, $options);

while (($line = fgets(STDIN)) !== false) {
    if (!preg_match("/{$pattern_content}/", $line, $match)) {
        continue;
    }

    list($line, $timestamp, $level, $message) = $match;

    $timestamp = gmdate('Y-m-d\TH:i:s\Z', strtotime($timestamp));

    preg_match("/{$parrern_level}/i", $level, $match);

    $level = isset($match[0]) ? $match[0] : 'error';

    $client->captureMessage($message, array(), array(
        'timestamp' => $timestamp,
        'level' => $level,
    ));
}

?>
做好了以上这些准备工作,剩下的只要通过管道把新数据传递给 PHP 脚本即可:

shell> logtail2 -f /path/to/php/error/log | php /path/to/script
建议通过 crontab 定时运行此命令,但是需要注意用 flock 保护一下,以免拥堵

时间: 2024-09-17 20:31:39

linux中Sentry事件日志实战的相关文章

如何用在ASP.NET中写入事件日志

asp.net 文包含有关编辑注册表的信息.编辑注册表之前,务必先了解在发生问题时如何还原注册表.有关如何还原注册表的信息,请查看 Regedit.exe 中的"还原注册表"帮助主题,或 Regedt32.exe 中的"还原注册表项"帮助主题. 现象 当你使用asp.net 向事件日志中写入一个新的"事件来源"时,可能会得到如下错误消息: System.Security.SecurityException: 不允许所请求的注册表访问权 原因 运行

linux中logrotate对日志进行切割压缩(nginx,mysql)

logrotate简介日志轮转特别适用于具有固定文件名的日志文件,比如MySQL的出错日志.常规查询日志.慢查询日志等.Linux系统有一个非常好用的根据logratate可以实现自动轮转,本文介绍它的原理和用法. logrotate是管理日志文件的工具,在CentOS系统中,命令的位置在/usr/sbin/logrotate,常用的操作如:   -d, --debug               Don't do anything, just test (implies -v)   -f, -

linux中关闭Mysql日志解决mysql-bin.0000*日志占用资源问题

今天看到一台安装LNMP环境的VPS下某个网站打不开,同时也出现数据库无法链接问题,通过df -l查看硬盘占用100%,看来是因为磁盘占用导致的.没有特殊情况下,默认安装的LNMP一键包环境是没有关闭MYSQL日志的,会导致生成mysql-bin.0000*日志文件,如果网站运行初期可能不会被发现问题,时间久了会占用硬盘. 第一.日志文件地址  代码如下 复制代码 /usr/local/mysql/var/ 在上面的文件夹中,有几M到几个G不等,我们也不要急于全部删除,可以选择几个大的删除就可以

linux中WDCP的日志彻底删除技巧

apache或nginx都有开关默认日志,一个是正常访问日志,一个是错误的日志, 目录在  /www/wdlinux/nginx-1.0.15/logs  /www/wdlinux/httpd-2.2.22/logs 这两个日志,会记录所有的正常与不正常的访问日志信息. 而且是所有服务器上的域名,除非,在站点管理城,启用了日志记录,才会将相应的站点域名日志记录到另一个独立的文件中. 否则,都会记录在这几个文件里 所以,是默认的web服务器日志文件. 不过,一般来说,这个日志不是必须的,除非有其它

linux中停止Mysql日志并删除mysql-bin.0000*日志文件

今天访问网站出现数据库链接错误,然后想重启 lnmp 环境,发现无法正常关闭 mysql 服务,回想一下,服务器已经平稳运行 4 个多月了,配置方面应该没有什么问题,所以想到,可能是数据盘空间用完了,果然如此.就想到应该是日志文件导致的,最后检查到 mysql 的日志文件超过,而且居然好几个日志文件几个G.好吧,看来问题就是出在这里.百度到军哥的博客,删除了所有 mysql-bin.0000*日志文件,重启就OK了,顺手把 mysql 日志功能关闭了. LNMP一键安装包安装的MySQL默认是开

linux中MySQL慢日志监控shell脚本实例

针对脚本的注解和整体构思,我会放到脚本之后为大家详解. #!/bin/bash    MON_FILE="$2"   # 指定所要监控的脚本路径 SEC=60          # 指定所要监控的频率,即间隔多久去查看一次 MON_POINT_FILE=/tmp/mon_mysql_slow.point  # 指定MySQL慢日志的监控点存放的路径 DIFF_MON_FILE=/tmp/mon_mysql_slow.log     # 指定在监控频率内增加的MySQL慢日志信息存放路径

在VC++程序中自定义Vista事件日志

就Windows开发者及系统管理员来说,Windows Vista日志相比以前,无疑有了一个很大的提高.对开发者来说,Vista的日志记录对多种事件与日志选项,都表现出统一一致性:而对网络管理员及IT专家,它提供了丰富的人机界面用于管理事件.新的日志记录方式,也只能通过Windows SDK中新的本机函数来实现,下面就来看看怎样在程序中实现新的记录方式. 创建并编译清单文件 如果程序中使用了新的API,且要把事件记录到日志中,就需要创建一个清单文件(这里补充一点,如果未使用新的API,或仅是使用

如何在win7旗舰版电脑中删除事件查看器日志,提高网站运行速度?

  "事件查看器"可以干嘛?应该很多朋友都是值得的吧,"事件查看器"属于咱们Windows系统的维护工具,可以通过使用事件日志,收集有关硬件.软件.系统问题方面的信息,也就是说,当咱们的Windows系统出现什么问题的时候,咱们的"事件查看器"都会将这些信息记录在册,当用户需要用到的时候就可以在其中进行查询了,但是伴随着咱们Windows系统使用的时间越长,这个事件查看器中的记录也会变得越来越多,从而占用系统的资源,影响系统的运行速度,那么有什么

Linux中的系统故障分析与排查

在处理Linux系统出现的各种故障时,故障的症状是最先发现的,而导致这以故障的原因才是最终排除故障的关键.熟悉Linux系统的日志管理,了解常见故障的分析与解决办法,将有助于管理员快速定位故障点."对症下药"及时解决各种系统问题. 1.日志分析及管理 日志文件是用于记录Linux系统中各种运行消息的文件,相当于Linux主机的"日记".不同的日志文件记载了不同类型的信息,如:Linux内核消息,用户登录记录,程序错误等.日志文件对于诊断和解决系统中的问题很有帮助,因