Serilog를 통해 애플리케이션 데이터를 수집하고 분석하자

Serilog를 통한 애플리케이션 데이터 수집과 분석
Serilog를 이용한 로그 작성
Serilog를 이용하여 로그를 작성하는 방법은 다음과 같습니다.
- [예시] 이렇게 Serilog를 이용하여 로그를 작성할 수 있습니다.
- 이렇게 작성된 로그를 구조화 된 로그로 작성할 수 있습니다.
로그를 구조화 된 표현법으로 변경하면 다음과 같습니다.
public class LogData
{
public string Message { get; set; }
public string Level { get; set; }
public DateTime Timestamp { get; set; }
}
이 클래스를 다음과 같이 로그에 작성할 수 있습니다.
Log.Information("Processed {@Data}", new LogData { Message = "Data processed successfully", Level = "Info", Timestamp = DateTime.Now });
이렇게 작성된 로그를 수집하면 다음과 같이 나옵니다.
Processed {
"Message": "Data processed successfully",
"Level": "Info",
"Timestamp": "2022-01-01T00:00:00.0000000Z"
}
구조화 된 표현법으론 다음과 같이 나옵니다.
{"Message":"Data processed successfully","Level":"Info","Timestamp":"2022-01-01T00:00:00.0000000Z"}
Serilog를 이용한 로그 수집 (Serilog .Sinks)
Serilog는 다양한 로그 저장소에 로그를 저장할 수 있도록 다양한 Sink 를 제공합니다. 이 글에서는 Serilog.Sinks .AmazonS3 를 사용하여 S3에 로그를 저장해 보겠습니다.
Serilog를 appsettings.json 을 이용해 초기화합니다.
Amazon Glue를 이용한 로그 크롤링
Amazon S3에 저장된 로그를 Amazon Athena를 이용하여 분석할 수 있습니다. 그래서 Amazon Athena를 이용하여 로그를 분석하기 위해서는 로그를 Amazon Glue를 이용하여 크롤링해야 합니다. Glue를 이용하여 데이터 카탈로그에 크롤링을 하는 방법은 다음 글을 참고하시면 됩니다.
다음과 같이 Amazon Athena를 이용하여 로그를 분석할 수 있습니다.
이를 이용하여 여러 분산 네트워크 상의 노드들의 로그를 분석할 수 있습니다.
결론
이 글에서는 Serilog를 이용하여 로그를 수집하고 Amazon Athena를 이용하여 로그를 분석하는 방법을 소개했습니다. 오늘 소개한 방법을 응용하면 다양한 분산 네트워크 상의 노드들의 로그를 분석할 수 있을 것으로 기대합니다.