diff --git a/.dockerignore b/.dockerignore index f403fee1..88a3489c 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,5 +1,4 @@ .idea -.git doc example logo @@ -7,4 +6,4 @@ tests .gitignore build.sh build.bat -README.MD \ No newline at end of file +README.MD diff --git a/Dockerfile b/Dockerfile index b906b51a..323de733 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,9 @@ FROM golang:1.16-alpine3.12 as builder WORKDIR $GOPATH/src/github.com/feiyu563/PrometheusAlert -RUN apk update && apk upgrade && apk add --no-cache gcc g++ sqlite-libs +RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && \ + apk update && apk upgrade && \ + apk add --no-cache gcc g++ sqlite-libs make git ENV GO111MODULE on @@ -10,15 +12,22 @@ ENV GOPROXY https://goproxy.io COPY . $GOPATH/src/github.com/feiyu563/PrometheusAlert -RUN go mod vendor && go build +RUN make build # ----------------------------------------------------------------------------- - FROM alpine:3.12 LABEL maintainer="jikun.zhang" -RUN apk update && apk upgrade && apk add --no-cache sqlite-libs +RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && \ + apk add tzdata && \ + cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \ + echo "Asia/Shanghai" > /etc/timezone && \ + apk del tzdata && \ + apk update && apk upgrade && apk add --no-cache sqlite-libs curl + +HEALTHCHECK --start-period=10s --interval=20s --timeout=3s --retries=3 \ + CMD curl -fs http://localhost:8080/health || exit 1 WORKDIR /app @@ -38,4 +47,4 @@ COPY views views #ENTRYPOINT [ "/app/PrometheusAlert" ] -CMD if [ ! -f /app/db/PrometheusAlertDB.db ];then cp /opt/PrometheusAlertDB.db /app/db/PrometheusAlertDB.db;echo 'init ok!';else echo 'pass!';fi && /app/PrometheusAlert \ No newline at end of file +CMD if [ ! -f /app/db/PrometheusAlertDB.db ];then cp /opt/PrometheusAlertDB.db /app/db/PrometheusAlertDB.db;echo 'init ok!';else echo 'pass!';fi && /app/PrometheusAlert diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..86556aff --- /dev/null +++ b/Makefile @@ -0,0 +1,56 @@ +pkgs = $(shell go list ./... | grep -v vendor/) + +DOCKER_IMAGE_NAME ?= feiyu563/prometheus-alert + +BRANCH ?= $(shell git rev-parse --abbrev-ref HEAD) +BUILDDATE ?= $(shell date -I'seconds') +BUILDUSER ?= $(shell whoami)@$(shell hostname) +REVISION ?= $(shell git rev-parse HEAD) +TAG_VERSION ?= $(shell git describe --tags --abbrev=0) + +VERSION_LDFLAGS := \ + -X main.Version=$(TAG_VERSION) \ + -X main.Revision=$(REVISION) \ + -X main.BuildUser=$(BUILDUSER) \ + -X main.BuildDate=$(BUILDDATE) + +all: format vet test build + +.PHONY: format +format: + @echo ">> formatting code" + go fmt $(pkgs) + +.PHONY: vet +vet: + @echo ">> vetting code" + go vet $(pkgs) + +.PHONY: test +test: + @echo ">> running short tests" + go test -short $(pkgs) + +.PHONY: build +build: + @echo ">> building code" + go mod vendor + GO11MODULE=on GO111MODULE=on GOPROXY=https://goproxy.io \ + go build -ldflags "$(VERSION_LDFLAGS)" -o PrometheusAlert + +.PHONY: docker +docker: + @echo ">> building docker image" + docker build -t "$(DOCKER_IMAGE_NAME):$(TAG_VERSION)" . + docker tag "$(DOCKER_IMAGE_NAME):$(TAG_VERSION)" "$(DOCKER_IMAGE_NAME):latest" + +.PHONY: docker-push +docker-push: + @echo ">> pushing docker image" + docker push "$(DOCKER_IMAGE_NAME):$(TAG_VERSION)" + docker push "$(DOCKER_IMAGE_NAME):latest" + +.PHONY: docker-test +docker-test: + @echo ">> testing docker image and PrometheusAlert's health" + cmd/test_image.sh "$(DOCKER_IMAGE_NAME):$(TAG_VERSION)" 8080 diff --git a/README.MD b/README.MD index af644ae9..dd0532d5 100644 --- a/README.MD +++ b/README.MD @@ -29,6 +29,46 @@ PrometheusAlert是开源的运维告警中心消息转发系统,支持主流

