<commit_before># Satellite

Satellite is an agent written in Go for collecting health information in a [kubernetes] cluster.
It is both a library and an application. As a library, it can be used as a basis for a custom monitoring solution.
The health status information is collected in the form of a time series and persisted to the [sqlite] backend.
Additional backends are supported via an interface.

The original design goals are:

 - lightweight periodic testing
 - high availability and resilience to network partitions
 - no single point of failure
 - history of health data as a time series

The agents communicate over a [Gossip] protocol implemented by [serf].

## Dependencies
 - [serf], v0.7.0 or later
 - [godep]

## Installation

There are currently no binary distributions available.

### Building from source

Satellite manages dependencies via [godep] which is also a prerequisite for building.
Another prerequisite is Go version 1.5+.

 1. Install [Go]
 1. Install [godep]
 1. [Setup GOPATH]
 1. Run `go get github.com/gravitational/satellite`
 1. Run `cd $GOPATH/src/github.com/gravitational/satellite`
 1. Run `make`


## How to use it

```console
$ satellite help
usage: satellite [<flags>] <command> [<args> ...]

Cluster health monitoring agent

Flags:
  --help   Show help (also see --help-long and --help-man).
  --debug  Enable verbose mode

Commands:
  help [<command>...]
    Show help.

  agent [<flags>]
    Start monitoring agent

  version
    Display version details


$ satellite agent help
usage: satellite agent [<flags>]

Start monitoring agent

Flags:
  --help                     Show context-sensitive help (also try --help-long and --help-man).
  --debug                    Enable verbose mode
  --role=ROLE                Agent role
  --rpc-addr=127.0.0.1:7575  Address to bind the RPC listener to. Can be specified multiple times
  --name=NAME                Agent name. Must be the same as the name of the local serf node
  --serf-rpc-addr="127.0.0.1:7373"  
                             RPC address of the local serf node
  --initial-cluster=INITIAL-CLUSTER  
                             Initial cluster configuration as a comma-separated list of peers
  --state-dir=STATE-DIR      Directory to store agent-specific state
  --tags=TAGS                Set initial tags as comma-separated list of key:value pairs

$ satellite agent --name=hostname --tags=label:value,another-label:another-value
```

Out of the box, the agent requires at least a single master node (agent with `role=master`). If no master is found during
the test, the cluster state will be marked as `degraded`.<commit_msg>Update the agent command line<commit_after># Satellite

Satellite is an agent written in Go for collecting health information in a [kubernetes] cluster.
It is both a library and an application. As a library, it can be used as a basis for a custom monitoring solution.
The health status information is collected in the form of a time series and persisted to the [sqlite] backend.
Additional backends are supported via an interface.

The original design goals are:

 - lightweight periodic testing
 - high availability and resilience to network partitions
 - no single point of failure
 - history of health data as a time series

The agents communicate over a [Gossip] protocol implemented by [serf].

## Dependencies
 - [serf], v0.7.0 or later
 - [godep]

## Installation

There are currently no binary distributions available.

### Building from source

Satellite manages dependencies via [godep] which is also a prerequisite for building.
Another prerequisite is Go version 1.5+.

 1. Install [Go]
 1. Install [godep]
 1. [Setup GOPATH]
 1. Run `go get github.com/gravitational/satellite`
 1. Run `cd $GOPATH/src/github.com/gravitational/satellite`
 1. Run `make`


## How to use it

```console
$ satellite help
usage: satellite [<flags>] <command> [<args> ...]

Cluster health monitoring agent

Flags:
  --help   Show help (also see --help-long and --help-man).
  --debug  Enable verbose mode

Commands:
  help [<command>...]
    Show help.

  agent [<flags>]
    Start monitoring agent

  version
    Display version details


$ satellite agent help
usage: satellite agent [<flags>]

Start monitoring agent

Flags:
  --help                         Show context-sensitive help (also try --help-long and --help-man).
  --debug                        Enable verbose mode
  --rpc-addr=127.0.0.1:7575      Address to bind the RPC listener to. Can be specified multiple times
  --name=NAME                    Agent name. Must be the same as the name of the local serf node
  --serf-rpc-addr="127.0.0.1:7373"  
                                 RPC address of the local serf node
  --initial-cluster=INITIAL-CLUSTER  
                                 Initial cluster configuration as a comma-separated list of peers
  --state-dir=STATE-DIR          Directory to store agent-specific state
  --tags=TAGS                    Define a tags as comma-separated list of key:value pairs
  --influxdb-database=INFLUXDB-DATABASE  
                                 Database to connect to
  --influxdb-user=INFLUXDB-USER  Username to use for connection
  --influxdb-password=<PASSWORD>  
                                 Password to use for connection
  --influxdb-url=INFLUXDB-URL    URL of the InfluxDB endpoint

$ satellite agent --name=hostname --tags=label:value,another-label:another-value
```

Out of the box, the agent requires at least a single master node (agent with `role=master`). If no master is found during
the test, the cluster state will be marked as `degraded`.
{'fraction_non_alphanumeric': 0.07895677027509825, 'fraction_numerical': 0.011075384065737763, 'mean_word_length': 2.77037037037037, 'pattern_counts': {'":': 0, '<': 16, '<?xml version=': 0, '>': 16, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 4, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 5, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5668394', 'n_tokens_mistral': 1618, 'n_tokens_neox': 1465, 'n_words': 679}