Create & Init Project...

This commit is contained in:
2019-04-22 18:49:16 +08:00
commit fc4fa37393
25440 changed files with 4054998 additions and 0 deletions

View File

@@ -0,0 +1,50 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
"go_test",
)
go_library(
name = "go_default_library",
srcs = [
"agent.go",
"conf.go",
],
importpath = "go-common/library/queue/databus/report",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//library/conf/env:go_default_library",
"//library/queue/databus:go_default_library",
"//library/time:go_default_library",
"//vendor/github.com/pkg/errors:go_default_library",
],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [":package-srcs"],
tags = ["automanaged"],
visibility = ["//visibility:public"],
)
go_test(
name = "go_default_test",
srcs = ["agent_test.go"],
embed = [":go_default_library"],
rundir = ".",
tags = ["automanaged"],
deps = [
"//library/queue/databus:go_default_library",
"//library/time:go_default_library",
],
)

View File

@@ -0,0 +1,202 @@
package report
import (
"context"
"encoding/json"
"strconv"
"time"
"go-common/library/conf/env"
"go-common/library/queue/databus"
"github.com/pkg/errors"
)
type conf struct {
Secret string
Addr string
}
var (
mn *databus.Databus
user *databus.Databus
// ErrInit report init error
ErrInit = errors.New("report initialization failed")
)
const (
_timeFormat = "2006-01-02 15:04:05"
_uname = "uname"
_uid = "uid"
_business = "business"
_type = "type"
_oid = "oid"
_action = "action"
_ctime = "ctime"
_platform = "platform"
_build = "build"
_buvid = "buvid"
_ip = "ip"
_mid = "mid"
_indexInt = "int_"
_indexStr = "str_"
_extra = "extra_data"
)
// ManagerInfo manager report info.
type ManagerInfo struct {
// common
Uname string
UID int64
Business int
Type int
Oid int64
Action string
Ctime time.Time
// extra
Index []interface{}
Content map[string]interface{}
}
// UserInfo user report info
type UserInfo struct {
Mid int64
Platform string
Build int64
Buvid string
Business int
Type int
Oid int64
Action string
Ctime time.Time
IP string
// extra
Index []interface{}
Content map[string]interface{}
}
// UserActionLog 用户行为日志
type UserActionLog struct {
Uname string `json:"uname"`
UID int64 `json:"uid"`
Business int `json:"business"`
Type int `json:"type"`
Oid int64 `json:"oid"`
Action string `json:"action"`
Platform string `json:"platform"`
Build int64 `json:"build"`
Buvid string `json:"buvid"`
IP string `json:"ip"`
Mid int64 `json:"mid"`
Int0 int64 `json:"int_0"`
Int1 int64 `json:"int_1"`
Int2 int64 `json:"int_2"`
Str0 string `json:"str_0"`
Str1 string `json:"str_1"`
Str2 string `json:"str_2"`
Ctime string `json:"ctime"`
Extra string `json:"extra_data"`
}
// AuditLog 审核日志
type AuditLog struct {
Uname string `json:"uname"`
UID int64 `json:"uid"`
Business int `json:"business"`
Type int `json:"type"`
Oid int64 `json:"oid"`
Action string `json:"action"`
Int0 int64 `json:"int_0"`
Int1 int64 `json:"int_1"`
Int2 int64 `json:"int_2"`
Str0 string `json:"str_0"`
Str1 string `json:"str_1"`
Str2 string `json:"str_2"`
Ctime string `json:"ctime"`
Extra string `json:"extra_data"`
}
// InitManager init manager report log agent.
func InitManager(c *databus.Config) {
if c == nil {
c = _managerConfig
if d, ok := _defaultManagerConfig[env.DeployEnv]; ok {
c.Secret = d.Secret
c.Addr = d.Addr
}
}
mn = databus.New(c)
}
// InitUser init user report log agent.
func InitUser(c *databus.Config) {
if c == nil {
c = _userConfig
if d, ok := _defaultUserConfig[env.DeployEnv]; ok {
c.Secret = d.Secret
c.Addr = d.Addr
}
}
user = databus.New(c)
}
// Manager log a message for manager, xx-admin.
func Manager(m *ManagerInfo) error {
if mn == nil || m == nil {
return ErrInit
}
v := map[string]interface{}{}
if len(m.Content) > 0 {
extraData, _ := json.Marshal(m.Content)
v[_extra] = string(extraData)
}
v[_business] = m.Business
v[_type] = m.Type
v[_uid] = m.UID
v[_oid] = m.Oid
v[_uname] = m.Uname
v[_action] = m.Action
v[_ctime] = m.Ctime.Format(_timeFormat)
return report(mn, v, m.Index...)
}
// User log a message for user, xx-interface.
func User(u *UserInfo) error {
if user == nil || u == nil {
return ErrInit
}
v := map[string]interface{}{}
if len(u.Content) > 0 {
extraData, _ := json.Marshal(u.Content)
v[_extra] = string(extraData)
}
v[_business] = u.Business
v[_type] = u.Type
v[_mid] = u.Mid
v[_oid] = u.Oid
v[_build] = u.Build
v[_action] = u.Action
v[_platform] = u.Platform
v[_buvid] = u.Buvid
v[_ip] = u.IP
v[_ctime] = u.Ctime.Format(_timeFormat)
return report(user, v, u.Index...)
}
func report(h *databus.Databus, v map[string]interface{}, extras ...interface{}) error {
var i, j int
for _, extra := range extras {
switch ex := extra.(type) {
case string:
v[_indexStr+strconv.Itoa(i)] = ex
i++
case int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64:
v[_indexInt+strconv.Itoa(j)] = ex
j++
}
}
return h.Send(context.Background(), v[_ctime].(string), v)
}

