Skip to content

Latest commit

 

History

History
60 lines (40 loc) · 2.41 KB

README.md

File metadata and controls

60 lines (40 loc) · 2.41 KB

Build Status

Synopsis

Client library for submitting data to and querying from graphite

Code Example

Submit metrics

var client = new CarbonClient("example.com");

var datapoints = new[]
    {
        new Datapoint("data.server1.cpuUsage", 10, DateTime.Now),
        new Datapoint("data.server2.cpuUsage", 15, DateTime.Now),
        new Datapoint("data.server3.cpuUsage", 20, DateTime.Now),
    };

await client.SendAsync(datapoints);

Query metrics

//dynamically build targets - 'data.*.server[0-9].{cpu,ram,disk}.Usage'
var path = new GraphitePath("data")
    .WildcardPath()
    .Path("server").Range('0', '9')
    .ValuePath("cpu", "ram", "disk").Path("Usage");

//invoke functions on targets - alias(sum(data.*.server[0-9].{cpu,ram,disk}.Usage),"usage")
var function = path.Sum().Alias("usage");

//retrieve data from graphite
var client = new GraphiteClient("http://example.com");
var data = await client.GetMetricsDataAsync(function, "-1d")

For details take a look at the tests

Motivation

All existing libraries we found supported only string parameters for querying graphite. To fix this we wrote our own statically typed client.

This client also supports sending batch data via the python pickle protocol (in addition to the plaintext protocol) (many thanks to Razorvine).

Installation

Install via nuget.

Known Issues

Please be aware that this library might include functions which are not yet stable or miss functions from the latest stable release. To work around unsupported features you can always call .ToString() and use the inappropriately named function GraphitePath.Parse(). Depending on your build configuration you may also use the obsolete method .Function("functionName", params).

Contributing

We are happily accepting pull requests for any missing feature or enhancement. If anything is unclear, do not hesitate to open an issue.

License

Licensed under MIT License