Commit Graph

257 Commits

Author SHA1 Message Date
Julius Volz
2b8f0b2cc7 Constantize metric name label name. 2013-03-26 16:20:23 +01:00
Julius Volz
e096896932 PR comment fixups. 2013-03-26 15:28:00 +01:00
Julius Volz
dd67ab115b Change GetAllMetricNames() to GetAllValuesForLabel(). 2013-03-26 14:47:07 +01:00
Julius Volz
42bdf921d1 Fetch integrated memory/disk data for simple Get* functions. 2013-03-26 14:47:07 +01:00
Julius Volz
11bb94a7e5 Implement GetAllMetricNames() for memory storage. 2013-03-26 14:47:07 +01:00
Julius Volz
991dc68d78 Rename misnamed oldestSampleTimestamp variable. 2013-03-26 11:56:10 +01:00
Matt T. Proud
3e97a3630d Include nascent curator scaffolding.
The curator doesn't do anything yet; rather, this is the type
definition including the anciliary testing scaffold.

Improve Makefile and Git developer experience.

The top-level Makefile was a bit overloaded in terms of generation of
assets and their management.  This has been offloaded into separate
Makefiles.

The Git developer experience sucked due to lack of .gitignore
policies.

Also: Fix faulty skiplist naming from old merge.
2013-03-25 19:38:14 +01:00
Matt T. Proud
b2e4c88b80 Wrap LevelDB iterator operations behind interface.
The LevelDB storage types return an interface type now that wraps
around the underlying iterator.  This both enhances testability but
improves upon, in my opinion, the interface design for the LevelDB
iterator.

Secondarily, the resource reaping behaviors for the LevelDB iterators
have been improved by dropping the externalized io.Closer object.

Finally, the iterator provisioning methods provide the option for
indicating whether one wants a snapshotted iterator or not.
2013-03-25 12:57:58 +01:00
Matt T. Proud
f2a30cf20c Several important cleanups and deprecations.
EachFunc is deprecated.

Remove deprecated ``Pair`` and ``GetAll``.

These were originally used for forensic and the old gorest impl.
Nothing today in the user-facing path nor the tests uses them,
especially since the advent of the ForEach protocol in the
interface.
2013-03-25 08:38:21 +01:00
Matt T. Proud
70448711ec Merge pull request #95 from prometheus/feature/persistence/batching
Several interface cleanups.
2013-03-24 00:19:46 -07:00
Matt T. Proud
8f6b55be71 Several interface cleanups.
- Kill Close in Persistent and document interface.
 - Extract batching behavior into interface.
 - Kill IteratorManager, which was used for unknown reasons.
