// Parse flags and Run helper (MackerelPlugin) with the given arguments. func main() { // Flags var ( tempfile string version bool ) // Define option flag parse flags := flag.NewFlagSet(Name, flag.ContinueOnError) flags.BoolVar(&version, "version", false, "Print version information and quit.") flags.StringVar(&tempfile, "tempfile", "/tmp/mackerel-plugin-conntrack", "Temp file name") // Parse commandline flag if err := flags.Parse(os.Args[1:]); err != nil { os.Exit(ExitCodeParseFlagError) } // Show version if version { fmt.Fprintf(os.Stderr, "%s version %s\n", Name, Version) os.Exit(ExitCodeOK) } // Create MackerelPlugin for Conntrack var c ConntrackPlugin helper := mp.NewMackerelPlugin(c) helper.Tempfile = tempfile helper.Run() }
// Do the plugin func Do() { optAPIKey := flag.String("api-key", "", "API Key") optDatabase := flag.String("database", "", "Database name") optIgnoreTableNames := flag.String("ignore-table", "", "Ignore Table name (Can be Comma-Separated)") optTempfile := flag.String("tempfile", "", "Temp file name") flag.Parse() var plugin TDTablePlugin plugin.APIKey = *optAPIKey plugin.Database = *optDatabase ignoreTableNames := []string{} if *optIgnoreTableNames != "" { ignoreTableNames = strings.Split(*optIgnoreTableNames, ",") } plugin.IgnoreTableNames = ignoreTableNames helper := mp.NewMackerelPlugin(plugin) helper.Tempfile = *optTempfile if os.Getenv("MACKEREL_AGENT_PLUGIN_META") != "" { helper.OutputDefinitions() } else { helper.OutputValues() } }
// Run is to parse flags and Run helper (MackerelPlugin) with the given arguments. func (c *CLI) Run(args []string) int { // Flags var ( tempfile string version bool ) // Define option flag parse flags := flag.NewFlagSet(Name, flag.ContinueOnError) flags.BoolVar(&version, "version", false, "Print version information and quit.") flags.StringVar(&tempfile, "tempfile", "/tmp/mackerel-plugin-conntrack", "Temp file name") // Parse commandline flag if err := flags.Parse(args[1:]); err != nil { return ExitCodeParseFlagError } // Show version if version { fmt.Fprintf(c.errStream, "%s version %s\n", Name, Version) return ExitCodeOK } // Create MackerelPlugin for Conntrack var cp ConntrackPlugin helper := mp.NewMackerelPlugin(cp) helper.Tempfile = tempfile helper.Run() return ExitCodeOK }
func main() { optURI := flag.String("uri", "", "URI") optScheme := flag.String("scheme", "http", "Scheme") optHost := flag.String("host", "localhost", "Hostname") optPort := flag.String("port", "8080", "Port") optPath := flag.String("path", "/api/stats", "Path") optPrefix := flag.String("metric-key-prefix", "gostats", "Metric key prefix") optTempfile := flag.String("tempfile", "", "Temp file name") flag.Parse() gosrv := GostatsPlugin{ Prefix: *optPrefix, } if *optURI != "" { gosrv.URI = *optURI } else { gosrv.URI = fmt.Sprintf("%s://%s:%s%s", *optScheme, *optHost, *optPort, *optPath) } helper := mp.NewMackerelPlugin(gosrv) if *optTempfile != "" { helper.Tempfile = *optTempfile } else { helper.Tempfile = fmt.Sprintf("/tmp/mackerel-plugin-gosrv") } helper.Run() }
func main() { optHost := flag.String("host", "localhost", "Hostname") optPort := flag.String("port", "27017", "Port") optUser := flag.String("username", "", "Username") optPass := flag.String("password", "", "Password") optVerbose := flag.Bool("v", false, "Verbose mode") optTempfile := flag.String("tempfile", "", "Temp file name") flag.Parse() var mongodb MongoDBPlugin mongodb.Verbose = *optVerbose if *optUser == "" && *optPass == "" { mongodb.Url = fmt.Sprintf("mongodb://%s:%s", *optHost, *optPort) } else { mongodb.Url = fmt.Sprintf("mongodb://%s:%s@%s:%s", *optUser, *optPass, *optHost, *optPort) } helper := mp.NewMackerelPlugin(mongodb) if *optTempfile != "" { helper.Tempfile = *optTempfile } else { helper.Tempfile = fmt.Sprintf("/tmp/mackerel-plugin-mongodb-%s-%s", *optHost, *optPort) } if os.Getenv("MACKEREL_AGENT_PLUGIN_META") != "" { helper.OutputDefinitions() } else { helper.OutputValues() } }
// Do the plugin func Do() { optHost := flag.String("host", "localhost", "Hostname") optPort := flag.String("port", "6379", "Port") optPassowrd := flag.String("password", "", "Password") optSocket := flag.String("socket", "", "Server socket (overrides host and port)") optPrefix := flag.String("metric-key-prefix", "redis", "Metric key prefix") optTimeout := flag.Int("timeout", 5, "Timeout") optTempfile := flag.String("tempfile", "", "Temp file name") flag.Parse() redis := RedisPlugin{ Timeout: *optTimeout, Prefix: *optPrefix, } if *optSocket != "" { redis.Socket = *optSocket } else { redis.Host = *optHost redis.Port = *optPort redis.Password = *optPassowrd } helper := mp.NewMackerelPlugin(redis) helper.Tempfile = *optTempfile if os.Getenv("MACKEREL_AGENT_PLUGIN_META") != "" { helper.OutputDefinitions() } else { helper.OutputValues() } }
func main() { optURI := flag.String("uri", "", "URI") optScheme := flag.String("scheme", "http", "Scheme") optHost := flag.String("host", "localhost", "Hostname") optPort := flag.String("port", "8080", "Port") optPath := flag.String("path", "/nginx_status", "Path") optTempfile := flag.String("tempfile", "", "Temp file name") optHeader := &stringSlice{} flag.Var(optHeader, "header", "Set http header (e.g. \"Host: servername\")") flag.Parse() var nginx NginxPlugin if *optURI != "" { nginx.URI = *optURI } else { nginx.URI = fmt.Sprintf("%s://%s:%s%s", *optScheme, *optHost, *optPort, *optPath) } nginx.Header = *optHeader helper := mp.NewMackerelPlugin(nginx) if *optTempfile != "" { helper.Tempfile = *optTempfile } else { helper.Tempfile = fmt.Sprintf("/tmp/mackerel-plugin-nginx") } helper.Run() }
// Do the plugin func Do() { optHost := flag.String("host", "localhost", "Hostname") optPort := flag.String("port", "3306", "Port") optSocket := flag.String("socket", "", "Port") optUser := flag.String("username", "root", "Username") optPass := flag.String("password", "", "Password") optTempfile := flag.String("tempfile", "", "Temp file name") optInnoDB := flag.Bool("disable_innodb", false, "Disable InnoDB metrics") optMetricKeyPrefix := flag.String("metric-key-prefix", "mysql", "metric key prefix") optEnableExtended := flag.Bool("enable_extended", false, "Enable Extended metrics") flag.Parse() var mysql MySQLPlugin if *optSocket != "" { mysql.Target = *optSocket mysql.isUnixSocket = true } else { mysql.Target = fmt.Sprintf("%s:%s", *optHost, *optPort) } mysql.Username = *optUser mysql.Password = *optPass mysql.DisableInnoDB = *optInnoDB mysql.prefix = *optMetricKeyPrefix mysql.EnableExtended = *optEnableExtended helper := mp.NewMackerelPlugin(mysql) helper.Tempfile = *optTempfile helper.Run() }
func main() { optHost := flag.String("host", "", "Hostname") optWebHost := flag.String("webhost", "", "Graphite-web hostname") optWebPort := flag.String("webport", "", "Graphite-web port") optType := flag.String("type", "", "Carbon type (cache or relay)") optInstance := flag.String("instance", "", "Instance name") optLabelPrefix := flag.String("metric-label-prefix", "Carbon", "Metric Label Prefix") optTempfile := flag.String("tempfile", "", "Temp file name") flag.Parse() plugin := newGraphitePlugin(*optHost, *optWebHost, *optWebPort, *optType, *optInstance, *optLabelPrefix) helper := mp.NewMackerelPlugin(plugin) if *optTempfile != "" { helper.Tempfile = *optTempfile } else { helper.Tempfile = "/tmp/mackerel-plugin-graphite" } if os.Getenv("MACKEREL_AGENT_PLUGIN_META") != "" { helper.OutputDefinitions() } else { // Not using go-mackerel-plugin-helper method // bacause we want to post mulitple metrics with arbitary timestamp plugin.outputValues(os.Stdout) } }
func main() { optProcess := flag.String("process", "", "Process name") optTempfile := flag.String("tempfile", "", "Temp file name") flag.Parse() if *optProcess == "" { logger.Warningf("Process name is required") flag.PrintDefaults() os.Exit(1) } var fd ProcfdPlugin fd.Process = *optProcess openFd = RealOpenFd{fd.Process} fd.NormalizedProcess = normalizeForMetricName(*optProcess) helper := mp.NewMackerelPlugin(fd) if *optTempfile != "" { helper.Tempfile = *optTempfile } else { helper.Tempfile = fmt.Sprintf("/tmp/mackerel-plugin-proc-fd") } if os.Getenv("MACKEREL_AGENT_PLUGIN_META") != "" { helper.OutputDefinitions() } else { helper.OutputValues() } }
func main() { optHost := flag.String("host", "unix:///var/run/docker.sock", "Host for socket") optCommand := flag.String("command", "docker", "Command path to docker") optTempfile := flag.String("tempfile", "", "Temp file name") flag.Parse() var docker DockerPlugin docker.Host = fmt.Sprintf("%s", *optHost) docker.DockerCommand = *optCommand _, err := exec.LookPath(docker.DockerCommand) if err != nil { log.Fatalf("Docker command is not found: %s", docker.DockerCommand) } pb, err := newPathBuilder() if err != nil { log.Fatalf("failed to resolve docker metrics path: %s. It may be no Docker containers exists.", err) } docker.pathBuilder = pb helper := mp.NewMackerelPlugin(docker) if *optTempfile != "" { helper.Tempfile = *optTempfile } else { helper.Tempfile = fmt.Sprintf("/tmp/mackerel-plugin-docker-%s", normalizeMetricName(*optHost)) } if os.Getenv("MACKEREL_AGENT_PLUGIN_META") != "" { helper.OutputDefinitions() } else { helper.OutputValues() } }
func main() { optAddress := flag.String("address", "http://localhost:8080", "URL or Unix Domain Socket") optPath := flag.String("path", "/_raindrops", "Path") optMetricKey := flag.String("metric-key-prefix", "", "Metric Key Prefix") optVersion := flag.Bool("version", false, "Version") optTempfile := flag.String("tempfile", "", "Temp file name") flag.Parse() if *optVersion { fmt.Println("0.3") os.Exit(0) } var rack RackStatsPlugin rack.Address = *optAddress rack.Path = *optPath rack.MetricKey = *optMetricKey helper := mp.NewMackerelPlugin(rack) if *optTempfile != "" { helper.Tempfile = *optTempfile } else { helper.Tempfile = fmt.Sprintf("/tmp/mackerel-plugin-rack-stats") } helper.Run() }
func main() { optURI := flag.String("uri", "", "URI") optScheme := flag.String("scheme", "http", "Scheme") optHost := flag.String("host", "localhost", "Hostname") optPort := flag.String("port", "5000", "Port") optPath := flag.String("path", "/server-status?json", "Path") optTempfile := flag.String("tempfile", "", "Temp file name") flag.Parse() var plack PlackPlugin if *optURI != "" { plack.URI = *optURI } else { plack.URI = fmt.Sprintf("%s://%s:%s%s", *optScheme, *optHost, *optPort, *optPath) } helper := mp.NewMackerelPlugin(plack) if *optTempfile != "" { helper.Tempfile = *optTempfile } else { helper.Tempfile = fmt.Sprintf("/tmp/mackerel-plugin-plack") } if os.Getenv("MACKEREL_AGENT_PLUGIN_META") != "" { helper.OutputDefinitions() } else { helper.OutputValues() } }
// Do the plugin func Do() { optURI := flag.String("uri", "", "URI") optScheme := flag.String("scheme", "http", "Scheme") optHost := flag.String("host", "localhost", "Hostname") optPort := flag.String("port", "5000", "Port") optPath := flag.String("path", "/server-status?json", "Path") optPrefix := flag.String("metric-key-prefix", "plack", "Prefix") optLabelPrefix := flag.String("metric-label-prefix", "", "Label Prefix") optTempfile := flag.String("tempfile", "", "Temp file name") flag.Parse() plack := PlackPlugin{URI: *optURI, Prefix: *optPrefix, LabelPrefix: *optLabelPrefix} if plack.URI == "" { plack.URI = fmt.Sprintf("%s://%s:%s%s", *optScheme, *optHost, *optPort, *optPath) } if plack.LabelPrefix == "" { plack.LabelPrefix = strings.Title(plack.Prefix) } helper := mp.NewMackerelPlugin(plack) if *optTempfile != "" { helper.Tempfile = *optTempfile } else { helper.Tempfile = fmt.Sprintf("/tmp/mackerel-plugin-plack") } if os.Getenv("MACKEREL_AGENT_PLUGIN_META") != "" { helper.OutputDefinitions() } else { helper.OutputValues() } }
func main() { optUri := flag.String("uri", "", "URI") optScheme := flag.String("scheme", "http", "Scheme") optHost := flag.String("host", "localhost", "Hostname") optPort := flag.String("port", "8080", "Port") optPath := flag.String("path", "/nginx_status", "Path") optTempfile := flag.String("tempfile", "", "Temp file name") optHeader := &stringSlice{} flag.Var(optHeader, "header", "Set http header (e.g. \"Host: servername\")") flag.Parse() var nginx NginxPlugin if *optUri != "" { nginx.Uri = *optUri } else { nginx.Uri = fmt.Sprintf("%s://%s:%s%s", *optScheme, *optHost, *optPort, *optPath) } nginx.Header = *optHeader helper := mp.NewMackerelPlugin(nginx) if *optTempfile != "" { helper.Tempfile = *optTempfile } else { helper.Tempfile = fmt.Sprintf("/tmp/mackerel-plugin-nginx") } if os.Getenv("MACKEREL_AGENT_PLUGIN_META") != "" { helper.OutputDefinitions() } else { helper.OutputValues() } }
func main() { var mtas []string for k := range mailqFormats { mtas = append(mtas, k) } mta := flag.String("mta", "", fmt.Sprintf("type of MTA (one of %v)", mtas)) flag.StringVar(mta, "M", "", "shorthand for -mta") command := flag.String("command", "", "path to queue-printing command (guessed by -M flag if not given)") flag.StringVar(command, "c", "", "shorthand for -command") tempfile := flag.String("tempfile", "/tmp/mackerel-plugin-mailq", "path to tempfile") keyPrefix := flag.String("metric-key-prefix", "mailq", "prefix to metric key") labelPrefix := flag.String("metric-label-prefix", "Mailq", "prefix to metric label") flag.Parse() if format, ok := mailqFormats[*mta]; *mta == "" || !ok { fmt.Fprintf(os.Stderr, "Unknown MTA: %s\n", *mta) flag.PrintDefaults() os.Exit(1) } else { plugin := &plugin{ path: *command, mailq: format, keyPrefix: *keyPrefix, labelPrefix: *labelPrefix, } helper := mp.NewMackerelPlugin(plugin) helper.Tempfile = *tempfile helper.Run() } }
func main() { optHost := flag.String("host", "localhost", "Hostname") optPort := flag.String("port", "11211", "Port") optSocket := flag.String("socket", "", "Server socket (overrides hosts and port)") optTempfile := flag.String("tempfile", "", "Temp file name") flag.Parse() var memcached MemcachedPlugin if *optSocket != "" { memcached.Socket = *optSocket } else { memcached.Target = fmt.Sprintf("%s:%s", *optHost, *optPort) } helper := mp.NewMackerelPlugin(memcached) if *optTempfile != "" { helper.Tempfile = *optTempfile } else { if memcached.Socket != "" { helper.Tempfile = fmt.Sprintf("/tmp/mackerel-plugin-memcached-%s", fmt.Sprintf("%x", md5.Sum([]byte(memcached.Socket)))) } else { helper.Tempfile = fmt.Sprintf("/tmp/mackerel-plugin-memcached-%s-%s", *optHost, *optPort) } } helper.Run() }
// Do the plugin func Do() { optHost := flag.String("host", "localhost", "Hostname") optPort := flag.String("port", "8983", "Port") optTempfile := flag.String("tempfile", "", "Temp file name") flag.Parse() solr := SolrPlugin{ Protocol: "http", Host: *optHost, Port: *optPort, Prefix: "solr", } solr.BaseURL = fmt.Sprintf("%s://%s:%s/solr", solr.Protocol, solr.Host, solr.Port) solr.loadStats() helper := mp.NewMackerelPlugin(solr) helper.Tempfile = *optTempfile if os.Getenv("MACKEREL_AGENT_PLUGIN_META") != "" { helper.OutputDefinitions() } else { helper.OutputValues() } }
func main() { optHost := flag.String("host", "localhost", "Hostname") optPort := flag.String("port", "64738", "Port") optTimeout := flag.Uint64("timeout", 1000, "Timeout (ms)") optTempfile := flag.String("tempfile", "", "Temp file name") flag.Parse() var murmur MurmurPlugin murmur.Host = fmt.Sprintf("%s:%s", *optHost, *optPort) murmur.Timeout = *optTimeout helper := mp.NewMackerelPlugin(murmur) if *optTempfile != "" { helper.Tempfile = *optTempfile } else { helper.Tempfile = fmt.Sprintf("/tmp/mackerel-plugin-murmur-%s-%s", *optHost, *optPort) } if os.Getenv("MACKEREL_AGENT_PLUGIN_META") != "" { helper.OutputDefinitions() } else { helper.OutputValues() } }
func main() { optHost := flag.String("host", "localhost", "Hostname") optPort := flag.String("port", "3306", "Port") optUser := flag.String("username", "root", "Username") optPass := flag.String("password", "", "Password") optTempfile := flag.String("tempfile", "", "Temp file name") optInnoDB := flag.Bool("disable_innodb", false, "Disable InnoDB metrics") flag.Parse() var mysql MySQLPlugin mysql.Target = fmt.Sprintf("%s:%s", *optHost, *optPort) mysql.Username = *optUser mysql.Password = *optPass mysql.DisableInnoDB = *optInnoDB helper := mp.NewMackerelPlugin(mysql) if *optTempfile != "" { helper.Tempfile = *optTempfile } else { helper.Tempfile = fmt.Sprintf("/tmp/mackerel-plugin-mysql-%s-%s", *optHost, *optPort) } if os.Getenv("MACKEREL_AGENT_PLUGIN_META") != "" { helper.OutputDefinitions() } else { helper.OutputValues() } }
func main() { optHost := flag.String("host", "localhost", "Hostname") optPort := flag.String("port", "3306", "Port") optSocket := flag.String("socket", "", "Port") optUser := flag.String("username", "root", "Username") optPass := flag.String("password", "", "Password") optTempfile := flag.String("tempfile", "", "Temp file name") optInnoDB := flag.Bool("disable_innodb", false, "Disable InnoDB metrics") flag.Parse() var mysql MySQLPlugin if *optSocket != "" { mysql.Target = *optSocket mysql.isUnixSocket = true } else { mysql.Target = fmt.Sprintf("%s:%s", *optHost, *optPort) } mysql.Username = *optUser mysql.Password = *optPass mysql.DisableInnoDB = *optInnoDB helper := mp.NewMackerelPlugin(mysql) helper.Tempfile = *optTempfile if helper.Tempfile == "" { if mysql.isUnixSocket { helper.Tempfile = fmt.Sprintf("/tmp/mackerel-plugin-mysql-%s", fmt.Sprintf("%x", md5.Sum([]byte(mysql.Target)))) } else { helper.Tempfile = fmt.Sprintf("/tmp/mackerel-plugin-mysql-%s-%s", *optHost, *optPort) } } helper.Run() }
// main function func doMain(c *cli.Context) error { var linux LinuxPlugin linux.Type = c.String("type") helper := mp.NewMackerelPlugin(linux) helper.Tempfile = c.String("tempfile") helper.Run() return nil }
func main() { optHost := flag.String("host", "localhost", "Hostname") optPort := flag.String("port", "1099", "Port") optJstatPath := flag.String("jstatpath", "/usr/bin/jstat", "jstat path") optJinfoPath := flag.String("jinfopath", "/usr/bin/jinfo", "jinfo path") optJpsPath := flag.String("jpspath", "/usr/bin/jps", "jps path") optJavaName := flag.String("javaname", "", "Java app name") optPidFile := flag.String("pidfile", "", "pidfile path") optTempfile := flag.String("tempfile", "", "Temp file name") flag.Parse() var jvm JVMPlugin jvm.Target = fmt.Sprintf("%s:%s", *optHost, *optPort) jvm.JstatPath = *optJstatPath jvm.JinfoPath = *optJinfoPath if *optJavaName == "" { logger.Errorf("javaname is required (if you use 'pidfile' option, 'javaname' is used as just a prefix of graph label)") flag.PrintDefaults() os.Exit(1) } if *optPidFile == "" { lvmid, err := fetchLvmidByAppname(*optJavaName, jvm.Target, *optJpsPath) if err != nil { logger.Errorf("Failed to fetch lvmid. %s", err) os.Exit(1) } jvm.Lvmid = lvmid } else { // https://docs.oracle.com/javase/7/docs/technotes/tools/share/jps.html // `The lvmid is typically, but not necessarily, the operating system's process identifier for the JVM process.` pid, err := ioutil.ReadFile(*optPidFile) if err != nil { logger.Errorf("Failed to load pid. %s", err) os.Exit(1) } jvm.Lvmid = strings.Replace(string(pid), "\n", "", 1) } jvm.JavaName = *optJavaName helper := mp.NewMackerelPlugin(jvm) if *optTempfile != "" { helper.Tempfile = *optTempfile } else { helper.Tempfile = fmt.Sprintf("/tmp/mackerel-plugin-jvm-%s", *optHost) } if os.Getenv("MACKEREL_AGENT_PLUGIN_META") != "" { helper.OutputDefinitions() } else { helper.OutputValues() } }
// Do the plugin func Do() { optPrefix := flag.String("metric-key-prefix", "uptime", "Metric key prefix") optTempfile := flag.String("tempfile", "", "Temp file name") flag.Parse() u := UptimePlugin{ Prefix: *optPrefix, } helper := mp.NewMackerelPlugin(u) helper.Tempfile = *optTempfile helper.Run() }
// main function func doMain(c *cli.Context) { var linux LinuxPlugin linux.Type = c.String("type") helper := mp.NewMackerelPlugin(linux) helper.Tempfile = c.String("tempfile") if os.Getenv("MACKEREL_AGENT_PLUGIN_META") != "" { helper.OutputDefinitions() } else { helper.OutputValues() } }
func main() { optHost := flag.String("host", "localhost", "Hostname") optPort := flag.String("port", "11211", "Port") optTempfile := flag.String("tempfile", "", "Temp file name") flag.Parse() var memcached MemcachedPlugin memcached.Target = fmt.Sprintf("%s:%s", *optHost, *optPort) helper := mp.NewMackerelPlugin(memcached) helper.Tempfile = *optTempfile helper.Run() }
// Do the plugin func Do() { optTempfile := flag.String("tempfile", "", "Temp file name") flag.Parse() var trafficserver TrafficserverPlugin helper := mp.NewMackerelPlugin(trafficserver) helper.Tempfile = *optTempfile if os.Getenv("MACKEREL_AGENT_PLUGIN_META") != "" { helper.OutputDefinitions() } else { helper.OutputValues() } }
// main function func doMain(c *cli.Context) error { var apache2 Apache2Plugin apache2.Host = c.String("http_host") apache2.Port = uint16(c.Int("http_port")) apache2.Path = c.String("status_page") apache2.Header = c.StringSlice("header") helper := mp.NewMackerelPlugin(apache2) helper.Tempfile = c.String("tempfile") helper.Run() return nil }
func main() { optPrefix := flag.String("metric-key-prefix", "uptime", "Metric key prefix") optTempfile := flag.String("tempfile", "", "Temp file name") flag.Parse() u := UptimePlugin{ Prefix: *optPrefix, } helper := mp.NewMackerelPlugin(u) helper.Tempfile = *optTempfile if helper.Tempfile == "" { helper.Tempfile = fmt.Sprintf("/tmp/mackerel-plugin-%s", *optPrefix) } helper.Run() }
// Do the plugin func Do() { optHost := flag.String("host", "localhost", "Hostname") optPort := flag.String("port", "3128", "Port") optTempfile := flag.String("tempfile", "", "Temp file name") flag.Parse() var squid SquidPlugin squid.Target = fmt.Sprintf("%s:%s", *optHost, *optPort) helper := mp.NewMackerelPlugin(squid) helper.Tempfile = *optTempfile if os.Getenv("MACKEREL_AGENT_PLUGIN_META") != "" { helper.OutputDefinitions() } else { helper.OutputValues() } }