View File

@@ -0,0 +1,141 @@
package report
import (
"sync"
"testing"
"time"
"go-common/library/queue/databus"
xtime "go-common/library/time"
)
var (
mnOnce sync.Once
mnUatOnce sync.Once
userOnce sync.Once
userUatOnce sync.Once
)
func newManager() {
InitManager(nil)
}
func newUatManager() {
InitManager(&databus.Config{
Key: "2511663d546f1413",
Secret: "cde3b480836cc76df3d635470f991caa",
Group: "LogAudit-MainSearch-P",
Topic: "LogAudit-T",
Action: "pub",
Buffer: 10240,
Name: "log-audit/log-sub",
Proto: "tcp",
Addr: "172.18.33.50:6205",
Active: 100,
Idle: 100,
DialTimeout: xtime.Duration(time.Millisecond * 200),
ReadTimeout: xtime.Duration(time.Millisecond * 200),
WriteTimeout: xtime.Duration(time.Millisecond * 200),
IdleTimeout: xtime.Duration(time.Second * 80),
})
}
func newUser() {
InitUser(nil)
}
func newUatUser() {
InitManager(&databus.Config{
Key: "2511663d546f1413",
Secret: "cde3b480836cc76df3d635470f991caa",
Group: "LogUserAction-MainSearch-P",
Topic: "LogUserAction-T",
Action: "pub",
Buffer: 10240,
Name: "log-user-action/log-sub",
Proto: "tcp",
Addr: "172.18.33.50:6205",
Active: 100,
Idle: 100,
DialTimeout: xtime.Duration(time.Millisecond * 200),
ReadTimeout: xtime.Duration(time.Millisecond * 200),
WriteTimeout: xtime.Duration(time.Millisecond * 200),
IdleTimeout: xtime.Duration(time.Second * 80),
})
}
func Test_Manager(b *testing.T) {
mnOnce.Do(newManager)
Manager(&ManagerInfo{
Uname: "dz",
UID: 64,
Business: 0,
Type: 1,
Oid: 2,
Action: "action",
Ctime: time.Now(),
Index: []interface{}{5, 6, 7, "a", "b", "c"},
Content: map[string]interface{}{
"json": "json",
},
})
}
func Test_UatManager(b *testing.T) {
mnUatOnce.Do(newUatManager)
Manager(&ManagerInfo{
Uname: "dz",
UID: 64,
Business: 0,
Type: 1,
Oid: 2,
Action: "action",
Ctime: time.Now(),
Index: []interface{}{5, 6, 7, "a", "b", "c"},
Content: map[string]interface{}{
"json": "json",
},
})
}
func Test_User(b *testing.T) {
userOnce.Do(newUser)
User(&UserInfo{
Mid: 1,
Platform: "platform",
Build: 2,
Buvid: "buvid",
Business: 0,
Type: 3,
Oid: 4,
Action: "action",
Ctime: time.Now(),
IP: "127.0.0.1",
// extra
Index: []interface{}{5, 6, 7, "a", "b", "c"},
Content: map[string]interface{}{
"json": "json",
},
})
}
func Test_UatUser(b *testing.T) {
userUatOnce.Do(newUatUser)
User(&UserInfo{
Mid: 1,
Platform: "platform",
Build: 2,
Buvid: "buvid",
Business: 0,
Type: 3,
Oid: 4,
Action: "action",
Ctime: time.Now(),
IP: "127.0.0.1",
// extra
Index: []interface{}{5, 6, 7, "a", "b", "c"},
Content: map[string]interface{}{
"json": "json",
},
})
}

