Envoyer du Json dans Elastic Stack

Bonjour tout le monde,

J´ai connecter Kafka à Elastic Stack, mon probleme est que je ne peux pas envoyer du Json mais seulement seulement des données String ou des nombres. Si je veux envoyer un Json, je suis obligé de le mettre entre cote ( '{​"ID:" 1, ​"timestamp:" 5.1 ,​ “temperature:” 25.01,“AxAyAz:" ​1.5, “RollPitchYaw:" 5.5,​ “RotXRotYRotZ:" 1.6}').

si j´envoie le Json sans cote, chacque attribut devient un message. Exemple: l´ID devient un message, le Timestamp devient un autre message etc.

J´ai ce resultat sur Kibana avec le Point d´interrogation (?)

Table

message �{​"ID:" 1, ​"timestamp:" 5.1.20 ,​ e“temperature:” 25.01,“AxAyAz:" ​1.5, “RollPitchYaw:" 5.5,​ “RotXRotYRotZ:" 1.6}

JSON
* *"message": "\u0000\u0000\u0000\u0000\u0002�\u0002{​\"ID:\" 1, ​\"timestamp:\" 5.1.20 ,​ e“temperature:” 25.01,“AxAyAz:\" ​1.5, “RollPitchYaw:\" 5.5,​ “RotXRotYRotZ:\" 1.6}"* *

Je n´ai pas beaucoup d´experience sur Elastic

Qu´est ce que je peux faire pour avoir le Json qui nest pas disloqué quand j´envoie le Json sans cote?

Merci pour votre aide

Je n'ai aucune idée de ce qui se passe, ne connaissant pas Kafka et ne comprenant pas trop ce que tu décris.

Le caractère semble indiquer un problème d'encodage. Elasticsearch ne comprend que l'UTF-8.

Je vous remercie

C´est deja une bonne piste de savoir que c´est un probleme d´encodage et que Elasticsearch ne comprend que l´UTF-8.

Peut- que quelqu´un d´autre a une autre idée pourquoi j´ai un probleme pour envoyer des JSon.

Y´a t-il des étapes indispensables à faire dans Elasticsearch avant d´envoyer un json?

Merci pour votre aide

Il faudrait que tu dises exactement comment tu fais. Ce que tu utilises, la configuration....

J´envoie les données par MQTT:

MQTT -> KAFKA -> LOGSTASH -> ELASTICSEARCH -> KIBANA

Et le JSon que j´envoie est : {​"ID:" 1, ​"timestamp:" 5.1.20 ,​ e“temperature:” 25.01,“AxAyAz:" ​1.5, “RollPitchYaw:" 5.5,​ “RotXRotYRotZ:" 1.6}

Et si je l´envoie sans cote ('') c´est a dire {​"ID:" 1, ​"timestamp:" 5.1.20 ,​ e“temperature:” 25.01,“AxAyAz:" ​1.5, “RollPitchYaw:" 5.5,​ “RotXRotYRotZ:" 1.6} , il se dissloque: ID: 1 devient un message, Timestamp devient un autre... alors que tout le JSon est un seul message.

Maintenant si Je mets le JSon entre cote '' comme ceux-ci: '{​"ID:" 1, ​"timestamp:" 5.1.20 ,​ e“temperature:” 25.01,“AxAyAz:" ​1.5, “RollPitchYaw:" 5.5,​ “RotXRotYRotZ:" 1.6}'

J´ai ce resultat sur Kibana avec le Point d´interrogation (?)

Table

message �{​"ID:" 1, ​"timestamp:" 5.1.20 ,​ e“temperature:” 25.01,“AxAyAz:" ​1.5, “RollPitchYaw:" 5.5,​ “RotXRotYRotZ:" 1.6}

JSON
* *"message": "\u0000\u0000\u0000\u0000\u0002�\u0002{​\"ID:\" 1, ​\"timestamp:\" 5.1.20 ,​ e“temperature:” 25.01,“AxAyAz:\" ​1.5, “RollPitchYaw:\" 5.5,​ “RotXRotYRotZ:\" 1.6}"* *

Peut-etre que je suis plus claire maintenant. Merci pour votre aide

Que tu envoies d'où à où ?

Merci pour votre réponse.

Je fais un Mosquitto Pub du Json dans Apache Kafka et j´ai connecter Kafka a Elasticsearch via Logstash et je visalize avec Kibana.

Voici le Json que j´envoie dans Kafka: {​"ID:" 1,
​"timestamp:" 5.1.20 ,
​ “temperature:” 25.01,
“AxAyAz:" ​1.5,
“RollPitchYaw:" 5.5,​
“RotXRotYRotZ:" 1.6}

merci

Je parviens a voir les resultat dans Kibana mais j´ai un probleme d´affichage ou de mapping peut etre car je ne connais pas bien Elastic.

Comme Je lai dit si j´envoie un nombre un String ca s´affiche bien mais si cest un Json ca saffiche mal.

Merci

Ya til des configuration a faire avant d´envoyer un json sur Elasticsearch?

Peux -tu nous montrer ton file de conf logstash ?

Je vous envoie le conf Logstash

input{

kafka{
bootstrap_servers => "localhost:9092"
topics => ["mqtt.imu"]
codec =>"json"
}
}

output{
stdout{
codec =>"json"
}

elasticsearch{
hosts => ["localhost:9200"]
index => "mqtt.imu"
}
}

merci

Bonjour a tous
je vous envoie les donnees

J´aimerai afficher sur l´axe X les time et sur l´axe Y un des attributs de message. Exemple: roll ou nick ou gier ou a_x.

Ma question est la suivant: comment pourrais-je faire pour afficher un element du message dans l´axe des ordonnees ? comme par exemple roll.

Merci pour votre aide

Bonjour tout le monde,

Je vous envoie un Json. J´aimerai creer une visualisation en utilsant pas count dans l´axe y mais plutot un attribut du message comme par exemple: "roll":-14.76143,"nick":-13.77841,"gier":-14.76143, ...

Est-til possible de visualiser un seul attribut du message (exemple: nick)?

image

Merci pour votre réponse

Cordialement
Gerard

  1. Le parsing de ton messgae json est echoué. (tags : jsonparsefailure).
    => faut deja que tu resous ce petit probleme.

=> OUI
voici un lien qui pourrait t'aider : https://www.elastic.co/guide/en/kibana/6.8/createvis.html

Bonjour,

votre intervention m´a donné plusieurs piste mais j´ai pas pu depuis hier trouver une solution pour le l´echec du parsing du message.

1- J´ai modifier ma logstash config file en changeant le Codec en Plain, ensuite en Rudydebug mais le (tags : jsonparsefailure) est toujours là.

Quelqu´un sait comment je peux résoudre ce Probleme?

2- Aussi J´arrive a afficher les données que j´ai

{"id":"IMU1","T_m":"2020-06-23T11:16:46.622+02:00","tmp":28.69412,"roll":-4.301277,"nick":-0.572266,"gier":-4.301277,"a_x":0.173512,"a_y":-0.092658,"a_z":-9.605276}

Le probleme est que je veux avoir un des attributs du message par exemple roll oubien nick dans l´axe des ordonnées (y) au lieu d´avoir count ou autre agrégation. comment puis le faire car tout les tutoss que j´ai regardé utilisent toujours l´agregation (soit count, average ...)

Merci

Oui mais des lors que le parsing de ton message n'est pas fait, tu n'auras pas les cités.
Règles déjà le problème de jsonparsefaillure. ( je sais pas comment tu indexes tes donnes)
Essaies de partir sur un exemple simple et aller petit à petit.

C'est plutôt codec => json sans " "

je vais vous renvoyez mon logstash peut etre ca pourra aider.

input{

kafka{
bootstrap_servers => "localhost:9092"
topics => ["mqtt.imu"]
codec =>"json"
}
}

output{
stdout{
codec => "plain"
}

elasticsearch{
hosts => ["localhost:9200"]
index => "mqtt.imu"
}
}

ais-je omis quelque chose? ou dois-je ajouter quelque chose dans ma config file?

OK , merci.

Je vous réexplique:

J´ai des données envoyées par MQTT (mosquito broker) à Kafka et ses donnees arrivent comme suit:
Essen/IMU/IMU01 {"id":"IMU1","T_m":"2020-06-24T11:55:29.660+02:00","tmp":29.77647,"roll":-3.922252,"nick":-1.565254,"gier":-3.922252,"a_x":0.066918,"a_y":-0.128297,"a_z":-9.579341}

Ensuite J´ai connecté Kafka a Elasticsearch a travers Logstash avec la configuration suivante:
input{

kafka{
bootstrap_servers => "localhost:9092"
topics => ["mqtt.imu"]
}
}

output{
stdout{
codec => json
}

elasticsearch{
hosts => ["localhost:9200"]
index => "mqtt.imu"
}
}

Les donnees s´affiche comme suit sur Logstash:


avec ce Json::parserError mais les données s´affiche sur Kibana et comme suit

jai creer les index sur kibana avec : "create index pattern"

Merci

J´ai changé le codec => json en codec => plain et je n´ai plus l´erreur "jsonparsefaillure"
Les donnees au niveau de Logstash s´affiche comme suit:


et les données au niveau de Kibana s´affiche comme suit:

Maintenant le Probleme du Parser est résolu. Quelle est la prochaine étape?

Merci

il faut que tu parses ton champs message en sous champs que tu dois déclarer.
Lien qui pourrait t'aider : https://www.elastic.co/guide/en/logstash/current/plugins-filters-json.html