2013-03-24 07:35:43 +01:00
Julius Volz
a33d2726bc Mark range op as consumed if it receives no data points in range. 2013-03-22 11:50:02 +01:00
Julius Volz
3c9d6cb66c Add several needed persistence proxy methods to tiered storage. 2013-03-21 18:16:43 +01:00
Julius Volz
081d250929 Fix view's GetRangeValues() reverse iteration behavior. 2013-03-21 18:16:31 +01:00
Julius Volz
0be0aa59c2 Wait until storage is drained before closing the underlying leveldb. 2013-03-21 18:16:07 +01:00
Julius Volz
becc278eb6 Fix two bugs in range op time advancement. 2013-03-21 18:15:52 +01:00
Matt T. Proud
ceb6611957 Fix regression in subsequent range op. compactions.
We have an anomaly whereby subsequent range operations fail to be
compacted into one single range operation.  This fixes such
behavior.
2013-03-21 18:11:04 +01:00
Matt T. Proud
669abdfefe `make format` invocation. 2013-03-21 18:11:04 +01:00
Julius Volz
bdb067b47f Implement remaining View Get* methods. 2013-03-21 18:11:04 +01:00
Julius Volz
1f42364733 Fix typo in comment. 2013-03-21 18:11:03 +01:00
Matt T. Proud
758a3f0764 Add documentation and cull junk. 2013-03-21 18:11:03 +01:00
Matt T. Proud
bd8bb0edfd One additional reduction. 2013-03-21 18:11:03 +01:00
Matt T. Proud
73b463e814 Additional simplifications. 2013-03-21 18:11:03 +01:00
Matt T. Proud
fd47ac570f Implied simplifications. 2013-03-21 18:11:03 +01:00
Matt T. Proud
51a0f21cf8 Interim documentation 2013-03-21 18:11:03 +01:00
Matt T. Proud
b470f925b7 Extract rewriting of interval queries. 2013-03-21 18:11:03 +01:00
Matt T. Proud
eb721fd220 Include note about greediest range. 2013-03-21 18:11:03 +01:00
Julius Volz
e50de005f9 Populate metric in SampleSet returned from GetRangeValues() 2013-03-21 18:11:03 +01:00
Julius Volz
6001d22f87 Change Get* methods to receive fingerprints instead of metrics. 2013-03-21 18:11:03 +01:00
Julius Volz
95f8885c8a Adopt new ops sorting interface in view rendering. 2013-03-21 18:11:02 +01:00
Julius Volz
4d79dc3602 Replace renderView() by cleaner and more correct reimplementation. 2013-03-21 18:11:02 +01:00
Julius Volz
e0dbc8c561 Fix edge cases in data extraction for point and interval ops. 2013-03-21 18:11:02 +01:00
Julius Volz
a4361e4116 Rename extractSampleValue -> extractSampleValues. 2013-03-21 18:08:49 +01:00
Julius Volz
4e7db57e76 Fix iterator behavior in view.GetSampleAtTime() 2013-03-21 18:08:49 +01:00
Julius Volz
bb9c5ed7aa Fix nil pointer exception in frontier building. 2013-03-21 18:08:48 +01:00
Matt T. Proud
896e172463 Extract time group optimizations. 2013-03-21 18:08:48 +01:00
Matt T. Proud
5a71814778 Additional greediness. 2013-03-21 18:08:48 +01:00
Matt T. Proud
b00ca7e422 Refactor some greediness computations. 2013-03-21 18:08:48 +01:00
Matt T. Proud
978acd4e96 Simplify time group optimizations.
The old code performed well according to the benchmarks, but the
new code shaves 1/6th of the time off the original and with less
code.
2013-03-21 18:08:48 +01:00
Matt T. Proud
d7b534e624 Update documentation. 2013-03-21 18:08:48 +01:00
Matt T. Proud
1f7ed52b46 Start writing high watermarks. 2013-03-21 18:08:48 +01:00
Julius Volz
a224dda9f0 Fix diskFrontier.ContainsFingerprint() return value. 2013-03-21 18:08:48 +01:00
Matt T. Proud
47ce7ad302 Extract appending from goroutine. 2013-03-21 18:08:48 +01:00
Matt T. Proud
187cd4cdbc Extract indexing of Fingerprint to Metrics. 2013-03-21 18:08:48 +01:00
Matt T. Proud
532589f728 Extract Label Pair to Fingerprint indexing. 2013-03-21 18:08:48 +01:00
Matt T. Proud
84acfed061 Extract finding unindexed metrics. 2013-03-21 18:08:48 +01:00
Matt T. Proud
67300af137 Extract indexing to separate routine. 2013-03-21 18:08:47 +01:00
Matt T. Proud
582354f6de Fix remaining `make advice` issues. 2013-03-21 18:08:47 +01:00
Matt T. Proud
615e6d13d7 Run `make format`. 2013-03-21 18:08:47 +01:00
Julius Volz
caeb759ed7 Add tests for and fix getValuesAlongRangeOp value extraction. 2013-03-21 18:08:47 +01:00
Julius Volz
69a24427b7 Minor tiered storage fixups. 2013-03-21 18:08:47 +01:00
Julius Volz
3621148e7f Comment out panicking test until proper support is implemented. 2013-03-21 18:08:47 +01:00
Julius Volz
e2fb497eba Add operator value extraction tests. 2013-03-21 18:08:47 +01:00
Julius Volz
12a8863582 Add data extraction methods to operator types. 2013-03-21 18:08:47 +01:00
Julius Volz
1d5df867d1 Set test time to fixed value. 2013-03-21 18:08:47 +01:00
Julius Volz
2f06b8bea6 Fix tiered storage test to trigger iterator rewinding case. 2013-03-21 18:08:47 +01:00
Julius Volz
894ecfe161 Small cleanups and comments in tiered storage. 2013-03-21 18:08:47 +01:00
Julius Volz
f238b23b04 Set -leveldbFlushOnMutate to false by default. 2013-03-21 18:08:47 +01:00
Julius Volz
8939e0723a Make LevelDB chunk size a flag. 2013-03-21 18:08:46 +01:00
Julius Volz
ce4f560e48 Encapsulate fingerprint frontier checks in renderView(). 2013-03-21 18:08:46 +01:00
Julius Volz
1a1cba1bb2 Address outstanding PR comments. 2013-03-21 18:08:46 +01:00
Matt T. Proud
62b5d7ce20 Oops. 2013-03-21 18:08:46 +01:00
Matt T. Proud
1e0d740f2a Conditionalize LevelDB index retrievals.
The LevelDB index retrievals could be repeated in a given operation
batch if multiple queued mutations affect the same (Label Name) singles
and (Label Name, Label Value) doubles.  This is wasteful and
inefficient, as a single retrieval suffices.  Thusly this commit
retrieves the canonical index mappings if the said mapping has not
been looked up in a given batch.
2013-03-21 18:08:46 +01:00
Matt T. Proud
34a921e16d Checkpoint. 2013-03-21 18:08:46 +01:00
Matt T. Proud
8cc5cdde0b checkpoint. 2013-03-21 18:08:46 +01:00
Matt T. Proud
d5380897c3 Cleanups and adds performance regression. 2013-03-21 18:06:51 +01:00
Matt T. Proud
f39b9c3c8e Checkpoint. 2013-03-21 18:06:51 +01:00
Matt T. Proud
41068c2e84 Checkpoint. 2013-03-21 18:06:51 +01:00
Matt T. Proud
13ae29b304 Initial in-memory arena implementation.
It is unbounded, and nothing uses it except for a gating flag in main.
2013-02-18 09:38:14 -06:00
Matt T. Proud
efbe0e8a12 Interface simplification.
GetMetricForFingerprint(model.Fingerprint) (*Metric, error) ->
GetMetricForFingerprint(model.Fingerprint) (Metric, error)
2013-02-14 08:43:02 -08:00
Matt T. Proud
f1245e8dda Interface simplifications.
GetFingerprintsForLabelName ([]*Fingerprint, error) ->
GetFingerprintsForLabelName ([]Fingerprint, error)
2013-02-14 08:19:41 -08:00
Matt T. Proud
e8a733b525 Interface simplifications.
GetFingerprintsForLabelSet ([]*Fingerprint, error) ->
GetFingerprintsForLabelSet ([]Fingerprint, error)
2013-02-14 08:07:59 -08:00
Matt T. Proud
f03091b139 Interface simplifications: GetRangeValues
From pointers to copies.
2013-02-13 21:11:23 -08:00
Matt T. Proud
14788cf4f3 Interface simplifications.
GetBoundaryValues() from pointers to values.
2013-02-13 21:07:42 -08:00
Matt T. Proud
56f069b3ec Interface simplifications: GetValueAtTime().
Pointer arguments to copies.
2013-02-13 21:05:01 -08:00
Matt T. Proud
1e2d6c7418 GetFingerprintsForLabelName simplifications.
``MetricPersistence.GetFingerprintsForLabelName(l *model.LabelName)``
->
``MetricPersistence.GetFingerprintsForLabelName(l model.LabelName)``
2013-02-13 17:44:35 -08:00
Matt T. Proud
900bb988c1 Simplifications of GetFingerprintsForLabelSet.
``MetricPersistence.GetFingerprintsForLabelSet(s *model.LabelSet)`` ->
``MetricPersistence.GetFingerprintsForLabelSet(s model.LabelSet)``.
2013-02-13 17:13:41 -08:00
Matt T. Proud
4fbcea73f5 MetricPersistence.AppendSample signature changes.
``MetricPersistence.AppendSample(*model.Sample)`` -> ``MetricPersistence.AppendSample(model.Sample)``.
2013-02-13 13:46:28 -08:00
Matt T. Proud
4502b49524 Swap out fingerprinting infrastructure.
All old database entries should be deleted.  :-(
2013-02-08 15:58:53 +01:00
Julius Volz
d67e4b9131 Address outstanding comments from PR/47 and other cleanups. 2013-02-07 11:38:01 +01:00
Julius Volz
2659304380 Add interface for getting all metrics from a MetricsPersistence. 2013-02-06 17:06:39 +01:00
Julius Volz
e23ac0adbd Implement bulk iteration/operation storage interface. 2013-02-06 17:05:23 +01:00
Matt T. Proud
ec3e98b365 Include Snappy in Runtime.
Snappy should have been explicitly included in the runtime, for I
erroneously thought that LevelDB bundled this into its runtime as-is.
It turns out that this assumption is wrong, and I thought we had
Snappy compression support all-along.
2013-02-01 13:35:07 +01:00
Matt T. Proud
79ba248bbe Make LevelDB operating modes invocation-time conf.
Presently our use of LevelDB and its operating modes are hardcoded
into the storage stack.  This pull request decouples this and
re-exposes this through flags.  We can now perform benchmarking
and remedial tuning.
2013-01-27 20:28:37 +01:00
Matt T. Proud
ea54751431 Update import paths to new location.
This repository moved from matttproud/prometheus to
prometheus/prometheus, and all import paths need to be updated.
2013-01-27 18:49:45 +01:00
Matt T. Proud
f2ded515b7 Support versioned telemetry providers.
client_golang was updated to support full label-oriented telemetry,
which introduced interface incompatibilities with the previous
version of Prometheus.  To alleviate this, a general fetching and
processing dispatching system has been created, which discriminates
and processes according to the version of input.
2013-01-27 17:45:50 +01:00
Matt T. Proud
88d15373c5 Upgrade Prometheus to new API. 2013-01-23 17:18:45 +01:00
Julius Volz
6f937ee032 Add preliminary metric docstrings and empty base labels. 2013-01-18 01:37:50 +01:00
Matt T. Proud
d9b165220e `GetFingerprintsForLabelSet` uses intersection.
This implementation needs to be cleaned up considerably, but it
should hopefully provide some breathing room.  Ultimately this will
be extracted out of the storage layer---specifically the LevelDB
hierarchy---to interface with a generic set of abstractions for a
storage system, but this will be where it remains for now.
2013-01-13 17:14:30 +01:00
Matt T. Proud
ac438e51f6 Debug corner-case seeking anomaly. 2013-01-07 11:23:09 +01:00
Matt T. Proud
be9b7942c1 Fix Stale. Pol. support in GetValueAtTime. 2013-01-06 18:36:05 +01:00
Matt T. Proud
52f52a7ee2 Include nascent instrumentation of stack. 2013-01-04 23:32:46 +01:00
Matt T. Proud
4f7adbbe7d Reduce work level for stochastic tests.
The LevelDB stochastic tests could take a long time.

Original:
```
Matt:prometheus mtp$ make test
make -C model
protoc --go_out=generated/ data.proto
go build ./...
go test ./...
warning: building out-of-date packages:
	github.com/matttproud/golang_instrumentation/maths
	github.com/matttproud/golang_instrumentation/utility
	github.com/matttproud/golang_instrumentation/metrics
	github.com/matttproud/golang_instrumentation
installing these packages with 'go test -i ./...' will speed future tests.

?   	github.com/matttproud/prometheus	[no test files]
?   	github.com/matttproud/prometheus/coding	[no test files]
ok  	github.com/matttproud/prometheus/coding/indexable	0.012s
?   	github.com/matttproud/prometheus/model	[no test files]
?   	github.com/matttproud/prometheus/model/generated	[no test files]
?   	github.com/matttproud/prometheus/retrieval	[no test files]
?   	github.com/matttproud/prometheus/storage/metric	[no test files]
ok  	github.com/matttproud/prometheus/storage/metric/leveldb	70.800s
?   	github.com/matttproud/prometheus/storage/raw	[no test files]
?   	github.com/matttproud/prometheus/storage/raw/index	[no test files]
ok  	github.com/matttproud/prometheus/storage/raw/index/leveldb	0.012s
ok  	github.com/matttproud/prometheus/storage/raw/leveldb	0.016s
ok  	github.com/matttproud/prometheus/utility	0.012s
?   	github.com/matttproud/prometheus/utility/test	[no test files]
```

to

```
Matt:prometheus mtp$ make test
make -C model
protoc --go_out=generated/ data.proto
go build ./...
go test ./...
warning: building out-of-date packages:
	github.com/matttproud/golang_instrumentation/maths
	github.com/matttproud/golang_instrumentation/utility
	github.com/matttproud/golang_instrumentation/metrics
	github.com/matttproud/golang_instrumentation
installing these packages with 'go test -i ./...' will speed future tests.

?   	github.com/matttproud/prometheus	[no test files]
?   	github.com/matttproud/prometheus/coding	[no test files]
ok  	github.com/matttproud/prometheus/coding/indexable	0.011s
?   	github.com/matttproud/prometheus/model	[no test files]
?   	github.com/matttproud/prometheus/model/generated	[no test files]
?   	github.com/matttproud/prometheus/retrieval	[no test files]
?   	github.com/matttproud/prometheus/storage/metric	[no test files]
ok  	github.com/matttproud/prometheus/storage/metric/leveldb	2.158s
?   	github.com/matttproud/prometheus/storage/raw	[no test files]
?   	github.com/matttproud/prometheus/storage/raw/index	[no test files]
ok  	github.com/matttproud/prometheus/storage/raw/index/leveldb	0.013s
ok  	github.com/matttproud/prometheus/storage/raw/leveldb	0.013s
ok  	github.com/matttproud/prometheus/utility	0.013s
?   	github.com/matttproud/prometheus/utility/test	[no test files]
```
2013-01-04 12:27:57 +01:00
Matt T. Proud
3ac5d48b1a Impl' storage i'faces and fix non-idiomatic warts.
This change includes implementation of most major storage layer
features, albeit some imperfect.  It also includes nascent telemetry
bindings, too.
2013-01-04 10:39:38 +01:00
Matt T. Proud
a14dbd5bd0 Interim commit for Julius. 2012-12-19 20:34:54 +01:00
Matt T. Proud
0886592ebc New interface definition after discussion. 2012-12-12 12:53:34 +01:00
Matt T. Proud
59a708f25a Provide prototype of storage layer interfaces. 2012-12-12 12:13:27 +01:00
Matt T. Proud
6589fc92f8 Strip web services, which weren't adding value. 2012-12-12 12:04:46 +01:00
Matt T. Proud
577acf4fe7 Exploding the storage infrastructure by contexts. 2012-12-09 16:27:12 +01:00
Matt T. Proud
15a6681651 Various cleanups.
Kill LevelDB watermarks due to redundancy.

General interface documentation has begun.

Creating custom types for the model to prevent errors down the
road.

Renaming of components for easier comprehension.

Exposition of interface in LevelDB.

Slew of simple refactorings.
2012-12-08 14:03:08 +01:00
Matt T. Proud
c0ce859c76 A few re-organizations. 2012-11-29 20:55:30 +01:00
Matt T. Proud
044a5b4e14 Add nascent Travis CI configuration. 2012-11-29 20:00:09 +01:00
Matt T. Proud
9f4bdaab50 Major LevelDB metric end-to-end test improvements.
Performance is enhanced through better range selection.
2012-11-28 22:48:28 +01:00
Matt T. Proud
c1f0d8aefd Levigo -> LevelDB in terminology and references. 2012-11-28 20:25:19 +01:00
Matt T. Proud
6ed67b02e2 Incorporate new interface tests. 2012-11-28 18:52:04 +01:00
Matt T. Proud
44f8802ae7 Add Apache License 2.0 boilerplate. 2012-11-26 20:11:34 +01:00
Matt T. Proud
2bbdaa5790 Initial directory re-arrangement for storage. 2012-11-26 19:56:51 +01:00