mirror of
https://github.com/weaveworks/scope.git
synced 2026-07-21 22:36:39 +00:00
Simplify service node matching
This commit is contained in:
@@ -207,9 +207,9 @@ func (s *DNSSnooper) processDNSMessage(dns *layers.DNS) {
|
||||
newDomain := string(domainQueried)
|
||||
for ip := range ips {
|
||||
if existingDomains, err := s.reverseDNSCache.Get(ip); err != nil {
|
||||
existingDomains.(map[string]struct{})[newDomain] = struct{}{}
|
||||
} else {
|
||||
s.reverseDNSCache.Set(ip, map[string]struct{}{newDomain: {}})
|
||||
} else {
|
||||
existingDomains.(map[string]struct{})[newDomain] = struct{}{}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -197,7 +197,7 @@ func (r *Reporter) makeEndpointNode(namespaceID string, addr string, port uint16
|
||||
map[string]string{Addr: addr, Port: portStr})
|
||||
names := r.dnsSnooper.CachedNamesForIP(addr)
|
||||
if resolvedNames, err := r.reverseResolver.get(addr); err == nil {
|
||||
append(names, resolvedNames)
|
||||
names = append(names, resolvedNames...)
|
||||
}
|
||||
if len(names) > 0 {
|
||||
node = node.WithSet(ReverseDNSNames, report.MakeStringSet(names...))
|
||||
|
||||
@@ -125,10 +125,8 @@ func pseudoNodeSummary(base NodeSummary, n report.Node) (NodeSummary, bool) {
|
||||
|
||||
// try rendering as a known service node
|
||||
if strings.HasPrefix(n.ID, render.ServiceNodeIDPrefix) {
|
||||
serviceID := n.ID[len(render.ServiceNodeIDPrefix):]
|
||||
base.Label = render.KnownServicesForHumans[serviceID]
|
||||
base.Label = n.ID[len(render.ServiceNodeIDPrefix):]
|
||||
base.LabelMinor = ""
|
||||
// TODO: use custom icons for known services?
|
||||
base.Shape = report.Cloud
|
||||
return base, true
|
||||
}
|
||||
|
||||
@@ -162,8 +162,8 @@ func toInternetNode(m report.Node) report.Node {
|
||||
// a specific node if it is
|
||||
hostnames, _ := m.Sets.Lookup(endpoint.ReverseDNSNames)
|
||||
for _, hostname := range hostnames {
|
||||
if serviceID, ok := lookupKnownService(hostname); ok {
|
||||
return NewDerivedPseudoNode(ServiceNodeIDPrefix+serviceID, m)
|
||||
if isKnownService(hostname) {
|
||||
return NewDerivedPseudoNode(ServiceNodeIDPrefix+hostname, m)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ package render
|
||||
|
||||
import (
|
||||
"net"
|
||||
"regexp"
|
||||
"strings"
|
||||
|
||||
"github.com/weaveworks/scope/probe/host"
|
||||
"github.com/weaveworks/scope/report"
|
||||
@@ -12,26 +12,22 @@ var (
|
||||
// ServiceNodeIDPrefix is how the ID all service pseudo nodes begin
|
||||
ServiceNodeIDPrefix = "service-"
|
||||
|
||||
// KnownServicesForHumans contains a human-readable format of the service Ids
|
||||
KnownServicesForHumans = map[string]string{
|
||||
"aws-dynamo": "AWS Dynamo",
|
||||
"aws-s3": "AWS S3",
|
||||
}
|
||||
|
||||
// Correspondence between hostnames and the service id they are part of
|
||||
knownServicesMatchers = map[*regexp.Regexp]string{
|
||||
regexp.MustCompile(`dynamodb.[^.]+.amazonaws.com`): "aws-dynamo",
|
||||
regexp.MustCompile(`s3-[^.]+.amazonaws.com`): "aws-s3",
|
||||
knownServicesSuffixes = []string{
|
||||
// See http://docs.aws.amazon.com/general/latest/gr/rande.html for fainer grained
|
||||
// details
|
||||
"amazonaws.com",
|
||||
"googleapis.com",
|
||||
}
|
||||
)
|
||||
|
||||
func lookupKnownService(hostname string) (string, bool) {
|
||||
for re, id := range knownServicesMatchers {
|
||||
if re.MatchString(hostname) {
|
||||
return id, true
|
||||
func isKnownService(hostname string) bool {
|
||||
for _, suffix := range knownServicesSuffixes {
|
||||
if strings.HasSuffix(hostname, suffix) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return "", false
|
||||
return false
|
||||
}
|
||||
|
||||
// LocalNetworks returns a superset of the networks (think: CIDRs) that are
|
||||
|
||||
Reference in New Issue
Block a user