Menggunakan AWS ELK Stack dalam Go Language: Panduan Lengkap
Dengan perkembangan berterusan teknologi moden, analisis data telah menjadi bahagian yang amat diperlukan dalam perusahaan. Untuk mencapai analisis data, perusahaan perlu mengumpul, memproses, menyimpan dan menganalisis data. Platform pengkomputeran awan AWS menyediakan perusahaan dengan penyelesaian untuk mengumpul, memproses dan menganalisis data log menggunakan tindanan Elasticsearch, Logstash dan Kibana (ELK). Dalam artikel ini, kami akan menggunakan bahasa Go sebagai bahasa pembangunan untuk memperkenalkan cara menggunakan Go untuk memproses data log dalam AWS ELK Stack.
Pertama, kita perlu faham apa itu ELK. ELK, yang merujuk kepada Elasticsearch, Logstash dan Kibana, ialah set alat sumber terbuka untuk memproses sejumlah besar data berstruktur dan separa berstruktur. Elasticsearch ialah enjin carian dan analisis yang boleh digunakan untuk menyimpan dan membuat pertanyaan data. Logstash ialah pengumpul data dan pemancar yang mengumpul dan menghantar data log daripada sumber yang berbeza ke Elasticsearch. Kibana ialah alat visualisasi yang memaparkan data daripada Elasticsearch melalui antara muka web.
AWS ELK Stack ialah tindanan ELK yang dibina pada platform awan AWS. Perusahaan boleh menggunakan AWS ELK Stack untuk menyimpan dan memproses data log mereka. Ini memberikan perniagaan lebih fleksibiliti dalam mencari dan menganalisis data, serta keupayaan menyelesaikan masalah yang lebih baik.
Bahasa Go ialah bahasa pengaturcaraan ditaip secara statik bagi keluarga bahasa C, yang dibangunkan oleh Google. Kecekapan dan keselamatan ingatannya menjadikannya salah satu bahasa pembangunan pilihan untuk banyak aplikasi pengkomputeran awan. Dalam bahagian ini, kita membincangkan cara menggunakan AWS ELK Stack dalam bahasa Go untuk memproses data log.
2.1 Pasang dan konfigurasikan AWS ELK Stack
Mula-mula, kita perlu memasang dan mengkonfigurasi tindanan ELK pada AWS. Dalam AWS, kami boleh menggunakan Amazon Elasticsearch Service (ES) untuk memasang Elasticsearch, Logstash dan Kibana. Mula-mula, kami perlu mencipta domain Amazon ES yang akan menjadi tuan rumah kelompok Elasticsearch kami. Kemudian, kita perlu mencipta baldi Amazon S3 untuk penyimpanan fail konfigurasi Logstash.
Langkah untuk mencipta domain Amazon ES:
Langkah untuk mencipta baldi Amazon S3:
Setelah selesai, kami perlu mengkonfigurasi Logstash untuk membaca data log dan menghantarnya ke kelompok Elasticsearch. Apa yang perlu diperhatikan di sini ialah kita perlu menulis fail konfigurasi Logstash untuk menentukan tempat Logstash akan membaca data log dan menghantarnya ke kelompok Elasticsearch. Kemudian, kami akan memuat naik fail konfigurasi ke baldi Amazon S3.
2.2 Gunakan bahasa Go untuk menghantar data log ke Logstash
Dalam bahagian ini, kita akan membincangkan cara menggunakan bahasa Go untuk menulis kod untuk menghantar data log ke Logstash. Kami menggunakan pemalam input Logstash HTTP untuk menerima permintaan HTTP POST daripada aplikasi Go dan menghantar data permintaan kepada kelompok Elasticsearch. Dalam kod, kami menggunakan kaedah HTTP POST untuk menghantar data ke Logstash. Kod kami akan menghantar permintaan berformat JSON dan menghantarnya ke Logstash.
Kami mula-mula mengimport pakej yang perlu kami gunakan:
import ( "bytes" "encoding/json" "net/http" )
Seterusnya, kami mencipta struktur LogData untuk menyimpan data log
type LogData struct { Timestamp string `json:"timestamp"` Message string `json:"message"` Level string `json:"level"` }
Kami mentakrifkan fungsi dalam kod SendLogToLogstash, yang mengambil struktur LogData sebagai parameter dan menghantarnya ke Logstash. Berikut ialah kod contoh fungsi:
func SendLogToLogstash(logData LogData, logstashURL string) error { // 将logData结构体转换为JSON字符串 bytesData, err := json.Marshal(logData) if err != nil { return err } // 发送HTTP POST请求 resp, err := http.Post(logstashURL, "application/json", bytes.NewBuffer(bytesData)) if err != nil { return err } defer resp.Body.Close() return nil }
Seterusnya, kita perlu menggunakan URL titik akhir pemalam input HTTP dalam fail konfigurasi Logstash yang kami buat di bahagian sebelumnya untuk memanggil fungsi SendLogToLogstash dan menghantar data log ke Logstash. Kita boleh melakukan ini menggunakan kod contoh berikut:
func main() { // 一个示例logstash URL logstashURL := "http://localhost:8080" // 创建一个LogData结构体对象,将日志内容赋值 logData := LogData{Message: "This is a test message", Level: "INFO", Timestamp: time.Now().Format(time.RFC3339)} err := SendLogToLogstash(logData, logstashURL) if err != nil { fmt.Println("Error:", err) } }
Kita juga boleh meletakkan kod di atas dalam pelayan HTTP. Apabila permintaan HTTP POST daripada aplikasi lain dihantar ke pelayan ini, pelayan akan menghantar log ke Logstash menggunakan kod di atas.
func handleLog(w http.ResponseWriter, req *http.Request) { // 检查HTTP请求方法是否为POST方法 if req.Method != "POST" { http.Error(w, "Unsupported method", http.StatusMethodNotAllowed) return } // 解析POST请求中的JSON数据 decoder := json.NewDecoder(req.Body) var logData LogData err := decoder.Decode(&logData) if err != nil { http.Error(w, "Invalid JSON request", http.StatusBadRequest) return } // 一个示例logstash URL logstashURL := "http://localhost:8080" err = SendLogToLogstash(logData, logstashURL) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } }
Kami telah berjaya menghantar data log ke kelompok Elasticsearch dan kini boleh menggunakan Kibana untuk analisis dan visualisasi data. Kibana boleh memaparkan data yang dibaca daripada kluster Elasticsearch dan membolehkan kami melakukan operasi pertanyaan dan pengagregatan.
Di Kibana, kita perlu mencipta visualisasi untuk memaparkan data log. Sebelum mencipta visualisasi baharu, kita perlu mentakrifkan skema indeks dalam Kibana untuk menentukan indeks mana Kibana akan membaca data.
Selepas skema indeks ditakrifkan, kita boleh mencipta visualisasi untuk memaparkan data log. Dalam tab Visualisasi, kita boleh memilih daripada beberapa jenis carta yang berbeza, termasuk carta bar, carta pai, carta garis dan banyak lagi. Kibana juga membolehkan kami mendapatkan semula data log berdasarkan syarat tertentu dengan menambahkan penapis dan pertanyaan. Selain itu, kami juga boleh mengeksport hasil visualisasi ini ke fail PDF atau PNG.
Dalam artikel ini, kami mempelajari cara menggunakan bahasa Go untuk menghantar data log ke AWS ELK Stack dan menggunakan Kibana untuk menganalisis dan menggambarkan data. Kami bermula dengan memasang dan mengkonfigurasi tindanan ELK, kemudian menunjukkan cara menggunakan Go untuk membuat permintaan HTTP POST ke Logstash dan menghantar data log ke kelompok Elasticsearch. Akhir sekali, kami membincangkan cara membuat visualisasi dalam Kibana untuk membentangkan data log. Langkah-langkah ini secara berkesan akan membantu perusahaan melaksanakan analisis log untuk meningkatkan kecekapan aplikasi, keteguhan dan kebolehpercayaan.
Atas ialah kandungan terperinci Menggunakan AWS ELK Stack in Go: Panduan Lengkap. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!