Commit 1690b4b1 authored by jingbo.wang's avatar jingbo.wang

接入 go-common/logger & go-common/ding

parent 9c377c78
module git.quantgroup.cn/DevOps/enoch
go 1.12
require (
github.com/Azure/go-autorest/autorest/validation v0.2.0 // indirect
github.com/Shopify/sarama v1.21.0
github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d // indirect
github.com/armon/circbuf v0.0.0-20190214190532-5111143e8da2 // indirect
github.com/Shopify/sarama v1.23.1
github.com/bsm/sarama-cluster v2.1.15+incompatible
github.com/coredns/coredns v1.6.3 // indirect
github.com/dnaeon/go-vcr v1.0.1 // indirect
github.com/envoyproxy/go-control-plane v0.8.6 // indirect
github.com/go-ole/go-ole v1.2.4 // indirect
github.com/gogo/googleapis v1.3.0 // indirect
github.com/gomodule/redigo v2.0.0+incompatible
github.com/hashicorp/consul v1.4.0
github.com/hashicorp/go-discover v0.0.0-20190905142513-34a650575f6c // indirect
github.com/hashicorp/hil v0.0.0-20190212132231-97b3a9cdfa93 // indirect
github.com/hashicorp/logutils v1.0.0 // indirect
github.com/hashicorp/net-rpc-msgpackrpc v0.0.0-20151116020338-a14192a58a69 // indirect
github.com/hashicorp/raft-boltdb v0.0.0-20190605210249-ef2e128ed477 // indirect
github.com/influxdata/influxdb v1.7.2
github.com/influxdata/platform v0.0.0-20181221041837-9d0ed9020c3f // indirect
github.com/hashicorp/consul/api v1.2.0
github.com/influxdata/influxdb v1.7.8
github.com/json-iterator/go v1.1.7
github.com/mitchellh/cli v1.0.0 // indirect
github.com/mitchellh/hashstructure v1.0.0 // indirect
github.com/robfig/cron v0.0.0-20180505203441-b41be1df6967
github.com/shirou/gopsutil v2.18.12+incompatible // indirect
github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4 // indirect
github.com/onsi/ginkgo v1.10.1 // indirect
github.com/onsi/gomega v1.7.0 // indirect
github.com/robfig/cron v1.2.0
github.com/vrg0/go-common v0.0.0-20190925101101-e6595edace1b
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df
)
......@@ -10,37 +10,48 @@ import (
"git.quantgroup.cn/DevOps/enoch/service/file_cache"
"git.quantgroup.cn/DevOps/enoch/service/job"
"git.quantgroup.cn/DevOps/enoch/service/node-check"
"log"
"github.com/vrg0/go-common/logger"
"net/http"
_ "net/http/pprof"
"os"
"strconv"
)
func main() {
var quartz bool
var denv string
var didc string
var quartz bool
var denv string
var didc string
func init() {
flag.BoolVar(&quartz, "quartz", false, "quartz")
flag.StringVar(&denv, "env", "dev", "环境")
flag.StringVar(&didc, "idc", "local", "机房")
flag.Parse()
logPath := "./enoch.log"
if denv == "pro" {
logPath = "/home/quant_group/enoch/enoch.log"
}
if e := logger.Init(denv == "pro", logPath); e != nil {
panic(e)
}
}
func main() {
conf.Load(denv, didc)
file, err := os.OpenFile("quantgroup.log", os.O_RDWR|os.O_CREATE, 0666)
defer func() { _ = file.Close() }()
if err != nil {
log.Fatalln("create file error", err)
logger.Fatal("create file error", err)
}
file_cache.Load(conf.GlobalConfig.FileCachePath)
file_cache.RegisterJob(consumer.ReSubmit)
go file_cache.Delete()
port := conf.GlobalConfig.Port
logger := log.New(file, "[Info]", log.LstdFlags|log.Llongfile)
logger.Println(conf.GlobalConfig.AppName + "项目启动, port:" + port + ",环境:" + conf.GlobalConfig.Env)
defer logger.Println("项目结束")
logger.Info(conf.GlobalConfig.AppName + "项目启动, port:" + port + ",环境:" + conf.GlobalConfig.Env)
defer logger.Info("项目结束")
//初始化redis连接池
data.RedisPoolInit()
......@@ -49,7 +60,7 @@ func main() {
intPort, _ := strconv.Atoi(port)
if quartz {
log.Println("启动定时任务")
logger.Info("启动定时任务")
job.AutoEmailPerformInfo()
}
......@@ -75,7 +86,7 @@ func main() {
err = http.ListenAndServe(":"+port, nil)
if err != nil {
log.Fatalln("服务启动失败", err)
logger.Fatal("服务启动失败", err)
}
}
......
......@@ -4,14 +4,14 @@ import (
"encoding/json"
"git.quantgroup.cn/DevOps/enoch/service/conf"
"git.quantgroup.cn/DevOps/enoch/service/data"
"git.quantgroup.cn/DevOps/enoch/service/log"
"github.com/vrg0/go-common/logger"
"io/ioutil"
)
func Load() {
config,err := ioutil.ReadFile(conf.GlobalConfig.StrategyConfPath)
if err != nil {
logger.Error.Print("!!!轮训监控,未找到配置文件!!!")
logger.Error("!!!轮训监控,未找到配置文件!!!")
return
}
......@@ -19,12 +19,12 @@ func Load() {
err = json.Unmarshal(config, &strategies)
if err != nil {
logger.Error.Printf("!!!策略文件格式错误:%s!!!\n", err)
logger.Error("!!!策略文件格式错误:%s!!!\n", err)
return
}
if !CheckArray(strategies) {
logger.Error.Print("!!!策略文件未通过校验!!!")
logger.Error("!!!策略文件未通过校验!!!")
return
}
......
......@@ -2,8 +2,8 @@ package alarm
import (
"encoding/json"
"git.quantgroup.cn/DevOps/enoch/service/log"
"git.quantgroup.cn/DevOps/enoch/service/util"
"github.com/vrg0/go-common/logger"
"net/http"
"strings"
"sync"
......@@ -25,7 +25,7 @@ func Sender(target []string, title string, info string, notice Notice) {
case MAIL:
senderMail(title, info, notice.Receiver)
default:
logger.Error.Println("策略配置错误,未匹配到对应的Sender")
logger.Error("策略配置错误,未匹配到对应的Sender")
}
}
......@@ -42,7 +42,7 @@ func senderDingDing(title string, info string, receiver [] string) {
data := strings.NewReader(string(bodyStr))
_, err := http.Post(r, "application/json;charset=utf-8", data)
if err != nil {
logger.Error.Println(err)
logger.Error(err)
}
}
}
......@@ -61,7 +61,7 @@ func buildDingDingMsg(title string, info string) []byte {
msgStr, err := json.Marshal(msg)
if nil != err {
logger.Error.Println("无法序列化ding ding msg", err)
logger.Error("无法序列化ding ding msg", err)
}
return msgStr
......@@ -73,7 +73,7 @@ func buildDingDingMsg(title string, info string) []byte {
func isExpired(key string, interval int64) bool {
now := time.Now().Unix()
lastTime, hasValue := SenderWatcher.LoadOrStore(key, now)
logger.Info.Println("---------时间间隔:old:", lastTime, ",new:", now)
logger.Info("---------时间间隔:old:", lastTime, ",new:", now)
if hasValue { // 存在旧值,判断是否过期
if now-lastTime.(int64) >= interval { //过期
SenderWatcher.Store(key, now)
......
......@@ -2,8 +2,7 @@ package alarm
import (
"fmt"
"git.quantgroup.cn/DevOps/enoch/service/log"
"log"
"github.com/vrg0/go-common/logger"
"strconv"
"strings"
)
......@@ -55,8 +54,8 @@ func (Compare) Equal(alter string, real []string) bool {
//限制同比
func (Compare) LimitComparedWithSame(alter string, old []string, current []string) bool {
log.Println(alter, old, current)
logger.Info.Println("old:", strings.Join(old, ","), "new: ", strings.Join(current, ","))
logger.Info(alter, old, current)
logger.Info("old:", strings.Join(old, ","), "new: ", strings.Join(current, ","))
rs := true
lastIndex := len(current) - 1
for i, r := range current {
......@@ -71,7 +70,7 @@ func (Compare) LimitComparedWithSame(alter string, old []string, current []strin
同比超过alter
*/
func (Compare) ComparedWithSame(alter string, old []string, current []string) bool {
logger.Info.Println("old:", strings.Join(old, ","), "new: ", strings.Join(current, ","))
logger.Info("old:", strings.Join(old, ","), "new: ", strings.Join(current, ","))
rs := true
lastIndex := len(current) - 1
for i, r := range current {
......@@ -104,7 +103,7 @@ func compareSame(alter string, old string, current string) bool {
func parseToFloat(value string) float64 {
rs, err := strconv.ParseFloat(value, 64)
if nil != err {
logger.Error.Println(err)
logger.Error(err)
}
return rs
}
......
......@@ -2,8 +2,8 @@ package alarm
import (
"fmt"
"git.quantgroup.cn/DevOps/enoch/service/log"
"github.com/influxdata/influxdb/client/v2"
"github.com/vrg0/go-common/logger"
"reflect"
"strings"
)
......@@ -14,7 +14,7 @@ var msgBuilder = reflect.ValueOf(MsgBuilder{})
func DealResult(res []client.Result, strategies []Strategy) {
var resIndex = 0
for _, strategy := range strategies {
logger.Info.Println("-------", strategy.Name, resIndex, "---------")
logger.Info("-------", strategy.Name, resIndex, "---------")
operator := strategy.Operator
operatorMethod := operators.MethodByName(operator)
buildMsgMethod := msgBuilder.MethodByName(operator)
......@@ -50,7 +50,7 @@ func DealResult(res []client.Result, strategies []Strategy) {
params[j] = reflect.ValueOf(arg)
}
params[alterValueLen] = reflect.ValueOf(value)
logger.Info.Println(uniqueTag, ":alter", params[:1], "-", strings.Join(value, ","))
logger.Info(uniqueTag, ":alter", params[:1], "-", strings.Join(value, ","))
rs := operatorMethod.Call(params)
if rs[0].Bool() { //触发报警策略
//Sender(tagValues, strategy.Name, s, notice) // 报警
......@@ -94,7 +94,7 @@ func DealResult(res []client.Result, strategies []Strategy) {
continue
}
logger.Info.Println(k, ":", v)
logger.Info(k, ":", v)
rs := operatorMethod.Call(v)
//结果报警
if rs[0].Bool() { //触发报警策略
......
......@@ -2,7 +2,7 @@ package conf
import (
"encoding/json"
"git.quantgroup.cn/DevOps/enoch/service/log"
"github.com/vrg0/go-common/logger"
"io/ioutil"
"net/http"
)
......@@ -17,6 +17,6 @@ func Load(denv string, didc string) {
err = json.Unmarshal(bytes, &GlobalConfig)
GlobalConfig.Env = denv
if nil != err {
logger.Error.Println(err)
logger.Error(err)
}
}
......@@ -5,10 +5,9 @@ import (
"fmt"
"git.quantgroup.cn/DevOps/enoch/service/data"
"git.quantgroup.cn/DevOps/enoch/service/end_points"
"git.quantgroup.cn/DevOps/enoch/service/log"
"github.com/gomodule/redigo/redis"
"github.com/influxdata/influxdb/client/v2"
"log"
"github.com/vrg0/go-common/logger"
"time"
)
......@@ -24,13 +23,13 @@ func (BraveMessageHandler) MsgProcess(msg string) {
traceMsg := make([]end_points.TraceMsg, 3) //[]TraceMsg{}
err := json.Unmarshal([]byte(msg), &traceMsg)
if err != nil {
logger.Error.Println("brave 解析msg失败:", err)
logger.Error("brave 解析msg失败:", err)
}
msgInfluxProcess(traceMsg)
}
func (BraveMessageHandler) Destroy() {
if len(pointSlice) > 0 {
logger.Info.Println("braveMessageHandler 提交本地缓存数据:", len(pointSlice))
logger.Info("braveMessageHandler 提交本地缓存数据:", len(pointSlice))
batchWrite(pointSlice)
}
}
......@@ -67,7 +66,7 @@ func msgInfluxProcess(traceMsgs []end_points.TraceMsg) {
tags["host"] = traceMsg.LocalEndpoint.Ipv4
if err != nil {
log.Fatal(err)
logger.Fatal(err)
}
unix := time.Unix(0, traceMsg.Timestamp*1000)
......@@ -80,7 +79,7 @@ func msgInfluxProcess(traceMsgs []end_points.TraceMsg) {
pointSlice = append(pointSlice, point)
if err != nil {
log.Fatal(err, msg)
logger.Fatal(err, msg)
}
}
......
......@@ -3,8 +3,8 @@ package consumer
import (
"encoding/json"
"git.quantgroup.cn/DevOps/enoch/service/end_points"
"git.quantgroup.cn/DevOps/enoch/service/log"
"github.com/influxdata/influxdb/client/v2"
"github.com/vrg0/go-common/logger"
"math/big"
"net"
"time"
......@@ -21,8 +21,8 @@ func (HealthMessageHandler) MsgProcess(msg string) {
chunkMsg := end_points.ChunkMsg{}
err := json.Unmarshal([]byte(msg), &chunkMsg)
if err != nil {
logger.Error.Println("healthMessageHandler解析json失败:", err)
logger.Error.Println(msg)
logger.Error("healthMessageHandler解析json失败:", err)
logger.Error(msg)
return
}
buildMsg(chunkMsg)
......@@ -30,12 +30,12 @@ func (HealthMessageHandler) MsgProcess(msg string) {
func (HealthMessageHandler) Destroy() {
if len(metricsPointSlice) > 0 {
logger.Info.Println("metricsMessageHandler 提交本地缓存数据:", len(metricsPointSlice))
logger.Info("metricsMessageHandler 提交本地缓存数据:", len(metricsPointSlice))
batchWrite(metricsPointSlice)
}
if len(healthPointSlice) > 0 {
logger.Info.Println("HealthMessageHandler 提交本地缓存数据:", len(healthPointSlice))
logger.Info("HealthMessageHandler 提交本地缓存数据:", len(healthPointSlice))
batchWrite(healthPointSlice)
}
}
......
......@@ -2,9 +2,9 @@ package consumer
import (
"git.quantgroup.cn/DevOps/enoch/service/conf"
"git.quantgroup.cn/DevOps/enoch/service/log"
"github.com/Shopify/sarama"
"github.com/bsm/sarama-cluster"
"github.com/vrg0/go-common/logger"
"os"
"os/signal"
"sync/atomic"
......@@ -32,7 +32,7 @@ func AgentClusterConsumer(kafkaConf conf.KafkaConf, messageHandle MessageHandler
_ = consumer.Close()
messageHandle.Destroy()
atomic.AddInt32(&consumerCount, -1)
logger.Info.Println("consumer结束")
logger.Info("consumer结束")
if consumerCount == 0 {
os.Exit(0)
}
......@@ -41,14 +41,14 @@ func AgentClusterConsumer(kafkaConf conf.KafkaConf, messageHandle MessageHandler
// consume errors
go func() {
for err := range consumer.Errors() {
logger.Error.Println("consume error:", err.Error())
logger.Error("consume error:", err.Error())
}
}()
// consume notifications
go func() {
for ntf := range consumer.Notifications() {
logger.Info.Printf("Rebalanced: %+v\n", ntf)
logger.Info("Rebalanced: %+v\n", ntf)
}
}()
......
......@@ -5,13 +5,13 @@ import (
"fmt"
"git.quantgroup.cn/DevOps/enoch/service/data"
"git.quantgroup.cn/DevOps/enoch/service/file_cache"
"git.quantgroup.cn/DevOps/enoch/service/log"
"github.com/influxdata/influxdb/client/v2"
"github.com/vrg0/go-common/logger"
)
func batchWrite(pointArray []*client.Point) {
if file_cache.Enabled() {
logger.Info.Println("写入缓存")
logger.Info("写入缓存")
fileWrite(pointArray)
} else {
err := httpWrite(pointArray)
......@@ -19,7 +19,7 @@ func batchWrite(pointArray []*client.Point) {
file_cache.OpenCache()
fileWrite(pointArray)
}
logger.Info.Println("写入influx", len(pointArray))
logger.Info("写入influx", len(pointArray))
}
}
......@@ -48,7 +48,7 @@ func ReSubmit(data []string) error {
cp := file_cache.CreateCachePoint(v)
point, err := client.NewPoint(cp.Name, cp.Tags, cp.Fields, cp.Time)
if err != nil {
logger.Error.Println("构造client.point异常", err)
logger.Error("构造client.point异常", err)
}
pointSlice = append(pointSlice, point)
if len(pointSlice) > 1000 {
......@@ -56,19 +56,19 @@ func ReSubmit(data []string) error {
if err != nil {
return err
}
logger.Info.Println("缓存重新提交:1000")
logger.Info("缓存重新提交:1000")
pointSlice = make([]*client.Point, 0)
}
}
if len(pointSlice) > 0 {
err := httpWrite(pointSlice)
if err != nil {
logger.Info.Println(pointSlice)
logger.Info(pointSlice)
return err
}
logger.Info.Println("缓存重新提交:", len(pointSlice))
logger.Info("缓存重新提交:", len(pointSlice))
}
logger.Info.Println("重新提交")
logger.Info("重新提交")
return nil
}
......
......@@ -4,7 +4,7 @@ import (
"fmt"
"git.quantgroup.cn/DevOps/enoch/service/conf"
"git.quantgroup.cn/DevOps/enoch/service/data"
"git.quantgroup.cn/DevOps/enoch/service/log"
"github.com/vrg0/go-common/logger"
"net"
"os"
"strings"
......@@ -20,7 +20,7 @@ var (
func query(dbName string) []string {
cq := data.QueryMonitor(SHOW_CQ_SQL)
logger.Info.Println(cq)
logger.Info(cq)
cqName := make([]string, 0)
for _, row := range cq[0].Series {
if row.Name == dbName {
......@@ -43,7 +43,7 @@ func delete(db string, cqName [] string) bool {
func create(apdexThreshold conf.ApdexThreshold) {
sysName := data.QuerySysName()
logger.Info.Println(sysName)
logger.Info(sysName)
sql := strings.Builder{}
for _, name := range sysName {
cqName := strings.Replace(name, "-", "_", 10)
......@@ -68,11 +68,11 @@ func buildTolSql(cqName string, sysName string, threshold int) string {
func Load() {
name := query(data.MONITOR)
logger.Info.Println("old: ", name)
logger.Info("old: ", name)
delete(data.MONITOR, name)
create(conf.GlobalConfig.ApdexThreshold)
name = query(data.MONITOR)
logger.Info.Println("new: ", name)
logger.Info("new: ", name)
}
......@@ -86,7 +86,7 @@ func checkIp(ip string) bool {
// 检查ip地址判断是否回环地址
if ipnet, ok := address.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {
if ipnet.IP.To4() != nil {
logger.Info.Println(ipnet.IP.String())
logger.Info(ipnet.IP.String())
return ipnet.IP.String() == ip
}
}
......
......@@ -3,8 +3,8 @@ package data
import (
"bytes"
"git.quantgroup.cn/DevOps/enoch/service/conf"
"git.quantgroup.cn/DevOps/enoch/service/log"
"github.com/influxdata/influxdb/client/v2"
"github.com/vrg0/go-common/logger"
)
func NewClient() client.Client {
......@@ -14,7 +14,7 @@ func NewClient() client.Client {
con, err := client.NewHTTPClient(httpConfig)
if err != nil {
logger.Error.Println(err.Error())
logger.Error(err.Error())
}
return con
......@@ -26,10 +26,10 @@ func Query(sql string, db string) []client.Result {
res, err := con.Query(q)
if nil != err {
logger.Error.Println("influxdb client init error", err)
logger.Error("influxdb client init error", err)
}
if nil != res.Error() {
logger.Error.Println("query error", db, sql, res.Error())
logger.Error("query error", db, sql, res.Error())
}
return res.Results
}
......
package dingding
import (
"encoding/json"
"net/http"
"strings"
)
var DefaultDingURL = []string{"https://oapi.dingtalk.com/robot/send?access_token=9ffab8e4ae5f94e0fbf84aa91c9cb474d9e3d5bd0bb3c2daffe4cdfe0c2cbbc7"}
type DinDingMsg struct {
MsgType string `json:"msgtype"`
// Link Link `json:"link"`
Text Text `json:"text"`
}
type Text struct {
Content string `json:"content"`
}
func SenderDingDing(info string, receiver [] string) error {
bodyStr := buildDingDingMsg(info)
for _, r := range receiver {
data := strings.NewReader(string(bodyStr))
_, e := http.Post(r, "application/json;charset=utf-8", data)
if e != nil {
return e
}
}
return nil
}
func buildDingDingMsg(info string) []byte {
msg := DinDingMsg{
MsgType: "text",
Text:Text{
Content:info,
},
}
msgStr, _ := json.Marshal(msg)
return msgStr
}
package dingding
import "testing"
var testDingUrl = []string{
"https://oapi.dingtalk.com/robot/send?access_token=05b2c46e460e94b32044251c0f8af666c55a4600758fda508120f962d589ea47",
}
func TestSenderDingDing(t *testing.T) {
e := SenderDingDing( "叮叮测试,吧啦吧啦吧", testDingUrl)
if e != nil {
t.Error(e)
}
}
......@@ -3,8 +3,8 @@ package file_cache
import (
"bufio"
"fmt"
"git.quantgroup.cn/DevOps/enoch/service/log"
"github.com/robfig/cron"
"github.com/vrg0/go-common/logger"
"io"
"io/ioutil"
"os"
......@@ -76,17 +76,17 @@ func create() {
currentFile.fileName = currentFile.path + strconv.FormatInt(current, 10)
file, err := os.Create(currentFile.fileName + WRITING)
if err != nil {
logger.Error.Println("创建缓存文件失败", err)
logger.Error("创建缓存文件失败", err)
}
logger.Info.Println("打开缓存文件", currentFile.fileName)
logger.Info("打开缓存文件", currentFile.fileName)
currentFile.file = file
currentFile.fileSize.Add(1)
logger.Info.Println("文件缓存数:", currentFile.fileSize.Get())
logger.Info("文件缓存数:", currentFile.fileSize.Get())
}
func closed() {
defer os.Rename(currentFile.fileName+WRITING, currentFile.fileName+CACHE)
logger.Info.Println("关闭缓存文件")
logger.Info("关闭缓存文件")
currentFile.file.Close()
}
......@@ -94,19 +94,19 @@ func Delete() {
fileNames := scan(DELETE)
for _, name := range fileNames {
os.Remove(currentFile.path + name)
logger.Info.Println("删除缓存文件", name)
logger.Info("删除缓存文件", name)
}
}
func pickup() {
logger.Info.Println("获取缓存文件数量")
logger.Info("获取缓存文件数量")
files := scan(CACHE)
currentFile.fileSize.Add(len(files))
}
func mark() {
fileName := scan(WRITING)
logger.Info.Println("重新标记缓存文件")
logger.Info("重新标记缓存文件")
for _, name := range fileName {
os.Rename(currentFile.path+name, currentFile.path+strings.Split(name, ".")[0]+CACHE)
}
......@@ -120,12 +120,12 @@ func Recover(submit func(data []string) error) {
for _, name := range fileNames {
err := submit(Read(currentFile.path + name))
if err != nil {
logger.Error.Println("重新提交缓存异常:", err)
logger.Error("重新提交缓存异常:", err)
return
}
os.Rename(currentFile.path+name, currentFile.path+strings.Split(name, ".")[0]+DELETE)
currentFile.fileSize.Add(-1)
logger.Info.Println("文件缓存数:", currentFile.fileSize.Get())
logger.Info("文件缓存数:", currentFile.fileSize.Get())
}
go Delete()
}
......@@ -154,7 +154,7 @@ func scan(suffix string) []string {
func Read(fileName string) []string {
file, err := os.Open(fileName)
if err != nil {
logger.Error.Println("未找到对应的文件:", err)
logger.Error("未找到对应的文件:", err)
}
reader := bufio.NewReader(file)
data := make([]string, 0)
......@@ -188,7 +188,7 @@ func RegisterJob(submit func(data []string) error) {
c := cron.New()
err := c.AddFunc("@every 1m", func() {
if !Enabled() {
logger.Info.Println("开始扫描缓存文件")
logger.Info("开始扫描缓存文件")
Recover(submit)
}
})
......
......@@ -2,7 +2,7 @@ package file_cache
import (
"encoding/json"
"git.quantgroup.cn/DevOps/enoch/service/log"
"github.com/vrg0/go-common/logger"
"net/http"
"strings"
"sync"
......@@ -44,7 +44,7 @@ func (s *switcher) status() bool {
current := time.Now().Unix()
diff := current - s.origin
if diff >= 60 {
logger.Info.Println("缓存切换")
logger.Info("缓存切换")
s.turnOff()
}
}
......@@ -75,7 +75,7 @@ func OpenCache() {
func senderDingDing() {
_, err := http.Post(url, contentType, strings.NewReader(alterMsg))
if err != nil {
logger.Error.Println(err)
logger.Error(err)
}
}
......@@ -88,7 +88,7 @@ func buildDingDingMsg() string {
}
msgStr, err := json.Marshal(msg)
if nil != err {
logger.Error.Println("无法序列化ding ding msg", err)
logger.Error("无法序列化ding ding msg", err)
}
return string(msgStr)
}
......
......@@ -3,8 +3,8 @@ package job
import (
"fmt"
"git.quantgroup.cn/DevOps/enoch/service/alarm"
"git.quantgroup.cn/DevOps/enoch/service/log"
"github.com/robfig/cron"
"github.com/vrg0/go-common/logger"
"net"
"os"
"time"
......@@ -17,7 +17,7 @@ func AutoAlarm() {
c := cron.New()
err := c.AddFunc("@every 1m", func() {
logger.Info.Println("开始执行定时任务", time.Now().Minute())
logger.Info("开始执行定时任务", time.Now().Minute())
alarm.Load()
})
if err != nil {
......@@ -37,7 +37,7 @@ func CheckIp(ip string) bool {
// 检查ip地址判断是否回环地址
if ipnet, ok := address.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {
if ipnet.IP.To4() != nil {
logger.Info.Println(ipnet.IP.String())
logger.Info(ipnet.IP.String())
return ipnet.IP.String() == ip
}
}
......
package logger
import (
"io"
"log"
"os"
)
var (
Info *log.Logger
Warning *log.Logger
Error * log.Logger
)
func init(){
file, err := os.OpenFile("quantgroup.log", os.O_RDWR|os.O_CREATE, 0666)
if err!=nil{
log.Fatalln("打开日志文件失败:",err)
}
Info = log.New(io.MultiWriter(os.Stderr,file),"Info:",log.Ldate | log.Ltime | log.Lshortfile)
Warning = log.New(io.MultiWriter(os.Stderr,file),"Warning:",log.Ldate | log.Ltime | log.Lshortfile)
Error = log.New(io.MultiWriter(os.Stderr,file),"Error:",log.Ldate | log.Ltime | log.Lshortfile)
}
\ No newline at end of file
......@@ -3,8 +3,9 @@ package node_check
import (
"context"
"git.quantgroup.cn/DevOps/enoch/service/dingding"
"git.quantgroup.cn/DevOps/enoch/service/log"
"git.quantgroup.cn/DevOps/enoch/service/registry"
"github.com/vrg0/go-common/ding"
"github.com/vrg0/go-common/logger"
"net/http"
"os"
"sync"
......@@ -53,14 +54,14 @@ func handler(serviceName string) {
if url, ok := HandlerMap.Load(serviceName); ok {
for i := 0; i < HttpGetRetryCount; i++ {
if resp, e := httpGet(url.(string), HttpTimeOut); e != nil {
logger.Error.Print(" handler service: ", serviceName, " ", e)
logger.Error(" handler service: ", serviceName, " ", e)
} else {
logger.Info.Print(" handler service: ", serviceName, " ", resp.StatusCode)
logger.Info(" handler service: ", serviceName, " ", resp.StatusCode)
break
}
}
} else {
logger.Info.Print(" handler service: ", serviceName, " ", "not found handler hook api")
logger.Info(" handler service: ", serviceName, " ", "not found handler hook api")
}
}
......@@ -103,9 +104,9 @@ func (w watch) UpdateNodes(service *registry.Service) {
for _, node := range service.NodeMap {
if oldNode, ok := oldService.NodeMap[node.Id]; ok {
if oldNode.Status == Passing && node.Status == Critical {
logger.Warning.Print(service.Name, " ", node.Id, "---!!!node critical!!!---")
logger.Warn(service.Name, " ", node.Id, "---!!!node critical!!!---")
if _, ok := IgnoreServiceMap[service.Name]; !ok {
_ = dingding.SenderDingDing(service.Name+" "+node.Id+" "+"---!!!node critical!!!---", dingding.DefaultDingURL)
_ = ding.SendText(service.Name+" "+node.Id+" "+"---!!!node critical!!!---", dingding.DefaultDingURL...)
}
}
}
......@@ -116,13 +117,13 @@ func (w watch) UpdateNodes(service *registry.Service) {
//如果 服务存在,并且服务的old状态为passing,并且服务的now状态为critical,则报警,否贼记录服务状态
serviceString := serviceStr(service)
if oldService, ok := servicesStatus[service.Name]; ok && serviceStatus(oldService) && !serviceStatus(service) {
logger.Warning.Print(serviceString, "---!!!service critical!!!---")
logger.Warn(serviceString, "---!!!service critical!!!---")
if _, ok := IgnoreServiceMap[service.Name]; !ok {
_ = dingding.SenderDingDing(serviceString+"---!!!service critical!!!---", dingding.DefaultDingURL)
_ = ding.SendText(serviceString+"---!!!service critical!!!---", dingding.DefaultDingURL...)
}
handler(service.Name)
} else {
logger.Info.Print(serviceString)
logger.Info(serviceString)
}
//更新服务状态
......@@ -165,8 +166,8 @@ func InitServiceStatus() {
func NodeCheck() {
defer func() {
if e := recover(); e != nil {
logger.Info.Print("node check panic: ", e)
_ = dingding.SenderDingDing("node check panic!", dingding.DefaultDingURL)
logger.Info("node check panic: ", e)
_ = ding.SendText("node check panic!", dingding.DefaultDingURL...)
time.Sleep(time.Second * 1)
NodeCheck()
}
......@@ -176,7 +177,7 @@ func NodeCheck() {
dc := "3c"
cluster := []string{"172.30.12.2:8500", "172.30.12.3:8500", "172.30.12.4:8500"}
if e := registry.Init("consul", map[string]interface{}{"dc": dc, "cluster": cluster}); e != nil {
logger.Info.Print("registry init error:", e)
logger.Info("registry init error:", e)
os.Exit(-1)
}
time.Sleep(time.Second * 1)
......@@ -186,7 +187,7 @@ func NodeCheck() {
//设置观察者
if e := registry.SetObserver("watch", &watch{}); e != nil {
logger.Info.Print("set observer error:", e)
logger.Info("set observer error:", e)
os.Exit(-1)
}
......
......@@ -5,7 +5,7 @@ import (
"encoding/gob"
"errors"
"github.com/hashicorp/consul/api"
"github.com/hashicorp/consul/watch"
"github.com/hashicorp/consul/api/watch"
"reflect"
"strconv"
"sync"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment