IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

NoSQL Discussion :

Elasticsearch Kibana Logstash


Sujet :

NoSQL

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 100
    Points : 161
    Points
    161
    Par défaut Elasticsearch Kibana Logstash
    Bonjour
    je débute avec ELK,
    je souhaite envoyer les logs vers une base elasticsearch et je suis confronté à un problème de format de donnée et que je ne px pas exploiter via Kibana
    en effet, depuis mon application java j'envoie le log sous format Sting
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    LOGGER.info("TEST", "ID={}; PROCESS={}; SERVICE={}", new String[] {"150", "MOD", "calcul"});
    LOGGER.info("TEST", "ID={}; PROCESS={}; SERVICE={}", new String[] {"150", "MOD", "calcul"});
    LOGGER.info("TEST", "ID={}; PROCESS={}; SERVICE={}", new String[] {"154", "COMPTA", "genTruc"});
    au niveau d'elasticsearch je me retrouve avec des données non exploitables, toute ma ligne est encapsulée dans "message",
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    {
      "_index": "logstash-2017.11.23",
      "_type": "doc",
      "_id": "Ax-g6V8BfAMnkgUlziAH",
      "_version": 1,
      "_score": null,
      "_source": {
        "@timestamp": "2017-11-23T16:05:50.715Z",
        "HOSTNAME": "FR0X15245L",
        "level": "INFO",
        "port": 55079,
        "thread_name": "main",
        "level_value": 20000,
        "@version": 1,
        "host": "127.0.0.1",
        "logger_name": "com.log.LogMain",
        "@metdata": {
          "ip_address": "127.0.0.1"
        },
        "message": "ID=150; PROCESS=MOD; SERVICE=calcul",
        "tags": [
          "TEST"
        ]
      },
      "fields": {
        "@timestamp": [
          "2017-11-23T16:05:50.715Z"
        ]
      },
      "sort": [
        1511453150715
      ]
    }
    j aurais souhaité avoir un truc ce genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    {
    ID:"150" ,
    PROCESS"MOD",
    SERVICE="calcul"
    }
    quelqu'un, svp, aurait un idée comment formatter les données dans elasticsearch ou avant ?
    voici ma conf logstash

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    input {
      tcp {
        port => 5050
        codec => "json"
        mode => "server"
      }
    } 
    output {
      elasticsearch {
        hosts => [ "127.0.0.1:9200" ]
        index => "logstash-%{+YYYY.MM.dd}"
      }
      stdout { }
    }
    si vous avez un tuto bien fait, je suis preneur

    merci d'avance

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Août 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2009
    Messages : 30
    Points : 56
    Points
    56
    Par défaut
    Bonjour


    Quelques remarques mineures. On dit Elasticsearch (s minuscule) et on écrit Logstash et non Logstach.

    Il faut en effet que tu transformes message en document structuré. Pour cela, le filtre Grok est particulièrement utile.
    Tu peux lire cet exemple.

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 100
    Points : 161
    Points
    161
    Par défaut
    Merci Mr dadoonet95 pour tes remarques et les liens

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 100
    Points : 161
    Points
    161
    Par défaut
    Bonjour
    Je n'ai pas pu avancer avec liens
    j'ai retiré logstash. et je poste directement les messages depuis via logback mais j'obtiens tjr des attribues indésirables et mon text "json" encapsulé dans le champ message.

    voici l'affichage dans la console java (plutôt correct)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    21:43:28,176 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@6adca536 - Registering current configuration as safe fallback point
    21:43:28.440 [main] INFO  com.formation.App - {"nom":"Jean","prenom":"martin","sexe":"M","age":38,"ville":"Paris","origine":"France"}
    et voici ce que est enregistré dans elasticsearch
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    {
      "_index": "population-2017-11-25",
      "_type": "tester",
      "_id": "6j_r9F8B_WmEfVqluDqU",
      "_version": 1,
      "_score": 2,
      "_source": {
        "@timestamp": "2017-11-25T21:43:28.440+0100",
        "message": "{\"nom\":\"Jean\",\"prenom\":\"martin\",\"sexe\":\"M\",\"age\":38,\"ville\":\"Paris\",\"origine\":\"France\"}",
        "host": "MY-ASUS",
        "severity": "INFO",
        "thread": "main",
        "logger": "com.formation.App"
      },
      "fields": {
        "@timestamp": [
          "2017-11-25T20:43:28.440Z"
        ]
      }
    }
    et voici ma conf logback.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration debug="true">
    	<appender name="ELASTIC"
    		class="com.internetitem.logback.elasticsearch.ElasticsearchAppender">
    		<url>http://localhost:9200/_bulk</url>
    		<index>population-%date{yyyy-MM-dd}</index>
    		<type>tester</type>
    		<errorLoggerName>es-error-logger</errorLoggerName> <!-- optional -->
    		<connectTimeout>30000</connectTimeout> <!-- optional (in ms, default 30000) -->
    		<errorsToStderr>false</errorsToStderr> <!-- optional (default false) -->
    		<includeCallerData>false</includeCallerData> <!-- optional (default false) -->
    		<logsToStderr>false</logsToStderr> <!-- optional (default false) -->
    		<maxQueueSize>104857600</maxQueueSize> <!-- optional (default 104857600) -->
    		<maxRetries>3</maxRetries> <!-- optional (default 3) -->
    		<readTimeout>30000</readTimeout> <!-- optional (in ms, default 30000) -->
    		<sleepTime>250</sleepTime> <!-- optional (in ms, default 250) -->
    		<rawJsonMessage>false</rawJsonMessage> <!-- optional (default false) -->
    		<includeMdc>false</includeMdc> <!-- optional (default false) -->
    		<maxMessageSize>100</maxMessageSize> <!-- optional (default -1 -->
    		<authentication
    			class="com.internetitem.logback.elasticsearch.config.BasicAuthentication" /> <!-- optional -->
    		<properties>
    			<property>
    				<name>host</name>
    				<value>${HOSTNAME}</value>
    				<allowEmpty>false</allowEmpty>
    			</property>
    			<property>
    				<name>severity</name>
    				<value>%level</value>
    			</property>
    			<property>
    				<name>thread</name>
    				<value>%thread</value>
    			</property>
    			<property>
    				<name>stacktrace</name>
    				<value>%ex</value>
    			</property>
    			<property>
    				<name>logger</name>
    				<value>%logger</value>
    			</property>
    		</properties>
    		<headers>
    			<header>
    				<name>Content-Type</name>
    				<value>application/json</value>
    			</header>
    		</headers>
    	</appender>
    	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    		<!-- encoders are by default assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
    		<encoder>
    			<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    		</encoder>
    	</appender>
     
    	<root level="info">
    		<appender-ref ref="FILELOGGER" />
    		<appender-ref ref="ELASTIC" />
    		 <appender-ref ref="STDOUT" />
    	</root>
     
    	<logger name="es-error-logger" level="INFO" additivity="false">
    		<appender-ref ref="FILELOGGER" />
    	</logger>
     
    </configuration>
    si queqlqu'un pourra m'aider à avancer sur ce sujet svp.

    je vous remercie d'avance.

Discussions similaires

  1. Réponses: 0
    Dernier message: 30/07/2017, 20h05
  2. Connexion Kibana Elasticsearch
    Par Cvanhove dans le forum Général Java
    Réponses: 0
    Dernier message: 26/09/2014, 09h17
  3. Ruby on Rails avec ElasticSearch
    Par kaisser dans le forum Ruby on Rails
    Réponses: 0
    Dernier message: 01/04/2011, 21h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo