Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add basic documentation and build instructions #1

Merged
merged 1 commit into from
Oct 7, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Changelog

## [Unreleased]

### Added

* Add basic documentation

## [0.1.0] - 2018-09-24

### Added
Expand Down
1 change: 1 addition & 0 deletions docs/config.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
baseURL = "https://promhippie.github.io/prometheus-scw-sd/"
languageCode = "en-us"
title = "Prometheus Scaleway SD"
pygmentsUseClasses = true

[blackfriday]
angledQuotes = true
Expand Down
27 changes: 26 additions & 1 deletion docs/content/building.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,30 @@
title: "Building"
date: 2018-05-02T00:00:00+00:00
anchor: "building"
weight: 30
weight: 20
---

As this project is built with Go you need to install Go first. The installation of Go is out of the scope of this document, please follow the [official documentation](https://golang.org/doc/install). After the installation of Go you need to get the sources:

{{< highlight txt >}}
go get -d github.com/promhippie/prometheus-scw-sd
cd $GOPATH/src/github.com/promhippie/prometheus-scw-sd
{{< / highlight >}}

All required tool besides Go itself are bundled or getting automatically installed within the `GOPATH`. We are using [retool](https://github.com/twitchtv/retool) to keep the used tools consistent and [dep](https://github.com/golang/dep) to manage the dependencies. All commands to build this project are part of our `Makefile`.

{{< highlight txt >}}
# install retool
make retool

# sync dependencies
make sync

# generate code
make generate

# build binary
make build
{{< / highlight >}}

Finally you should have the binary within the `bin/` folder now, give it a try with `./bin/prometheus-scw-sd -h` to see all available options.
82 changes: 82 additions & 0 deletions docs/content/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,86 @@ weight: 10

## Installation

We won't cover further details how to properly setup [Prometheus](https://prometheus.io) itself, we will only cover some basic setup based on [docker-compose](https://docs.docker.com/compose/). But if you want to run this service discovery without [docker-compose](https://docs.docker.com/compose/) you should be able to adopt that to your needs.

First of all we need to prepare a configuration for [Prometheus](https://prometheus.io) that includes the service discovery which simply maps to a node exporter.

{{< gist tboerger 4f445d609f0894a5fe40c20e7a42d565 "prometheus.yml" >}}

After preparing the configuration we need to create the `docker-compose.yml` within the same folder, this `docker-compose.yml` starts a simple [Prometheus](https://prometheus.io) instance together with the service discovery. Don't forget to update the envrionment variables with the required credentials. If you are using a different volume for the service discovery you have to make sure that the container user is allowed to write to this volume.

{{< gist tboerger 4f445d609f0894a5fe40c20e7a42d565 "docker-compose.yml" >}}

Since our `latest` Docker tag always refers to the `master` branch of the Git repository you should always use some fixed version. You can see all available tags at our [DockerHub repository](https://hub.docker.com/r/promhippie/prometheus-scw-sd/tags/), there you will see that we also provide a manifest, you can easily start the exporter on various architectures without any change to the image name. You should apply a change like this to the `docker-compose.yml`:

{{< gist tboerger 4f445d609f0894a5fe40c20e7a42d565 "tag.diff" >}}

Finally the service discovery should be configured fine, let's start this stack with [docker-compose](https://docs.docker.com/compose/), you just need to execute `docker-compose up` within the directory where you have stored `prometheus.yml` and `docker-compose.yml`.

{{< gist tboerger 4f445d609f0894a5fe40c20e7a42d565 "output.log" >}}

That's all, the service discovery should be up and running. You can access [Prometheus](https://prometheus.io) at [http://localhost:9090](http://localhost:9090).

{{< figure src="service-discovery.png" title="Prometheus service discovery for Hetzner" >}}

## Kubernetes

Currently we have not prepared a deployment for Kubernetes, but this is something we will provide for sure. Most interesting will be the integration into the [Prometheus Operator](https://coreos.com/operators/prometheus/docs/latest/), so stay tuned.

## Configuration

PROMETHEUS_SCW_TOKEN
: Access token for the Scaleway API, required for authentication

PROMETHEUS_SCW_ORG
: Organization for the Scaleway API, required for authentication

PROMETHEUS_SCW_REGION
: Region for the Scaleway API, required for authentication

PROMETHEUS_SCW_LOG_LEVEL
: Only log messages with given severity, defaults to `info`

PROMETHEUS_SCW_LOG_PRETTY
: Enable pretty messages for logging, defaults to `true`

PROMETHEUS_SCW_WEB_ADDRESS
: Address to bind the metrics server, defaults to `0.0.0.0:9000`

PROMETHEUS_SCW_WEB_PATH
: Path to bind the metrics server, defaults to `/metrics`

PROMETHEUS_SCW_OUTPUT_FILE
: Path to write the file_sd config, defaults to `/etc/prometheus/scw.json`

PROMETHEUS_SCW_OUTPUT_REFRESH
: Discovery refresh interval in seconds, defaults to `30`

## Labels

* `__meta_scaleway_name`
* `__meta_scaleway_id`
* `__meta_scaleway_arch`
* `__meta_scaleway_image_id`
* `__meta_scaleway_image_name`
* `__meta_scaleway_public_ipv4`
* `__meta_scaleway_state`
* `__meta_scaleway_private_ipv4`
* `__meta_scaleway_hostname`
* `__meta_scaleway_org`
* `__meta_scaleway_commercial_type`
* `__meta_scaleway_platform`
* `__meta_scaleway_hypervisor`
* `__meta_scaleway_node`
* `__meta_scaleway_blade`
* `__meta_scaleway_chassis`
* `__meta_scaleway_cluster`
* `__meta_scaleway_zone`

## Metrics

prometheus_scw_sd_request_duration_seconds
: Histogram of latencies for requests to the Scaleway API

prometheus_scw_sd_request_failures_total
: Total number of failed requests to the Scaleway API
2 changes: 1 addition & 1 deletion docs/content/license.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: "License"
date: 2018-05-02T00:00:00+00:00
anchor: "license"
weight: 40
weight: 30
---

This project is licensed under the [Apache 2.0](https://github.com/promhippie/prometheus-scw-sd/blob/master/LICENSE) license. For the license of the used libraries you have to check the respective sources.
6 changes: 0 additions & 6 deletions docs/content/usage.md

This file was deleted.

23 changes: 16 additions & 7 deletions docs/layouts/partials/style.html
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
<link rel="stylesheet" href="syntax.css" />

<style type="text/css">
body,
div,
Expand Down Expand Up @@ -148,13 +150,12 @@
color: #d54e21;
}

code,
cite {
background-color: #F0F2F4;
border-radius: 3px;
color: #000;
font: monospace;
padding: 2px 7px;
.highlight pre {
padding: 10px;
}

.highlight {
margin-bottom: 4%;
}

a {
Expand Down Expand Up @@ -212,6 +213,14 @@
column-gap: 20px;
}

dl dt {
font-weight: bold;
}

dl dd {
padding-left: 10px;
}

@media screen and (min-width: 500px) {
ul.col-2 {
-webkit-column-count: 3;
Expand Down
Binary file added docs/static/service-discovery.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
59 changes: 59 additions & 0 deletions docs/static/syntax.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
/* Background */ .chroma { color: #f8f8f2; background-color: #272822 }
/* Error */ .chroma .err { color: #960050; background-color: #1e0010 }
/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; width: auto; overflow: auto; display: block; }
/* LineHighlight */ .chroma .hl { display: block; width: 100%;background-color: #ffffcc }
/* LineNumbersTable */ .chroma .lnt { margin-right: 0.4em; padding: 0 0.4em 0 0.4em; }
/* LineNumbers */ .chroma .ln { margin-right: 0.4em; padding: 0 0.4em 0 0.4em; }
/* Keyword */ .chroma .k { color: #66d9ef }
/* KeywordConstant */ .chroma .kc { color: #66d9ef }
/* KeywordDeclaration */ .chroma .kd { color: #66d9ef }
/* KeywordNamespace */ .chroma .kn { color: #f92672 }
/* KeywordPseudo */ .chroma .kp { color: #66d9ef }
/* KeywordReserved */ .chroma .kr { color: #66d9ef }
/* KeywordType */ .chroma .kt { color: #66d9ef }
/* NameAttribute */ .chroma .na { color: #a6e22e }
/* NameClass */ .chroma .nc { color: #a6e22e }
/* NameConstant */ .chroma .no { color: #66d9ef }
/* NameDecorator */ .chroma .nd { color: #a6e22e }
/* NameException */ .chroma .ne { color: #a6e22e }
/* NameFunction */ .chroma .nf { color: #a6e22e }
/* NameOther */ .chroma .nx { color: #a6e22e }
/* NameTag */ .chroma .nt { color: #f92672 }
/* Literal */ .chroma .l { color: #ae81ff }
/* LiteralDate */ .chroma .ld { color: #e6db74 }
/* LiteralString */ .chroma .s { color: #e6db74 }
/* LiteralStringAffix */ .chroma .sa { color: #e6db74 }
/* LiteralStringBacktick */ .chroma .sb { color: #e6db74 }
/* LiteralStringChar */ .chroma .sc { color: #e6db74 }
/* LiteralStringDelimiter */ .chroma .dl { color: #e6db74 }
/* LiteralStringDoc */ .chroma .sd { color: #e6db74 }
/* LiteralStringDouble */ .chroma .s2 { color: #e6db74 }
/* LiteralStringEscape */ .chroma .se { color: #ae81ff }
/* LiteralStringHeredoc */ .chroma .sh { color: #e6db74 }
/* LiteralStringInterpol */ .chroma .si { color: #e6db74 }
/* LiteralStringOther */ .chroma .sx { color: #e6db74 }
/* LiteralStringRegex */ .chroma .sr { color: #e6db74 }
/* LiteralStringSingle */ .chroma .s1 { color: #e6db74 }
/* LiteralStringSymbol */ .chroma .ss { color: #e6db74 }
/* LiteralNumber */ .chroma .m { color: #ae81ff }
/* LiteralNumberBin */ .chroma .mb { color: #ae81ff }
/* LiteralNumberFloat */ .chroma .mf { color: #ae81ff }
/* LiteralNumberHex */ .chroma .mh { color: #ae81ff }
/* LiteralNumberInteger */ .chroma .mi { color: #ae81ff }
/* LiteralNumberIntegerLong */ .chroma .il { color: #ae81ff }
/* LiteralNumberOct */ .chroma .mo { color: #ae81ff }
/* Operator */ .chroma .o { color: #f92672 }
/* OperatorWord */ .chroma .ow { color: #f92672 }
/* Comment */ .chroma .c { color: #75715e }
/* CommentHashbang */ .chroma .ch { color: #75715e }
/* CommentMultiline */ .chroma .cm { color: #75715e }
/* CommentSingle */ .chroma .c1 { color: #75715e }
/* CommentSpecial */ .chroma .cs { color: #75715e }
/* CommentPreproc */ .chroma .cp { color: #75715e }
/* CommentPreprocFile */ .chroma .cpf { color: #75715e }
/* GenericDeleted */ .chroma .gd { color: #f92672 }
/* GenericEmph */ .chroma .ge { font-style: italic }
/* GenericInserted */ .chroma .gi { color: #a6e22e }
/* GenericStrong */ .chroma .gs { font-weight: bold }
/* GenericSubheading */ .chroma .gu { color: #75715e }