Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ovh/ldp-tail

OVH Logs Data Platform - Tail CLI tooling
https://github.com/ovh/ldp-tail

cli ldp logging ovh tail

Last synced: 3 months ago
JSON representation

OVH Logs Data Platform - Tail CLI tooling

Awesome Lists containing this project

README

        

[![Build Status](https://travis-ci.org/ovh/ldp-tail.svg?branch=master)](https://travis-ci.org/ovh/ldp-tail)
[![Go Report Card](https://goreportcard.com/badge/github.com/ovh/ldp-tail)](https://goreportcard.com/report/github.com/ovh/ldp-tail)

Logs Data Platform - Tail
=========================

This tool allows you to display the logs pushed in Logs Data Platform in real time.
More infos on Logs Data Platform and how to obtain the stream uri: https://docs.ovh.com/gb/en/logs-data-platform/ldp-tail/

Installation
------------
To install cli, simply run:
```
$ go install github.com/ovh/ldp-tail@latest
```

Usage
-----
```sh
ldp-tail --address
```

Demo
----
```sh
ldp-tail --address wss://gra1.logs.ovh.com/tail/?tk=demo --pattern "{{ .short_message }}"
```

Parameters
----------
* Server
* `address` URI of the websocket
* Filtering
* `match` Display only messages matching the condition. Example: `_method=verifyPassword`. You may specify an operator like: `_method.begin=verify` or negate its meaning like: `_method.not.begin=verify`. Available operators are:
* `present` The field is present
* `begin` The field begins with the value
* `contain` The field contains the value
* `lt` The field is less than the value
* `le` The field is less than or equal to the value
* `eq` The field is equal to the value
* `ge` The field is greater than or equal to the value
* `gt` The field is greater than the value
* `regex` The field match the regular expression
* Formatting
* `raw` Display raw JSON message instead of parsing it
* `format` Display messages using a pre-defined format. Valid values:
* `logrus` Display messages like [Logrus](https://github.com/sirupsen/logrus) for messages sent with [Graylog Hook for Logrus](https://github.com/gemnasium/logrus-graylog-hook/)
* `logrus-color` Display colored messages like [Logrus](https://github.com/sirupsen/logrus) for messages sent with [Graylog Hook for Logrus](https://github.com/gemnasium/logrus-graylog-hook/)
* `pattern` Template to apply on each message to display it. Default: `{{._appID}}> {{.short_message}}`. Custom available functions are:
* `color` Set text color. Available colors are: `green` `white` `yellow` `red` `blue` `magenta` `cyan`
* `bColor` Set background color. Available colors are: `green` `white` `yellow` `red` `blue` `magenta` `cyan`
* `noColor` Disable text and background color
* `date` Transform a timestamp in a human readable date. Default format is `2006-01-02 15:04:05` but can be customized with the second optional argument
* `join` Concatenates strings passed in argument with the first argument used as separator
* `concat` Concatenates strings passed in argument
* `duration` Transform a value in a human readable duration. First argument must be a parsable number. The second argument is the multiplier coefficient to be applied based on nanoseconds. Ex: 1000000 if the value is in milliseconds.
* `int` Converts a string or a number to an int64
* `float` Converts a string to float64
* `string` Converts a value to a string
* `get` Return the value under the key passed in the second argument of the map passed first argument. Useful for accessing keys containing a period. Ex: `{{ get . "foo.bar" }}`
* `column` Formats input into multiple columns. Columns are delimited with the characters supplied in the first argument. Ex: `"{{ column " | " (date .timestamp) (concat ._method " " ._path ) ._httpStatus_int }}`
* `begin` Return true if the first argument begins with the second
* `contain` Return true if the second argument is within the first
* `level` Transform a Gelf/Syslog level value (0-7) to a syslog severity keyword
* Config
* `config` Config file loaded before parsing parameters, so parameters will override the values in the config file (except for `match` where parameters will add more criteria instead of replacing them). The config file use the [TOML](https://github.com/toml-lang/toml) file format. The structure of the configuration file is:
```
Address string
Match []{
Key string
Operator string
Value interface{}
Not bool
}
Pattern string
Raw bool
```
Exemple:
```
Address = "wss://gra1.logs.ovh.com/tail/?tk=demo"
Pattern = "{{date .timestamp}}: {{if ne ._title \"\"}}[ {{._title}} ] {{end}}{{ .short_message }}"
```

# Contributing

You've developed a new cool feature? Fixed an annoying bug? We'd be happy
to hear from you! Make sure to read [CONTRIBUTING.md](./CONTRIBUTING.md) before.

# License

This work is under the BSD license, see the [LICENSE](LICENSE) file for details.