buexplain/alarm 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

buexplain/alarm

Composer 安装命令:

composer require buexplain/alarm

包简介

这个是一个基于hyperf(swoole驱动)的告警组件

README 文档

README

这个是一个基于hyperf的告警组件。

支持发送告警到钉钉群机器人和企业微信群机器人。

大概的告警流程是:

  1. 创建自定义告警进程
  2. worker进程与task进程通过日志组件发送日志到告警进程,该日志包含告警组件的配置文件的handler信息
  3. 告警进程接收到日志后,解析其中的告警组件的handler信息,然后循环丢给每一个handler进行处理

安装

下载包 composer require buexplain/alarm

发布告警组件的配置 php bin/hyperf.php vendor:publish buexplain/alarm

NOTE: 告警机器人地址的获取,请前往相关网站了解,申请成功后,请手动修改此配置文件。 目前钉钉群机器人和企业微信群机器人的发送频率限制皆为每分钟20条。 为避免触发对方接口的限流警告,本组件限制为单个机器人每分钟20条,可以配置多个机器人,缓解大量发送的需求。

修改日志配置文件 config/autoload/logger.php

<?php

declare(strict_types=1);

use Monolog\Logger;
use Monolog\Formatter\LineFormatter;
use Monolog\Handler\RotatingFileHandler;

return [
    'default' => [
        'handlers'=>[
            //默认的文件日志处理器
            [
                'class' => RotatingFileHandler::class,
                'constructor' => [
                    'filename' => BASE_PATH . '/runtime/logs/hyperf.log',
                    'level'=>Level::Error,
                ],
                'formatter' => [
                    'class' => LineFormatter::class,
                    'constructor' => [
                        'format' => null,
                        'dateFormat' => null,
                        'allowInlineLineBreaks' => true,
                    ],
                ],
            ],
            //告警日志处理器
            [
                'class' => \Alarm\Handler::class,
                'constructor' => [
                    //此处的handler对应的正是config/autoload/alarm.php配置的key值
                    'handlers'=>[
                        'dingTalk',
                        'weChat',
                        'feiShu',
                    ],
                    //接收的日志级别
                    'level'=>\Monolog\Level::Error,
                ],
            ],
        ],
    ],
    'alarm' => [  // 这是另外一种使用方式 \Hyperf\Utils\ApplicationContext::getContainer()->get(\Hyperf\Logger\LoggerFactory::class)->get('xxxxx' , 'alarm')->error('tips');
        'handlers' => [
            //告警日志处理器
            [
                'class' => \Alarm\Handler::class,
                'constructor' => [
                    //此处的handler对应的正是config/autoload/alarm.php配置的key值
                    'handlers'=>[
                        'feiShu',
                    ],
                    //接收的日志级别
                    'level'=>\Monolog\Level::Error,
                ],
            ],
        ],
        'formatter' => [
            'class'       => Monolog\Formatter\LineFormatter::class,
            'constructor' => [
                'format'                => null,
                'dateFormat'            => 'Y-m-d H:i:s.u',
                'allowInlineLineBreaks' => true,
            ],
        ],
    ],
];

NOTE:

  1. 如果配置文件logger.php存在,则直接在需要告警的日志渠道上添加告警日志处理器,否则请先安装日志组件
  2. 如果配置文件signal.php存在,则需要配置\Alarm\Signal\AlarmStopHandler::class => PHP_INT_MAX
  3. 必须在协程环境下使用
  4. 不支持协程风格的服务器

使用

$logger = \Hyperf\Utils\ApplicationContext::getContainer()->get(\Hyperf\Logger\LoggerFactory::class)->get();
//at群内用户需要提供手机号(飞书不支持)
$logger->error('at一个用户', ['@'=>'135xxxxxxx1']); // 注意: 目前飞书不支持 @指定用户提醒 , 只能群呼
$logger->error('at两个用户', ['@'=>['135xxxxxxx1', '135xxxxxxx2']]); 
$logger->error('at所有人', ['@'=>'all']); 

README.feishu.md , 飞书的使用例子

License

Apache-2.0

buexplain/alarm 适用场景与选型建议

buexplain/alarm 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 6.56k 次下载、GitHub Stars 达 4, 最近一次更新时间为 2020 年 06 月 12 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「php」 「wechat」 「swoole」 「alarm」 「dingtalk」 「hyperf」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 buexplain/alarm 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 buexplain/alarm 我们能提供哪些服务?
定制开发 / 二次开发

基于 buexplain/alarm 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 6.56k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 4
  • 点击次数: 11
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 4
  • Watchers: 1
  • Forks: 2
  • 开发语言: PHP

其他信息

  • 授权协议: Apache-2.0
  • 更新时间: 2020-06-12