Commit Graph

202 Commits

Author SHA1 Message Date
Matt T. Proud
6fac20c8af Harden the tests against OOMs.
This commit employs explicit memory freeing for the in-memory storage
arenas.  Secondarily, we take advantage of smaller channel buffer sizes
in the test.
2013-04-29 11:46:01 +02:00
Bernerd Schaefer
b04cd28862 Merge pull request #192 from prometheus/feature/negotiate-telemetry-schema-through-mime-type
Use Content-Type data for telemetry versioning
2013-04-29 01:30:37 -07:00
Matt T. Proud
b3e34c6658 Implement batch database sample curator.
This commit introduces to Prometheus a batch database sample curator,
which corroborates the high watermarks for sample series against the
curation watermark table to see whether a curator of a given type
needs to be run.

The curator is an abstract executor, which runs various curation
strategies across the database.  It remarks the progress for each
type of curation processor that runs for a given sample series.

A curation procesor is responsible for effectuating the underlying
batch changes that are request.  In this commit, we introduce the
CompactionProcessor, which takes several bits of runtime metadata and
combine sparse sample entries in the database together to form larger
groups.  For instance, for a given series it would be possible to
have the curator effectuate the following grouping:

- Samples Older than Two Weeks: Grouped into Bunches of 10000
- Samples Older than One Week: Grouped into Bunches of 1000
- Samples Older than One Day: Grouped into Bunches of 100
- Samples Older than One Hour: Grouped into Bunches of 10

The benefits hereof of such a compaction are 1. a smaller search
space in the database keyspace, 2. better employment of compression
for repetious values, and 3. reduced seek times.
2013-04-27 17:38:18 +02:00
juliusv
348b527f89 Merge pull request #194 from prometheus/julius-alert-tracking
Track alerts over time and write out alert timeseries.
2013-04-26 05:40:36 -07:00
Julius Volz
2202cd71c9 Track alerts over time and write out alert timeseries. 2013-04-26 14:35:21 +02:00
Bernerd Schaefer
dfd5c9ce28 Refactor processor for 0.0.2 schema
Primary changes:

* Strictly typed unmarshalling of metric values
* Schema types are contained by the processor (no "type entity002")

Minor changes:

* Added ProcessorFunc type for expressing processors as simple
  functions.
* Added non-destructive `Merge` method to `model.LabelSet`
2013-04-26 11:52:26 +02:00
Julius Volz
d4ff85db5a Add instance label to health (up) timeseries. 2013-04-24 21:50:49 +02:00
Matt T. Proud
9e02c2393a Include generated Protocol Buffer descriptor.
The Protocol Buffer compiler supports generating a machine-readable
descriptor file encoded as a provided Protocol Buffer message type,
which can be used to decode messages that have been encoded with it
after-the-fact.  The generated descriptor also bundles in dependent
message types.

We can use this to perform forensics on old Prometheus clients, if
necessary.
2013-04-24 16:59:40 +02:00
juliusv
af7ddc36e2 Merge pull request #176 from prometheus/optimization/view-materialization/slice-chunking
Truncate irrelevant chunk values.
2013-04-24 05:19:54 -07:00
Julius Volz
9b8c671ec9 Fixes/cleanups to renderView() samples truncation. 2013-04-24 12:42:58 +02:00
Matt T. Proud
e86f4d9dfd Convert time readers to represent time in UTC.
Go's time.Time represents time as UTC in its fundamental data type.
That said, when using ``time.Unix(...)``, it sets the zone for the
time representation to the local.  Unfortunately with diagnosis and
our tests, it is a PITA to jump between various zones, even though
the serialized version remains the same.

