GASでエラー監視通知自動化
GAS応用でエラー監視を実装する
Google Apps Script(GAS)は、スプレッドシートやGmail、Google Driveと連携した自動化に最適です。しかし、スクリプトが失敗したときにすぐに把握できないと、業務に支障をきたします。そこで、GASで発生した例外を自動で検知し、通知する仕組みを構築します。
まず、try...catch構文でエラーを捕捉し、MailApp.sendEmailやLogger.logで情報を送信します。さらに、Stackdriver(現在はGoogle Cloud Logging)にログを送ることで、後から検索・分析が可能になります。
function main() {
try {
// 何らかの処理
} catch (e) {
Logger.log('エラー発生: ' + e.message);
MailApp.sendEmail('admin@example.com', 'GASエラー通知', e.stack);
// Stackdriverへ送信
var logEntry = {
textPayload: 'GASエラー: ' + e.message,
severity: 'ERROR'
};
CloudLogging.log(logEntry);
}
}
StackdriverとError Reportingの連携
Stackdriver(Google Cloud Logging)とError Reportingを組み合わせると、GASのエラーをリアルタイムで可視化できます。GASからCloudLogging.logで送信したログは、Error Reportingが自動で解析し、重複エラーをまとめて表示します。
設定手順は以下の通りです。
- Google Cloud Consoleでプロジェクトを作成し、Stackdriver Logging APIを有効化。
- GAS側でサービスアカウントを作成し、JSONキーを取得。
- スクリプトエディタの「サービス」から「Google Cloud Logging」を追加し、認証情報を設定。
- エラー発生時に
CloudLogging.logで送信。
これにより、エラーが発生した瞬間にError Reportingのダッシュボードに表示され、メール通知やSlack連携も設定できます。
ログ監視と通知設定
Stackdriver Loggingでは、ログを検索・フィルタリングし、特定の条件でアラートを発火させることが可能です。例えば、severity=ERRORのログが一定時間内に10件以上発生したら通知する設定を作ります。
設定例:
resource.type="global"
logName="projects/your-project-id/logs/cloudfunctions.googleapis.com%2Fcloud-functions"
severity="ERROR"
このクエリをベースに、アラートポリシーを作成し、通知チャネル(メール、SMS、Webhook)を追加します。WebhookをSlackやTeamsに設定すれば、リアルタイムでチームに情報が届きます。
アラート設計と障害対応
アラートは単なる通知ではなく、障害対応フローを支える重要な要素です。以下のポイントを押さえて設計しましょう。
- 閾値は過度に厳しくしない。誤検知を減らすために、エラーの種類や頻度を分析。
- 通知先は担当者と自動化ツール(PagerDuty、Opsgenie)を組み合わせる。
- アラートに対するレスポンス手順をドキュメント化し、定期的にテスト。
- 障害発生時のログを自動で集約し、後続の原因分析に活用。
実際にGASで発生したエラーをStackdriverに送信し、アラートが発火した際にSlackにメッセージが届くように設定すると、即座にチームが対応できます。
モニタリングと運用のベストプラクティス
GASプロジェクトを本番環境で運用する際は、以下のベストプラクティスを守ると安定性が向上します。
- コードはモジュール化し、テストケースを自動化。CI/CDパイプラインでデプロイ。
- ログレベルを適切に設定。DEBUGは開発時のみ、INFOは運用時に必要な情報。
- 定期的にStackdriverのログを確認し、未処理のエラーを洗い出す。
- アラートポリシーをレビューし、閾値や通知先を最適化。
- 運用マニュアルを作成し、担当者がすぐに対応できるようにする。
これらを実践することで、GAS応用におけるエラー監視・ログ監視・通知設定・アラート設計・障害対応・モニタリング・運用が一体化し、システム全体の信頼性が大幅に向上します。
コメント
コメントを投稿