// Copyright 2019 github.com. All rights reserved. // Use of this source code is governed by github.com. package main import ( "dust-monitor/parser" "dust-monitor/pb" "dust-monitor/tcp_packet" "dust-monitor/timetask" "flag" "fmt" "net" "os" ) var ( configFile = flag.String("config", "conf/common.yaml", "config file location") version = flag.Bool("version", false, "print the version") GitCommit = "library-import" Version = "library-import" ) func showVersion() { fmt.Println("Version: ", Version) fmt.Println("GitCommit:", GitCommit) } func prepare(filename string) { // 加载配置 err := parser.LoadConfig(filename) if err != nil { fmt.Printf("get conf failed, err: %+v\n\n", err) os.Exit(1) } // 注册处理函数 // parser.Register(parser.MysqlHandler, parser.RedisHandler, parser.LoggerHandler) //parser.Register(parser.LoggerHandler, parser.MysqlHandler, parser.RedisHandler) parser.Register(parser.LoggerHandler, parser.InfluxdbHandler) // 执行注册的处理函数 parser.Handle() // 建立rpc客户端 conns := pb.SetupClients() for _, conn := range conns { defer conn.Close() } timetask.Init() } func runDeviceTcp(ip string, port int) { service := fmt.Sprintf("%s:%d", ip, port) tcpAddr, err := net.ResolveTCPAddr("tcp4", service) if err != nil { fmt.Println("resolve tcp addr err:", err) os.Exit(1) } listener, err := net.ListenTCP("tcp", tcpAddr) if err != nil { fmt.Println("listen tcp err:", err) os.Exit(2) } for { fmt.Printf("listen:%v\n", listener.Addr().String()) conn, err := listener.Accept() if err != nil { continue } go tcp_packet.HandleSocketClient(conn) } } func main() { flag.Parse() if *version { showVersion() os.Exit(1) } prepare(*configFile) runDeviceTcp(parser.Conf.DustMonitor.ServiceIp, parser.Conf.DustMonitor.ServicePort) return }