Utiliser AWS ELK Stack dans le langage Go : un guide complet
Avec le développement continu de la technologie moderne, l'analyse des données est devenue un élément indispensable des entreprises. Afin de réaliser l’analyse des données, les entreprises doivent collecter, traiter, stocker et analyser les données. La plate-forme de cloud computing AWS fournit aux entreprises une solution pour collecter, traiter et analyser les données de journaux à l'aide de la pile Elasticsearch, Logstash et Kibana (ELK). Dans cet article, nous utiliserons le langage Go comme langage de développement pour présenter comment utiliser Go pour traiter les données de journal dans AWS ELK Stack.
Tout d’abord, nous devons comprendre ce qu’est ELK. ELK, qui fait référence à Elasticsearch, Logstash et Kibana, est un ensemble d'outils open source permettant de traiter de grandes quantités de données structurées et semi-structurées. Elasticsearch est un moteur de recherche et d'analyse qui peut être utilisé pour stocker et interroger des données. Logstash est un collecteur et transmetteur de données qui collecte et transmet des données de journaux provenant de différentes sources à Elasticsearch. Kibana est un outil de visualisation qui affiche les données d'Elasticsearch via une interface Web.
AWS ELK Stack est une pile ELK construite sur la plateforme cloud AWS. Les entreprises peuvent utiliser AWS ELK Stack pour stocker et traiter leurs données de journaux. Cela donne aux entreprises plus de flexibilité dans la recherche et l’analyse des données, ainsi que de meilleures capacités de dépannage.
Le langage Go est un langage de programmation typé statiquement de la famille des langages C, développé par Google. Son efficacité et la sécurité de sa mémoire en font l'un des langages de développement privilégiés pour de nombreuses applications de cloud computing. Dans cette section, nous expliquons comment utiliser AWS ELK Stack en langage Go pour traiter les données de journaux.
2.1 Installer et configurer AWS ELK Stack
Tout d'abord, nous devons installer et configurer la pile ELK sur AWS. Dans AWS, nous pouvons utiliser Amazon Elasticsearch Service (ES) pour installer Elasticsearch, Logstash et Kibana. Tout d'abord, nous devons créer un domaine Amazon ES qui hébergera notre cluster Elasticsearch. Ensuite, nous devons créer un compartiment Amazon S3 pour le stockage des fichiers de configuration Logstash.
Étapes pour créer un domaine Amazon ES :
Étapes pour créer un compartiment Amazon S3 :
Une fois terminé, nous devons configurer Logstash pour lire les données du journal et les envoyer au cluster Elasticsearch. Ce qu'il faut noter ici, c'est que nous devons écrire un fichier de configuration Logstash pour spécifier où Logstash lira les données du journal et les enverra au cluster Elasticsearch. Ensuite, nous téléchargerons le fichier de configuration dans le compartiment Amazon S3.
2.2 Utiliser le langage Go pour envoyer des données de journal à Logstash
Dans cette section, nous verrons comment utiliser le langage Go pour écrire du code permettant d'envoyer des données de journal à Logstash. Nous utilisons le plugin d'entrée HTTP Logstash pour recevoir les requêtes HTTP POST de l'application Go et envoyer les données de la requête au cluster Elasticsearch. Dans le code, nous utilisons la méthode HTTP POST pour envoyer des données à Logstash. Notre code enverra une requête au format JSON et l'enverra à Logstash.
Nous importons d'abord le package que nous devons utiliser :
import ( "bytes" "encoding/json" "net/http" )
Ensuite, nous créons une structure LogData pour stocker les données du journal
type LogData struct { Timestamp string `json:"timestamp"` Message string `json:"message"` Level string `json:"level"` }
Nous définissons une fonction SendLogToLogstash dans le code, qui prend la structure LogData comme paramètre et elle est envoyée à Logstash. Voici l'exemple de code de la fonction :
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 }
Ensuite, nous devons utiliser l'URL du point de terminaison du plugin d'entrée HTTP dans le fichier de configuration Logstash que nous avons créé dans la section précédente pour appeler la fonction SendLogToLogstash et envoyer les données du journal à Logstash. Nous pouvons le faire en utilisant l'exemple de code suivant :
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) } }
Nous pouvons également placer le code ci-dessus dans un serveur HTTP. Lorsque des requêtes HTTP POST provenant d'autres applications sont envoyées à ce serveur, le serveur enverra les journaux à Logstash en utilisant le code ci-dessus.
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 } }
Nous avons envoyé avec succès les données de journal au cluster Elasticsearch et pouvons désormais utiliser Kibana pour l'analyse et la visualisation des données. Kibana peut afficher les données lues depuis le cluster Elasticsearch et nous permettre d'effectuer des opérations de requête et d'agrégation.
Dans Kibana, nous devons créer une visualisation pour afficher les données du journal. Avant de créer une nouvelle visualisation, nous devons définir un schéma d'index dans Kibana pour spécifier à partir desquels Kibana lira les données.
Une fois le schéma d'index défini, nous pouvons créer une visualisation pour afficher les données du journal. Dans l'onglet Visualisation, nous pouvons choisir parmi un certain nombre de types de graphiques différents, notamment des graphiques à barres, des diagrammes circulaires, des graphiques linéaires, etc. Kibana nous permet également de récupérer des données de journaux en fonction de conditions spécifiques en ajoutant des filtres et des requêtes. De plus, nous pouvons également exporter ces résultats de visualisation vers des fichiers PDF ou PNG.
Dans cet article, nous avons appris à utiliser le langage Go pour envoyer des données de journal à AWS ELK Stack et à utiliser Kibana pour analyser et visualiser les données. Nous avons commencé par installer et configurer la pile ELK, puis avons montré comment utiliser Go pour envoyer des requêtes HTTP POST à Logstash et envoyer des données de journal à un cluster Elasticsearch. Enfin, nous avons expliqué comment créer des visualisations dans Kibana pour présenter les données de journal. Ces étapes aideront efficacement les entreprises à effectuer une analyse des journaux pour améliorer l’efficacité, la robustesse et la fiabilité des applications.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!