package main import ( "fmt" "gopkg.in/ini.v1" config "logagent/conf" "logagent/etcd" "logagent/kafka" "logagent/taillog" "time" ) //logagent的入口程序 var ( cfg = new(config.AppConfig) ) //func run() { // //1.读取日志 // for { // select { // case line := <-taillog.ReadChan(): // //2.发送给kafka // kafka.SendToKafka(cfg.KafkaConf.Topic, line.Text) // default: // time.Sleep(time.Second) // } // } //} func main() { //1.读取配置文件 err := ini.MapTo(cfg, "./conf/config.ini") if err != nil { fmt.Println("load ini err:", err) } //1.初始化kafka连接 err = kafka.Init([]string{cfg.KafkaConf.Address}, cfg.KafkaConf.ChanMaxSize) if err != nil { fmt.Printf("init kafka failed,error:%v\n", err) return } fmt.Println("init kafka success") //2.初始化etcd err = etcd.Init(cfg.EtcdConf.Address, time.Duration(cfg.EtcdConf.Timeout)*time.Second) if err != nil { fmt.Printf("init etcd failed,error:%v\n", err) } //1.从etcd中获取日志收集项的配置信息 logEntryConf, err := etcd.GetConf(cfg.EtcdConf.Key) if err != nil { fmt.Printf("get etcd failed,error:%v\n", err) return } fmt.Printf("get conf from etcd success,logEntryConf:%#v\n", logEntryConf) //派一个哨兵去监视etcd配置的变化 for k, v := range logEntryConf { fmt.Printf("index:%v,value:%v\n", k, v) } //收集日志发送到kafka taillog.Init(logEntryConf) go etcd.Watcher(cfg.EtcdConf.Key) //2.打开日志文件准备收集日志 //err = taillog.Init(cfg.TailLog.FileName) //if err != nil { // fmt.Printf("taillog init failed,error:%v\n", err) // return //} //fmt.Println("init taillog success") //run() }