sistema di logging applicativo per ambienti distribuiti hadoop-based - monica franceschini
TRANSCRIPT
![Page 1: Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica Franceschini](https://reader036.vdocuments.mx/reader036/viewer/2022062412/58e93fec1a28ab84768b5c53/html5/thumbnails/1.jpg)
Logging applicativo per ambienti distribuiti Hadoop-based
Monica FranceschiniSolution Architecture Manager
Big Data & Analytics Competency Center Engineering
![Page 2: Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica Franceschini](https://reader036.vdocuments.mx/reader036/viewer/2022062412/58e93fec1a28ab84768b5c53/html5/thumbnails/2.jpg)
Lo scenario• Ecosistema Hadoop (Cloudera)• Applicazioni Spark (Scala) distribuite, Java, Java Webapp• Utilizzo di Log4j• Consultazione dei log centralizzata• Dedicato agli sviluppatori
![Page 3: Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica Franceschini](https://reader036.vdocuments.mx/reader036/viewer/2022062412/58e93fec1a28ab84768b5c53/html5/thumbnails/3.jpg)
• Progetto Big Data per il calcolo delle curve orarie di consumo energetico• Italia• Altre countries
• Data Science Lab di Engineering con finalità analitiche
Ambiti di applicazione
![Page 4: Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica Franceschini](https://reader036.vdocuments.mx/reader036/viewer/2022062412/58e93fec1a28ab84768b5c53/html5/thumbnails/4.jpg)
?
Dove sono i log di Spark?
![Page 5: Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica Franceschini](https://reader036.vdocuments.mx/reader036/viewer/2022062412/58e93fec1a28ab84768b5c53/html5/thumbnails/5.jpg)
• I log sono distribuiti nei worker-nodes e suddivisi per application_id:$HADOOP_HOME/logs/userlogs/application_1474886780074_XXXX
• Se yarn log aggregation attivato directory = YARN_APP_LOGS_DIR: Accesso da shell: yarn logs -applicationId <app ID>Ma dopo che l’applicazione è terminata (no real-time)!!!
??#...##@@]]]!!!!!°°°°ççççç?????????
Dove sono i log di Spark?
![Page 6: Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica Franceschini](https://reader036.vdocuments.mx/reader036/viewer/2022062412/58e93fec1a28ab84768b5c53/html5/thumbnails/6.jpg)
• Near-Real-Time• dettaglio della singola istanza di application• ricerche sui log in base a diversi criteri• severity configurabile
Requisiti
![Page 7: Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica Franceschini](https://reader036.vdocuments.mx/reader036/viewer/2022062412/58e93fec1a28ab84768b5c53/html5/thumbnails/7.jpg)
PROs:• Ready-right-out-of- the-box• Open sourceCONs• Non-Hadoop-based• Indice ElasticSearch non su HDFS
Elastic stack (ELK)
![Page 8: Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica Franceschini](https://reader036.vdocuments.mx/reader036/viewer/2022062412/58e93fec1a28ab84768b5c53/html5/thumbnails/8.jpg)
• Open source• Riutilizzabile in qualsiasi distribuzione Hadoop• Near real time• Piattaforma Big Data per i log prodotti dalle applicazioni Big Data• Configurabile dinamicamente• Customizzabile• Distribuita• Scalabile• Interrogazioni su web application
Parametri di scelta
![Page 9: Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica Franceschini](https://reader036.vdocuments.mx/reader036/viewer/2022062412/58e93fec1a28ab84768b5c53/html5/thumbnails/9.jpg)
• Log4j : sistema di logging• Zookeeper : gestione distribuita di file di configurazione e notifica di
eventi significativi per il sistema • Kafka : sistema di messagging per il trasferimento dei messaggi• Flume : processing layer per deserializzazione/mapping su solr dei
messaggi• Morphline: trasformazione dei dati per indice Solr• SolrCloud : storage dei messaggi di log• Kibana on Solr (Banana): visualizzazione dei messaggi presenti su Solr
Stack tecnologico Apache
![Page 10: Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica Franceschini](https://reader036.vdocuments.mx/reader036/viewer/2022062412/58e93fec1a28ab84768b5c53/html5/thumbnails/10.jpg)
• distributed messaging system • pub-sub model• highly scalable and redundant messaging • highly available and resilient • automatic recovery
• Producer: programma che invia messaggi a Kafka• Topic: raggruppamento di messaggi simili• Key/value pair messages: la forma dei messaggi• Consumer: programma che estrae messaggi da Kafka• Consumer Group: gruppo di consumer, per agevolare scaling e HA• Offset: identificatore logico di un messaggio all’interno di una partizione• Broker: demone responsabile dell’invio, ricezione e salvataggio dei dati• Zookeeper: sistema per coordinazione distribuita e service discovery• Partition: porzione di topic• Replica: salvataggio di una partizione di dati su più nodi per durability
Apache Kafka
![Page 11: Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica Franceschini](https://reader036.vdocuments.mx/reader036/viewer/2022062412/58e93fec1a28ab84768b5c53/html5/thumbnails/11.jpg)
• File system gerarchico e distribuito • HA e fault tolerant• Fast (in-memory reads)• Gestisce partial failures• Reliable configuration system• Gestisce load balancing
Distributed coordination service
Apache Zookeeper
![Page 12: Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica Franceschini](https://reader036.vdocuments.mx/reader036/viewer/2022062412/58e93fec1a28ab84768b5c53/html5/thumbnails/12.jpg)
“Apache Flume is a distributed, reliable, and available service for efficiently collecting, aggregating, and moving large amounts of
streaming data into the Hadoop Distributed File System (HDFS). It has a simple and flexible architecture based on streaming data flows; and is robust and fault tolerant with tunable reliability
mechanisms for failover and recovery.”
Apache Flume
![Page 13: Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica Franceschini](https://reader036.vdocuments.mx/reader036/viewer/2022062412/58e93fec1a28ab84768b5c53/html5/thumbnails/13.jpg)
Spark processes+webapps
+Java applications
Log4J
Appender Log4j Kafka
sourceKafka
channelMorphline
sinkSolr
Banana
Flume
Zookeeper(Severity level)
Processing Layer
Storage Layer
Visualization Layer
Log Agent
Architettura
![Page 14: Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica Franceschini](https://reader036.vdocuments.mx/reader036/viewer/2022062412/58e93fec1a28ab84768b5c53/html5/thumbnails/14.jpg)
Flume flessibilità nella scelta dello storage e /o visualizzazione dei messaggi.
Storage Layer
HDFS
Spark processes+webapps
+Java applications
Log4J
Appender Log4j Kafka
sourceKafka
channelMorphline
sink
Flume
Zookeeper(Severity level)
Processing Layer
Log Agent
Flessibilità della soluzione
![Page 15: Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica Franceschini](https://reader036.vdocuments.mx/reader036/viewer/2022062412/58e93fec1a28ab84768b5c53/html5/thumbnails/15.jpg)
Automaticamente vengono inseriti:• utente • hostname• thread-nameManualmente:• System id • Module id• Application Name (opzionale)• Source Id (opzionale) • Logging Level (opzionale)
Appender Log4j
![Page 16: Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica Franceschini](https://reader036.vdocuments.mx/reader036/viewer/2022062412/58e93fec1a28ab84768b5c53/html5/thumbnails/16.jpg)
• Livello di logging update (severity) gestita da Zookeeper non è necessario riavviare le applicazioni
• È possibile cambiare il livello di logging di ogni appender registrato durante l'esecuzione dell'applicazione in maniera programmatica, scartando i messaggi che hanno un livello di logging inferiore a quello impostato
• Scrive il log in formato JSON su Kafka Kafka producer• Grazie a “contesti di logging”, è possibile aggiungere informazioni in
maniera dinamica ai messaggi di logging (utilizzo di moduli condivisi all'interno della stessa applicazione ospite, da “applicazioni” diverse )
Appender Log4j- funzionalità
![Page 17: Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica Franceschini](https://reader036.vdocuments.mx/reader036/viewer/2022062412/58e93fec1a28ab84768b5c53/html5/thumbnails/17.jpg)
• 3 Kafka brokers su• 3 nodi • Fattore replica 2• 1 Kafka topic con • 3 partitions • 3 solr shards
Configurazione dello stack
![Page 18: Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica Franceschini](https://reader036.vdocuments.mx/reader036/viewer/2022062412/58e93fec1a28ab84768b5c53/html5/thumbnails/18.jpg)
Un po’ di codice…
![Page 19: Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica Franceschini](https://reader036.vdocuments.mx/reader036/viewer/2022062412/58e93fec1a28ab84768b5c53/html5/thumbnails/19.jpg)
a1.sources=kafkaa1.channels=channelKafkaa1.sinks=solrSinka1.sources.kafka.kafka.bootstrap.servers=mn01:9092,mn02:9092,mn03:9092a1.sources.kafka.type=org.apache.flume.source.kafka.KafkaSourcea1.sources.kafka.zookeeperConnect=mn01,mn02,mn03:2181/kafkaa1.sources.kafka.topic=distroLogsa1.sources.kafka.batchSize=20000a1.sources.kafka.batchDurationMillis=3000a1.sources.kafka.channels=channelKafkaa1.channels.channelKafka.type=org.apache.flume.channel.kafka.KafkaChannela1.channels.channelKafka.zookeeperConnect=mn01,mn02,mn03:2181/kafkaa1.channels.channelKafka.brokerList=mn01:9092,mn02:9092,mn03:9092a1.channels.channelKafka.parseAsFlumeEvent=truea1.sinks.solrSink.type=org.apache.flume.sink.solr.morphline.MorphlineSolrSinka1.sinks.solrSink.channel=channelKafkaa1.sinks.solrSink.batchSize=20000a1.sinks.solrSink.morphlineFile=morphlines.conf
Agente Flume
![Page 20: Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica Franceschini](https://reader036.vdocuments.mx/reader036/viewer/2022062412/58e93fec1a28ab84768b5c53/html5/thumbnails/20.jpg)
………{ extractJsonPaths { flatten: true paths: { threadId: "/threadId" level: "/level" logTime: "/logTime" systemId: "/systemId" appId: "/appId" appName: "/appName" module: "/module" action: "/action" status: "status" user: "/user" message: "/message" hostname: "/hostname" body: "/body"} } }……………….
…………..solrLocator: { collection: "distroLogs" # ZooKeeper ensemble zkHost: "mn01,mn02,mn03:2181/solr" }……..
Morphline
![Page 21: Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica Franceschini](https://reader036.vdocuments.mx/reader036/viewer/2022062412/58e93fec1a28ab84768b5c53/html5/thumbnails/21.jpg)
log4j.rootLogger=INFO,stdoutlog4j.appender.mainAppLogger=it.engineering.logging.appender.DistributedLoggerAppenderlog4j.appender.mainAppLogger.AppName=SPARK_LOGlog4j.appender.mainAppLogger.SystemId=<SYSTEM>log4j.appender.mainAppLogger.module=SPARK_REClog4j.appender.mainAppLogger.SourceId=SPARK-SCALA
Spark-Log4j.properties
![Page 22: Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica Franceschini](https://reader036.vdocuments.mx/reader036/viewer/2022062412/58e93fec1a28ab84768b5c53/html5/thumbnails/22.jpg)
Test me!!!
![Page 23: Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica Franceschini](https://reader036.vdocuments.mx/reader036/viewer/2022062412/58e93fec1a28ab84768b5c53/html5/thumbnails/23.jpg)
producer
producer
producer
partition1
partition2
partition3
consumer
Zookeeper
consumer
consumerproducer
#flume agents#processi
shard1
shard2
shard3
Solr
partition2-R
partition3-R
partition1-R
Topic
Brok
er1
Brok
er2
Brok
er3
Kafka brokers e topic
![Page 24: Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica Franceschini](https://reader036.vdocuments.mx/reader036/viewer/2022062412/58e93fec1a28ab84768b5c53/html5/thumbnails/24.jpg)
Solr Search (Hue embedded)
PROs:- molti widget grafici disponibili out-of-the-box- possibilità di creazione di molteplici dashboard- funzionalità di SSO e condivisione delle dashboard sfruttando le funzionalità di HUECONs:- Dashboard non funzionano correttamente su collection di Solr distribuite su più nodi (HUE BUG)
Visualization layer: Hue
![Page 25: Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica Franceschini](https://reader036.vdocuments.mx/reader036/viewer/2022062412/58e93fec1a28ab84768b5c53/html5/thumbnails/25.jpg)
Apache Banana (https://github.com/lucidworks/banana)• Forked from Kibana• Build come .war file• Run su web-container dei Solr server o su una macchina diversa (abilitare i CORS
sui Solr Server)
PROs:- molti widget grafici disponibili out-of the box- possibilità di creazione di molteplici dashboardCONS:- Non offre nessun tipo di autenticazione
Visualization layer: Banana
![Page 26: Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica Franceschini](https://reader036.vdocuments.mx/reader036/viewer/2022062412/58e93fec1a28ab84768b5c53/html5/thumbnails/26.jpg)
Full-text searchTime series
Detail tableFacetsDashboards
Banana dashboards
![Page 27: Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica Franceschini](https://reader036.vdocuments.mx/reader036/viewer/2022062412/58e93fec1a28ab84768b5c53/html5/thumbnails/27.jpg)
Thank you!
https://creativecommons.org/licenses/by-nc-sa/3.0/Twitter: @twittmoniqueEmail: [email protected] thanks to Matilde and her puppies!