Rumah >pembangunan bahagian belakang >Golang >Menggunakan Tindanan Elastik dalam Go: Panduan Lengkap

Menggunakan Tindanan Elastik dalam Go: Panduan Lengkap

WBOY
WBOYasal
2023-06-17 10:42:101401semak imbas

Menggunakan Tindanan Elastik dalam Go: Panduan Lengkap

Timbunan Elastik ialah set alat sumber terbuka yang menyediakan sokongan berkuasa untuk mencari, menganalisis dan menggambarkan sejumlah besar data. Set alat terdiri daripada empat komponen utama: Elasticsearch, Logstash, Kibana dan Beats. Antaranya, Elasticsearch ialah enjin carian dan analisis teragih yang boleh melakukan operasi carian, analisis dan pengagregatan dengan cepat. Logstash ialah alat untuk mengumpul, memproses dan menghantar data Ia menyokong pengumpulan data daripada pelbagai sumber yang berbeza dan menghantarnya ke Elasticsearch untuk penyimpanan dan analisis. Kibana ialah platform untuk menggambarkan dan menganalisis data, yang menyediakan pilihan visualisasi yang kaya dan pemantauan data masa nyata. Beats ialah satu set pengumpul data ringan yang mampu mengumpul data daripada pelbagai sumber data dan kemudian menghantarnya ke Logstash atau Elasticsearch untuk analisis.

Bahasa Go ialah bahasa pengaturcaraan moden yang cekap, pantas dan selamat. Dalam artikel ini, kami akan meneroka cara menggunakan Elastic Stack dalam Go dan menerangkan cara mengintegrasikan Elasticsearch, Logstash, Kibana dan Beats ke dalam aplikasi Go.

  1. Carian teks penuh menggunakan Elasticsearch

Elasticsearch ialah enjin carian dan analisis teragih sumber terbuka yang menyediakan keupayaan carian teks penuh yang berkuasa. Dalam bahasa Go, kami boleh menggunakan Elasticsearch untuk carian teks penuh untuk mencari data yang kami perlukan dengan cepat.

Pertama, kita perlu memasang Elasticsearch dan memulakan perkhidmatan. Kemudian, kita boleh menggunakan pakej elasticsearch bahasa Go untuk menyambung ke Elasticsearch dan melakukan operasi carian. Berikut ialah contoh kod yang melakukan carian teks penuh menggunakan pakej elasticsearch:

package main

import (
    "context"
    "fmt"

    "github.com/elastic/go-elasticsearch/v8"
    "github.com/elastic/go-elasticsearch/v8/esapi"
)

func main() {
    // Connect to Elasticsearch
    cfg := elasticsearch.Config{
        Addresses: []string{"http://localhost:9200"},
    }
    es, err := elasticsearch.NewClient(cfg)
    if err != nil {
        fmt.Println(err)
        return
    }

    // Perform a search
    req := esapi.SearchRequest{
        Index: []string{"myindex"},
        Body:  []byte(`{"query":{"match":{"title":"foo"}}}`),
    }
    res, err := req.Do(context.Background(), es)
    if err != nil {
        fmt.Println(err)
        return
    }
    defer res.Body.Close()

    // Print search results
    fmt.Println(res.StatusCode)
    fmt.Println(res.String())
}

Dalam contoh ini, kami menyambung ke perkhidmatan Elasticsearch tempatan dan melakukan operasi carian mudah untuk mencari tajuk dalam indeks myindex Dokumen yang mengandungi foo. Seperti yang anda lihat, kami mula-mula mencipta objek elasticsearch.Config dan tentukan alamat untuk disambungkan. Kami kemudian mencipta objek elasticsearch.Client menggunakan kaedah NewClient dan menggunakannya untuk melaksanakan operasi carian. Akhir sekali, kami mencetak kod status HTTP dan badan tindak balas hasil carian.

Menggunakan Elasticsearch untuk carian teks penuh boleh membantu kami mencari data yang kami perlukan dengan cepat, di samping meningkatkan prestasi dan kebolehskalaan aplikasi kami.

  1. Menggunakan Logstash untuk pemprosesan data

Logstash ialah alat untuk mengumpul, memproses dan menghantar data Ia menyokong pengumpulan data daripada pelbagai sumber yang berbeza dan menukarkannya kepada Dihantar kepada Elasticsearch untuk penyimpanan dan analisis. Dalam Go, kami boleh menggunakan Logstash untuk memproses data kami dan menghantarnya ke Elasticsearch untuk analisis dan visualisasi.

Pertama, kita perlu memasang Logstash dan memulakan perkhidmatan. Kami kemudiannya boleh menggunakan pakej bersih Go untuk menyambung ke Logstash dan menghantar data kepadanya.

Berikut ialah contoh kod yang menggunakan pakej bersih untuk menghantar data ke Logstash:

package main

import (
    "fmt"
    "net"
)

func main() {
    // Connect to Logstash
    conn, err := net.Dial("tcp", "localhost:5000")
    if err != nil {
        fmt.Println(err)
        return
    }
    defer conn.Close()

    // Send data to Logstash
    data := "Hello, world!"
    _, err = conn.Write([]byte(data))
    if err != nil {
        fmt.Println(err)
        return
    }

    fmt.Println("Data sent successfully.")
}

