@harvve/tslog-influxdb-transport
Version:
Send logs to influxdb2 via telegraf without writing them to files.
131 lines (96 loc) • 5.16 kB
Markdown
# tslog-influxdb-transport
> Send logs to influxdb2 via telegraf without writing them to files.
<a name="readme-top"></a>
[![Contributors][contributors-shield]][contributors-url]
[![Forks][forks-shield]][forks-url]
[![Stargazers][stars-shield]][stars-url]
[![Issues][issues-shield]][issues-url]
[![MIT License][license-shield]][license-url]
<!-- TABLE OF CONTENTS -->
<details>
<summary>Table of Contents</summary>
<ol>
<li><a href="#about-the-project">About The Project</a></li>
<li><a href="#installation">Installation</a></li>
<li>
<a href="#usage">Usage</a>
<ol>
<li><a href="#settings">Settings</a></li>
</ol>
</li>
<li><a href="#contributing">Contributing</a></li>
<li><a href="#license">License</a></li>
<li><a href="#contact">Contact</a></li>
<li><a href="#acknowledgments">Acknowledgments</a></li>
</ol>
</details>
<br>
## About The Project
This library provides a transporter to configure and send logs from tslog via telegraph directly to [InfluxDB2](https://docs.influxdata.com/influxdb/v2.5/). This allows you to aggregate the logs in one place in this case in InfluxDB2. The stored log data can be [visualized](https://docs.influxdata.com/influxdb/v2.5/visualize-data/) and [alerts](https://docs.influxdata.com/influxdb/v2.5/monitor-alert/) can be set up in the InfluxDB2 UI with the built-in Chronograf and Kapacitor tools.
### Installation
```sh
npm i @harvve/tslog-influxdb-transport
```
## Usage
Attach transport provider to tslog instance.
```typescript
import { Logger } from 'tslog';
import { Transporter } from '@harvve/tslog-influxdb-transport';
const transporter = new Transporter({
address: 'localhost',
port: 3123,
socketType: 'udp4',
measurementName: 'myLoggerLogs',
minLevel: 'info'
});
const logger: Logger = new Logger({
name: 'myLogger',
attachedTransports: [this.transporter.getTransportProvider()]
});
logger.info('Hello!');
```
_Check out working example --> [View Demo](https://github.com/harvve/tslog-influxdb-transport-demo)_
### Settings
All possible settings are defined in the ITransporterOptions interface and modern IDEs will provide auto-completion accordingly.
* **port** - `number` - Destination port (port on which the telegraf listens)
* **address** - `string` - Destination host name or IP address
* **socketType** - `udp4 | udp6` - Type of socket
* **measurementName** - `string` - Name of measurement (in influxdb2 bucket)
* **minLevel** - `TLogLevelName` - Minimum logging level to transport - default 'debug'
* **fieldKeys** - `Array` - List of field keys - If no keys are provided, the default ones will be used
* **tagKeys** - `Array` - List of tag keys - with string value only - If keys are not specified, default ones will be used
<p align="right">(<a href="#readme-top">back to top</a>)</p>
## Contributing
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".
Don't forget to give the project a star! Thanks again!
1. Fork the Project
2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the Branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request
<p align="right">(<a href="#readme-top">back to top</a>)</p>
<!-- LICENSE -->
## License
Distributed under the MIT License. See `LICENSE` for more information.
<!-- CONTACT -->
## Contact
Project Link: [https://github.com/harvve/tslog-influxdb-transport](https://github.com/harvve/tslog-influxdb-transport)
<!-- ACKNOWLEDGMENTS -->
## Acknowledgments
* [tslog docs](https://tslog.js.org/#/)
* [InfluxDB2 docs](https://docs.influxdata.com/influxdb/v2.5/)
* [Telegraf docs](https://docs.influxdata.com/telegraf/v1.24/)
* [node.js dgram](https://nodejs.org/api/dgram.html#class-dgramsocket)
<p align="right">(<a href="#readme-top">back to top</a>)</p>
<!-- MARKDOWN LINKS & IMAGES -->
[contributors-shield]: https://img.shields.io/github/contributors/harvve/tslog-influxdb-transport.svg?style=for-the-badge
[contributors-url]: https://github.com/harvve/tslog-influxdb-transport/graphs/contributors
[forks-shield]: https://img.shields.io/github/forks/harvve/tslog-influxdb-transport.svg?style=for-the-badge
[forks-url]: https://github.com/harvve/tslog-influxdb-transport/network/members
[stars-shield]: https://img.shields.io/github/stars/harvve/tslog-influxdb-transport.svg?style=for-the-badge
[stars-url]: https://github.com/harvve/tslog-influxdb-transport/stargazers
[issues-shield]: https://img.shields.io/github/issues/harvve/tslog-influxdb-transport.svg?style=for-the-badge
[issues-url]: https://github.com/harvve/tslog-influxdb-transport/issues
[license-shield]: https://img.shields.io/github/license/harvve/tslog-influxdb-transport.svg?style=for-the-badge
[license-url]: https://github.com/harvve/tslog-influxdb-transport/blob/main/LICENSE.txt