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系での構築は良かったと思います。
料金もそんなにかからないはず。