Maison >développement back-end >Golang >Utilisation de Flume et Kafka dans Beego pour la collecte et l'analyse des journaux
Beego est un framework Web en langage Go efficace qui prend en charge un développement rapide et une expansion facile. Dans les applications pratiques, nous sommes souvent confrontés à la manière de collecter et d'analyser une grande quantité de données de journaux Web pour obtenir des informations et des connaissances utiles. Dans cet article, nous expliquerons comment utiliser Flume et Kafka pour collecter et analyser les données des journaux Beego Web.
Flume est un système distribué de collecte, d'agrégation et de transmission de journaux fiable et évolutif qui peut prendre en charge la collecte, l'agrégation et la transmission de grandes quantités de données de journaux à partir de diverses sources de données et de divers pipelines de données en streaming. Kafka est un système middleware de messages à haut débit, distribué et durable, capable de gérer de grandes quantités de flux de données en temps réel et doté d'une évolutivité horizontale simple et d'une évolutivité élastique. Ce sont tous des projets open source soutenus et maintenus par la Fondation Apache.
1. Installer et configurer Flume
Tout d'abord, nous devons installer et configurer Flume. Dans cet article, nous utiliserons Flume version 1.9.0 et le testerons dans un environnement local. Flume peut être téléchargé depuis le site officiel : http://flume.apache.org/download.html.
Après avoir installé Flume, nous devons configurer le fichier de configuration Flume Agent. Dans cet article, nous utiliserons la méthode de configuration simple de Flume. Nous devons créer un fichier de configuration nommé flume.conf dans le répertoire d'installation de Flume et y définir notre agent Flume.
Dans le fichier flume.conf, nous devons définir un agent Flume avec source, canal et récepteur, comme indiqué ci-dessous :
agent.sources = avro-source agent.channels = memory-channel agent.sinks = kafka-sink # Define the source agent.sources.avro-source.type = avro agent.sources.avro-source.bind = localhost agent.sources.avro-source.port = 10000 # Define the channel agent.channels.memory-channel.type = memory agent.channels.memory-channel.capacity = 10000 # Define the sink agent.sinks.kafka-sink.type = org.apache.flume.sink.kafka.KafkaSink agent.sinks.kafka-sink.kafka.bootstrap.servers = localhost:9092 agent.sinks.kafka-sink.kafka.topic = beego-log agent.sinks.kafka-sink.batchSize = 20 agent.sinks.kafka-sink.requiredAcks = 1 # Bind the source and sink to the channel agent.sources.avro-source.channels = memory-channel agent.sinks.kafka-sink.channel = memory-channel
Dans le fichier de configuration ci-dessus, nous définissons une source nommée avro-source, dont le type est avro , qui écoutera le port 10000 sur l'hôte local de la machine et acceptera les données du journal Web Beego. Nous définissons également un canal nommé canal mémoire, dont le type est mémoire, qui peut stocker jusqu'à 10 000 événements en mémoire, et fournissons un récepteur nommé kafka-sink, dont le type est KafkaSink, qui permettra aux données du journal Beego Web d'être envoyées à un sujet. nommé beego-log en Kafka. Dans cette configuration, nous définissons également certaines propriétés de KafkaSink, telles que batchSize (le nombre de messages écrits dans Kafka à chaque fois) et requireAcks (le nombre de messages écrits dans Kafka qui doivent être reconnus).
2. Installez et configurez Kafka
Ensuite, nous devons installer et configurer Kafka. Dans cet article, nous utiliserons Kafka version 2.2.0 et le testerons dans un environnement local. Kafka peut être téléchargé depuis le site officiel : http://kafka.apache.org/downloads.html.
Après avoir installé Kafka, nous devons créer un sujet nommé beego-log. Nous pouvons utiliser l'outil de ligne de commande de Kafka pour créer le sujet, comme indiqué ci-dessous :
bin/kafka-topics.sh --zookeeper localhost:2181 --create --replication-factor 1 --partitions 1 --topic beego-log
Dans la commande ci-dessus, nous utilisons la ligne de commande de Kafka. Utilisez l'outil kafka. -topics.sh pour créer un sujet nommé beego-log, spécifiez un facteur de réplication de 1 et des partitions de 1, et utilisez l'adresse ZooKeeper de localhost:2181.
3. Appliquer Beego Web Framework
Nous utilisons le framework Web Beego pour créer une application Web simple et y enregistrer les données du journal Web. Dans cet article, nous allons créer une application avec un seul contrôleur et un seul routeur comme indiqué ci-dessous :
package main import ( "github.com/astaxie/beego" ) type MainController struct { beego.Controller } func (c *MainController) Get() { // do something c.Ctx.WriteString("Hello, World!") } func main() { beego.Router("/", &MainController{}) beego.Run() }
Dans l'application ci-dessus, nous avons créé un contrôleur appelé MainController , il n'a qu'une seule méthode Get. Dans la méthode Get, nous implémentons une certaine logique puis renvoyons un message au client. Nous avons utilisé la fonction de routage de Beego pour mapper le chemin racine "/" à la méthode Get du MainController.
Nous pouvons activer la fonction de journalisation (log) dans le fichier de configuration de Beego et définir le niveau de journalisation sur Debug pour enregistrer et suivre plus de détails. Nous devons ajouter le contenu suivant au fichier de configuration app.conf de Beego :
appname = beego-log httpport = 8080 runmode = dev [log] level = debug [[Router]] Pattern = / HTTPMethod = get Controller = main.MainController:Get
Dans le fichier de configuration ci-dessus, nous définissons le nom de l'application, le port HTTP, le mode de fonctionnement et le niveau de journalisation. Nous avons également spécifié une route nommée Router, défini un contrôleur nommé MainController et mappé le chemin racine «/» à la méthode Get.
4. Utilisez Flume et Kafka pour la collecte et l'analyse des journaux
Maintenant que nous disposons d'une application Beego simple et d'un agent Flume, nous pouvons les intégrer et utiliser Kafka pour la collecte et l'analyse des journaux.
Nous pouvons démarrer l'application Beego et lui envoyer des requêtes HTTP pour produire des données de journal. Nous pouvons utiliser la commande curl pour envoyer une requête HTTP à Beego comme suit :
$ curl http://localhost:8080/ Hello, World!
Nous pouvons démarrer l'agent Flume et utiliser la commande suivante pour le démarrer :
$ ./bin/flume-ng agent --conf ./conf --conf-file ./conf/flume.conf --name agent --foreground
Dans la commande ci-dessus, nous utilisons l'outil de ligne de commande flume de Flume - ng pour démarrer un agent Flume nommé agent et spécifiez le fichier de configuration comme ./conf/flume.conf.
Maintenant, nous pouvons afficher les données du journal Beego Web dans Kafka. Nous pouvons utiliser l'outil de ligne de commande de Kafka, kafka-console-consumer.sh, pour consommer les données du sujet beego-log comme suit :
$ bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic beego-log --from-beginning
Dans la commande ci-dessus, nous utilisons l'outil de ligne de commande de Kafka, kafka-console-consumer, pour démarrer un. consommateur et consommer les données dans le sujet nommé beego-log. Nous utilisons l'option --from-beginning pour commencer à consommer à partir du message le plus ancien.
Lorsque nous demandons une application Beego, Flume collectera les événements du journal, les stockera dans un canal en mémoire, puis les transférera vers un sujet Kafka appelé beego-log. Nous pouvons utiliser des outils de ligne de commande ou des API dans Kafka pour consommer et traiter ces données de journal afin d'obtenir des informations et des informations plus précieuses.
5. Résumé
Dans cet article, nous avons présenté comment utiliser Flume et Kafka pour collecter et analyser les données des journaux Beego Web. Nous avons d'abord installé et configuré Flume et Kafka, puis créé une simple application Beego et configuré sa fonctionnalité de journalisation. Enfin, nous avons créé un simple Flume Agent et l'avons intégré à l'application Beego, en utilisant Kafka pour la collecte et l'analyse des journaux.
Dans les applications pratiques, nous pouvons configurer et personnaliser de manière flexible les paramètres et les propriétés de Flume et Kafka en fonction des besoins et des scénarios, afin de mieux nous adapter aux différentes sources de données et tâches de traitement, et d'obtenir des informations et des connaissances plus précieuses.
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!