View File

@@ -0,0 +1,85 @@
package report
import (
"time"
"go-common/library/conf/env"
"go-common/library/queue/databus"
xtime "go-common/library/time"
)
var (
_defaultManagerConfig = map[string]*conf{
env.DeployEnvFat1: {
Secret: "971d048a2818e37ae124a0293c300e89",
Addr: "172.16.33.158:6205",
},
env.DeployEnvUat: {
Secret: "cde3b480836cc76df3d635470f991caa",
Addr: "172.18.33.50:6205",
},
env.DeployEnvPre: {
Secret: "4a933f8170a4711ace8ec363f7e5f23c",
Addr: "172.18.21.90:6205",
},
env.DeployEnvProd: {
Secret: "4a933f8170a4711ace8ec363f7e5f23c",
Addr: "172.18.21.90:6205",
},
}
_defaultUserConfig = map[string]*conf{
env.DeployEnvFat1: {
Secret: "971d048a2818e37ae124a0293c300e89",
Addr: "172.16.33.158:6205",
},
env.DeployEnvUat: {
Secret: "cde3b480836cc76df3d635470f991caa",
Addr: "172.18.33.50:6205",
},
env.DeployEnvPre: {
Secret: "4a933f8170a4711ace8ec363f7e5f23c",
Addr: "172.18.21.90:6205",
},
env.DeployEnvProd: {
Secret: "4a933f8170a4711ace8ec363f7e5f23c",
Addr: "172.18.21.90:6205",
},
}
_managerConfig = &databus.Config{
Key: "2511663d546f1413",
Secret: "971d048a2818e37ae124a0293c300e89",
Group: "LogAudit-MainSearch-P",
Topic: "LogAudit-T",
Action: "pub",
Buffer: 10240,
Name: "log-audit/log-sub",
Proto: "tcp",
Addr: "172.16.33.158:6205",
Active: 100,
Idle: 10,
DialTimeout: xtime.Duration(time.Millisecond * 200),
ReadTimeout: xtime.Duration(time.Millisecond * 200),
WriteTimeout: xtime.Duration(time.Millisecond * 200),
IdleTimeout: xtime.Duration(time.Second * 80),
}
_userConfig = &databus.Config{
Key: "2511663d546f1413",
Secret: "971d048a2818e37ae124a0293c300e89",
Group: "LogUserAction-MainSearch-P",
Topic: "LogUserAction-T",
Action: "pub",
Buffer: 10240,
Name: "log-user-action/log-sub",
Proto: "tcp",
Addr: "172.16.33.158:6205",
Active: 100,
Idle: 10,
DialTimeout: xtime.Duration(time.Millisecond * 200),
ReadTimeout: xtime.Duration(time.Millisecond * 200),
WriteTimeout: xtime.Duration(time.Millisecond * 200),
IdleTimeout: xtime.Duration(time.Second * 80),
}
)