4138 Commits

Author SHA1 Message Date
Mike Lang
9fb6c46467 Add report topologies for Stateful Sets, Cron Jobs 2017-07-18 11:35:50 -07:00
Alfonso Acosta
f66d79d427 Backoff when writing to Dynamo and S3 2017-07-18 15:28:08 +00:00
Alfonso Acosta
57f2e6a083 Merge pull request #2719 from weaveworks/update-weave-client-to-2.0
Gather Weave Net plugin and proxy info from report
2017-07-18 11:01:55 +02:00
Roland Schilter
1f784ad5fa Fix New Version notification not showing
Fixes #2716.
2017-07-17 16:32:27 +02:00
Alfonso Acosta
b7d292e161 Gather Weave Net plugin and proxy info from report
Instead of using Docker, because after Weave Net 2.0 there are no proxy nor
plugin containers.

This has the drawback of not detecting the plugin/proxy in systems running
Weave Net < 2.0 , but I think we can live with it.
2017-07-17 13:23:37 +00:00
Roland Schilter
a6d3542c89 Merge pull request #2713 from weaveworks/2708-reset-nodes-when-scope-app-restarted
Reset nodes in frontend when scope-app restarted
2017-07-14 19:02:41 +02:00
Matthias Radestock
86c9544066 remove superfluous shellchecks 2017-07-14 10:59:27 +01:00
Matthias Radestock
bf8b28ca12 no need to pass CHECKPOINT_DISABLE when not starting probe/app 2017-07-14 10:59:27 +01:00
Matthias Radestock
e19c33b4c2 only pass WEAVESCOPE_DOCKER_ARGS to actual probe/app start
and not all the help, version, etc, etc docker runs.

In particular this allows passing `--restart=...` in
WEAVESCOPE_DOCKER_ARGS. Previously that would break since the
non-probe/app docker runs supply `--rm` (as they should) which is
incompatible with restart settings.
2017-07-14 10:59:26 +01:00
Roland Schilter
a3cd4573b8 Merge pull request #2692 from weaveworks/nodejs-package-version-reset
Set package.json version to 0.0.0
2017-07-14 10:24:46 +02:00
Roland Schilter
2ca81217b7 Merge pull request #2710 from weaveworks/2646-keep-toponav-visible-if-selected
Keep topo nav visible if subnav selected
2017-07-14 09:49:36 +02:00
Bryan Boreham
8a83a592ab Merge pull request #2556 from weaveworks/local-pods-via-node-name
Use Kubernetes node name to filter pods if possible
2017-07-13 19:23:23 -07:00
Matthias Radestock
dcf839e621 Merge pull request #2714 from weaveworks/simplify-connection-join-2
simplify connection join
2017-07-13 18:56:45 +01:00
Bryan Boreham
88ca9812b2 Fix up tests for change to NewReporter() 2017-07-13 16:24:17 +00:00
Bryan Boreham
3e9eb83d12 Use Kubernetes node name to filter pods if possible 2017-07-13 16:24:17 +00:00
Bryan Boreham
19b7c97090 Merge commit '1eeb4d0d80f2c02805b531c09e88658fb72b78a8' into unit-test-tags
Bring in updates to tools subdir
2017-07-13 16:18:44 +00:00
Bryan Boreham
1eeb4d0d80 Squashed 'tools/' changes from 0d6d4da..74dc626
74dc626 Merge pull request #108 from weaveworks/disable-apt-daily
b4f1d91 Merge pull request #107 from weaveworks/docker-17-update
7436aa1 Override apt daily job to not run immediately on boot
7980f15 Merge pull request #106 from weaveworks/document-docker-install-role
f741e53 Bump to Docker 17.06 from CE repo
61796a1 Update Docker CE Debian repo details
0d86f5e Allow for Docker package to be named docker-ce
065c68d Document selection of Docker installation role.
3809053 Just --porcelain; it defaults to v1
11400ea Merge pull request #105 from weaveworks/remove-weaveplugin-remnants
b8b4d64 remove weaveplugin remnants
35099c9 Merge pull request #104 from weaveworks/pull-docker-py
cdd48fc Pull docker-py to speed tests/builds up.
e1c6c24 Merge pull request #103 from weaveworks/test-build-tags
d5d71e0 Add -tags option so callers can pass in build tags
8949b2b Merge pull request #98 from weaveworks/git-status-tag
ac30687 Merge pull request #100 from weaveworks/python_linting
4b125b5 Pin yapf & flake8 versions
7efb485 Lint python linting function
444755b Swap diff direction to reflect changes required
c5b2434 Install flake8 & yapf
5600eac Lint python in build-tools repo
0b02ca9 Add python linting
c011c0d Merge pull request #79 from kinvolk/schu/python-shebang
6577d07 Merge pull request #99 from weaveworks/shfmt-version
00ce0dc Use git status instead of diff to add 'WIP' tag
411fd13 Use shfmt v1.3.0 instead of latest from master.
31d069d Change Python shebang to `#!/usr/bin/env python`

git-subtree-dir: tools
git-subtree-split: 74dc626b6de3ffb38591510f7cb7bc2db33743c4
2017-07-13 16:18:44 +00:00
Bryan Boreham
ae9d708dbc Reformat Python examples to placate linter 2017-07-13 16:11:59 +00:00
Bryan Boreham
6acb397d5d Install yapf and flake8 required by build-tools lint 2017-07-13 16:11:59 +00:00
Matthias Radestock
ac9f7dfad1 simplify node propagation in ipToNode 2017-07-13 17:10:43 +01:00
Bryan Boreham
d8278ec8ae Pass all Go build tags to tests 2017-07-13 16:08:03 +00:00
Matthias Radestock
bd9fafff42 don't create *derived* nodes in nodeToIP
IP nodes are children of the "proper" topology nodes, not the other
way round. The former relationship is established in ipToNode.
2017-07-13 17:00:14 +01:00
Matthias Radestock
4a77e9bfac don't bother tracking the orignal node topology
We always join with the original renderer and hence all the nodes
produced by ipToNode will get their other data, including topology,
via that route.
2017-07-13 16:35:52 +01:00
Matthias Radestock
c7f94d8a74 join with original renderer in ConnectionJoin
This guarantees that the output won't contain bare nodes containing
just an id and topology, as produced by ipToNode. Previously this was
ensured by calling convention, now it's ensured by construction.
2017-07-13 16:28:02 +01:00
Matthias Radestock
387a68a3c7 tiny refactor: swap ConnectionJoin arg order
to match the style of other render HoFs, which take their inputs last.
2017-07-13 14:23:46 +01:00
Roland Schilter
5329efa528 Reset nodes in frontend when scope-app restarted
When the scope-app restarts, it no longer has a
reference to the previous node set. Therefore,
the delta update adds *all* nodes but does not
remove legacy ones.

`reset==true` tells the frontend to start fresh.

Fixes #2708
2017-07-13 14:28:17 +02:00
Matthias Radestock
e603a28ca4 Merge pull request #2704 from weaveworks/2689-2700-ebpf-init
don't miss, or fail to forget, initial connections

Fixes #2689.
Fixes #2700.
2017-07-13 11:39:31 +01:00
Roland Schilter
e9945e78cb Keep topo nav visible if subnav selected
Follow-up to 21a0093c but also displays parent topology if
an empty sub_topology is selected.
2017-07-12 18:53:33 +02:00
Roland Schilter
52d0fcc944 Merge pull request #2709 from weaveworks/2646-keep-toponav-visible-if-selected
Keep topology nav visible if selected
2017-07-12 17:44:14 +02:00
Roland Schilter
21a0093c08 Keep topology nav visible if selected
If the scope-app API unexpectedly restarts, it has no report
at hand (until it gets one from the probe) and sends node
count 0 to the frontend for all topologies. Once the report
arrives, it will send the proper count.

What happened was the frontend did hide Processes for a short
time till the node count recovered. This moved the topology
selection to the always visible Containers (hide_if_empty == false)
while keeping the graph as is.

Once the node count recovers, Processes comes back but the
selection is still at Containers.

We now keep the selected topology visible at all time even if
the API returns a node count of 0. This recovers nicely when
the correct node counts come in. Once the user selects a different
topology while and a backend response arrives, it disappears.

Fixes #2646
2017-07-12 17:12:43 +02:00
Matthias Radestock
4355f73226 Merge pull request #2705 from weaveworks/bump-tcptracer-bpf-version
bump tcptracer-bpf version
2017-07-12 08:39:27 +01:00
Matthias Radestock
b087e95711 bump tcptracer-bpf version 2017-07-12 07:27:35 +01:00
Matthias Radestock
b39b3e6274 re-add tests that were previously failing when using ebpf 2017-07-11 22:50:47 +01:00
Matthias Radestock
ebc3cddf01 don't miss, or fail to forget, initial connections
...when initialising eBPF-based connection tracking.

