Yii2框架使用釘釘聊天機器人接收系統警報

wd731869706發表於2022-01-12


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 協議》,轉載必須註明作者和本文連結

相關文章