Yii2框架使用钉钉聊天机器人接收系统警报


Yii 2 的日志管理提供了多个日志收集工具:

  • yiilogDbTarget : 使用数据库收集日志
  • yiilogEmailTarget: 使用邮件收集日志
  • yiilogSyslogTarget: 使用系统的 Syslog 收集日志
    上面的几个工具除了邮件外,都不能及时的通知到运维人员或开发者。

好在钉钉提供了聊天机器人功能,使用自定义机器人的 webhook 我们可以将错误日志及时的推送到相关人员。

  1. 获取钉钉聊天机器人 Access Token

在使用本扩展之前,你需要去ding-doc.dingtalk.com/doc#/servera...获取相关信息。

  1. 安装扩展
    composer require saviorlv/yii2-dingtalk-exception

或者在 composer.json 中添加 saviorlv/yii2-dingtalk-exception 再此之前建议您使用阿里云composer镜像。

阿里云镜像地址为developer.aliyun.com/composer按步骤安装即可。安装完成后进行下一步。

  1. 配置 Yii 2 应用

在配置文件中修改组件 log

'components' => [
    ......
    'log' => [
                'traceLevel' => YII_DEBUG ? 3 : 0,
                'targets' => [
                    [
                        'class' => 'yiilogFileTarget',
                        'levels' => ['error', 'warning'],
                    ],
                    [
                        'class' => 'SaviorlvLogExceptionTarget',//或者把里面的代码拉出来进行自己封装,使用数组可以达到多个机器人轮换着发送避免次数过多被钉钉屏蔽+使用redis队列进行处理
                        'levels' => ['error', 'warning'],
                        'options' => [
                            'accessToken' => 'xxxxxxxx',
                            'isAtAll' => false,
                            'atMobiles' => ['136xxxx5134']
                        ],
                    ],
                ],
            ],
    ......
]
  1. 参数

‘isAtAll’ => true @所有人

‘atMobiles’ => [‘136xxxx5134’,’136xxxx5133’] @部分人员
此时当 Yii 2 程序出现 error 级别的错误时,钉钉群就会收到机器人发送的错误日志。

  1. 其他建议

建议除了监控系统报警外,可以自定义封装钉钉发送,达到特殊的业务处理出现问题时指定报错信息

5.相关扩展地址

本作品采用《CC 协议》,转载必须注明作者和本文链接
codezhao
讨论数量: 2

你的个人介绍太长了,我不知道后面写的什么了。

我可能也要去 yii 的公司上班了。mark,可能日后会用到。

2年前 评论
codezhao (楼主) 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!