Björn Rabenstein
1e2f03f668
Merge pull request #2005 from redbaron/microoptimise-matching
...
Microoptimise matching
2016-10-05 17:26:56 +02:00
Maxim Ivanov
e6db9f8159
New fpsForLabelMatchers and seriesForLabelMatchers methods
...
These more specific methods have replaced `metricForLabelMatchers`
in cases where its `map[fingerprint]metric` result type was
not necessary or was used as an intermediate step
Avoids duplicated calls to `seriesForRange` from
`QueryRange` and `QueryInstant` methods.
2016-10-05 15:15:54 +01:00
Brian Brazil
6e8f87a37f
Merge pull request #2047 from prometheus/write-relabel
...
Add support for remote write relabelling.
2016-10-05 07:47:49 +01:00
Brian Brazil
77605649a9
Add support for remote write relabelling.
...
Switch back to a single remote writer, as we were only ever meant to
have one and the relabel semantics are clearer that way.
2016-10-05 07:43:19 +01:00
Julius Volz
9172728125
Merge pull request #2050 from prometheus/unpublish-series-methods
...
Unpublish accidentally published series methods
2016-10-03 11:36:25 +02:00
Tobias Schmidt
f07e67650e
Merge pull request #2049 from prometheus/ctxfn-error
...
Update common/route vendoring for contextFn errors
2016-10-03 12:06:46 +03:00
Julius Volz
c9d4526428
Unpublish accidentally published series methods
...
There were some more accidentally published methods of the memorySeries
type which I didn't notice when reviewing https://github.com/prometheus/prometheus/pull/2011
2016-10-03 00:04:56 +02:00
Julius Volz
4f79072fd1
Update common/route vendoring for contextFn errors
2016-10-02 23:04:03 +02:00
Julius Volz
c0889fd92e
Merge pull request #2032 from prometheus/separate-chunk-package
...
storage: separate chunk package, publish more names
2016-10-02 20:48:08 +02:00
Maxim Ivanov
4978a65495
Extract initial FP candidate build logic into candidateFPsForLabelMatchers method
...
No functional changes otherwise
2016-10-02 17:35:02 +01:00
Maxim Ivanov
c048a0cde8
Add metrics to result after checking all matchers
...
Should be marginally faster and somewhat more GC friendly
2016-10-02 17:35:02 +01:00
Maxim Ivanov
bedc0eda1f
Added BenchmarkQueryRange
2016-10-02 17:35:02 +01:00
Fabian Reinartz
32d29f8dbc
Merge pull request #2044 from prometheus/changes-nan
...
promql: handle NaN in changes() correctly
2016-09-30 11:18:46 +02:00
Fabian Reinartz
ccbce0c51f
promql: handle NaN in changes() correctly
2016-09-30 11:04:25 +02:00
Julius Volz
c25f0de5ae
Remove local.ZeroSample{,Pair}, use model definitions
2016-09-28 23:42:45 +02:00
Julius Volz
50b5837a63
Update github.com/prometheus/common/model vendoring
2016-09-28 23:42:45 +02:00
Julius Volz
044ebce779
Review fixups.
2016-09-28 23:42:44 +02:00
Julius Volz
0c64ad1a3d
Merge pull request #2012 from prometheus/context-consolidation
...
api: Consolidate web API contexts
2016-09-28 14:38:39 +02:00
Julius Volz
00f5e5470e
Merge pull request #2035 from brancz/external-relabelling
...
notifier: attach external labels before relabelling
2016-09-27 14:43:41 +02:00
Frederic Branczyk
572423cbe5
notifier: attach external labels before relabelling
...
By attaching external labels before relabelling, they are available
during relabelling.
2016-09-27 14:34:56 +02:00
Fabian Reinartz
0baab6a88c
Merge pull request #2034 from roman-vynar/consul-tolerance
...
Do not fail Consul discovery on Prometheus startup when Consul is down.
2016-09-27 11:09:12 +02:00
Roman Vynar
db63a4bd2a
Do not fail Consul discovery on Prometheus startup when Consul is down.
2016-09-26 22:20:56 +03:00
Julius Volz
d30a3c7c0f
Fix accidental publishing of memorySeries.firstTime()
2016-09-26 13:25:27 +02:00
Julius Volz
ab80ced756
storage: separate chunk package, publish more names
...
This is a followup to https://github.com/prometheus/prometheus/pull/2011 .
This publishes more of the methods and other names of the chunk code and
moves the chunk code to its own package. There's some unavoidable
ugliness: the chunk and chunkDesc metrics are used by both packages, so
I had to move them to the chunk package. That isn't great, but I don't
see how to do it better without a larger redesign of everything. Same
for the evict requests and some other types.
2016-09-26 13:25:11 +02:00
Julius Volz
42c05dd3a2
Merge pull request #2011 from mattkanwisher/chuck-public
...
Make Chunk and ChunkIterator public for reuse
2016-09-23 14:45:35 +02:00
Fabian Reinartz
57b358b82a
vendor: update govalidator ( #2023 )
...
Fixes #2022
2016-09-23 01:06:51 +02:00
Fabian Reinartz
5e57fa85c0
Merge pull request #2016 from mattbostock/fix_race_between_reload_and_stop
...
rules/manager.go: Fix race between reload and stop
2016-09-22 19:30:56 +02:00
Fabian Reinartz
71b332278d
Merge pull request #2021 from prometheus/beorn7/storage
...
Avoid `defer` in seriesMap.get
2016-09-22 18:12:21 +02:00
beorn7
ca98382943
Avoid defer
in seriesMap.get
...
This is related to https://github.com/golang/go/issues/14939 .
It's probably the only occurrence where it matters.
2016-09-22 17:50:58 +02:00
Brian Brazil
2ee00b4461
Merge pull request #2019 from dominikschulz/ec2state
...
Expose ec2_instance_state
2016-09-22 14:57:19 +01:00
Dominik Schulz
f6fbcf9aa2
Expose ec2_instance_state
2016-09-22 15:01:23 +02:00
Fabian Reinartz
e5c633ed14
Merge pull request #2015 from mattbostock/fix_typo
...
cmd/prometheus/main.go: Fix typo in comment
2016-09-21 23:41:06 +02:00
Matt Bostock
926a5ab3dd
rules/manager.go: Fix race between reload and stop
...
On one relatively large Prometheus instance (1.7M series), I noticed
that upgrades were frequently resulting in Prometheus undergoing crash
recovery on start-up.
On closer examination, I found that Prometheus was panicking on
shutdown.
It seems that our configuration management (or misconfiguration thereof)
is reloading Prometheus then immediately restarting it, which I suspect
is causing this race:
Sep 21 15:12:42 host systemd[1]: Reloading prometheus monitoring system.
Sep 21 15:12:42 host prometheus[18734]: time="2016-09-21T15:12:42Z" level=info msg="Loading configuration file /etc/prometheus/config.yaml" source="main.go:221"
Sep 21 15:12:42 host systemd[1]: Reloaded prometheus monitoring system.
Sep 21 15:12:44 host systemd[1]: Stopping prometheus monitoring system...
Sep 21 15:12:44 host prometheus[18734]: time="2016-09-21T15:12:44Z" level=warning msg="Received SIGTERM, exiting gracefully..." source="main.go:203"
Sep 21 15:12:44 host prometheus[18734]: time="2016-09-21T15:12:44Z" level=info msg="See you next time!" source="main.go:210"
Sep 21 15:12:44 host prometheus[18734]: time="2016-09-21T15:12:44Z" level=info msg="Stopping target manager..." source="targetmanager.go:90"
Sep 21 15:12:52 host prometheus[18734]: time="2016-09-21T15:12:52Z" level=info msg="Checkpointing in-memory metrics and chunks..." source="persistence.go:548"
Sep 21 15:12:56 host prometheus[18734]: time="2016-09-21T15:12:56Z" level=warning msg="Error on ingesting out-of-order samples" numDropped=1 source="scrape.go:467"
Sep 21 15:12:56 host prometheus[18734]: time="2016-09-21T15:12:56Z" level=error msg="Error adding file watch for \"/etc/prometheus/targets\": no such file or directory" source="file.go:84"
Sep 21 15:12:56 host prometheus[18734]: time="2016-09-21T15:12:56Z" level=error msg="Error adding file watch for \"/etc/prometheus/targets\": no such file or directory" source="file.go:84"
Sep 21 15:13:01 host prometheus[18734]: time="2016-09-21T15:13:01Z" level=info msg="Stopping rule manager..." source="manager.go:366"
Sep 21 15:13:01 host prometheus[18734]: time="2016-09-21T15:13:01Z" level=info msg="Rule manager stopped." source="manager.go:372"
Sep 21 15:13:01 host prometheus[18734]: time="2016-09-21T15:13:01Z" level=info msg="Stopping notification handler..." source="notifier.go:325"
Sep 21 15:13:01 host prometheus[18734]: time="2016-09-21T15:13:01Z" level=info msg="Stopping local storage..." source="storage.go:381"
Sep 21 15:13:01 host prometheus[18734]: time="2016-09-21T15:13:01Z" level=info msg="Stopping maintenance loop..." source="storage.go:383"
Sep 21 15:13:01 host prometheus[18734]: panic: close of closed channel
Sep 21 15:13:01 host prometheus[18734]: goroutine 7686074 [running]:
Sep 21 15:13:01 host prometheus[18734]: panic(0xba57a0, 0xc60c42b500)
Sep 21 15:13:01 host prometheus[18734]: /usr/local/go/src/runtime/panic.go:500 +0x1a1
Sep 21 15:13:01 host prometheus[18734]: github.com/prometheus/prometheus/rules.(*Manager).ApplyConfig.func1(0xc6645a9901, 0xc420271ef0, 0xc420338ed0, 0xc60c42b4f0, 0xc6645a9900)
Sep 21 15:13:01 host prometheus[18734]: /home/build/packages/prometheus/tmp/build/gopath/src/github.com/prometheus/prometheus/rules/manager.go:412 +0x3c
Sep 21 15:13:01 host prometheus[18734]: created by github.com/prometheus/prometheus/rules.(*Manager).ApplyConfig
Sep 21 15:13:01 host prometheus[18734]: /home/build/packages/prometheus/tmp/build/gopath/src/github.com/prometheus/prometheus/rules/manager.go:423 +0x56b
Sep 21 15:13:03 host systemd[1]: prometheus.service: main process exited, code=exited, status=2/INVALIDARGUMENT
2016-09-21 22:03:02 +01:00
Matt Bostock
dd98766b32
cmd/prometheus/main.go: Fix typo in comment
2016-09-21 21:59:25 +01:00
Matthew Campbell
67d76e3a5d
timeseries: store varbit encoded data into cassandra
2016-09-21 17:56:55 +02:00
Julius Volz
f92532f254
api: Consolidate web API contexts
...
This is based on the common/route changes in
https://github.com/prometheus/common/pull/61 .
2016-09-21 03:22:20 +02:00
Julius Volz
766074568e
Update vendoring of github.com/prometheus/common/route
2016-09-21 03:22:14 +02:00
Tom Wilkie
4520e12440
Add HTTP Basic Auth & TLS support to the generic write path. ( #1957 )
...
* Add config, HTTP Basic Auth and TLS support to the generic write path.
- Move generic write path configuration to the config file
- Factor out config.TLSConfig -> tlf.Config translation
- Support TLSConfig for generic remote storage
- Rename Run to Start, and make it non-blocking.
- Dedupe code in httputil for TLS config.
- Make remote queue metrics global.
2016-09-19 22:47:51 +02:00
Julius Volz
6dda28dbd4
Merge pull request #2000 from prometheus/contextify-storage
...
Contextify storage and PromQL interfaces.
2016-09-19 16:31:12 +02:00
Julius Volz
c187308366
storage: Contextify storage interfaces.
...
This is based on https://github.com/prometheus/prometheus/pull/1997 .
This adds contexts to the relevant Storage methods and already passes
PromQL's new per-query context into the storage's query methods.
The immediate motivation supporting multi-tenancy in Frankenstein, but
this could also be used by Prometheus's normal local storage to support
cancellations and timeouts at some point.
2016-09-19 16:29:07 +02:00
Julius Volz
ed5a0f0abe
promql: Allow per-query contexts.
...
For Weaveworks' Frankenstein, we need to support multitenancy. In
Frankenstein, we initially solved this without modifying the promql
package at all: we constructed a new promql.Engine for every
query and injected a storage implementation into that engine which would
be primed to only collect data for a given user.
This is problematic to upstream, however. Prometheus assumes that there
is only one engine: the query concurrency gate is part of the engine,
and the engine contains one central cancellable context to shut down all
queries. Also, creating a new engine for every query seems like overkill.
Thus, we want to be able to pass per-query contexts into a single engine.
This change gets rid of the promql.Engine's built-in base context and
allows passing in a per-query context instead. Central cancellation of
all queries is still possible by deriving all passed-in contexts from
one central one, but this is now the responsibility of the caller. The
central query context is now created in main() and passed into the
relevant components (web handler / API, rule manager).
In a next step, the per-query context would have to be passed to the
storage implementation, so that the storage can implement multi-tenancy
or other features based on the contextual information.
2016-09-19 15:38:17 +02:00
Julius Volz
c9c2663a54
Merge pull request #2004 from redbaron/no-false-sharing
...
Avoid having contended mutexes on same cacheline
2016-09-19 00:40:03 +02:00
Maxim Ivanov
bdc53098fc
Avoid having contended mutexes on same cacheline
...
CPUs have to serialise write access to a single cache line
effectively reducing level of possible parallelism. Placing
mutexes on different cache lines avoids this problem.
Most gains will be seen on NUMA servers where CPU interconnect
traffic is especially expensive
Before:
go test . -run none -bench BenchmarkFingerprintLocker
BenchmarkFingerprintLockerParallel-4 2000000 932 ns/op
BenchmarkFingerprintLockerSerial-4 30000000 49.6 ns/op
After:
go test . -run none -bench BenchmarkFingerprintLocker
BenchmarkFingerprintLockerParallel-4 3000000 569 ns/op
BenchmarkFingerprintLockerSerial-4 30000000 51.0 ns/op
2016-09-18 23:32:55 +01:00
Julius Volz
5f5a78e807
Merge pull request #1974 from prometheus/disable-local-storage
...
Allow disabling local storage.
2016-09-17 18:40:01 +02:00
Julius Volz
06199268b5
Merge pull request #2003 from mattbostock/remove_json_from_accept
...
Scrape: Remove JSON from Accept request header
2016-09-17 14:41:27 +02:00
Matt Bostock
4fc619b605
Scrape: Remove JSON from Accept request header
...
JSON is no longer supported as an exposition format [1] [2] [3]. Remove
it from the `Accept` header added to requests when scraping targets.
[1]: https://github.com/prometheus/prometheus/blob/master/CHANGELOG.md#100--2016-07-18
[2]: https://prometheus.io/docs/instrumenting/exposition_formats/#historical-versions
[3]: https://docs.google.com/document/d/1ZjyKiKxZV83VI9ZKAXRGKaUKK2BIWCT7oiGBKDBpjEY/edit?usp=sharing
2016-09-17 10:28:03 +01:00
Julius Volz
a9b96be3fd
Merge pull request #2002 from grandbora/graphPageUrlClientSideMigration
...
Graph page url client side migration
2016-09-17 00:26:09 +02:00
Bora Tunca
2e9de70267
generate assets
2016-09-16 18:20:12 -04:00
Bora Tunca
44377dc458
Add backward compatibility to old query format
2016-09-16 18:20:00 -04:00
Brian Brazil
5ac89fbc1f
Merge pull request #1985 from tommyulfsparre/resync
...
Resync state after ZooKeeper failure
2016-09-16 20:48:04 +01:00