From 9b8f8a6c8371c53b795eedefa22bb1ab9034d0f0 Mon Sep 17 00:00:00 2001 From: Tom Wilkie Date: Thu, 5 May 2016 12:07:57 +0100 Subject: [PATCH] Have probe query kube dns to find the app. --- probe/appclient/resolver.go | 1 + prog/main.go | 2 ++ prog/probe.go | 6 +++++- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/probe/appclient/resolver.go b/probe/appclient/resolver.go index 265428384..97037d783 100644 --- a/probe/appclient/resolver.go +++ b/probe/appclient/resolver.go @@ -137,6 +137,7 @@ func (r staticResolver) resolveOne(t target) []string { var err error addrs, err = r.lookup(t.host) if err != nil { + log.Debugf("Error resolving %s: %v", t.host, err) return []string{} } } diff --git a/prog/main.go b/prog/main.go index d3c9d154a..0f701109b 100644 --- a/prog/main.go +++ b/prog/main.go @@ -67,6 +67,7 @@ type probeFlags struct { insecure bool logPrefix string logLevel string + resolver string dockerEnabled bool dockerInterval time.Duration @@ -132,6 +133,7 @@ func main() { flag.StringVar(&flags.probe.pluginsRoot, "probe.plugins.root", "/var/run/scope/plugins", "Root directory to search for plugins") flag.BoolVar(&flags.probe.useConntrack, "probe.conntrack", true, "also use conntrack to track connections") flag.BoolVar(&flags.probe.insecure, "probe.insecure", false, "(SSL) explicitly allow \"insecure\" SSL connections and transfers") + flag.StringVar(&flags.probe.resolver, "probe.resolver", "", "IP address & port of resolver to use. Default is to use system resolver.") flag.StringVar(&flags.probe.logPrefix, "probe.log.prefix", "", "prefix for each log line") flag.StringVar(&flags.probe.logLevel, "probe.log.level", "info", "logging threshold level: debug|info|warn|error|fatal|panic") flag.BoolVar(&flags.probe.dockerEnabled, "probe.docker", false, "collect Docker-related attributes for processes") diff --git a/prog/probe.go b/prog/probe.go index 075255f97..2295175c9 100644 --- a/prog/probe.go +++ b/prog/probe.go @@ -113,7 +113,11 @@ func probeMain(flags probeFlags) { }) defer clients.Stop() - resolver := appclient.NewResolver(targets, net.LookupIP, clients.Set) + dnsLookupFn := net.LookupIP + if flags.resolver != "" { + dnsLookupFn = appclient.LookupUsing(flags.resolver) + } + resolver := appclient.NewResolver(targets, dnsLookupFn, clients.Set) defer resolver.Stop() processCache := process.NewCachingWalker(process.NewWalker(flags.procRoot))