Rumah >pembangunan bahagian belakang >Golang >Menggunakan AWS ELK Stack in Go: Panduan Lengkap

Menggunakan AWS ELK Stack in Go: Panduan Lengkap

WBOY
WBOYasal
2023-06-17 13:13:401711semak imbas

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.

  1. Apakah itu 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.

  1. AWS ELK Stack digunakan dalam bahasa Go

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:

  1. Log masuk ke konsol AWS dan pergi ke perkhidmatan Amazon ES.
  2. Klik butang "Buat ES Domain".
  3. Dalam tab "Maklumat Asas", masukkan nama domain dan nombor versi. Pilih dasar akses dan VPC dan klik Seterusnya.
  4. Dalam tab Konfigurasi, anda boleh memilih pilihan berkenaan sharding dan sandaran. Klik Seterusnya.
  5. Dalam tab Pilihan Lanjutan, konfigurasi lanjutan tambahan tersedia. Klik "Seterusnya" apabila selesai.
  6. Dalam tab Pengesahan, semak konfigurasi dan klik Cipta Domain.

Langkah untuk mencipta baldi Amazon S3:

  1. Log masuk ke konsol AWS dan pergi ke perkhidmatan Amazon S3.
  2. Klik butang "Buat Baldi".
  3. Masukkan nama baldi, pilih nilai lalai dan klik Seterusnya.
  4. Dalam tab "Pilihan Konfigurasi", anda boleh memilih pilihan berkenaan kawalan versi dan pengelogan. Klik "Seterusnya" apabila selesai.
  5. Dalam tab Urus Kebenaran, konfigurasi lanjutan tambahan boleh dipilih. Klik "Seterusnya" apabila selesai.
  6. Dalam tab Pengesahan, semak konfigurasi dan klik Cipta Baldi.

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
    }
}
  1. Menggunakan Kibana untuk menggambarkan data log

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.

  1. Ringkasan

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn