Commit Graph
4222 Commits
Author SHA1 Message Date
Alfonso Acosta a8b4e65b5c Make linter happy 2017-01-03 22:55:28 +00:00
Alfonso Acosta 7716d96810 Report persistent connections in states other than ESTABLISHED
This aligns the `/proc` connection tracking (persistent connections) with
conntrack (short-lived connections).
2017-01-03 18:38:02 +00:00
Alfonso AcostaandGitHub b4e1fc7074 Merge pull request #2112 from weaveworks/2032-ensure-conntrack-events
Check that conntrack events are enabled in the kernel
2017-01-02 23:11:52 +01:00
Alfonso Acosta 5c3ea83846 Fix minor typo 2017-01-02 14:28:22 +00:00
Alfonso Acosta dfb52f0d93 Clarify even further that proc/PID/net/tcp varies by namespace 2017-01-02 14:27:37 +00:00
Alfonso Acosta 64f1a5d0f5 Check that conntrack events are enabled in the kernel 2017-01-02 09:22:26 +00:00
Alfonso Acosta ab28a0bfac Fix linter errors in ignored file 2016-12-22 11:12:16 +00:00
SimonandGitHub bf2432ddb1 Merge pull request #2105 from weaveworks/2042-prio-ecs-view
Prioritize ecs topologies on initial load if available
2016-12-22 11:48:35 +01:00
Alfonso AcostaandGitHub 0126f07a80 Merge pull request #2108 from kinvolk/schu/dialer-fixup
extras/dialer: move dialer.go to sub directory
2016-12-22 11:46:36 +01:00
Alfonso Acosta a2d09b4c23 Run gofmt (file was ignored by linter) 2016-12-22 10:04:35 +00:00
Alfonso AcostaandGitHub 2cd76130a1 Merge pull request #2095 from weaveworks/1991-conntrack-parsing
Disable XML in conntrack parsing
2016-12-22 11:00:51 +01:00
Alfonso Acosta 9d352e96f5 Review feedback 2016-12-22 09:33:52 +00:00
Michael Schubert e8f9bc11e7 extras/dialer: move dialer.go to sub directory
`extras/dialer` contains both a dialer script and dialer.go, the go
sources for the dialer server and client, to allow users to build the
dialer container themselves. Move dialer.go to a sub directory `src`
since `make clean` (running `go clean ./...`) deletes the dialer script
otherwise.

Fixup for 4d20a91a97

Signed-off-by: Michael Schubert <michael@kinvolk.io>
2016-12-22 10:32:07 +01:00
Simon Howe 9f9148ac24 Prioritize ecs topologies on initial load if available
Global topo order priority:
 - Check url for topoid
 - Check localStorage for topoid
 - Check topo-utils.js for what to show first!
2016-12-22 10:08:06 +01:00
Alfonso Acosta d22d64c710 Cleanup
* Remove XML traces
* Improve performance
* Fix tests
2016-12-21 19:35:37 +00:00
Alfonso Acosta bae1533b12 Add comment regarding loopback address hardcoding 2016-12-21 10:10:00 +00:00
Alfonso AcostaandGitHub 00c4a7cf86 Merge pull request #2103 from weaveworks/2102-hardcode-loopback-ip
Hardcode 127.0.0.1 as loopback IP for default target
2016-12-21 09:36:01 +01:00
jpellizzari b7002610ea Fixed linting error 2016-12-20 08:12:06 -08:00
Jordan PellizzariandGitHub 32bb7c37aa Merge pull request #2087 from weaveworks/1982-control-indicator
Add control status icon to Terminal header
2016-12-20 07:39:30 -08:00
Alfonso Acosta 8b45525305 Hardcode 127.0.0.1 as loopback IP for default target 2016-12-20 11:18:13 +00:00
Alfonso AcostaandGitHub 293c87fda6 Merge pull request #2101 from weaveworks/checkpoint-kernel-version
Forward OS/Kernel version to checkpoint
2016-12-20 09:11:43 +01:00
Alfonso Acosta 06ff64d477 Forward OS/Kernel version to checkpoint
Useful to prioritize ebpf testing

Also:
* Make treatment of kernel release and version consistent across Darwin/Linux
2016-12-19 20:08:08 +00:00
Alfonso Acosta f19889f63c Reduce garbage 2016-12-19 19:30:23 +00:00
Alfonso AcostaandGitHub faad9533b3 Merge pull request #2097 from kinvolk/schu/scope-container-name
scope launcher script: allow setting SCOPE{_APP,}_CONTAINER_NAME
2016-12-19 17:56:12 +01:00
Alfonso Acosta 5c02dfcbd2 Complete hacky manual parser 2016-12-19 11:30:00 +00:00
Alfonso Acosta 710c3bf82e [WIP] Diable XML in conntrack parsing
Not working yet
2016-12-19 11:30:00 +00:00
Michael Schubert c3bd60b544 scope launcher script: allow setting SCOPE{_APP,}_CONTAINER_NAME
Helpful when you want to run multiple instances of scope on your system,
e.g. for testing.

Signed-off-by: Michael Schubert <michael@kinvolk.io>
2016-12-19 11:12:28 +01:00
Mike Lang 49d3e7bbd3 wip: 2016-12-16 17:00:57 -08:00
Alfonso AcostaandGitHub e70f2b98c0 Merge pull request #2096 from kinvolk/schu/mode-probe-port-fix
prog/main: use flags.app.port for default target
2016-12-16 18:59:08 +01:00
Michael Schubert 3f969f20f2 prog/main: use flags.app.port for default target
User can control the webserver listen address with `-app.http.address`.
If they do, `scope --mode probe ...` should use the port part of address
in the default target and not ':4040'. Otherwise we encounter a
`dial tcp 127.0.0.1:4040: getsockopt: connection refused` error and
`scope-probe` cannot report.