To keep things easy, all places where times are generated or read
are converted into UTC.  These conversions are cheap, for
``Time.In`` merely changes a pointer reference in the struct,
nothing more.  This enables me to diagnose test failures with fixture
data very easily.
2013-04-24 12:19:41 +02:00
Matt T. Proud
05504d3642 WIP - Truncate irrelevant chunk values.
This does not work with the view tests.
2013-04-24 11:07:22 +02:00
Matt T. Proud
b1a8e51b07 Extract dto.SampleValueSeries into model.Values. 2013-04-22 13:31:11 +02:00
Matt T. Proud
db4ffbb262 Wrap dto.SampleKey with business logic type.
The curator work can be done easier if dto.SampleKey is no longer
directly accessed but rather has a higher level type around it that
captures a certain modicum of business logic.  This doesn't look
terribly interesting today, but it will get more so.
2013-04-21 20:38:39 +02:00
Matt T. Proud
f9e99bd08a Refresh SampleValue to 64-bit floating point.
We always knew that this needed to be fixed.
2013-04-21 20:31:50 +02:00
Julius Volz
99dcbe0f94 Integrate memory and disk layers in view rendering. 2013-04-19 16:01:27 +02:00
juliusv
7c544c91c6 Merge pull request #151 from prometheus/julius-synth-vars
Record scrape health timeseries per target.
2013-04-17 05:48:26 -07:00
Matt T. Proud
32c0a939b0 New self-sustaining, hermetic build system.
This should help us produce self-contained artifacts for users as
well as lower the hurdles for first-time contributors.
2013-04-17 09:34:24 +02:00
Julius Volz
8c9e9632a8 Record scrape health timeseries per target. 2013-04-16 19:01:26 +02:00
Julius Volz
a0d311c9e6 Constantize job name label. 2013-04-15 11:47:54 +02:00
Julius Volz
fd554e8b89 Make LevelDB sample keys fixed-length to ensure correct sort-order. 2013-04-11 18:17:44 +02:00
Julius Volz
ebe05d1b83 Fix logic bug in fingerprint Less() comparison.
Seems like just using String() is the easiest way of doing this.
2013-04-09 11:43:12 +02:00
Julius Volz
0230dbf305 Fix off-by-one bug in NewFingerprintFromMetric(). 2013-04-09 02:36:38 +02:00
Matt T. Proud
c53a72a894 Test data for the curator. 2013-03-27 18:13:43 +01:00
Julius Volz
2b8f0b2cc7 Constantize metric name label name. 2013-03-26 16:20:23 +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
Julius Volz
bf78d427be Fix compile error in metric helper function. 2013-03-21 18:11:03 +01:00
Matt T. Proud
4e73c4c204 Include interval test. 2013-03-21 18:11:03 +01:00
Matt T. Proud
1f7ed52b46 Start writing high watermarks. 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
8cc5cdde0b checkpoint. 2013-03-21 18:08:46 +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
05a9c3cd0b Improve the base label representation in /status.
The base label representation under /status needs improvement to
enhance readability; namely, add sorting and make the label
representation concise.
2013-03-21 12:08:18 +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
4502b49524 Swap out fingerprinting infrastructure.
All old database entries should be deleted.  :-(
2013-02-08 15:58:53 +01:00
Matt T. Proud
1c74eedf76 Create initial Metric fingerprinter.
The old system relies off of super-careful notion that the serialized
form of a Protocol Buffer should be used for fingerprint formulation.
Of course this is both wrong and inefficient.  This commit breaks
ground for swapping to a pure attribute-oriented digest.
2013-02-08 13:05:35 +01:00
Julius Volz
d67e4b9131 Address outstanding comments from PR/47 and other cleanups. 2013-02-07 11:38:01 +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
Julius Volz
a20bf35997 Fix whitespace with "make format". 2013-01-22 02:27:26 +01:00
Julius Volz
ebabaa46f4 Serialize matrices correctly. 2013-01-22 02:27:26 +01:00
Julius Volz
af88afaf5a Remove unneeded String() method for SampleValue type. 2013-01-04 12:12:18 +01:00
Matt T. Proud
a14dbd5bd0 Interim commit for Julius. 2012-12-19 20:34:54 +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
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
Matt T. Proud
6072143505 Initial commit of external resources. 2012-11-24 12:33:34 +01:00