Dalam contoh ini, kami menggunakan kaedah net.Dail untuk menyambung ke perkhidmatan Logstash tempatan dan menggunakan net. Objek Conn menghantar data kepadanya. Seperti yang anda lihat, kami mula-mula mencipta objek net.Conn dan tentukan alamat dan port untuk disambungkan. Kami kemudian menggunakan kaedah Tulis untuk menghantar data ke Logstash. Akhir sekali, kami mencetak mesej bahawa data telah berjaya dihantar.

Menggunakan Logstash untuk pemprosesan data boleh membantu kami memproses data yang kompleks dan menghantarnya ke Elasticsearch untuk penyimpanan dan analisis.

  1. Gunakan Kibana untuk visualisasi data

Kibana ialah platform untuk menggambarkan dan menganalisis data, yang menyediakan pilihan visualisasi yang kaya dan pemantauan data masa nyata. Dalam bahasa Go, kami boleh menggunakan Kibana untuk menggambarkan data kami dan melaksanakan pemantauan dan analisis data masa nyata.

Pertama, kita perlu memasang Kibana dan memulakan perkhidmatan. Kami kemudiannya boleh menyambung ke Kibana menggunakan penyemak imbas dan mencipta papan pemuka visual baharu.

Berikut ialah contoh kod untuk mencipta papan pemuka visual menggunakan Kibana:

package main

import (
    "fmt"
    "net/http"
)

func main() {
    // Connect to Kibana
    url := "http://localhost:5601/app/kibana"
    resp, err := http.Get(url)
    if err != nil {
        fmt.Println(err)
        return
    }
    defer resp.Body.Close()

    // Create dashboard
    // ...

    fmt.Println("Dashboard created successfully.")
}

Dalam contoh ini, kami menggunakan pakej http untuk menyambung kepada perkhidmatan Kibana tempatan dan mencipta papan pemuka visual baharu . Seperti yang anda lihat, kami mula-mula mencipta objek http.Response dan menentukan alamat URL untuk disambungkan. Kami kemudiannya boleh membina asas ini untuk mencipta papan pemuka visual baharu untuk pemantauan masa nyata dan analisis data kami. Akhir sekali, kami mencetak mesej bahawa papan pemuka visualisasi telah berjaya dibuat.

Menggunakan Kibana untuk visualisasi data boleh membantu kami memahami dan menganalisis data kami dengan lebih baik serta meningkatkan prestasi dan kebolehpercayaan aplikasi kami.

  1. Pengumpulan data menggunakan Beats

Beats ialah satu set pengumpul data ringan yang mampu mengumpul data daripada pelbagai sumber data dan kemudian menghantarnya ke Logstash atau Elasticsearch untuk analisis . Dalam Go, kami boleh menggunakan Beats untuk mengumpul data kami dan menghantarnya ke Logstash atau Elasticsearch untuk analisis.

Pertama, kita perlu memasang Beats dan memulakan perkhidmatan. Kami kemudiannya boleh menggunakan pakej Go beats untuk menyambung ke Beats dan mengumpul data kami.

Berikut ialah contoh kod yang menggunakan pakej beats untuk mengumpul data daripada fail dan menghantarnya ke Logstash:

package main

import (
    "fmt"

    "github.com/elastic/go-beats/filebeat"
    "github.com/elastic/go-beats/filebeat/input"
    "github.com/elastic/go-beats/libbeat/common/streambuf"
    "github.com/elastic/go-beats/libbeat/outputs"
    "github.com/elastic/go-beats/libbeat/publisher"
)

func main() {
    // Connect to Logstash
    cfg := outputs.MothershipConfig{
        Hosts:    []string{"localhost:5000"},
        Username: "",
        Password: "",
    }
    logstash, err := outputs.ConnectorFromString("logstash", cfg)
    if err != nil {
        fmt.Println(err)
        return
    }

    // Collect data from file
    reader := input.File{
        Config: input.Config{
            Type: "log",
            Path: "/path/to/file",
        },
    }

    publisher := publisher.New(
        publisher.WithOutputer(logstash),
        publisher.WithCodec(outputs.JSONCodecV2()),
    )

    stream := streambuf.NewReader(reader, nil)
    for event := range filebeat.ReadFrom(stream, publisher) {
        fmt.Println(event.Fields)
    }
}

在这个示例中,我们使用outputs.ConnectorFromString方法连接到本地的Logstash服务,并使用beats包的input.File对象从指定的文件中读取数据。然后,我们使用publisher.New方法创建一个publisher对象,并将数据与Logstash进行关联。可以看到,我们首先创建一个outputs.MothershipConfig对象,指定要连接的主机地址和端口。然后,我们使用ConnecorFromString方法创建一个连接器对象,并将其与Logstash进行关联。最后,我们使用NewReader方法从文件中读取数据,并将其与publisher对象进行关联,以便将数据发送到Logstash进行处理。

使用Beats进行数据收集可以帮助我们从多种数据源中收集数据,并将其发送到Logstash或Elasticsearch进行分析和处理。

结论

Elastic Stack是一个非常强大的工具集,能够为搜索、分析和可视化大量数据提供强大的支持。在本文中,我们介绍了如何在Go语言中使用Elastic Stack,并说明了如何使用Elasticsearch进行全文搜索、使用Logstash进行数据处理、使用Kibana进行数据可视化以及使用Beats进行数据收集。

通过使用Elastic Stack,在Go语言中处理和分析大量数据变得更加容易和高效,同时也提高了我们应用程序的性能和可靠性。我们鼓励开发者将Elastic Stack集成到您的应用程序中,以便获得更好的数据可视化和分析功能。

Atas ialah kandungan terperinci Menggunakan Tindanan Elastik dalam 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