ホームページ >バックエンド開発 >Golang >Go での AWS ELK スタックの使用: 完全ガイド

Go での AWS ELK スタックの使用: 完全ガイド

WBOY
WBOYオリジナル
2023-06-17 13:13:401713ブラウズ

Go 言語での AWS ELK スタックの使用: 完全ガイド

最新テクノロジーの継続的な発展に伴い、データ分析は企業にとって不可欠な部分になりました。データ分析を実現するには、企業はデータを収集、処理、保存、分析する必要があります。クラウド コンピューティング プラットフォーム AWS は、Elasticsearch、Logstash、Kibana (ELK) スタックを使用してログ データを収集、処理、分析するソリューションを企業に提供します。この記事では、開発言語として Go 言語を使用し、Go を使用して AWS ELK スタックのログデータを処理する方法を紹介します。

  1. AWS ELK スタックとは何ですか?

まず、ELK とは何かを理解する必要があります。 Elasticsearch、Logstash、Kibana を指す ELK は、大量の構造化データおよび半構造化データを処理するためのオープンソース ツールセットです。 Elasticsearch は、データの保存とクエリに使用できる検索および分析エンジンです。 Logstash は、さまざまなソースからログ データを収集して Elasticsearch に送信するデータ コレクターおよび送信機です。 Kibana は、Web インターフェイスを通じて Elasticsearch からのデータを表示する視覚化ツールです。

AWS ELK スタックは、AWS クラウド プラットフォーム上に構築された ELK スタックです。企業は AWS ELK スタックを使用してログデータを保存および処理できます。これにより、企業はデータの検索と分析がより柔軟になり、トラブルシューティング機能も向上します。

  1. Go 言語での AWS ELK スタックの使用

Go 言語は、Google によって開発された C 言語ファミリーの静的型付けプログラミング言語です。その効率性とメモリの安全性により、多くのクラウド コンピューティング アプリケーションで推奨される開発言語の 1 つとなっています。このセクションでは、Go 言語で AWS ELK スタックを使用してログデータを処理する方法について説明します。

2.1 AWS ELK スタックのインストールと構成

まず、AWS に ELK スタックをインストールして構成する必要があります。 AWS では、Amazon Elasticsearch Service (ES) を使用して Elasticsearch、Logstash、Kibana をインストールできます。まず、Elasticsearch クラスターをホストする Amazon ES ドメインを作成する必要があります。次に、Logstash 設定ファイルを保存するための Amazon S3 バケットを作成する必要があります。

Amazon ES ドメインを作成する手順:

  1. AWS コンソールにログインし、Amazon ES サービスに移動します。
  2. 「ES ドメインの作成」ボタンをクリックします。
  3. [基本情報]タブで、ドメイン名とバージョン番号を入力します。アクセス ポリシーと VPC を選択し、[次へ] をクリックします。
  4. [構成] タブでは、シャーディングとバックアップに関するオプションを選択できます。 「次へ」をクリックします。
  5. [詳細オプション] タブでは、その他の詳細設定を行うことができます。完了したら「次へ」をクリックします。
  6. [確認] タブで構成を確認し、[ドメインの作成] をクリックします。

Amazon S3 バケットを作成する手順:

  1. AWS コンソールにログインし、Amazon S3 サービスに移動します。
  2. 「バケットの作成」ボタンをクリックします。
  3. バケット名を入力し、デフォルト値を選択して、「次へ」をクリックします。
  4. [構成オプション] タブでは、バージョン管理とログのオプションを選択できます。完了したら「次へ」をクリックします。
  5. [権限の管理] タブでは、他の詳細設定を選択できます。完了したら「次へ」をクリックします。
  6. [確認] タブで構成を確認し、[バケットの作成] をクリックします。

完了したら、ログ データを読み取り、Elasticsearch クラスターに送信するように Logstash を設定する必要があります。ここで注意する必要があるのは、Logstash がログ データを読み取って Elasticsearch クラスターに送信する場所を指定する Logstash 設定ファイルを作成する必要があるということです。次に、設定ファイルを Amazon S3 バケットにアップロードします。

2.2 Go 言語を使用して Logstash にログ データを送信する

このセクションでは、Go 言語を使用してログ データを Logstash に送信するコードを作成する方法について説明します。 Logstash HTTP 入力プラグインを使用して、Go アプリケーションから HTTP POST リクエストを受信し、リクエスト データを Elasticsearch クラスターに送信します。コードでは、HTTP POST メソッドを使用してデータを Logstash に送信します。私たちのコードは、JSON 形式のリクエストを送信し、Logstash に送信します。

import (
    "bytes"
    "encoding/json"
    "net/http"
)

まず、使用する必要のあるパッケージをインポートします。

type LogData struct {
    Timestamp string `json:"timestamp"`
    Message   string `json:"message"`
    Level     string `json:"level"`
}

次に、ログ データを保存する構造体 LogData を作成します

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
}

コード SendLogToLogstash で関数を定義します。これは LogData 構造体をパラメータとして受け取り、Logstash に送信します。関数のサンプル コードは次のとおりです。

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)
    }
}

次に、前のセクションで作成した Logstash 構成ファイル内の HTTP 入力プラグイン エンドポイント URL を使用して、SendLogToLogstash 関数を呼び出し、ログ データを Logstash に送信する必要があります。これは、次のサンプル コードを使用して実行できます。

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
    }
}

上記のコードを HTTP サーバーに配置することもできます。他のアプリケーションからの HTTP POST リクエストがこのサーバーに送信されると、サーバーは上記のコードを使用してログを Logstash に送信します。

rrreee
  1. Kibana を使用したログ データの視覚化

ログ データが Elasticsearch クラスターに正常に送信されたので、データ分析と視覚化に Kibana を使用できるようになりました。 Kibana は、Elasticsearch クラスターから読み取られたデータを表示し、クエリと集計操作を実行できるようにします。

Kibana では、ログ データを表示するビジュアライゼーションを作成する必要があります。新しいビジュアライゼーションを作成する前に、Kibana でインデックス スキーマを定義して、Kibana がデータを読み取るインデックスを指定する必要があります。

インデックス スキーマを定義したら、ログ データを表示するビジュアライゼーションを作成できます。 [視覚化] タブでは、棒グラフ、円グラフ、折れ線グラフなど、さまざまなグラフの種類から選択できます。 Kibana では、フィルターやクエリを追加することで、特定の条件に基づいてログ データを取得することもできます。さらに、これらの視覚化結果を PDF または PNG ファイルにエクスポートすることもできます。

  1. 概要

この記事では、Go 言語を使用してログデータを AWS ELK スタックに送信し、Kibana を使用してデータを分析および視覚化する方法を学びました。まず ELK スタックをインストールして構成し、次に Go を使用して Logstash への HTTP POST リクエストを作成し、ログ データを Elasticsearch クラスターに送信する方法を示しました。最後に、Kibana で視覚化を作成してログ データを表示する方法について説明しました。これらの手順は、企業がログ分析を実行してアプリケーションの効率、堅牢性、信頼性を向上させるのに効果的に役立ちます。

以上がGo での AWS ELK スタックの使用: 完全ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。