Commit 0ff6874d authored by k.elaammari's avatar k.elaammari
Browse files

moved project.

parents
#
.vagrant
.vscode
# Backup
/backup/*
!/backup/.keep
# Openssl data
/openssl/data
# Exclude Certificates and Keys (HTTPS)
/**/*.pem
\ No newline at end of file
# MonitoringSetup
## Einleitung
Mithilfe dieses Workflows können Sie mit Vagrant eine vollständige Monitoring-Infrastruktur aus den folgenden Komponenten, je auf einer virtuellen Maschine, idempotent erstellen.
* Grafana (Visualisierung, Graphen, Dashboards)
* Prometheus (Node-Metriken abgreifen und an DB weiterleiten)
* InfluxDB (Time-Series DB, Langzeitspeicher, Backup/Restore)
* Chronograf (Graphisches Interface zu InfluxDB)
* Node-Set (Beispielhafte zu überwachende Maschinen)
Es ist auf jeder dieser virtuellen Maschinen (VMs) der Prometehus-node-exporter für das Bereitstellen der zu erfassenden Metriken installiert.
Backup-mechanismus implementiert !
![overview](./docu/diagramme/overview.jpg)
## Voraussetzungen
Um diesen Workflow ausführen zu können müssen die folgenden Programme installiert sein:
* Vagrant (<https://www.vagrantup.com/>)
* VirtualBox(<https://www.virtualbox.org/>) oder ein anderer unterstützter Hypervisor
* Git (<https://git-scm.com/>)
Im Weiteren wird vorausgesetzt, dass Sie sich auf einem Linux basierten Betriebssystem befinden. Der Workflow funktioniert auch auf Windows, hierbei ist aber zu beachten, dass unter Windows standardmäßig Zeilenumbrüche mit CR & LF kodiert werden. Im Gegensatz zum einfachen LF Zeilenumbruch unter Linux. Da die Dateien mit dem File-Provisionierer übertragen werden, muss darauf geachtet werden, dass die Dateien mit einem einfachen LF gespeichert werden. In der Git-Konfiguration sollte demensprechend folgende Funktion abgeschaltet werden.
```$ git config --global core.autocrlf false```
Diese ist normalerweise unter Windows eingeschaltet und ersetzt beim auschecken ein LF mit einem CRLF.
## Getting started
Um direkt zu starten, kopieren Sie mit folgendem Befehl das Projekt auf ihren Rechner und anschließend wechseln Sie in das erstellte Verzeichnis.
```shell
#TODO zur Gitlab-Gruppe verschieben
git clone git@git.gsi.de:k.elaammari/monitorsetup.git
```
Bevor die VMs gestartet werden, müssen die nötigen X509-Zertifikate erzeugt werden. Hierfür führen Sie folgenden Befehl aus.
```shell
./scripts/openssl_generate.sh
```
Nachdem die Zertifikate erzeugt wurden, können die VMs gestartet werden.
```shell
vagrant up
```
Anschließen starten nacheinander Influx, Prometheus, Grafana und Chronograf. Die Nodes, dessen Metriken erfasst werden sollen, müssen explizit gestartet werden, entweder einzeln oder als Regex.
```shell
vagrant up {node-1 node-2 ... node-10 | /node-.*/}
```
In der hier mitgelieferten Konfiguration ist auf den Influx-, Prometheus-, Grafana- und Chronograf-VMs derselbe node-exporter installiert wie auf den Nodes, sodass der Start der Nodes optional ist.
## Überwachen der Maschinen
Nachdem die Maschinen gestartet und die Provisionierung korrekt ausgeführt wurde, können wir über die von Vagrant weitergeleiteten Ports direkt auf die Dienste zugreifen.
* https://127.0.0.1:3000 (Grafana)
* https://127.0.0.1:8888 (Chronograf)
* http://127.0.0.1:9090 (Prometheus)
Wenn auf ihrem Betriebssystem diese Ports schon in Verwendung sind, können Sie in der Vagrantfile eine andere Zuordnung konfigurieren.
Da die Dienste Grafana und Chronograf ein signiertes X509-Zertifikat besitzen, können Sie ihrem Browser das unter ```./openssl/data/certificates/cacert.pem``` gespeicherte Root-Zertifikat als Zertifizierungsstelle eintragen, um Warnungen und mögliche Zweifel beim Aufruf der Seiten zu vermeiden. Und mit folgendem Befehl können Sie die Fingerprints der erzeugen Zertifikate anzeigen lassen, um Sie beim Hinzufügen zu verifizieren.
```shell
./scripts/openssl_fingerprint.sh
```
## Backup- und Restore-Workflow
### Backup
Die InfluxDB ist durch einen Backup- und Restore-Mechanismus ausgestattet, mit dem wir die gesammelten Daten des Monitoringsystems extern speichern und zurück spielen können. In diesem Workflow wird Standardmäßig um 1 Uhr täglich ein Vollbackup ausgelöst, das separat zu den vorherigen Backups in einem Ordner mit Zeitstempel abgelegt wird. Konfigurieren können Sie den Timer mit der Datei: ```./provision/influx/config/backup.timer```. Wichtig zu beachten ist, dass das Backup in einen von VirtualBox geteilten Ordner zwischen VM ```/vagrant/backup``` und Projektverzeichnis ```./backup``` gespeichert wird! Wenn Ihr Hypervisor diese Funktion nicht unterstützt, müssen Sie die Backups von Hand aus der Influx-VM kopieren. Vagrant bietet hier alternativ Rsync oder SMB an.
Um ein manuelles Backup zu starten, führen Sie folgendes Skript aus.
```shell
./scripts/influx_backup.sh <PFAD>
```
Mit der <PFAD> Variable geben Sie den Ausgabepfad des Backups an. Dabei beschreibt der Pfad einen Speicherort innerhalb der VM.
### Restore
Um ein Backup in die InfluxDB wieder zurück zuspielen, benutzen Sie folgendes Skript.
```shell
./scripts/influx_restore.sh <PFAD>
```
Die <PFAD> Variable ist hierbei der Ordner indem sich die Backupdateien befinden. Sollte in Ihrer Influx-Instanz schon die Datenbank "prom" existieren, werden Sie gefragt ob Sie diese löschen wollen, um die "prom"-Datenbank aus dem Backup laden zu können. Diese Operation ist notwendig, da hier bei jedem Backup die vollständige Datenbank gesichert wird und dementsprechend eine vollständige Datenbank zurück gespielt wird.
Weitere Informationen und die Dokumentation finden Sie im Ordner ```./docu```.
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Variables
BOX = "generic/arch"
BOX_NODE = "debian/contrib-stretch64"
BOX_NODE_V = "9.9.1"
# Provision folder
FOLDER = "/home/vagrant/fileprovision"
#
CHRONOGRAF_GIT_URL = "https://aur.archlinux.org/chronograf-bin.git"
Vagrant.configure("2") do |config|
#influx
config.vm.define "flux", primary: true do |flux|
flux.vm.box = "#{BOX}"
# Network
flux.vm.network "private_network", ip: "10.0.0.98", auto_config: true
# influxdb port (API / RPC)
#flux.vm.network "forwarded_port", guest: 8086, host: 8086, host_ip: "127.0.0.1"
#flux.vm.network "forwarded_port", guest: 8088, host: 8088, host_ip: "127.0.0.1"
# Provision
flux.vm.provision "file", source: "provision/influx", destination: "#{FOLDER}"
flux.vm.provision "shell", inline: "rm -r -f /etc/pacman.d/gnupg"
flux.vm.provision "shell", inline: "pacman-key --init"
flux.vm.provision "shell", inline: "pacman-key --populate"
flux.vm.provision "shell", inline: "timedatectl set-timezone Europe/Berlin"
flux.vm.provision "shell", inline: "pacman -Syu --noconfirm"
flux.vm.provision "shell", inline: "pacman -S --noconfirm influxdb"
flux.vm.provision "shell", inline: "cp #{FOLDER}/config/influxdb.conf /etc/influxdb/influxdb.conf && chown influxdb:influxdb /etc/influxdb/influxdb.conf && chmod 440 /etc/influxdb/influxdb.conf"
flux.vm.provision "shell", inline: "mkdir -p /var/lib/influxdb/https && cp -a #{FOLDER}/https/* /var/lib/influxdb/https && chown -R influxdb:influxdb /var/lib/influxdb/https && chmod 440 /var/lib/influxdb/https/* && chmod 550 /var/lib/influxdb/https"
flux.vm.provision "shell", inline: "systemctl enable influxdb && systemctl restart influxdb"
flux.vm.provision "shell", path: "provision/influx/setup_queries.sh"
flux.vm.provision "shell", inline: "mkdir -p /var/lib/influxdb/backup && cp -a #{FOLDER}/backup/* /var/lib/influxdb/backup && cp -a #{FOLDER}/config/admin.pw /var/lib/influxdb/backup"
flux.vm.provision "shell", inline: "chown -R influxdb:influxdb /var/lib/influxdb/backup && chmod 550 /var/lib/influxdb/backup/* && chmod 550 /var/lib/influxdb/backup"
flux.vm.provision "shell", inline: "cp -a #{FOLDER}/config/admin.pw /var/lib/influxdb/backup"
flux.vm.provision "shell", inline: "cp -a #{FOLDER}/config/backup.* /etc/systemd/system/"
flux.vm.provision "shell", inline: "systemctl enable backup.timer && systemctl start backup.timer"
flux.vm.provision "shell", inline: "systemctl list-timers"
flux.vm.provision "shell", inline: "pacman -S --noconfirm prometheus-node-exporter"
flux.vm.provision "shell", inline: "systemctl enable prometheus-node-exporter && systemctl restart prometheus-node-exporter"
flux.vm.provision "shell", inline: "echo \"InfluxDB setup done. \""
flux.vm.provision "shell", inline: "rm -r -f #{FOLDER}"
# disable default sync folder
flux.vm.synced_folder ".", "/vagrant", disabled: true
# enable backup folder
flux.vm.synced_folder "backup", "/vagrant/backup"
end
# prometheus
config.vm.define "prom" do |prom|
prom.vm.box = "#{BOX}"
# Network
prom.vm.network "private_network", ip: "10.0.0.100", auto_config: true
prom.vm.network "forwarded_port", guest: 9090, host: 9090, host_ip: "127.0.0.1"
# Provision
prom.vm.provision "file", source: "provision/prometheus", destination: "#{FOLDER}"
prom.vm.provision "shell", inline: "rm -r -f /etc/pacman.d/gnupg"
prom.vm.provision "shell", inline: "pacman-key --init"
prom.vm.provision "shell", inline: "pacman-key --populate"
prom.vm.provision "shell", inline: "timedatectl set-timezone Europe/Berlin"
prom.vm.provision "shell", inline: "pacman -Syu --noconfirm"
prom.vm.provision "shell", inline: "pacman -S --noconfirm prometheus"
prom.vm.provision "shell", inline: "cp #{FOLDER}/config/prom.service /etc/systemd/system/prometheus.service"
prom.vm.provision "shell", inline: "cp #{FOLDER}/config/prom.yml /etc/prometheus/prometheus.yml && chown prometheus:prometheus /etc/prometheus/prometheus.yml && chmod 440 /etc/prometheus/prometheus.yml"
prom.vm.provision "shell", inline: "mkdir -p /var/lib/prometheus/https && cp -a #{FOLDER}/https/* /var/lib/prometheus/https && chown -R prometheus:prometheus /var/lib/prometheus/https && chmod 440 /var/lib/prometheus/https/* && chmod 550 /var/lib/prometheus/https"
prom.vm.provision "shell", inline: "systemctl daemon-reload && systemctl enable prometheus && systemctl restart prometheus"
prom.vm.provision "shell", inline: "pacman -S --noconfirm prometheus-node-exporter"
prom.vm.provision "shell", inline: "systemctl enable prometheus-node-exporter && systemctl restart prometheus-node-exporter"
prom.vm.provision "shell", inline: "echo \"Prometheus setup done. \""
prom.vm.provision "shell", inline: "rm -r -f #{FOLDER}"
# Disable default sync folder
prom.vm.synced_folder ".", "/vagrant", disabled: true
end
# grafana
config.vm.define "graf" do |graf|
graf.vm.box = "#{BOX}"
# Network
graf.vm.network "private_network", ip: "10.0.0.99", auto_config: true
graf.vm.network "forwarded_port", guest: 3000, host: 3000, host_ip: "127.0.0.1"
# Provision
graf.vm.provision "file", source: "provision/grafana", destination: "#{FOLDER}"
graf.vm.provision "shell", inline: "rm -r -f /etc/pacman.d/gnupg"
graf.vm.provision "shell", inline: "pacman-key --init"
graf.vm.provision "shell", inline: "pacman-key --populate"
graf.vm.provision "shell", inline: "timedatectl set-timezone Europe/Berlin"
graf.vm.provision "shell", inline: "pacman -Syu --noconfirm"
graf.vm.provision "shell", inline: "pacman -S --noconfirm grafana"
graf.vm.provision "shell", inline: "pacman -S --noconfirm jq"
graf.vm.provision "shell", inline: "cp #{FOLDER}/config/graf_conf.ini /etc/grafana.ini && chown grafana:grafana /etc/grafana.ini && chmod 440 /etc/grafana.ini"
graf.vm.provision "shell", inline: "mkdir -p /var/lib/grafana/https && cp -a #{FOLDER}/https/* /var/lib/grafana/https && chown -R grafana:grafana /var/lib/grafana/https && chmod 440 /var/lib/grafana/https/* && chmod 550 /var/lib/grafana/https"
graf.vm.provision "shell", inline: "systemctl enable grafana && systemctl restart grafana"
# grafana setup
graf.vm.provision "shell", path: "provision/grafana/setup_grafana.sh"
graf.vm.provision "shell", inline: "pacman -S --noconfirm prometheus-node-exporter"
graf.vm.provision "shell", inline: "systemctl enable prometheus-node-exporter && systemctl restart prometheus-node-exporter"
graf.vm.provision "shell", inline: "echo \"Grafana setup done. \""
graf.vm.provision "shell", inline: "rm -r -f #{FOLDER}"
# disable default sync folder
graf.vm.synced_folder ".", "/vagrant", disabled: true
end
#chronograf
config.vm.define "chron" do |chron|
chron.vm.box = "#{BOX}"
# Network
chron.vm.network "private_network", ip: "10.0.0.97", auto_config: true
chron.vm.network "forwarded_port", guest: 8888, host: 8888, host_ip: "127.0.0.1"
# Provision
chron.vm.provision "file", source: "provision/chronograf", destination: "#{FOLDER}"
chron.vm.provision "shell", inline: "rm -r -f /etc/pacman.d/gnupg"
chron.vm.provision "shell", inline: "pacman-key --init"
chron.vm.provision "shell", inline: "pacman-key --populate"
chron.vm.provision "shell", inline: "timedatectl set-timezone Europe/Berlin"
chron.vm.provision "shell", inline: "pacman -Syu --noconfirm"
chron.vm.provision "shell", inline: "pacman -S --noconfirm base-devel"
chron.vm.provision "shell", inline: "pacman -S --noconfirm git"
chron.vm.provision "shell", inline: "rm -r -f /home/vagrant/chron_git"
chron.vm.provision "shell", inline: "git clone #{CHRONOGRAF_GIT_URL} /home/vagrant/chron_git"
chron.vm.provision "shell", inline: "chown -R vagrant:vagrant /home/vagrant/chron_git"
chron.vm.provision "shell", inline: "su - vagrant -c \"cd /home/vagrant/chron_git && makepkg -s -i -f --noconfirm --needed\""
chron.vm.provision "shell", inline: "cp #{FOLDER}/config/chronograf.service /etc/systemd/system/chronograf.service"
chron.vm.provision "shell", inline: "mkdir -p /var/lib/chronograf/https && cp -a #{FOLDER}/https/* /var/lib/chronograf/https && chown -R chronograf:chronograf /var/lib/chronograf/https && chmod 440 /var/lib/chronograf/https/* && chmod 550 /var/lib/chronograf/https"
chron.vm.provision "shell", inline: "systemctl enable chronograf && systemctl restart chronograf"
chron.vm.provision "shell", inline: "pacman -S --noconfirm prometheus-node-exporter"
chron.vm.provision "shell", inline: "systemctl enable prometheus-node-exporter && systemctl restart prometheus-node-exporter"
chron.vm.provision "shell", inline: "echo \"Chronograf setup done. \""
chron.vm.provision "shell", inline: "rm -r -f #{FOLDER}"
# disable default sync folder
chron.vm.synced_folder ".", "/vagrant", disabled: true
end
# nodes
(1..10).each do |i|
config.vm.define "node-#{i}", autostart: false do |node|
node.vm.box = "#{BOX_NODE}"
node.vm.box_version = "#{BOX_NODE_V}"
# Network
node.vm.network "private_network", ip: "10.0.0.#{100+i}", auto_config: true
# Provision
node.vm.provision "file", source: "provision/node", destination: "#{FOLDER}"
node.vm.provision "shell", inline: "timedatectl set-timezone Europe/Berlin"
node.vm.provision "shell", inline: "apt-get update && apt-get upgrade -y"
node.vm.provision "shell", inline: "apt-get install -y prometheus-node-exporter"
node.vm.provision "shell", inline: "systemctl enable prometheus-node-exporter && systemctl restart prometheus-node-exporter"
node.vm.provision "shell", inline: "cp #{FOLDER}/config/stress.service /etc/systemd/system/stress.service"
node.vm.provision "shell", inline: "systemctl enable stress"
node.vm.provision "shell", inline: "echo \"Node setup done. \""
node.vm.provision "shell", inline: "rm -r -f #{FOLDER}"
# disable default sync folder
node.vm.synced_folder ".", "/vagrant", disabled: true
end
end
end
\ No newline at end of file
This folder will be required by the vagrantfile as shared folder for influxdb backup.
\ No newline at end of file
<mxfile etag="qbB1GBJ-iiHIN4BcDs8e" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0" host="www.draw.io" modified="2019-07-16T10:49:18.473Z" version="10.9.7" type="device"><diagram id="zBQ2PXJS8cmsuhDVz1bD" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
This diff is collapsed.
HOME = .
RANDFILE = $ENV::HOME/.rnd
####################################################################
[ req ]
default_bits = 2048
default_keyfile = serverkey.pem
distinguished_name = server_distinguished_name
req_extensions = server_req_extensions
string_mask = utf8only
####################################################################
[ server_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = DE
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = Hessen
localityName = Locality Name (eg, city)
localityName_default = Darmstadt
organizationName = Organization Name (eg, company)
organizationName_default = A
commonName = Common Name (e.g. server FQDN or YOUR name)
commonName_default = Chronograf
emailAddress = Email Address
emailAddress_default = monitoring@setup.de
####################################################################
[ server_req_extensions ]
subjectKeyIdentifier = hash
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment
subjectAltName = @alternate_names
nsComment = "OpenSSL Generated Certificate"
####################################################################
[ alternate_names ]
DNS.1 = localhost
# IPv4 localhost
IP.1 = 127.0.0.1
IP.2 = 10.0.0.97
# IPv6 localhost
IP.4 = ::1
\ No newline at end of file
HOME = .
RANDFILE = $ENV::HOME/.rnd
####################################################################
[ req ]
default_bits = 2048
default_keyfile = serverkey.pem
distinguished_name = server_distinguished_name
req_extensions = server_req_extensions
string_mask = utf8only
####################################################################
[ server_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = DE
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = Hessen
localityName = Locality Name (eg, city)
localityName_default = Darmstadt
organizationName = Organization Name (eg, company)
organizationName_default = A
commonName = Common Name (e.g. server FQDN or YOUR name)
commonName_default = Grafana
emailAddress = Email Address
emailAddress_default = monitoring@setup.de
####################################################################
[ server_req_extensions ]
subjectKeyIdentifier = hash
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment
subjectAltName = @alternate_names
nsComment = "OpenSSL Generated Certificate"
####################################################################
[ alternate_names ]
DNS.1 = localhost
# IPv4 localhost
IP.1 = 127.0.0.1
IP.2 = 10.0.0.99
# IPv6 localhost
IP.4 = ::1
\ No newline at end of file
HOME = .
RANDFILE = $ENV::HOME/.rnd
####################################################################
[ req ]
default_bits = 4096
default_keyfile = influxkey.pem
distinguished_name = server_distinguished_name
req_extensions = server_req_extensions
string_mask = utf8only
####################################################################
[ server_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = DE
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = Hessen
localityName = Locality Name (eg, city)
localityName_default = Darmstadt
organizationName = Organization Name (eg, company)
organizationName_default = A
commonName = Common Name (e.g. server FQDN or YOUR name)
commonName_default = InfluxDB
emailAddress = Email Address
emailAddress_default = monitoring@setup.de
####################################################################
[ server_req_extensions ]
subjectKeyIdentifier = hash
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment
subjectAltName = @alternate_names
nsComment = "OpenSSL Generated Certificate"
####################################################################
[ alternate_names ]
DNS.1 = localhost
# IPv4 localhost
IP.1 = 127.0.0.1
IP.2 = 10.0.0.98
# IPv6 localhost
IP.4 = ::1
\ No newline at end of file
HOME = .
RANDFILE = $ENV::HOME/.rnd
####################################################################
[ ca ]
default_ca = CA_default # The default ca section
[ CA_default ]
default_days = 1000 # How long to certify for
default_crl_days = 30 # How long before next CRL
default_md = sha256 # Use public key default MD
preserve = no # Keep passed DN ordering
x509_extensions = ca_extensions # The extensions to add to the cert
email_in_dn = no # Don't concat the email in the DN
copy_extensions = copy # Required to copy SANs from CSR to cert
base_dir = .
certificate = $base_dir/cacert.pem # The CA certifcate
private_key = $base_dir/cakey.pem # The CA private key
new_certs_dir = $base_dir # Location for new certs after signing
database = $base_dir/index.txt # Database index file
serial = $base_dir/serial.txt # The current serial number
unique_subject = no # 'no' to allow creation of several c. with same subject.
####################################################################
[ req ]
default_bits = 4096
default_keyfile = cakey.pem
distinguished_name = ca_distinguished_name
x509_extensions = ca_extensions
string_mask = utf8only
####################################################################
[ ca_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = DE
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = Hessen
localityName = Locality Name (eg, city)
localityName_default = Darmstadt
organizationName = Organization Name (eg, company)
organizationName_default = A
organizationalUnitName = Organizational Unit (eg, division)
organizationalUnitName_default = Monitor
commonName = Common Name (e.g. server FQDN or YOUR name)
commonName_default = Monitor-Root-CA
emailAddress = Email Address
emailAddress_default = monitoring@setup.com
####################################################################
[ ca_extensions ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always, issuer
basicConstraints = critical, CA:true
keyUsage = keyCertSign, cRLSign
####################################################################
[ signing_policy ]
countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
####################################################################
[ signing_req ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment
\ No newline at end of file
# If you modify this, please also make sure to edit init.sh
[Unit]
Description=Open source monitoring and visualization UI for the entire TICK stack.
Documentation="https://www.influxdata.com/time-series-platform/chronograf/"
After=network-online.target
[Service]
User=chronograf
Group=chronograf
Environment="HOST=0.0.0.0"
Environment="PORT=8888"
Environment="BOLT_PATH=/var/lib/chronograf/chronograf-v1.db"
Environment="CANNED_PATH=/usr/share/chronograf/canned"
Environment="PROTOBOARDS_PATH=/usr/share/chronograf/protoboards"
Environment="TLS_CERTIFICATE=/var/lib/chronograf/https/chronografcert.pem"
Environment="TLS_PRIVATE_KEY=/var/lib/chronograf/https/chronografkey.pem"
EnvironmentFile=-/etc/default/chronograf
ExecStart=/usr/bin/chronograf $CHRONOGRAF_OPTS
KillMode=control-group
Restart=on-failure
[Install]
WantedBy=multi-user.target
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
{
"name": "InfluxDB",
"type": "influxdb",
"url": "https://10.0.0.98:8086",
"access": "proxy",
"isDefault": true,
"basicAuth": false,
"database": "prom",
"user": "admin",
"password": "longpassword",
"jsonData": {
"httpMode": "POST",
"keepCookies": [],
"timeInterval": "10s",
"tlsAuthWithCACert": true
},
"secureJsonData": {
"tlsCACert": ""
}
}
{
"name":"promeheus",
"type":"prometheus",
"url":"http://10.0.0.100:9090",
"access":"proxy",
"basicAuth":false
}
\ No newline at end of file
##################### Grafana Configuration Example #####################
#