# graphite-tcp

> Graphite TCP client for Node.js

Latest version **1.0.4** (published 2016-04-20) · MIT license · 0 weekly downloads

## Install

```sh
npm install graphite-tcp
pnpm add graphite-tcp
yarn add graphite-tcp
bun add graphite-tcp
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.4 |
| Published | 2016-04-20 |
| First published | 2016-04-20 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >=0.8.0 |
| Dependencies | 1 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 3 |
| Author | fermads |
| Maintainers | itamarwe |
| Keywords | graphite, tcp |

## Links

- npm: https://www.npmjs.com/package/graphite-tcp
- Repository: https://github.com/itamarwe/graphite-tcp
- Issues: https://github.com/itamarwe/graphite-tcp/issues
- npm.io page: https://npm.io/package/graphite-tcp

## Dependencies (1)

- [reconnect-core](https://npm.io/package/reconnect-core.md) ^1.2.0

## Alternatives

- [d3-force-3d](https://npm.io/package/d3-force-3d.md) — 1.0M weekly downloads
- [ng2-charts](https://npm.io/package/ng2-charts.md) — 486.8K weekly downloads
- [@arcgis/core](https://npm.io/package/@arcgis/core.md) — 257.8K weekly downloads
- [react-sparklines](https://npm.io/package/react-sparklines.md) — 249.3K weekly downloads
- [react-native-gifted-charts](https://npm.io/package/react-native-gifted-charts.md) — 182.3K weekly downloads

## Recent versions

- 1.0.4 (latest) — 2016-04-20
- 1.0.3 — 2016-04-20
- 1.0.2 — 2016-04-20
- 1.0.0 — 2016-04-20

## README

# Graphite TCP

Graphite TCP client for Node.js

* Uses the plaintext Graphite protocol
* Group values for a configurable interval and send 1 request
* No other module dependencies

## Install
```
npm install graphite-tcp
```

## Usage
```js
var graphite = require('graphite-tcp')
var metric = graphite.createClient([options])
metric.add(name, value)
metric.put(name, value)
```

`options` is an object with the following defaults:

```js
{
  host: '127.0.0.1', // graphite server host or ip
  port: 2003, // graphite server tcp port
  family: '4', // TCP family
  prefix: '', // a prefix to prepend to the name of all metrics
  suffix: '', // a suffix to append to the name of all metrics
  verbose: false, // log messages to console
  interval: 5000, // group metrics for 5s and send only 1 request
  callback: null // callback(error, metrics) called when metrics are sent
}
```

## Example
```js
var os = require('os')
var graphite = require('graphite-tcp')
var metric = graphite.createClient({
  prefix: 'productname',
  suffix: os.hostname(),
  interval: 60000,
  verbose: true,
  callback: function(error, metricsSent) {
    console.log('Metrics sent\n'+ metricsSent)
  }
})

metric.add('my.test.metric1', 10) // add 10
metric.add('my.test.metric1', 20) // add 20 (previous 10 + 20 = 30)
metric.put('my.test.metric2', 1) // put 1
metric.put('my.test.metric2', 5) // put 5 (overwrite 1 with 5)
```

Will generate

```
productname.my.test.metric1.machinename 30 1447193969
productname.my.test.metric2.machinename 5 1447193969
```

# API

### metric.add
During the `interval` time option, if 2 or more metrics with the same name
are sent, metrics will be added (summed)

```js
metric.add('my.test.metric', 20)
metric.add('my.test.metric', 10)
```
What will actually be sent to the server after `interval` is

```
my.test.metric 30
```

### metric.put
During the `interval` time option, if 2 or more metrics with the same name
are sent, the last one will be used

```js
metric.put('my.test.metric', 20)
metric.put('my.test.metric', 10)
```
What will actually be sent to the server after `interval` is

```
my.test.metric 10
```

### metric.close
Close the underlying UDP client socket

```js
metric.close()
```

## License

Licensed under the MIT license.
Credit to @fermads for his graphite-udp repo

---
_Source: https://npm.io/package/graphite-tcp · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
