Rumah > Artikel > pembangunan bahagian belakang > Menggunakan Flume dan Kafka dalam Beego untuk pengumpulan dan analisis log
Beego ialah rangka kerja web bahasa Go yang cekap yang menyokong pembangunan pesat dan pengembangan mudah. Dalam aplikasi praktikal, kita sering menghadapi cara untuk mengumpul dan menganalisis sejumlah besar data log Web untuk mendapatkan maklumat dan pengetahuan yang berguna. Dalam artikel ini, kami akan memperkenalkan cara menggunakan Flume dan Kafka untuk mengumpul dan menganalisis data log Web Beego.
Flume ialah sistem pengumpulan, pengagregatan dan penghantaran log teragih yang boleh dipercayai dan boleh skala yang boleh menyokong pengumpulan, pengagregatan dan penghantaran sejumlah besar data log daripada pelbagai sumber data dan pelbagai saluran paip data penstriman. Kafka ialah sistem perisian tengah mesej berkemampuan tinggi, teragih dan tahan lama yang boleh mengendalikan sejumlah besar aliran data masa nyata dan mempunyai kebolehskalaan mendatar yang mudah dan kebolehskalaan elastik. Kesemuanya adalah projek sumber terbuka yang disokong dan diselenggara oleh Yayasan Apache.
1. Pasang dan konfigurasi Flume
Mula-mula, kita perlu memasang dan mengkonfigurasi Flume. Dalam artikel ini, kami akan menggunakan Flume versi 1.9.0 dan mengujinya dalam persekitaran setempat. Flume boleh dimuat turun dari laman web rasmi: http://flume.apache.org/download.html.
Selepas memasang Flume, kami perlu mengkonfigurasi fail konfigurasi Flume Agent. Dalam artikel ini, kami akan menggunakan kaedah konfigurasi mudah Flume. Kami perlu mencipta fail konfigurasi bernama flume.conf dalam direktori pemasangan Flume dan menentukan Ejen Flume kami di dalamnya.
Dalam fail flume.conf, kita perlu mentakrifkan Ejen Flume dengan sumber, saluran dan sink, seperti yang ditunjukkan di bawah:
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
Dalam fail konfigurasi di atas, kami mentakrifkan nama Ia adalah sumber avro-source Jenisnya ialah avro. Ia akan mendengar port 10000 pada localhost mesin dan menerima data log Web Beego. Kami juga mentakrifkan saluran bernama saluran memori, yang jenisnya ialah memori, yang boleh menyimpan sehingga 10,000 peristiwa dalam ingatan, dan menyediakan sinki bernama kafka-sink, yang jenisnya ialah KafkaSink, yang akan menghantar data log Web Beego ke topik bernama beego-log dalam Kafka. Dalam konfigurasi ini, kami juga menetapkan beberapa sifat KafkaSink, seperti batchSize (bilangan mesej yang ditulis kepada Kafka setiap kali) dan requiredAcks (bilangan mesej yang ditulis kepada Kafka yang perlu diakui).
2. Pasang dan konfigurasikan Kafka
Seterusnya, kita perlu memasang dan mengkonfigurasi Kafka. Dalam artikel ini, kami akan menggunakan Kafka versi 2.2.0 dan mengujinya dalam persekitaran setempat. Kafka boleh dimuat turun dari laman web rasmi: http://kafka.apache.org/downloads.html.
Selepas memasang Kafka, kita perlu mencipta topik bernama beego-log Kita boleh menggunakan alat baris arahan Kafka untuk mencipta topik, seperti yang ditunjukkan di bawah:
bin/kafka-topics.sh --zookeeper localhost:2181 --create --replication-factor 1 --partitions 1 --topic beego-log
Dalam arahan di atas, kita. gunakan alat baris arahan Kafka kafka-topics.sh untuk mencipta topik bernama beego-log, nyatakan faktor replikasi (faktor replikasi) sebagai 1 dan partition (partition) sebagai 1, dan gunakan alamat ZooKeeper sebagai localhost:2181.
3. Aplikasi Rangka Kerja Web Beego
Kami menggunakan rangka kerja Beego Web untuk mencipta aplikasi Web mudah dan merekod data log Web di dalamnya. Dalam artikel ini, kami akan mencipta aplikasi dengan hanya satu pengawal dan satu penghala seperti yang ditunjukkan di bawah:
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() }
Dalam aplikasi di atas, kami telah mencipta aplikasi yang dipanggil pengawal MainController, ia hanya mempunyai satu kaedah Dapatkan. Dalam kaedah Dapatkan, kami melaksanakan beberapa logik dan kemudian mengembalikan mesej kepada klien. Kami menggunakan fungsi penghalaan Beego untuk memetakan laluan akar "/" kepada kaedah Dapatkan MainController.
Kami boleh mendayakan fungsi pengelogan dalam fail konfigurasi Beego dan menetapkan tahap log kepada Nyahpepijat untuk merakam dan menjejak butiran lanjut. Kami perlu menambah kandungan berikut pada app.conf fail konfigurasi Beego:
appname = beego-log httpport = 8080 runmode = dev [log] level = debug [[Router]] Pattern = / HTTPMethod = get Controller = main.MainController:Get
Dalam fail konfigurasi di atas, kami mentakrifkan nama aplikasi, port HTTP, mod pengendalian dan tahap log. Kami juga menentukan laluan bernama Router, menentukan pengawal bernama MainController, dan memetakan laluan akar "/" kepada kaedah Dapatkan.
4. Menggunakan Flume dan Kafka untuk pengumpulan dan analisis log
Sekarang kami mempunyai aplikasi Beego yang mudah dan Ejen Flume, kami boleh mengintegrasikannya dan menggunakan Kafka Menjalankan pengumpulan dan analisis log.
Kami boleh memulakan aplikasi Beego dan menghantar beberapa permintaan HTTP kepadanya untuk menghasilkan beberapa data log. Kita boleh menggunakan arahan curl untuk menghantar permintaan HTTP kepada Beego seperti berikut:
$ curl http://localhost:8080/ Hello, World!
Kita boleh memulakan Flume Agent dan menggunakan arahan berikut untuk memulakannya:
$ ./bin/flume-ng agent --conf ./conf --conf-file ./conf/flume.conf --name agent --foreground
Dalam arahan di atas, Kami gunakan alat baris arahan Flume flume-ng untuk memulakan Agen Flume bernama ejen, dan tentukan fail konfigurasi sebagai ./conf/flume.conf.
Kini, kita boleh melihat data log web Beego dalam Kafka. Kita boleh menggunakan alat baris arahan Kafka kafka-console-consumer.sh untuk menggunakan data daripada topik beego-log seperti berikut:
$ bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic beego-log --from-beginning
Dalam arahan di atas, kami menggunakan alat baris arahan Kafka kafka- console-consumer. sh untuk memulakan pengguna dan menggunakan data daripada topik bernama beego-log. Kami menggunakan pilihan --dari-permulaan untuk mula menggunakan daripada mesej tertua.
Apabila kami meminta aplikasi Beego, Flume akan mengumpulkan peristiwa log, menyimpannya ke dalam saluran dalam memori, dan kemudian memindahkannya ke topik Kafka bernama beego-log. Kami boleh menggunakan alat baris arahan atau API dalam Kafka untuk menggunakan dan memproses data log ini untuk mendapatkan maklumat dan cerapan yang lebih berharga.
5. Ringkasan
Dalam artikel ini, kami memperkenalkan cara menggunakan Flume dan Kafka untuk mengumpul dan menganalisis data log Beego Web. Kami mula-mula memasang dan mengkonfigurasi Flume dan Kafka, kemudian mencipta aplikasi Beego yang mudah dan mengkonfigurasi fungsi pengelogannya. Akhirnya, kami mencipta Ejen Flume yang ringkas dan menyepadukannya dengan aplikasi Beego, menggunakan Kafka untuk pengumpulan dan analisis log.
Dalam aplikasi praktikal, kami boleh mengkonfigurasi dan menyesuaikan parameter dan sifat Flume dan Kafka secara fleksibel mengikut keperluan dan senario, supaya dapat menyesuaikan dengan lebih baik kepada sumber data dan tugas pemprosesan yang berbeza, serta mendapatkan maklumat dan pengetahuan yang lebih berharga .
Atas ialah kandungan terperinci Menggunakan Flume dan Kafka dalam Beego untuk pengumpulan dan analisis log. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!