Signed-off-by: Michael Schubert <michael@kinvolk.io>
2016-12-16 17:15:03 +01:00
Mike Lang 0fb74d6781 ecs client: more refactoring for nice code
pulls the inner function of describeServices into its own top-level function,
makes the lock part of the client object as a result
2016-12-15 14:11:58 -08:00
Mike Lang adb6f9d4a1 Appease linter 2016-12-15 14:11:58 -08:00
Mike Lang 6f2efca968 more review feedback 2016-12-15 14:11:58 -08:00
Mike Lang 7d845f9130 ecs reporter: Review feedback, some trivial renames 2016-12-15 14:11:58 -08:00
Mike Lang 7ebb76d0a3 ecs reporter: Move some code around to break up large function 2016-12-15 14:11:58 -08:00
Mike Lang 1d63830792 awsecs reporter: Add lots of debug logging and fix bugs
- describeServices wasn't describing the partial page left over at the end,
  which would cause incorrect results
- the shim between listServices and describeServices was closing the channel every iteration,
  which would cause panic for write to closed channel
- client was not being saved when created, so it gets recreated each time
- we were describeTasks'ing even if we had no tasks to describe
2016-12-15 14:11:57 -08:00
Mike Lang 4234888bf4 ecs: Linter fixes 2016-12-15 14:11:57 -08:00
Mike Lang 357136721d Fix compile errors and go fmt 2016-12-15 14:11:57 -08:00
Mike Lang 9d1e46f81b ECS reporter: Use persistent client objects across reports
Not only does this allow us to re-use connections, but vitally it allows us
to make use of the new task and service caching within the client object.
2016-12-15 14:11:57 -08:00
Mike Lang 6b19bc2da9 Changes to how ECS AWS API is used to minimize API calls
Due to AWS API rate limits, we need to minimize API calls as much as possible.

Our stated objectives:
* for all displayed tasks and services to have up-to-date metadata
* for all tasks to map to services if able

My approach here:
* Tasks only contain immutable fields (that we care about). We cache tasks forever.
  We only DescribeTasks the first time we see a new task.
* We attempt to match tasks to services with what info we have. Any "referenced" services,
  ie. a service with at least one matching task, needs to be updated to refresh changing data.
* In the event that a task doesn't match any of the (updated) services, ie. a new service entirely
  needs to be found, we do a full list and detail of all services (we don't re-detail ones we just refreshed).
* To avoid unbounded memory usage, we evict tasks and services from the cache after 1 minute without use.
  This should be long enough for things like temporary failures to be glossed over.

This gives us exactly one call per task, and one call per referenced service per report,
which is unavoidable to maintain fresh data. Expensive "describe all" service queries are kept
to only when newly-referenced services appear, which should be rare.

We could make a few very minor improvements here, such as trying to refresh unreferenced but known
services before doing a list query, or getting details one by one when "describing all" and stopping
when all matches have been found, but I believe these would produce very minor, if any, gains in
number of calls while having an unjustifiable effect on latency since we wouldn't be able to do requests
as concurrently.

Speaking of which, this change has a minor performance impact.
Even though we're now doing less calls, we can't do them as concurrently.

Old code:
	concurrently:
		describe tasks (1 call)
		sequentially:
			list services (1 call)
			describe services (N calls concurrently)
Assuming full concurrency, total latency: 2 end-to-end calls

New code (worst case):
	sequentially:
		describe tasks (1 call)
		describe services (N calls concurrently)
		list services (1 call)
		describe services (N calls concurrently)
Assuming full concurrency, total latency: 4 end-to-end calls

In practical terms, I don't expect this to matter.
2016-12-15 14:11:57 -08:00
Alfonso AcostaandGitHub 8e78c0c814 Merge pull request #2094 from weaveworks/maybe-old-master
Fix force-push to master
2016-12-15 18:26:29 +01:00
SimonandGitHub ffeeabd839 Merge pull request #2093 from weaveworks/2092-start-probe-d4m
Fixes ./scope launch starting probe under d4m
2016-12-15 15:58:09 +01:00
Filip BarlandGitHub 29d91aa2a9 Merge pull request #2089 from weaveworks/reapply-eslint-update
Reapplied all the eslint upgrade changes
2016-12-15 15:29:01 +01:00
Simon Howe 71e04a27ba Fixes ./scope launch starting probe under d4m 2016-12-15 15:26:20 +01:00
Filip Barl e345f42b18 Moved font-awesome-webpack to devDependencies. 2016-12-15 15:04:53 +01:00
Filip Barl 26b3e9efc9 Reapplied all the eslint upgrade changes 2016-12-15 15:04:53 +01:00
Mike LangandGitHub 5ed63de306 Merge pull request #2060 from weaveworks/mike/awsecs/fix-log-formatting
ecs reporter: Fix some log lines that were passing *string instead of string
2016-12-14 11:20:59 -08:00
Jonathan LangeandGitHub 3560bbc73a Merge pull request #2086 from weaveworks/log-request-headers
Add flag for logging headers
2016-12-14 17:29:38 +00:00
Alfonso AcostaandGitHub a1d9db867f Merge pull request #2082 from kinvolk/schu/tools-dialer
Add extras/dialer
2016-12-14 11:49:09 +01:00
jpellizzari 2b83ebd74c Added control status icon to Terminal header 2016-12-13 10:04:05 -08:00