Skip to content

Commit e588dbf

Browse files
李红李红
authored andcommitted
server enable
1 parent 06454e1 commit e588dbf

File tree

6 files changed

+81
-22
lines changed

6 files changed

+81
-22
lines changed

mgr/runner.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,12 @@ func NewLogExportRunner(rc RunnerConfig, cleanChan chan<- cleaner.CleanSignal, r
274274
if err != nil {
275275
return nil, err
276276
}
277+
var serverConfigs = make([]map[string]interface{}, 0, len(transformers))
278+
for _, transform := range transformers {
279+
if serverTransformer, ok := transform.(transforms.ServerTansformer); ok {
280+
serverConfigs = append(serverConfigs, serverTransformer.ServerConfig())
281+
}
282+
}
277283
senders := make([]sender.Sender, 0)
278284
for i, senderConfig := range rc.SendersConfig {
279285
if senderConfig[sender.KeySenderType] == sender.TypePandora {
@@ -289,6 +295,11 @@ func NewLogExportRunner(rc RunnerConfig, cleanChan chan<- cleaner.CleanSignal, r
289295
if err != nil {
290296
return nil, err
291297
}
298+
if senderConfig[sender.KeySenderType] == sender.TypePandora {
299+
if serverSender, ok := s.(sender.ServerSender); ok {
300+
serverSender.SetServer(serverConfigs)
301+
}
302+
}
292303
senders = append(senders, s)
293304
delete(rc.SendersConfig[i], sender.InnerUserAgent)
294305
}
@@ -305,7 +316,7 @@ func createTransformers(rc RunnerConfig) ([]transforms.Transformer, error) {
305316
transformers := make([]transforms.Transformer, 0)
306317
for idx := range rc.Transforms {
307318
tConf := rc.Transforms[idx]
308-
tp := tConf[transforms.KeyType]
319+
tp := tConf[KeyType]
309320
if tp == nil {
310321
return nil, fmt.Errorf("transformer config type is empty %v", tConf)
311322
}

sender/pandora/pandora.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ import (
3131

3232
var osInfo = []string{KeyCore, KeyHostName, KeyOsInfo, KeyLocalIp}
3333

34+
var _ sender.ServerSender = &Sender{}
35+
3436
const (
3537
SendTypeRaw = "raw"
3638
SendTypeNormal = "normal"
@@ -48,6 +50,7 @@ type Sender struct {
4850
microsecondCounter uint64
4951
extraInfo map[string]string
5052
sendType string
53+
EnbleServerIp bool
5154
}
5255

5356
// UserSchema was parsed pandora schema from user's raw schema
@@ -1126,3 +1129,14 @@ func (s *Sender) Name() string {
11261129
func (s *Sender) Close() error {
11271130
return s.client.Close()
11281131
}
1132+
1133+
func (s *Sender) SetServer(serverConfigs []map[string]interface{}) error {
1134+
for _, serverConfig := range serverConfigs {
1135+
if transformType, ok := serverConfig[KeyType].(string); ok && transformType == KeyIP {
1136+
if localEnable, ok := serverConfig[LocalEnable].(bool); ok && !localEnable {
1137+
s.opt.autoCreate += fmt.Sprintf(",%v ip", KeyIP)
1138+
}
1139+
}
1140+
}
1141+
return nil
1142+
}

sender/sender.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,10 @@ type StatsSender interface {
220220
Restore(*StatsInfo)
221221
}
222222

223+
type ServerSender interface {
224+
SetServer([]map[string]interface{}) error
225+
}
226+
223227
// SenderRegistry sender 的工厂类。可以注册自定义sender
224228
type Registry struct {
225229
senderTypeMap map[string]func(conf.MapConf) (Sender, error)

transforms/ip/ip.go

Lines changed: 43 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,14 @@ var (
2626
_ transforms.StatsTransformer = &Transformer{}
2727
_ transforms.Transformer = &Transformer{}
2828
_ transforms.Initializer = &Transformer{}
29+
_ transforms.ServerTansformer = &Transformer{}
2930
)
3031

3132
type Transformer struct {
3233
StageTime string `json:"stage"`
3334
Key string `json:"key"`
3435
DataPath string `json:"data_path"`
36+
LocalEnable bool `json:"local_enable"`
3537
KeyAsPrefix bool `json:"key_as_prefix"`
3638
Language string `json:"language"`
3739

@@ -91,6 +93,9 @@ func (_ *Transformer) RawTransform(datas []string) ([]string, error) {
9193
}
9294

9395
func (t *Transformer) Transform(datas []Data) ([]Data, error) {
96+
if !t.LocalEnable {
97+
return datas, nil
98+
}
9499
var err, fmtErr error
95100
errNum := 0
96101
if t.loc == nil {
@@ -219,16 +224,28 @@ func (_ *Transformer) SampleConfig() string {
219224

220225
func (_ *Transformer) ConfigOptions() []Option {
221226
return []Option{
227+
{
228+
KeyName: LocalEnable,
229+
Element: Radio,
230+
ChooseOnly: true,
231+
ChooseOptions: []interface{}{true, false},
232+
Default: false,
233+
Required: true,
234+
DefaultNoUse: false,
235+
Description: "是否使用本地解析,默认为服务端解析",
236+
Type: transforms.TransformTypeBoolean,
237+
},
222238
transforms.KeyFieldName,
223239
{
224-
KeyName: "data_path",
225-
ChooseOnly: false,
226-
Default: "",
227-
Required: true,
228-
Placeholder: "your/path/to/ip.dat(x)",
229-
DefaultNoUse: true,
230-
Description: "IP数据库路径(data_path)",
231-
Type: transforms.TransformTypeString,
240+
KeyName: "data_path",
241+
ChooseOnly: false,
242+
Default: "",
243+
Required: true,
244+
Placeholder: "your/path/to/ip.dat(x)",
245+
DefaultNoUse: true,
246+
Description: "IP数据库路径(data_path)",
247+
Type: transforms.TransformTypeString,
248+
AdvanceDepend: LocalEnable,
232249
},
233250
{
234251
KeyName: "key_as_prefix",
@@ -240,17 +257,19 @@ func (_ *Transformer) ConfigOptions() []Option {
240257
Element: Checkbox,
241258
Description: "字段名称作为前缀(key_as_prefix)",
242259
Type: transforms.TransformTypeString,
260+
AdvanceDepend: LocalEnable,
243261
},
244262
{
245-
KeyName: "language",
246-
ChooseOnly: false,
247-
Default: "zh-CN",
248-
Required: true,
249-
Placeholder: "zh-CN",
250-
DefaultNoUse: true,
251-
Description: "mmdb格式库使用的语种",
252-
Advance: true,
253-
Type: transforms.TransformTypeString,
263+
KeyName: "language",
264+
ChooseOnly: false,
265+
Default: "zh-CN",
266+
Required: true,
267+
Placeholder: "zh-CN",
268+
DefaultNoUse: true,
269+
Description: "mmdb格式库使用的语种",
270+
Advance: true,
271+
Type: transforms.TransformTypeString,
272+
AdvanceDepend: LocalEnable,
254273
},
255274
}
256275
}
@@ -275,6 +294,13 @@ func (t *Transformer) Close() error {
275294
return nil
276295
}
277296

297+
func (t *Transformer) ServerConfig() map[string]interface{} {
298+
config := make(map[string]interface{})
299+
config[KeyType] = Name
300+
config[LocalEnable] = t.LocalEnable
301+
return config
302+
}
303+
278304
func init() {
279305
transforms.Add(Name, func() transforms.Transformer {
280306
return &Transformer{}

transforms/registry.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,6 @@ import (
44
. "github.com/qiniu/logkit/utils/models"
55
)
66

7-
const (
8-
KeyType = "type"
9-
)
10-
117
const (
128
TransformTypeString = "string"
139
TransformTypeLong = "long"
@@ -34,6 +30,10 @@ type Transformer interface {
3430
Stats() StatsInfo
3531
}
3632

33+
type ServerTansformer interface {
34+
ServerConfig() map[string]interface{}
35+
}
36+
3737
// DataReader 代表了一个可直接读取内存数据结构的读取器
3838
type StatsTransformer interface {
3939
// ReadData 用于读取一条数据以及数据的实际读取字节

utils/models/models.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ const (
3636

3737
KeyPandoraStash = "pandora_stash" // 当只有一条数据且 sendError 时候,将其转化为 raw 发送到 pandora_stash 这个字段
3838
KeyPandoraSeparateId = "pandora_separate_id" // 当一条数据大于2M且 sendError 时候,将其切片,切片记录到 pandora_separate_id 这个字段
39+
KeyIP = "ip" // schema ip
40+
KeyType = "type"
3941

4042
SchemaFreeTokensPrefix = "schema_free_tokens_"
4143
LogDBTokensPrefix = "logdb_tokens_"
@@ -59,6 +61,8 @@ const (
5961
Checkbox = "checkbox"
6062
Radio = "radio"
6163
InputNumber = "inputNumber"
64+
65+
LocalEnable = "local_enable"
6266
)
6367

6468
var (

0 commit comments

Comments
 (0)