lambda + golangでweb死活監視
aws lambdaをつかってweb監視を行なっています。言語はgolangを使用。通知はslackを使用。
eventsで5分単位に実行するweb監視の組み方です。
serverless.yml
provider: name: aws runtime: go1.x lambdaHashingVersion: 20201221 stage: dev region: ap-northeast-1 functions: check: handler: bin/check events: - schedule: rate(5 minutes)
コード
package main import ( "github.com/aws/aws-lambda-go/lambda" ) func Handler() (string, error) { check(target) return "OK", nil } function check(){ // 処理内容 } function notification(){ } func main() { lambda.Start(Handler) }
lambda実行のコード。Handleの返り値は変更可能。
監視のコード自体は前の記事を参照。
deploy
make deploy
deployが完了し、aws lambdaに関数が追加されていればOK。
トリガーにeventが入っていれば、時間でのイベント処理が実行されるようになる。
local実行
local: sls invoke local --docker -f check -d {}
まとめ
lambda+golangでのhttp死活監視でエラーがある場合にslackに通知が送られてくるようになりました。
サーバーを用意するのが面倒なためlambdaで構築できるのはありがたいですね。
golangの場合サーバーの設定があまり必要ないのでサーバーの設定面でいうと、スクリプト言語より楽ですがメンテナンス等を考えると気軽なserverless系での構築は望ましいですね。
役割が監視のため止まることが少ない構成で考える必要もあり、serverless系での構築は良かったと思います。
料金もそんなにかからないはず。