---
categories: ['Introduction','Monitoring']
date: 2022-11-24T07:07:42+01:00
description: "Guide de démarrage : Introduction à influxdb sur OpenBSD"
draft: false
include_toc: true
show_comments: false
tags: ['Introduction','Monitor','influxdb']
title: "Influxdb : Introduction (OpenBSD)"
translationKey: 'intro-influxdb-openbsd'
---
## Introduction
**Get'in Start: `#!/bin/introduction`**
**influxdb** est une base de données de séries temporelles. Elle s'utilise
en complément de logiciels tiers, tels des services collectant des métriques
systèmes et applications, à intervalles réguliers (**telegraf**, **collectd**)
ainsi que des logiciels générant des graphes personnalisés par le biais
de requêtes sur la base de données (**Grafana**, …)
## Installation
Sous OpenBSD ≤ 7.3, **influxdb** est disponible en tant que paquet,
dans sa version **1.x**.
Un groupe `_influx` et un utilisateur `_influx` sont créés.
## Vérification de démarrage
⇒ Après avoir démarré le service **`influxdb`**, il est possible de vérifier
le bon fonctionnement de la base de données.
Deux manières :
1. En requêtant directement la base de données :
```sh
$ influx
Connected to http://localhost:8086 version unknown
InfluxDB shell version: unknown
> show databases
name: databases
name
----
_internal
```
2. En utilisant l'outil **curl** pour tester une réponse locale par requête
HTTP :
```sh
$ curl -G http://localhost:8086/query --data-urlencode "q=SHOW DATABASES"
{"results":[{"statement_id":0,"series":[{"name":"databases","columns":["name"],"values":[["_internal"]]}]}]}
```
Dans les deux cas, si vous avez le même résultat, c'est tout bon !
## Configuration
Le fichier de configuration : `/etc/influxdb/influxdb.conf`
### Utilisateur admin
Avant de toucher au fichier de configuration, **créons un premier utilisateur**
administrateur :
```sh
$ doas influx
Connected to http://localhost:8086 version unknown
InfluxDB shell version: unknown
> CREATE USER admin WITH PASSWORD 'password' WITH ALL PRIVILEGES
> SHOW USERS
user admin
---- -----
admin true
> QUIT
```
- Ici, le nom de l'utilisateur est *`admin`* avec des droits d'administrateur.
- *`password`* est pour l'exemple…
La prochaine connexion à la base de données nécessitera d'utiliser le compte
administrateur.
Là, encore deux manières de faire :
1. connexion puis utilisation de la commande `auth` :
```sh
$ influx
Connected to http://localhost:8086 version unknown
InfluxDB shell version: unknown
> auth
username: admin
password:
> *n instructions*
> QUIT
```
2. connexion en précisant directement le nom de l'utilisateur en argument :
```sh
$ influx -username admin -password ''
password:
Connected to http://localhost:8086 version unknown
InfluxDB shell version: unknown
> quit
```
*(en réalité, il existe d'autres manières de faire…)*
Si c'est bon dans les deux cas, c'est tout bon !
À partir de maintenant, la base de données n'est pas ouverte à tout le monde.
### Authentification HTTP
Pour activer l'authentification HTTP, il faut modifier le fichier de configuration.
Aller à la section `[http]` puis décommenter à minima les variables suivantes :
- `enabled = true`
- `auth-enabled = true`
```cfg
[http]
# Determines whether HTTP endpoint is enabled.
enabled = true
# Determines whether the Flux query endpoint is enabled.
# flux-enabled = false
# Determines whether the Flux query logging is enabled.
# flux-log-enabled = false
# The bind address used by the HTTP service.
bind-address = ":8086"
# Determines whether user authentication is enabled over HTTP/HTTPS.
auth-enabled = true
(…)
```
Puis **redémarrer** le service…
---
Testons à nouveau une requête HTTP :
```sh
$ curl -G http://localhost:8086/query --data-urlencode "q=SHOW DATABASES"
{"error":"unable to parse authentication credentials"}
```
Puisqu'il demande une authentification, utilisons curl en précisant l'utilisateur :
```sh
$ curl -G http://localhost:8086/query -u admin -p '' --data-urlencode "q=SHOW DATABASES"
Enter host password for user 'admin':
{"results":[{"statement_id":0,"series":[{"name":"databases","columns":["name"],"values":[["_internal"]]}]}]}
```
Après avoir entré le bon mot-de-passe, la requête pour voir les bases de
données aboutit bien.
Si c'est le cas, nous avons réussi le principal : installer influxdb, faire
une configuration de base fonctionnelle. Voilà.
### HTTPS
Maintenant, allons plus loin, pour utiliser le protocole HTTPS qui permettra
de sécuriser la connexion avec les autres services, d'autant si ceux-ci
sont à distance.
#### Création des certificats
{{}}
Dans ce contexte tutoriel, nous utilisons des certificats auto-signés.
En conséquence, ils ne sont pas certifiés par une Autorité de Certification.
Pas besoin de passer par cette étape, si vous utiliser une AC ; il suffit
de renseigner le chemin absolu vers les certificats générés par l'AC.
Dans ce cas, allez directement à la partie de la configuration correspondante
à la section `[http]`.
{{}}
Ici, nous utilisons l'outil **`certtool`** :
```sh
$ apropos certtool
certtool(1) - GnuTLS certificate tool
```
Si le paquet **gnutls** n'est pas installé, faites-le.
---
Puis avec des droits administrateurs, allez dans `/etc/ssl`, créer un
répertoire `influxdb` dans lequel faire les opérations suivantes :
```sh
# mkdir -p /etc/ssl/influxdb
# cd /etc/ssl/influxdb
```
⇒ Création de la clé privée
```sh
# certtool -p --hash SHA3-256 --sec-param ULTRA --outfile $(hostname).priv.k.pem
```
⇒ puis création de la clé publique :
```sh
# certtool -s --load-privkey $(hostname).priv.k.pem --outfile $(hostname).cert.pem
```
qui vous posera plein de questions concernant l'identification, raison
sociale et le but de ce certificat.
{{}}
Lors de la génération du certificat publique, il vous a été demandé
une période en nombre de jours de validité. Faites-vous un mémo, selon
la périodicité, pour vous générer une nouvelle clé publique, si besoin,
avant la fin de ladite période. Autrement votre service par HTTPS
deviendrait indisponible à date échue.
{{}}
⇒ modifions les droits utilisateurs :
```sh
# chown _influx:_influx *.pem
```
---
Ceci étant fait, retournons modifier le fichier de configuration, à nouveau
à la section `[http]`, mais cette fois-ci pour modifier les valeurs suivantes :
- `https-enabled = true`
- `https-certificate = "/etc/ssl/influxdb/votre-nom-hote.cert.pem"`
- `https-private-key = "/etc/ssl/influxdb/votre-nom-hote.priv.k.pem"`
```cfg
(…)
# Determines whether HTTPS is enabled.
https-enabled = true
# The SSL certificate to use when HTTPS is enabled.
https-certificate = "/etc/ssl/influxdb/votre-nom-hote.cert.pem"
# Use a separate private key location.
https-private-key = "/etc/ssl/influxdb/votre-nom-hote.priv.k.pem"
(…)
```
⇒ Relancer le service !
---
Testons la connexion :
```sh
$ influx -ssl -unsafeSsl -username admin -password ''
password:
Connected to https://localhost:8086 version unknown
InfluxDB shell version: unknown
> SHOW DATABASES
name: databases
name
----
_internal
> SHOW USERS
user admin
---- -----
admin true
> QUIT
$ curl -G https://localhost:8086/query -k -u admin -p '' --data-urlencode "q=SHOW DATABASES"
Enter host password for user 'admin':
{"results":[{"statement_id":0,"series":[{"name":"databases","columns":["name"],"values":[["_internal"]]}]}]}
```
Remarquez l'utilisation de l'option `-k`, sans elle, étant donné ce
contexte d'utilisation de certificats auto-signés, curl refuserait de se
connecter avec le message d'erreur suivant :
`curl: (60) SSL certificate problem: unable to get local issuer certificate`
### Journalisation HTTP
Par défaut, la journalisation des traces HTTP(S) se fait dans le moteur
interne de journalisation d'influxdb et sera visible dans le log 'daemon'.
Il est possible de changer ce comportement pour avoir le suivi HTTP(S)
au sein d'un fichier dédié. Toujours dans la section `[http]`, modifiez
la variable `access-log-path`.
Avant de redémarrer le service, créer impérativement le répertoire dans
lequel influxdb écrira le fichier log et donnez lui les droits systèmes
liés, tel que :
```sh
# mkdir -p /var/log/influxdb/
# chown _influx:_influx /var/log/influxdb/
```
Puis pour la configuration :
```cfg
access-log-path = "/var/log/influxdb/access.log"
```
Pour finir, pensez à modifier le fichier `/etc/newsyslog.conf` pour ajouter
une ligne, telle que :
```cfg
/var/log/influxdb/access.log _influx:_influx 644 7 * * Z
```
---
## EOD
***End of Documentation***
Voilà. Maintenant, influxdb est prêt pour une utilisation interne et
n'attend plus qu'à être configurer pour discuter avec tout plein d'autres
services…
---
## Dépannage
### curl
curl se plaint… et me casse les pieds, par la même occasion.
Voici quelques pistes face à certaines erreurs :
#### curl: (35) error:1400442E:SSL routines:CONNECT_CR_SRVR_HELLO:tlsv1 alert protocol version
Êtes-vous sûr d'avoir activer l'option `https-enabled` dans la section `[http]` ?
Vérifiez !
#### curl: (60) SSL certificate problem: unable to get local issuer certificate
Comme le contexte d'utilisation décrit dans ce guide de démarrage, vous
avez généré vos propres certificats sans utiliser d'Autorité de Certification.
Ajoutez l'option `-k` !
### influxdb
#### unable to open access log, falling back to stderr
Le message d'erreur dans le log daemon est du type :
`lvl=error msg="unable to open access log, falling back to stderr" log_id=0eMCqvRl000 service=httpd error="open /var/log/influxdb/: is a directory" path=/var/log/influxdb/`
Le chemin spécifié dans la variable `access-log-path` est soit inexistant,
soit influxdb n'a pas les droits systèmes pour y accéder.
Vérifiez !
---
## Documentation
- https://docs.influxdata.com/influxdb/v1.8/administration/config/
- https://docs.influxdata.com/influxdb/v1.8/administration/authentication_and_authorization/
---