Previously we were ignoring all eBPF events until we had gathered the
existing connections. That means we could a) miss connections created
during the gathering, and b) fail to forget connections that got
closed during the gathering.

The fix comprises the following changes:

1. pay attention to eBPF events immediately. That way we do not
miss anything.

2. remember connections for which we received a Close event during the
initalisation phase, and subsequently drop gathered existing
connections that match these. That way we do not erroneously consider
a gathered connection as open when it got closed since the gathering.

3. drop gathered existing connections which match connections detected
through eBPF events. The latter typically have more / current
metadata. In particular, PIDs can be missing from the former.

Fixes #2689.
Fixes #2700.
2017-07-11 22:50:47 +01:00
Matthias Radestock
25a1a5fbb5 Merge pull request #2699 from weaveworks/ebpf-refactor
EbpfTracker refactoring / cleanup
2017-07-11 20:06:32 +01:00
Matthias Radestock
d568c50ec4 make EbpfTracker.dead go-routine-safe and .stop() idempotent
Without synchronisation, the isDead() call might return a stale value,
delaying deadness detection potentially indefinitely.

Without the guards / idempotence in .stop(), invoking stop() more than
once could cause a panic, since tracer.Stop() closes a channel (which
panics on a closed channel). Multiple stop() invocations are rare, but
not impossible.
2017-07-11 19:38:07 +01:00
Matthias Radestock
cf6353327a eliminate race in ebpf initialization
We were enabling event processing before feeding in the initial
connections, which results in a non-deterministic outcome.
2017-07-11 19:38:07 +01:00
Matthias Radestock
15215d0c2c prevent concurrent map access in ebpf fd install event handler
which presumably could cause havoc
2017-07-11 19:38:07 +01:00
Matthias Radestock
3883d8f1af fix a minor leak in ebfp fdinstall_pids table
when we got an fd install event but the pid was dead by time we
processed it, we would fail to remove the watcher for that pid from
the fdinstall_pids table.

This is a minor, and bounded, leak, since the table only contains pids
that were alive when we initialized ebpf. And this change only plugs
that leak very partially, since we will never remove pids that die
while sitting in accept().
2017-07-11 19:38:07 +01:00
Matthias Radestock
e2cbe7ac26 refactor: a bit of inlining 2017-07-11 19:38:06 +01:00
Matthias Radestock
3baeb3d238 refactor: use fourTuple as map key instead of string 2017-07-11 19:38:06 +01:00
Matthias Radestock
ad7b5cdc19 refactor: remove pointless interface
premature abstraction
2017-07-11 19:38:06 +01:00
Matthias Radestock
8a56540648 refactor: eliminate global var 2017-07-11 19:38:06 +01:00
Matthias Radestock
8bd0188537 respect UseConntrack setting in ebpf initialisation 2017-07-11 19:37:11 +01:00
Roland Schilter
0d2a1e3eb1 Set package.json version to 0.0.0
The package version is irrelevant for the build process
and is not read anywhere.

The package is not published and causes confusion if the
bump is forgotten.
2017-07-10 13:36:32 +02:00
Matthias Radestock
7ea0800f8b refactor: extract helper to get initial flows 2017-07-10 07:34:20 +01:00
Matthias Radestock
07e7adbd63 refactor: make performFlowWalk data flow more obvious 2017-07-10 07:22:12 +01:00
Matthias Radestock
1abc886fbd Merge pull request #2695 from weaveworks/2687-ebpf-init-race-segfault
fix ebpf init race segfault

Fixes #2687
2017-07-07 21:55:49 +01:00
Filip Barl
a390c7633e Make graph layout zoom limits constant (#2678)
* Make zoom limits such that nodes are always between 1px and 200px big.

* Increased minimal node size from 1px to 3px.
2017-07-07 19:52:42 +02:00
Filip Barl
8f22d58cab Last line of defense against overlapping nodes in graph layout (#2688)
* Refresh the layout once more at the end if previous heuristics cause an overlap.

* Added mixpanel tracking.
2017-07-07 19:22:04 +02:00