GetYii 目前是一个小站,使用的服务器是阿里云最低配置,每年大概需要600多人民币,目前接受到的捐助有400多人民币,非常感谢他们的捐助。
好了,有点扯远了,我们再扯回正题。GetYii 作为我的个人 side project,我几乎每天都会访问,但是偶尔工作太忙,或者周末出去放松的时候,没来访问。 有那么一两次,网站就出现了数据库链接失败的原因,网站挂了,都是网友通过 QQ 及时通知我的。
当然监控系统的办法有很多,但是我又不是专业的运维,安装一些专业的工具,对我来说学习成本有点高。Yii2 也可以通过配置 log 组建把错误信息发送邮件给你。 但是有没有更酷、更快的方式呢?因为除了上班时间我看邮件并不及时。
这个时候我想到了 Slack,我用 Slack 也有段时间了,主要用来接受 GitHub 的消息推送,如果有新的 issues 我第一时间会接受到,当然 Slack 还有更高级的玩法,比方说自己定义一个机器人,定时给自己发消息,echobot 就是我的第一个小实验机器人。
第一时间我肯定是去 Google 搜索 yii2 slack
,然后我发现了这个项目 yii2-slack,这不是我正想要的么。
通过安装和配置之后 GetYii 立马就用了这个功能,如果除去安装时间,花了半个小时左右我就实现了「Error 信息自动发给 Slack」的功能了,修改的代码在这里 - 完善log功能;添加slack机器人(error信息自动发给slack)。 顺便扩展了一下我的 log 组件,现在可以按日期来命名 log 文件了。
但是完成这个功能之后我也有一丝顾虑,这无疑又增加了别人学习使用 GetYii 的成本。这也是我写此篇文章的原因所在。
如果你想在 GetYii 项目中使用 Slack
你需要去 common\config\main-local.php
文件中单独配置下面代码:
<?php
return [
'components' => [
'slack' => [
'httpclient' => ['class' => 'yii\httpclient\Client'],
'class' => 'understeam\slack\Client',
'url' => 'xxx',
],
],
];
xxx
要改成你的 URL,这个 URL 通过安装 Incoming WebHooks 而来。
如果你不想在 GetYii 项目中使用 Slack
你需要修改 common\config\main.php
文件,按照如下方式屏蔽代码:
<?php
...
// 'slack' => [
// 'httpclient' => ['class' => 'yii\httpclient\Client'],
// 'class' => 'understeam\slack\Client',
// 'url' => '',
// ],
'log' => [
'traceLevel' => YII_DEBUG ? 3 : 0,
'targets' => [
// [
// 'class' => 'understeam\slack\LogTarget',
// 'levels' => ['error'],
// 'categories' => [
// 'yii\db\*',
// 'yii\web\HttpException:*',
// ],
// 'except' => [
// 'yii\web\HttpException:404', // 排除404错误
// ],
// 'exportInterval' => 1, // Send logs on every message
// 'logVars' => [],
// ],
...
],
]
最后还是想说一句 Slack 真的是一个非常库的软件。如果你觉得 Slack 访问比较慢,而且不想看英文,推荐你试试国内的同类产品 - 瀑布IM。 API 兼容 Slack,所以也可以用上这个功能,使用方法一样,URL 填写 瀑布IM 给的就可以了。如果有能力我强烈建议使用 Slack。