Maison  >  Article  >  Opération et maintenance  >  Une lecture incontournable pour la surveillance de l'exploitation et de la maintenance : un guide d'utilisation InfluxDB incontournable qui peut être utilisé aux moments critiques

Une lecture incontournable pour la surveillance de l'exploitation et de la maintenance : un guide d'utilisation InfluxDB incontournable qui peut être utilisé aux moments critiques

WBOY
WBOYavant
2023-06-09 13:40:491619parcourir

​Qu'est-ce qu'InfluxDB

InfluxDB est une base de données séquentielle open source développée par InfluxData. Il est écrit en Go et se concentre sur les requêtes et le stockage hautes performances des données de séries chronologiques. InfluxDB est largement utilisé dans des scénarios tels que la surveillance des données des systèmes de stockage et des données en temps réel dans l'industrie de l'IoT. Les fonctionnalités techniques incluent :

  • InfluxDB utilise pleinement les caractéristiques du langage Go dans l'implémentation technique et peut être déployé indépendamment sans aucune dépendance externe [5].
  • InfluxDB fournit un langage de requête similaire à SQL et une série de fonctions intégrées pour permettre aux utilisateurs d'interroger des données.
  • Les données stockées dans InfluxDB sont logiquement composées d'une mesure, d'un groupe de balises, d'un groupe de champs et d'un horodatage :

Mesure : représentée par une chaîne La signification correspondante de chaque enregistrement. Par exemple, il peut s'agir de données de surveillance cpu_load​ ou de données de mesure Average_temperature

tag group : il se compose d'un ensemble de paires clé-valeur, qui représente une série d'informations d'attribut de l'enregistrement. Les mêmes données de mesure n'ont pas nécessairement le même groupe de balises et sont sans schéma. Les informations sur les balises sont indexées par défaut.

Groupe de champs : Il est également composé d'un ensemble de paires clé-valeur, qui représentent les informations de valeur spécifiques (avec le nom) de l'enregistrement. Les types de valeurs définissables dans le groupe de champs incluent : entier 64 bits, virgule flottante 64 bits, chaîne et booléen. Les informations sur les champs ne peuvent pas être indexées.

Horodatage : C'est l'attribut temporel de l'enregistrement. Si l'horodatage n'est pas explicitement spécifié lors de l'insertion des données, l'horodatage stocké dans la base de données par défaut sera l'heure d'entrée de l'enregistrement.

InfluxDB prend en charge l'insertion et les requêtes de données basées sur HTTP. Il accepte également les connexions directement basées sur les protocoles TCP ou UDP.

InfluxDB permet aux utilisateurs de définir des politiques de conservation des données (politiques de rétention) pour supprimer ou sous-échantillonner les données stockées pendant plus d'une période de temps spécifiée.

Opérations d'ajout, de suppression, de modification et de vérification

Entrez la ligne de commande influxDB

influx -precision rfc3339

Opération de base de données InfluxDB

    # 🎜🎜#Afficher la base de données
  • show databases
    Nouvelle base de données
  • create database shhnwangjian
    Supprimer la base de données
  • #🎜 🎜 #
    drop database shhnwangjian
    #🎜🎜 #
  • Utiliser la base de données spécifiée
    use shhnwangjian
  • Opération de table de données InfluxDB
Dans InfluxDB, il n'y a pas de notion de table (table ), remplacé par MEASUREMENTS , les fonctions de MEASUREMENTS sont cohérentes avec les tables des bases de données traditionnelles, on peut donc également appeler MEASUREMENTS une table dans InfluxDB.

• Afficher toutes les tables

SHOW MEASUREMENTS

• Créer une nouvelle table

Il n'y a pas d'instruction explicite pour créer une nouvelle table dans InfluxDB, vous pouvez seulement insérez des données pour créer une nouvelle table.

insert disk_free,hostname=server01 value=442221834240i
insert cpu_virtual_used_num,host=1 value=41556593150

où disk_free​ est le nom de la table, le nom d'hôte​ est l'index (balise), value=xx est la valeur de l'enregistrement (champ), il peut y avoir plusieurs valeurs d'enregistrement et le système est livré avec des timestamps#🎜🎜 #

Ou lors de l'ajout de données, écrivez vous-même l'horodatage

insert disk_free,hostname=server01 value=442221834240i 1435362189575692182

• Supprimer le tableau

drop measurement disk_free

Politiques de conservation des données (Politiques de rétention)

#🎜🎜 #influxDB ne fournit pas de méthode pour supprimer directement les enregistrements de données, mais il fournit une stratégie de conservation des données, qui est principalement utilisée pour spécifier la durée de conservation des données. Si la durée spécifiée est dépassée, cette partie des données sera supprimée. .

Afficher les politiques de rétention de la base de données actuelle

show retention policies on "db_name"
show retention policies on cdhnm

    Créer de nouvelles politiques de rétention
  • create retention policy "rp_name" on "db_name" duration 3w replication 1 default
    create retention policy test on cdhnm duration 1h replication 1 default
    #🎜 🎜 #rp_name : Nom de la politique ;
    db_name : Nom de la base de données spécifique
  • 3w : Enregistrer pendant 3 semaines, les données avant 3 semaines seront supprimées, influxdb a divers paramètres d'événements, tels que comme : h (heure), d (jour), w (semaine) ; réplication 1 : nombre de copies, généralement 1 suffit