+ +## 构建 + +应用信息和构建相关的命令都写入了Makefile,请确保安装`make`, `git`, `go`命令。如有特定需要,请自行修改Makefile。 + +```bash +# 默认 +make + +# 只运行构建 +make build + +# 运行 go fmt +make format + +# 运行 go vet +make vet + +# 构建镜像 +make docker + +# 推送镜像 +make docker-push + +# 运行镜像测试 +make docker-test + + +# 运行 +copy conf/app-example.conf conf/app.conf +./PrometheusAlert +# 测试应用健康 +curl http://localhost:8080/health +``` + + +
+
+ + ## 启动 ``` diff --git a/cmd/test_image.sh b/cmd/test_image.sh new file mode 100755 index 00000000..fe7157ae --- /dev/null +++ b/cmd/test_image.sh @@ -0,0 +1,37 @@ +#!/bin/bash + set -eo pipefail + +docker_image=$1 +port=$2 + +container_id='' + +wait_start() { + for _ in {1..10}; do + if /usr/bin/curl -s -m 5 -f "http://localhost:${port}/health"; then + docker_cleanup + exit 0 + else + sleep 1 + fi + done + + exit 1 +} + +docker_start() { + container_id=$(docker run --rm -d -p "${port}":"${port}" "${docker_image}") +} + +docker_cleanup() { + echo ">> cleaning up container" + docker kill "${container_id}" +} + +if [[ "$#" -ne 2 ]] ; then + echo "Usage: $0 feiyu563/prometheus-alert 8080" >&2 + exit 1 +fi + +docker_start +wait_start diff --git a/controllers/default.go b/controllers/default.go index 9143b502..4610d0eb 100644 --- a/controllers/default.go +++ b/controllers/default.go @@ -3,12 +3,13 @@ package controllers import ( "PrometheusAlert/models" "bytes" + "encoding/json" "strconv" - "time" "text/template" + "time" + "github.com/astaxie/beego" "github.com/astaxie/beego/logs" - "encoding/json" ) //取到tpl路径 @@ -25,6 +26,11 @@ func (c *MainController) Get() { c.Data["IsLogin"] = checkAccount(c.Ctx) } +// Health returns Hello 200 +func (c *MainController) Health() { + c.Ctx.WriteString("Hello!\n") +} + //test page func (c *MainController) Test() { if !checkAccount(c.Ctx) { @@ -145,13 +151,13 @@ func (c *MainController) MarkdownTest() { buf := new(bytes.Buffer) tpl, err := template.New("").Funcs(funcMap).Parse(TplContent) if err != nil { - resp=err.Error() + resp = err.Error() } else { - err=tpl.Execute(buf, p_json) - if err!=nil { - resp=err.Error() + err = tpl.Execute(buf, p_json) + if err != nil { + resp = err.Error() } else { - resp=buf.String() + resp = buf.String() } } c.Data["json"] = resp diff --git a/controllers/graylog3.go b/controllers/graylog3.go index 049443f4..369e25b2 100644 --- a/controllers/graylog3.go +++ b/controllers/graylog3.go @@ -20,13 +20,13 @@ type Graylog3 struct { Backlogs []Backlog `json:"backlog"` } type AlertEvent struct { - Source string `json:"source` + Source string `json:"source"` } type Backlog struct { Timestamp string `json:"timestamp"` //开始时间 Index string `json:"index"` //索引 Message string `json:"message"` - Fields G3Field `json:"fields` + Fields G3Field `json:"fields"` } type G3Field struct { Gl2RemoteIp string `json:"gl2_remote_ip"` diff --git a/controllers/huawei.go b/controllers/huawei.go index e02ac832..f3b8184d 100644 --- a/controllers/huawei.go +++ b/controllers/huawei.go @@ -34,7 +34,7 @@ func PostHWmessage(Messages string, PhoneNumbers, logsign string) string { digestBase64 := base64.StdEncoding.EncodeToString([]byte(digest)) xheader := `"UsernameToken Username="` + hwappkey + `",PasswordDigest="` + digestBase64 + `",Nonce="` + nonce + `",Created="` + now + `"` //生成form数据 - FormData:=strings.NewReader(url.Values{"from": {sender}, "to": {PhoneNumbers}, "templateId": {hwtplid}, "templateParas": {"[\"" + Messages + "\"]"}, "signature": {hwsign}, "statusCallback": {""}, "extend": {logsign}}.Encode()) + FormData := strings.NewReader(url.Values{"from": {sender}, "to": {PhoneNumbers}, "templateId": {hwtplid}, "templateParas": {"[\"" + Messages + "\"]"}, "signature": {hwsign}, "statusCallback": {""}, "extend": {logsign}}.Encode()) var tr *http.Transport if proxyUrl := beego.AppConfig.String("proxy"); proxyUrl != "" { proxy := func(_ *http.Request) (*url.URL, error) { diff --git a/controllers/prometheus.go b/controllers/prometheus.go index edc2d362..f0d20e4b 100644 --- a/controllers/prometheus.go +++ b/controllers/prometheus.go @@ -38,7 +38,7 @@ type Annotations struct { Email string `json:"email"` //2020年7月4日 10:15:20 增加多个email告警支持 Groupid string `json:"groupid"` //2021年2月2日 17:28:23 增加多个如流告警支持 AtSomeOne string `json:"at"` //2021年6月23日 14:02:21 增加@某人支持 - Rr string `json:"rr"` //2021年9月14日 14:48:08 增加随机轮询参数支持 + Rr string `json:"rr"` //2021年9月14日 14:48:08 增加随机轮询参数支持 } type Alerts struct { Status string diff --git a/controllers/prometheusalert.go b/controllers/prometheusalert.go index 7ef2060c..371c2d01 100644 --- a/controllers/prometheusalert.go +++ b/controllers/prometheusalert.go @@ -5,10 +5,10 @@ import ( "PrometheusAlert/models" "bytes" "encoding/json" - "strings" - "text/template" "github.com/astaxie/beego" "github.com/astaxie/beego/logs" + "strings" + "text/template" ) type PrometheusAlertController struct { @@ -119,7 +119,7 @@ func (c *PrometheusAlertController) PrometheusAlert() { P_groupid = beego.AppConfig.String("BDRL_ID") } P_atsomeone := c.Input().Get("at") - P_rr:=c.Input().Get("rr") + P_rr := c.Input().Get("rr") //get tpl message := "" funcMap := template.FuncMap{ @@ -140,7 +140,7 @@ func (c *PrometheusAlertController) PrometheusAlert() { message = err.Error() } else { tpl.Execute(buf, p_json) - message = SendMessagePrometheusAlert(buf.String(), P_type, P_ddurl, P_wxurl, P_fsurl, P_webhookurl, P_phone, P_email, P_touser, P_toparty, P_totag, P_groupid, P_atsomeone,P_rr,logsign) + message = SendMessagePrometheusAlert(buf.String(), P_type, P_ddurl, P_wxurl, P_fsurl, P_webhookurl, P_phone, P_email, P_touser, P_toparty, P_totag, P_groupid, P_atsomeone, P_rr, logsign) } } else { message = "接口参数缺失!" @@ -150,7 +150,7 @@ func (c *PrometheusAlertController) PrometheusAlert() { c.ServeJSON() } -func SendMessagePrometheusAlert(message, ptype, pddurl, pwxurl, pfsurl, pwebhookurl, pphone, email, ptouser, ptoparty, ptotag, pgroupid, patsomeone,prr, logsign string) string { +func SendMessagePrometheusAlert(message, ptype, pddurl, pwxurl, pfsurl, pwebhookurl, pphone, email, ptouser, ptoparty, ptotag, pgroupid, patsomeone, prr, logsign string) string { Title := beego.AppConfig.String("title") ret := "" model.AlertsFromCounter.WithLabelValues("PrometheusAlert", message, "", "", "").Add(1) @@ -158,7 +158,7 @@ func SendMessagePrometheusAlert(message, ptype, pddurl, pwxurl, pfsurl, pwebhook //微信渠道 case "wx": Wxurl := strings.Split(pwxurl, ",") - if prr=="true" { + if prr == "true" { ret += PostToWeiXin(message, DoBalance(Wxurl), patsomeone, logsign) } else { for _, url := range Wxurl { @@ -169,7 +169,7 @@ func SendMessagePrometheusAlert(message, ptype, pddurl, pwxurl, pfsurl, pwebhook //钉钉渠道 case "dd": Ddurl := strings.Split(pddurl, ",") - if prr=="true" { + if prr == "true" { ret += PostToDingDing(Title+"告警消息", message, DoBalance(Ddurl), patsomeone, logsign) } else { for _, url := range Ddurl { @@ -180,7 +180,7 @@ func SendMessagePrometheusAlert(message, ptype, pddurl, pwxurl, pfsurl, pwebhook //飞书渠道 case "fs": Fsurl := strings.Split(pfsurl, ",") - if prr=="true" { + if prr == "true" { ret += PostToFS(Title+"告警消息", message, DoBalance(Fsurl), patsomeone, logsign) } else { for _, url := range Fsurl { @@ -191,7 +191,7 @@ func SendMessagePrometheusAlert(message, ptype, pddurl, pwxurl, pfsurl, pwebhook //Webhook渠道 case "webhook": Fwebhookurl := strings.Split(pwebhookurl, ",") - if prr=="true" { + if prr == "true" { ret += PostToWebhook(message, DoBalance(Fwebhookurl), logsign) } else { for _, url := range Fwebhookurl { diff --git a/controllers/public.go b/controllers/public.go index 9f7b2b93..8e7777cd 100644 --- a/controllers/public.go +++ b/controllers/public.go @@ -2,13 +2,13 @@ package controllers import ( "bufio" + "github.com/astaxie/beego" + "github.com/astaxie/beego/logs" + "math/rand" "os" "strconv" "strings" "time" - "math/rand" - "github.com/astaxie/beego" - "github.com/astaxie/beego/logs" ) //转换时间戳到时间字符串 @@ -109,11 +109,11 @@ func GetUserPhone(neednum int) string { // 随机返回 func DoBalance(instances []string) string { if len(instances) == 0 { - logs.Error( "no instances for rand") + logs.Error("no instances for rand") return "" } lens := len(instances) index := rand.Intn(lens) inst := instances[index] return inst -} \ No newline at end of file +} diff --git a/controllers/ronglianyun.go b/controllers/ronglianyun.go index a75220f4..99af56c7 100644 --- a/controllers/ronglianyun.go +++ b/controllers/ronglianyun.go @@ -7,12 +7,13 @@ import ( "encoding/base64" "encoding/json" "fmt" - "github.com/astaxie/beego" - "github.com/astaxie/beego/logs" "io/ioutil" "net/http" "strings" "time" + + "github.com/astaxie/beego" + "github.com/astaxie/beego/logs" ) //定义语音请求body结构体 @@ -93,6 +94,9 @@ func PostRLYphonecall(CallMessage, PhoneNumber, logsign string) string { req.Header.Set("Content-Type", "application/json") req.Header.Set("Authorization", encodeAuth) resp, err := client.Do(req) + if err != nil { + logs.Error(logsign, "[rlyphonecall]", err.Error()) + } defer resp.Body.Close() if body, err = ioutil.ReadAll(resp.Body); err != nil { diff --git a/controllers/zabbix.go b/controllers/zabbix.go index 2962348b..47f42c50 100644 --- a/controllers/zabbix.go +++ b/controllers/zabbix.go @@ -35,74 +35,74 @@ func SendMessageZabbix(message ZabbixMessage, logsign string) string { switch message.ZabbixType { //微信渠道 case "wx": - if message.ZabbixTarget=="" { - message.ZabbixTarget=beego.AppConfig.String("wxurl") + if message.ZabbixTarget == "" { + message.ZabbixTarget = beego.AppConfig.String("wxurl") } - ret = PostToWeiXin(message.ZabbixMessage, message.ZabbixTarget, "",logsign) + ret = PostToWeiXin(message.ZabbixMessage, message.ZabbixTarget, "", logsign) //钉钉渠道 case "dd": - if message.ZabbixTarget=="" { - message.ZabbixTarget=beego.AppConfig.String("ddurl") + if message.ZabbixTarget == "" { + message.ZabbixTarget = beego.AppConfig.String("ddurl") } - ret = PostToDingDing("Zabbix告警消息", message.ZabbixMessage, message.ZabbixTarget, "",logsign) + ret = PostToDingDing("Zabbix告警消息", message.ZabbixMessage, message.ZabbixTarget, "", logsign) //飞书渠道 case "fs": - if message.ZabbixTarget=="" { - message.ZabbixTarget=beego.AppConfig.String("fsurl") + if message.ZabbixTarget == "" { + message.ZabbixTarget = beego.AppConfig.String("fsurl") } - ret = PostToFS("Zabbix告警消息", message.ZabbixMessage, message.ZabbixTarget, "",logsign) + ret = PostToFS("Zabbix告警消息", message.ZabbixMessage, message.ZabbixTarget, "", logsign) //腾讯云短信 case "txdx": - if message.ZabbixTarget=="" { - message.ZabbixTarget=GetUserPhone(1) + if message.ZabbixTarget == "" { + message.ZabbixTarget = GetUserPhone(1) } ret = PostTXmessage(message.ZabbixMessage, message.ZabbixTarget, logsign) //华为云短信 case "hwdx": - if message.ZabbixTarget=="" { - message.ZabbixTarget=GetUserPhone(1) + if message.ZabbixTarget == "" { + message.ZabbixTarget = GetUserPhone(1) } ret = ret + PostHWmessage(message.ZabbixMessage, message.ZabbixTarget, logsign) //百度云短信 case "bddx": - if message.ZabbixTarget=="" { - message.ZabbixTarget=GetUserPhone(1) + if message.ZabbixTarget == "" { + message.ZabbixTarget = GetUserPhone(1) } ret = ret + PostBDYmessage(message.ZabbixMessage, message.ZabbixTarget, logsign) //阿里云短信 case "alydx": - if message.ZabbixTarget=="" { - message.ZabbixTarget=GetUserPhone(1) + if message.ZabbixTarget == "" { + message.ZabbixTarget = GetUserPhone(1) } ret = ret + PostALYmessage(message.ZabbixMessage, message.ZabbixTarget, logsign) //腾讯云电话 case "txdh": - if message.ZabbixTarget=="" { - message.ZabbixTarget=GetUserPhone(1) + if message.ZabbixTarget == "" { + message.ZabbixTarget = GetUserPhone(1) } ret = PostTXphonecall(message.ZabbixMessage, message.ZabbixTarget, logsign) //阿里云电话 case "alydh": - if message.ZabbixTarget=="" { - message.ZabbixTarget=GetUserPhone(1) + if message.ZabbixTarget == "" { + message.ZabbixTarget = GetUserPhone(1) } ret = ret + PostALYphonecall(message.ZabbixMessage, message.ZabbixTarget, logsign) //容联云电话 case "rlydh": - if message.ZabbixTarget=="" { - message.ZabbixTarget=GetUserPhone(1) + if message.ZabbixTarget == "" { + message.ZabbixTarget = GetUserPhone(1) } ret = ret + PostRLYphonecall(message.ZabbixMessage, message.ZabbixTarget, logsign) //7mo短信 case "7moordx": - if message.ZabbixTarget=="" { - message.ZabbixTarget=GetUserPhone(1) + if message.ZabbixTarget == "" { + message.ZabbixTarget = GetUserPhone(1) } ret = ret + Post7MOORmessage(message.ZabbixMessage, message.ZabbixTarget, logsign) //7mo电话 case "7moordh": - if message.ZabbixTarget=="" { - message.ZabbixTarget=GetUserPhone(1) + if message.ZabbixTarget == "" { + message.ZabbixTarget = GetUserPhone(1) } ret = ret + Post7MOORphonecall(message.ZabbixMessage, message.ZabbixTarget, logsign) //telegram @@ -110,11 +110,11 @@ func SendMessageZabbix(message ZabbixMessage, logsign string) string { ret = ret + SendTG(message.ZabbixMessage, logsign) //workwechat case "workwechat": - ret = ret + SendWorkWechat(beego.AppConfig.String("WorkWechat_ToUser"),beego.AppConfig.String("WorkWechat_ToParty"), beego.AppConfig.String("WorkWechat_ToTag"),message.ZabbixMessage, logsign) + ret = ret + SendWorkWechat(beego.AppConfig.String("WorkWechat_ToUser"), beego.AppConfig.String("WorkWechat_ToParty"), beego.AppConfig.String("WorkWechat_ToTag"), message.ZabbixMessage, logsign) //百度Hi(如流) case "rl": - if message.ZabbixTarget=="" { - message.ZabbixTarget=beego.AppConfig.String("BDRL_URL") + if message.ZabbixTarget == "" { + message.ZabbixTarget = beego.AppConfig.String("BDRL_URL") } ret = PostToRuLiu(beego.AppConfig.String("BDRL_ID"), message.ZabbixMessage, message.ZabbixTarget, logsign) //异常参数 diff --git a/example/helm/prometheusalert/templates/deployment.yaml b/example/helm/prometheusalert/templates/deployment.yaml index 534aceb9..af294a5d 100644 --- a/example/helm/prometheusalert/templates/deployment.yaml +++ b/example/helm/prometheusalert/templates/deployment.yaml @@ -36,12 +36,22 @@ spec: subPath: user.csv livenessProbe: httpGet: - path: / + path: /health port: http + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 20 + successThreshold: 1 + timeoutSeconds: 3 readinessProbe: httpGet: - path: / + path: /health port: http + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 20 + successThreshold: 1 + timeoutSeconds: 3 resources: {{ toYaml .Values.resources | indent 12 }} {{- with .Values.nodeSelector }} @@ -64,4 +74,4 @@ spec: - key: app.conf path: app.conf - key: user.csv - path: user.csv \ No newline at end of file + path: user.csv diff --git a/main.go b/main.go index 72fc76b5..3fb418c4 100644 --- a/main.go +++ b/main.go @@ -4,6 +4,10 @@ import ( "PrometheusAlert/model" "PrometheusAlert/models" _ "PrometheusAlert/routers" + "os" + "path" + "runtime" + "github.com/astaxie/beego" "github.com/astaxie/beego/logs" "github.com/astaxie/beego/orm" @@ -11,8 +15,15 @@ import ( _ "github.com/lib/pq" _ "github.com/mattn/go-sqlite3" "github.com/prometheus/client_golang/prometheus/promhttp" - "os" - "path" +) + +// Infos are set at build time use ldflags. +var ( + Version string + Revision string + BuildUser string + BuildDate string + GoVersion = runtime.Version() ) func IsExist(path string) bool { @@ -66,7 +77,13 @@ func main() { logpath := beego.AppConfig.String("logpath") logs.SetLogger(logtype, `{"filename":"`+logpath+`"}`) } - logs.Info("[main] 当前版本(Version)4.6.1") + // 输出应用信息 + logs.Info("[main] 构建的Go版本: ", GoVersion) + logs.Info("[main] 应用当前版本: ", Version) + logs.Info("[main] 应用当前提交: ", Revision) + logs.Info("[main] 应用构建时间: ", BuildDate) + logs.Info("[main] 应用构建用户: ", BuildUser) + model.MetricsInit() beego.Handler("/metrics", promhttp.Handler()) beego.Run() diff --git a/routers/router.go b/routers/router.go index 86435c3d..fd1d0a2e 100644 --- a/routers/router.go +++ b/routers/router.go @@ -19,6 +19,8 @@ func init() { beego.Router("/template/del", &controllers.MainController{}, "get:TemplateDel") beego.Router("/alerttest", &controllers.MainController{}, "post:AlertTest") beego.Router("/markdowntest", &controllers.MainController{}, "get,post:MarkdownTest") + // health + beego.Router("/health", &controllers.MainController{}, "get:Health") //prometheus beego.Router("/prometheus/alert", &controllers.PrometheusController{}, "post:PrometheusAlert") diff --git a/tests/default_test.go b/tests/default_test.go index 2fa07eea..2a494e9d 100644 --- a/tests/default_test.go +++ b/tests/default_test.go @@ -13,14 +13,14 @@ import ( ) func init() { - _, file, _, _ := runtime.Caller(1) + _, file, _, _ := runtime.Caller(0) apppath, _ := filepath.Abs(filepath.Dir(filepath.Join(file, ".."+string(filepath.Separator)))) beego.TestBeegoInit(apppath) } // TestBeego is a sample to run an endpoint test func TestBeego(t *testing.T) { - r, _ := http.NewRequest("GET", "/", nil) + r, _ := http.NewRequest("GET", "/health", nil) w := httptest.NewRecorder() beego.BeeApp.Handlers.ServeHTTP(w, r)