Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kpacha/mesos-influxdb-collector
Lightweight mesos stats collector for influxdb
https://github.com/kpacha/mesos-influxdb-collector
Last synced: 6 days ago
JSON representation
Lightweight mesos stats collector for influxdb
- Host: GitHub
- URL: https://github.com/kpacha/mesos-influxdb-collector
- Owner: kpacha
- Archived: true
- Created: 2015-10-04T16:03:37.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2022-01-04T14:54:29.000Z (almost 3 years ago)
- Last Synced: 2024-08-02T07:10:39.170Z (3 months ago)
- Language: Go
- Homepage:
- Size: 345 KB
- Stars: 16
- Watchers: 3
- Forks: 7
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-influxdb - mesos-influxdb-collector - Lightweight [mesos](https://mesos.apache.org/) stats collector for InfluxDB (Collecting data into InfluxDB / Projects)
README
mesos-influxdb-collector
=====**NOTICE: This repository has been archived and will not be maintained anymore. If you want to extend or modify it, please fork it and give it a new live.**
Lightweight mesos stats collector for influxdb
Since this collector is intended to be deployed as a [marathon](https://mesosphere.github.io/marathon) app, it comes with a *lifetime* param. This defines how long the collector will run until it dies, so marathon will re-launch it, allowing easy allocation optimizations. Check the [fixtures/marathon/](https://github.com/kpacha/mesos-influxdb-collector/tree/master/fixtures/marathon) folder for more details on how to launch it.
# Goals
+ Discover the mesos cluster through `mesos-dns`
+ Collect the mesos leader stats
+ Collect the mesos master stats
+ Collect the mesos slave stats
+ Collect the marathon master stats
+ Collect the mesos executors stats
+ Collect the marathon events (experimental)
+ Collect the haproxy stats (experimental)
+ Collect the chronos task stats (TODO)# Installing
Docker images are available at [docker hub](https://hub.docker.com/r/kpacha/mesos-influxdb-collector). Just pull one of the available images with:
```
$ docker pull kpacha/mesos-influxdb-collector:latest-min
```The `-min` versions are images with just the binary and a config file.
**Be careful with the `latest` and the `latest-min` versions. They could have experimental features, not battle-proven yet**
Alternatively, get the last released binary from the [releases](https://github.com/kpacha/mesos-influxdb-collector/releases) section.
Finally, if you love the hard way and have Go installed:
```
$ go get github.com/kpacha/mesos-influxdb-collector
```# Integration with `mesos-dns`
The `mesos-influxdb-collector` is able to discover all your mesos nodes (masters and slaves) and the marathon master using the REST API exposed by the [mesos-dns](http://mesosphere.github.io/mesos-dns/) service. Check the next section for details.
# Configuration
The collector use these environmental vars:
+ `INFLUXDB_HOST`
+ `INFLUXDB_PORT`
+ `INFLUXDB_DB`
+ `INFLUXDB_USER`
+ `INFLUXDB_PWD`It also requires a config file with the list of nodes to monitor or the details about the `mesos-dns` service among these other params:
+ *Lapse*: time between consecutive collections. Default: 30 seconds
+ *DieAfter*: duration of the running instance. Default: 1 hour### MesosDNS
Optional. Add it if you have a `mesos-dns` service running in your mesos cluster.
```
mesosDNS {
domain = "mesos" // the domain used by the mesos-dns service
marathon = true // resolve marathon master
host = "master.mesos" // host of the mesos-dns service
port = 8123 // port of the REST API
}
```### InfluxDB
Required.
```
influxdb {
host = "influxdb.marathon.mesos" // host of the influxdb instance
port = 8086 // port of the REST API
db = "mesos" // name of the database to use
checkLapse = 30 // ping frequency
}
```### Mesos masters
For manual definition of some (or all) mesos masters, use the `Master` struct:
```
master "leader" {
host = "master0.example.com"
port = 5051
leader = true // optional
}
Master "follower1" {
host = "master1.example.com"
port = 5052
}
```### Mesos slaves
For manual definition of some (or all) mesos slave, use the `Slave` struct:
```
Slave "0" {
host = "slave0.example.com"
port = 5051
}
Slave "1" {
host = "slave1.example.com"
port = 5051
}
Slave "2" {
host = "slave2.example.com"
port = 5051
}
```### Marathon instances
For manual definition of some (or all) marathon instances, use the `Marathon` struct:
```
Marathon {
host = "$HOST"
port = 8088
events = true
bufferSize = 10000
Server "0" {
host = "marathon1"
port = 8080
}
Server "1" {
host = "marathon2"
port = 8080
}
}
```Check [`config/configuration_test.go`](https://github.com/kpacha/mesos-influxdb-collector/blob/master/config/configuration_test.go) and [`conf.hcl`](https://github.com/kpacha/mesos-influxdb-collector/blob/master/conf.hcl) for examples.
# Running
The collector use these environmental vars:
+ `INFLUXDB_DB`
+ `INFLUXDB_HOST`
+ `INFLUXDB_PORT`
+ `INFLUXDB_USER`
+ `INFLUXDB_PWD`## Dockerized version
Run the container with the default params:
```
$ docker pull --name mesos-influxdb-collector \
-e INFLUXDB_USER=admin \
-e INFLUXDB_PWD=secret \
-it --rm kpacha/mesos-influxdb-collector
```If you need to customize something, there are some alternatives:
### 1: Config file
Just copy the `conf.hcl`, make your changes and link it as a volume:
```
$ docker pull --name mesos-influxdb-collector \
-v /path/to/my/custom/conf.hcl:/tmp/conf.hcl \
-it --rm kpacha/mesos-influxdb-collector -c /tmp/conf.hcl
```Tip: if you link your config file to `/go/src/github.com/kpacha/mesos-influxdb-collector/conf.hcl` you don't need to worry about that flag!
### 2: ENV VARS
Use the env vars listed above
```
$ docker pull --name mesos-influxdb-collector \
-v /path/to/my/custom/conf.hcl:/tmp/conf.hcl \
-e INFLUXDB_HOST=influxdb.example.com \
-it --rm kpacha/mesos-influxdb-collector -c /tmp/conf.hcl
```### 3: Flags
Use the flags accepted by the binary and defined below. Remeber to set them as commands to the defined entrypoint for the docker container.
```
$ docker pull --name mesos-influxdb-collector \
-v /path/to/my/custom/conf.hcl:/tmp/conf.hcl \
-it --rm kpacha/mesos-influxdb-collector -c "/tmp/conf.hcl" -Ih "influxdb.example.com"
```## Binary version
```
$ ./mesos-influxdb-collector -h
Usage of ./mesos-influxdb-collector:
-Id string
influxdb database (default "mesos")
-Ih string
influxdb host (default "localhost")
-Ip int
influxdb port (default 8086)
-c string
path to the config file (default "conf.hcl")
```This is the relation between those params and the environmnetal variables listed above.
Flag | EnvVar
---- | ------
`Id` | `INFLUXDB_DB`
`Ih` | `INFLUXDB_HOST`
`Ip` | `INFLUXDB_PORT`The credentials for the influxdb database are accepted just as env_var (`INFLUXDB_USER` & `INFLUXDB_PWD`)
# Grafana dashboards
The [fixtures/grafana]((https://github.com/kpacha/mesos-influxdb-collector/tree/master/fixtures/grafana) folder contains several grafana dashboard definitions. Go to the grafana website and, after configuring the influxdb datasource, import them and start monitoring your mesos cluster.