default : défini comme politique par défaut#🎜🎜 ##🎜 ; 🎜#

Modifier les politiques de rétention

alter retention policy “rp_name” on “db_name” duration 30d default
alter retention policy autogen on cdhnm duration 1h default

Modifier la politique de données

alter retention policy autogen on cdhnm duration 0h replication 1 default
  • Supprimer les politiques de rétention# 🎜🎜#
  • drop retention policy “rp_name” on “db_name"
    drop retention policy test on cdhnm
Requête de données
    select * fromcpu_virtual_used_num
  • Insérer des données
Insérer des données lors de la création d'un tableau
    insert disk_free,hostname=server01 value=442221834240i
    insert cpu_virtual_used_num,host=470b14f0-e869-43ed-a8e6-fd634258271f,hostname=server01 value=0.3 1557023160
  • Supprimer des données
influxDB ne fournit pas de méthode pour supprimer directement les enregistrements de données, mais il fournit une stratégie de conservation des données, qui est principalement utilisée pour spécifier la durée de conservation des données. Si la durée spécifiée est dépassée, cette partie du. les données seront supprimées. Créez une nouvelle politique d'expiration de base de données pour les clés d'au moins une heure à partir de cluster_metric

Problème de fuseau horaire

Lors de l'utilisation d'InfluxDB, j'ai constaté que, parce qu'InfluxDB utilise l'heure UTC, les problèmes de fuseau horaire sont souvent rencontré lors des requêtes

# 🎜🎜#1. Format de l'heure

InfluxDB En plus de prendre en charge epoch_time, il prend également en charge rfc3339_date_time_string et rfc3339_like_date_time_string.

epoch_time

Certaines explications théoriques sont le temps qui s'est écoulé depuis le Temps Universel Coordonné (jeudi 1er janvier 1970). Par exemple, ce que nous obtenons en utilisant System.currentTimeMillis() dans un programme Java est cette fois-ci. Généralement, il s'agit d'une précision de niveau milliseconde (ms), c'est-à-dire de type Long de 13 bits. Dans InfluxDB, la précision des horodatages peut atteindre le niveau de la nanoseconde (ns), qui est de type Long 19 bits.

rfc3339_date_time_string

rfc3339时间格式是ietf协会定义的一种时间格式,这个名字是因为它被定义在rfc3339中。感兴趣的同学可以自己查看上面的连接。InfluxDB中rfc3339的时间格式是这样的:

‘YYYY-MM-DDTHH:MM:SS.nnnnnnnnnZ’

其中nnnnnnnnn是可选的,如果不写则会被设置为000000000。注意,如果使用这种时间格式,需要使用单括号(’)将时间括起来。

rfc3339_like_date_time_string

因为rfc3339_date_time_string的格式确实比较反人类,所以InfluxDB也支持这种人类阅读更友好的格式:

‘YYYY-MM-DD HH:MM:SS.nnnnnnnnn’

其中HH:MM:SS.nnnnnnnnn是可选的,如果不填写会被设置为00:00:00.000000000。所以查询时可以设置到天、小时、分钟、秒等不同精度。这种时间格式同样要求被单括号括起来。

2、调整时间戳精度

InfluxDB默认东时间是纳秒(ns),即19位时间戳。但是一般情况下时间精度不会这么高。所以如果使用秒级精度查询:

select * from cpu_virtual_used_num where time >= 1435333209s and time <= 1542964713s

如果使用毫秒级精度查询:

select * from cpu_virtual_used_num where time >= 1435333209000ms and time <= 1542964714000ms

3、调整时区

如果需要使用北京时间(东八区),可以在SQL中使用tc关键字:

select * from cpu_virtual_used_num where time >= '2018-11-23 14:30:39' and time <= '2019-11-23 14:32:32' tz('Asia/Shanghai')

4、UTC时间与Beijing时间转换

Timestamp时间列

既然是时间序列数据库,influxdb 的数据都有一列名为 time 的列,里面存储 UTC 时间戳。

Influxdb 时间转成北京时间:UTC time + 8 hours = Beijing time

sql语句

influx -precision rfc3339 
show retention policies on cdhnm
alter retention policy autogen on cdhnm duration 1h default
create retention policy test on cdhnm duration 1h replication 1 default
drop retention policy test on cdhnm 
insert cpu_virtual_used_num,host=470b14f0-e869-43ed-a8e6-fd634258271f,hostname=server01 value=0.9 1557045292000000000
select * from cpu_virtual_used_num where time >= '2018-11-23 14:30:39' and time <= '2019-11-23 14:32:32' tz('Asia/Shanghai')
delete from cpu_virtual_used_num

启动服务

切换到root用户
命令:su
输入密码:123456

启动:

sudo service influxdb start

重启:

service influxdb restart

切换到普通用户:

命令:exit

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer