> 백엔드 개발 > Golang > Beego에서 로그 수집 및 분석을 위해 ELK 사용

Beego에서 로그 수집 및 분석을 위해 ELK 사용

PHPz
풀어 주다: 2023-06-23 09:34:40
원래의
1268명이 탐색했습니다.

Beego에서 로그 수집 및 분석을 위해 ELK 사용

ELK는 Elasticsearch, Logstash 및 Kibana의 세 가지 오픈 소스 소프트웨어로 구성된 매우 인기 있는 로그 수집 및 분석 도구 세트입니다. 이 도구 세트를 사용하면 대량의 로그 데이터를 실시간으로 검색, 분석, 시각화할 수 있습니다.

웹 애플리케이션 개발에서 로그는 애플리케이션 동작 추적, 디버깅 및 성능 최적화 등에 사용할 수 있는 매우 유용한 정보 소스입니다. Beego는 Go 언어로 작성된 오픈 소스 웹 프레임워크로 ELK를 사용하여 로그 수집 및 분석을 쉽게 수행할 수 있습니다.

이 글에서는 로그 수집 및 분석을 위해 Beego에서 ELK를 구성하고 사용하는 방법과 데이터 시각화를 위해 Kibana를 사용하는 방법을 소개합니다.

1. ELK 설치 및 구성

먼저 ELK 소프트웨어 패키지의 최신 버전을 공식 웹사이트(https://www.elastic.co/downloads/

)에서 다운로드할 수 있습니다. ELK에서는 먼저 Java를 설치해야 합니다. JAVA_HOME 환경 변수를 설정한 다음 ELK 패키지의 압축을 풀고 Elasticsearch 및 Kibana를 시작합니다.

cd elasticsearch-7.6.0/bin
./elasticsearch

cd kibana-7.6.0/bin
./kibana
로그인 후 복사

그런 다음 Logstash 구성 파일logstash.conf를 편집하고 입력, 필터 및 출력을 구성합니다.

input {
    tcp {
        port => 5000
        codec => json
    }
}

filter {
    if [type] == "beego" {
        grok {
            match => { "message" => "%{COMBINEDAPACHELOG}" }
        }
    }
}

output {
    elasticsearch {
        hosts => ["localhost:9200"]
        index => "%{type}-%{+YYYY.MM.dd}"
    }
}
로그인 후 복사

이 구성은 다음과 같습니다. 파일은 Logstash가 포트 5000 TCP 연결을 수신하고 JSON 인코딩 및 디코딩을 사용하도록 지정합니다. Beego 애플리케이션에서 보낸 로그 메시지가 수신되면 로그 메시지는 정규식 grok 필터를 사용하여 구문 분석됩니다. 그러면 구문 분석된 로그 메시지가 Elasticsearch로 출력됩니다.

2. Beego 애플리케이션에서 ELK 사용

Beego 애플리케이션에서 logrus를 로그 라이브러리로 사용하면 Logstash 서버에 로그를 보낼 수 있습니다.

package main

import (
    "github.com/astaxie/beego"
    "github.com/sirupsen/logrus"
    "github.com/x-cray/logrus-prefixed-formatter"
    "gopkg.in/natefinch/lumberjack.v2"
)

func init() {
    logLevel, err := logrus.ParseLevel(beego.AppConfig.String("logrus.level"))
    if err != nil {
        logLevel = logrus.InfoLevel
    }

    logrus.SetLevel(logLevel)
    logrus.SetFormatter(&prefixed.TextFormatter{})
    logrus.SetOutput(&lumberjack.Logger{
        Filename:   beego.AppConfig.String("logrus.filename"),
        MaxSize:    10, // megabytes
        MaxBackups: 3,
        MaxAge:     28, // days
    })

    logrus.AddHook(&logrusHook{})
}

type logrusHook struct{}

func (h *logrusHook) Levels() []logrus.Level {
    return logrus.AllLevels
}

func (h *logrusHook) Fire(entry *logrus.Entry) error {
    message, err := entry.String()
    if err != nil {
        return err
    }

    logstash := beego.AppConfig.String("logstash.addr")
    connection, err := net.Dial("tcp", logstash)
    if err != nil {
        return err
    }

    defer connection.Close()

    _, err = connection.Write([]byte(message))
    return err
}
로그인 후 복사

이 코드 조각에서는 먼저 logrus 라이브러리를 사용하여 로거를 초기화하고 그런 다음 출력을 파일 및 표준 출력에 기록합니다. 그런 다음 logrusHook를 추가하여 로그될 때마다 JSON 형식의 로그 메시지를 Logstash 서버에 보냅니다.

Beego 애플리케이션에서 Logrus를 로깅 라이브러리로 사용하는 것은 매우 편리합니다. 코드에서 Logrus 라이브러리를 가져온 다음 logrus.WithFields() 메서드를 사용하여 키-값 형식으로 로그 정보를 기록하면 됩니다. 한 쌍.

3. 데이터 시각화를 위해 Kibana를 사용하세요

Kibana는 로그 데이터를 쿼리, 시각화, 분석할 수 있는 웹 인터페이스입니다. 브라우저에서 Kibana의 주소(일반적으로 http://localhost:5601)를 열고 "Discover" 메뉴를 선택하여 수집된 로그 데이터를 검색하고 시각화합니다.

Kibana에서 대시보드를 생성하여 여러 쿼리를 함께 시각화하여 시스템 상태를 모니터링할 수 있습니다. 필터와 태그를 사용하면 데이터를 보다 정확하게 쿼리하고 시각화할 수도 있습니다.

4. 요약

Beego 애플리케이션에서 로그 수집 및 분석을 위해 ELK를 사용하는 것은 매우 편리하고 실용적인 방법입니다. ELK는 유연한 로그 필터링 및 시각화 기능을 제공하여 애플리케이션 문제를 빠르게 찾아 성능을 최적화합니다. 동시에 시각화 및 대시보드를 통해 애플리케이션의 실행 상태를 보다 직관적으로 모니터링할 수 있습니다.

위 내용은 Beego에서 로그 수집 및 분석을 위해 ELK 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