서비스 모니터링 구현 사례 공유
Realtime Log Monitoring & Analytics Platform – Planet Mon을 지탱하는 기술
허제민, System Software 개발팀, 2016.
1
SK Planet Log 현황 (2016. 8. 18)
• 1일 로그 수집 량
• 30~50 억 건 (3~5 Billion lines)
• Web Access log 10억 건 이상, Application Log 2...
2
Trend
Modern Log Monitoring & Analytics Platform
• Log 기반 모니터링 - 중앙에서 실시간으로 각 서버의 Log를 수집하고 분석하고 통합 뷰 제공
• Access Log, A...
3
Planet Mon (PMon)
SK Planet 전사 서비스 모니터링 플랫폼 https://pmon.skplanet.com/
• Realtime Log Monitoring & Analytics Platform
• ...
4
Planet Mon 을 지탱하는 기술
Reference Architecture
• ELK (Elasticsearch – Logstash – Kibana)
• www.elastic.co
• Collection
- OS...
5
Planet Mon 을 지탱하는 기술
1. Collection
– 수천대의 서버에서 System Metric과 Log File 데이터를 수집하는 Agent 관리
2. Transport
– Kafka와 Logstash...
6
Planet Mon 을 지탱하는 기술
1. Collection
– 수천대의 서버에서 System Metric과 Log File 데이터를 수집하는 Agent 관리
LogFileAgent
(CNXLog)
SystemAg...
7
Planet Mon 을 지탱하는 기술
2. Transport
– Kafka와 Logstash를 활용한 데이터 센터간 안정적인 데이터 전송
LogFileAgent
(CNXLog)
SystemAgent
• Collect...
8
Planet Mon 을 지탱하는 기술
3. Log Stream Analytics
– 적정한 기술을 사용한 Log Stream Analytics 서버 개발
– Stream Analytics 결과 기반 실시간 Alarm...
9
Planet Mon 을 지탱하는 기술
4. Storage
– Elasticsearch를 Timeseries DB와 같은 Metric Data 저장소로 사용
– Elasticsearch를 검색 가능한 Log 데이터 통...
10
LogFileAgent
(CNXLog)
SystemAgent
Planet Mon 을 지탱하는 기술
5. Visualization
– Metric Data기반으로 화려하고 다양한 그래프와 Dashboard를 동적으로...
11
PMon Log Stream Analytics
Open Source Solution ?
12
PMon Log Stream Analytics
Open Source Solution ?
요구 사항
• Log Line 별로 기본 통계 추출
- 호스트 단위의 Log Line 에서 특정 값을 찾아서 word coun...
13
Planet Mon Log Stream Analytics
적정한 Log Stream Analytics Server 개발
• Opensource 솔루션을 사용하는 것이 맞는 것인가?
• 해결하려는 것에 적절한 가?
...
14
Log Stream Analytics Server
Kafka Consumer Cluster
제공 기능
• Scale-out - Partition의 수만큼 Consumer 수를 늘려가며 병렬로 처리할 수 있다.
• ...
15
Log Stream Analytics Server
Modern Java (Java 8 이후)
• Lambda
• x -> f(x)
• Stream 중간에 넣어서 데이터를 가지고 새로운 데이터를 만들면서 처리
• S...
16
Log Stream Analytics Server
Spring Boot
• Actuator
• Http endpoints (Rest API), JMX, remote shell 등을 이용하여구체적인 동작(관리와 모니...
17
Log Stream Analytics Server
ServiceMon Process
• InputLogLine
• Kafka에서 읽은 데이터를 Host나 Type별로 Line List로 만듬
• KeyTypeExp...
18
Planet Mon Architecture
Kappa Architecture
• http://novoj.github.io/reveal.js/kappa-architecture.html
• Input : Kafka
•...
19
기술적 내용이 참 많은데…
PMon 에 관해 참으로 놀랄 만한 개발, 운영 노하우를 보유하였으
나,
그것을 다 설명하기에는 @tech 시간이 너무나 짧다.
- 수천대의 서버에 설치되는 System Metric, L...
20
Q & A
Upcoming SlideShare
Loading in …5
×

서비스 모니터링 구현 사례 공유 - Realtime log monitoring platform-PMon을 지탱하는 기술

5,082 views

Published on

1일 수천대의 서버에서 발생하는 30~50억건의 Log와 Metric을 처리하는 Planet Mon 을 지탱하는 기술인 Collection(Collectd, NXlog), Transport(Kakfa, Logstash), Log Stream Analytics, Storage(Elasticsearch), Visualization을 구성하는 Architecture에 대해 설명드리고 제가 개발한 Log Stream Analytics 서버들의 구현 기술에 대해 좀더 상세히 설명합니다.

Published in: Technology
0 Comments
38 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,082
On SlideShare
0
From Embeds
0
Number of Embeds
3,143
Actions
Shares
0
Downloads
120
Comments
0
Likes
38
Embeds 0
No embeds

No notes for slide



  • 3~5만 line / sec


  • 스토리지 중심의 아키텍처임 엘라스틱에서 저장과 분석을 함 엘라스틱이 많이 필요함
    수백대 서버 규모에서는 가능함



  • 서버 resource 사용 문제 때문에 c로 개발된 opensource 기반



  • Opensouce를 사용하지 않고 직접 개발 함


  • 제가 구현한 Pmon의 Log Stream Analytics 부분에 대해 상세하게 알아보기 전에
    왜 Opensource를 쓰지 않았을까?



  • 필요로 하는 요구사항이 글로벌하게 연관관계를 분석하거나 하지 않음



  • 고민을 함
    scala 배워야하나?
    Yarn 으로 관리 해야하나?


  • Java에서 Lambda 표기법은 Method가 하나인 Anonymous Class (익명 클래스) 구현을 간단하게 바꿨다고 생각하면 이해하기 편하다.
    summaryStatistics 좋다.



  • 스트림으로 들어오는 데이터를 시간 기준으로 Reduction(축소) 하여 1분단위의 표준 통계 형태로 저장 함
    표준 통계는 일종의 DW/BI 쪽에서 말하는 Dada cube aggregation 이라고도 볼 수 있는 형태임



  • Lambda Architecture 에서 스트림 부분
    LinkedIn - Kafka를 만듬 , 스트림 분야 기술을 이끌고 있음
    Kafka로 1.4 trillion message (1조) per day 를 전송 중임 – 우리의 200배 수준 https://engineering.linkedin.com/blog/2016/04/kafka-ecosystem-at-linkedin
    Kappa 아키텍처를 2014년에 나옴 https://www.oreilly.com/ideas/questioning-the-lambda-architecture
    그리스어에서 따옴
  • 서비스 모니터링 구현 사례 공유 - Realtime log monitoring platform-PMon을 지탱하는 기술

    1. 1. 서비스 모니터링 구현 사례 공유 Realtime Log Monitoring & Analytics Platform – Planet Mon을 지탱하는 기술 허제민, System Software 개발팀, 2016.
    2. 2. 1 SK Planet Log 현황 (2016. 8. 18) • 1일 로그 수집 량 • 30~50 억 건 (3~5 Billion lines) • Web Access log 10억 건 이상, Application Log 20억 건 이상 • 2~5TB • 주요 서비스 – Syrup Wallet 10~20억 건, OCB – 1~3억 건 • 수집 대상 서버 수 (agent 설치 서버) • 전체 서버 7041 대 (일산 843대, 커머스 6198대) • Log 수집 중인 서버 – 1676 대 (일산 188대, 커머스 1488대) • 실시간으로 Log를 수집하고 있는 파일 수 – 7370 개 • 적용된 서비스 • OCB, SyrupWallet, SyrupPay, Gifticon, SyrupStore, Syrup Table, Syrup Order, Syrup Style, S yrup Fashion, Syrup AD, O2O Solution, API Management Platform, FIDO, Search, EventOn e, 통합쿠폰서비스, OneID, ATMOS, IMPAY, TCloud, TSmartsafe, DMP, PlaceDB, MarketingPl us…
    3. 3. 2 Trend Modern Log Monitoring & Analytics Platform • Log 기반 모니터링 - 중앙에서 실시간으로 각 서버의 Log를 수집하고 분석하고 통합 뷰 제공 • Access Log, Application Log, 통합 Log Viewer • Pattern Alarm, Log Analytics, Visualizations 이미지 출처 - https://dzone.com/articles/getting-started-splunk 이미지 출처 - https://www.sumologic.com/ 이미지 출처 - http://www.philipotoole.com/resume/loggly-ui/ 이미지 출처 - https://www.elastic.co/kr/blog/kibana-4-literally
    4. 4. 3 Planet Mon (PMon) SK Planet 전사 서비스 모니터링 플랫폼 https://pmon.skplanet.com/ • Realtime Log Monitoring & Analytics Platform • Monitoring - Access Log, Application Log, OS System • Alarm - Pattern Detection, System Metric, Health Check • Log Viewer - 통합 로그 검색, Tailing
    5. 5. 4 Planet Mon 을 지탱하는 기술 Reference Architecture • ELK (Elasticsearch – Logstash – Kibana) • www.elastic.co • Collection - OS System 정보, Log 파 일 • Preprocessing &Transport - 데이터를 표준 Format으로 변경하거나 Derived Field 추출과 생성 • Storage & Analytics - 분산, 확장, 고가용성 보장하는 데이터 저장 - TF-IDF, Aggregation 통계를 동적 생 성 - RESTful API를 통한 QueryDSL 지원 • Visualization - 시각화를 통한 데이터 분석
    6. 6. 5 Planet Mon 을 지탱하는 기술 1. Collection – 수천대의 서버에서 System Metric과 Log File 데이터를 수집하는 Agent 관리 2. Transport – Kafka와 Logstash를 활용한 데이터 센터간 안정적인 데이터 전송 3. Log Stream Analytics – 적정한 기술을 사용한 Log Stream Analytics 서버 개발 – Stream Analytics 결과 기반 실시간 Alarm Detection 서버 개발 4. Storage – Elasticsearch를 Timeseries DB와 같은 Metric Data 저장소로 사용 – Elasticsearch를 검색 가능한 Log 데이터 통합 저장소로 사용 5. Visualization – Metric Data기반으로 이미 정의된 다양한 그래프와 Dashboard를 동적으로 생성 – 각 서버의 로그를 통합하여 버벅임 없이 검색할 수 있는 Browser 기반의 Log Viewer
    7. 7. 6 Planet Mon 을 지탱하는 기술 1. Collection – 수천대의 서버에서 System Metric과 Log File 데이터를 수집하는 Agent 관리 LogFileAgent (CNXLog) SystemAgent • Collection - SystemAgent : System Metric 정보를 수집하기 위해 collectd 를 관리할 수 있도록 추가 개발 - LogFileAgent : 수집 Log 파일을 감시하기 위해 NXLog에 관리기능과 Kafka 전송 기능을 추가
    8. 8. 7 Planet Mon 을 지탱하는 기술 2. Transport – Kafka와 Logstash를 활용한 데이터 센터간 안정적인 데이터 전송 LogFileAgent (CNXLog) SystemAgent • Collection - SystemAgent : System Metric 정보를 수집하기 위해 collectd 를 관리할 수 있도록 추가 개발 - LogFileAgent : 수집 Log 파일을 감시하기 위해 NXLog에 관리기능과 Kafka 전송 기능을 추가 • Transport - Kafka를 사용하여 센터 내 데이터를 Buffering 하여 제 공 - Logstash를 사용하여 pull 방식으로 데이터를 중앙으 로 전송 하고 최종 데이터를 스토리지에 저장
    9. 9. 8 Planet Mon 을 지탱하는 기술 3. Log Stream Analytics – 적정한 기술을 사용한 Log Stream Analytics 서버 개발 – Stream Analytics 결과 기반 실시간 Alarm Detection 서버 개발 LogFileAgent (CNXLog) SystemAgent ServiceMon SystemMon LogMon AlarmMon • Collection - SystemAgent : System Metric 정보를 수집하기 위해 collectd 를 관리할 수 있도록 추가 개발 - LogFileAgent : 수집 Log 파일을 감시하기 위해 NXLog에 관리기능과 Kafka 전송 기능을 추가 • Transport - Kafka를 사용하여 센터 내 데이터를 Buffering 하여 제 공 - Logstash를 사용하여 pull 방식으로 데이터를 중앙으 로 전송 하고 최종 데이터를 스토리지에 저장 • Log Stream Analytics - ServiceMon : access log, application log 분석 - SystemMon : System Metric 데이터 분석 - AlarmMon : 알람을 전송할지 최종 판단하여 여러 체널로 전송 - LogMon : 원본 Log를 검색이 잘 될 수 있도록 처리 (Multi-Line)
    10. 10. 9 Planet Mon 을 지탱하는 기술 4. Storage – Elasticsearch를 Timeseries DB와 같은 Metric Data 저장소로 사용 – Elasticsearch를 검색 가능한 Log 데이터 통합 저장소로 사용 LogFileAgent (CNXLog) SystemAgent 2ndMon Metric Storage Indexed Log Storage ServiceMon SystemMon LogMon AlarmMon • Storage - Metric Storage : Time Series DB 기능으로 Metric 데이터를 aggregation하여 제공 - Indexed Log Storage : NoSQL 저장소로 원본 Log를 indexing 하여 저장 하고 검색을 제공 • Collection - SystemAgent : System Metric 정보를 수집하기 위해 collectd 를 관리할 수 있도록 추가 개발 - LogFileAgent : 수집 Log 파일을 감시하기 위해 NXLog에 관리기능과 Kafka 전송 기능을 추가 • Transport - Kafka를 사용하여 센터 내 데이터를 Buffering 하여 제 공 - Logstash를 사용하여 pull 방식으로 데이터를 중앙으 로 전송 하고 최종 데이터를 스토리지에 저장 • Log Stream Analytics - ServiceMon : access log, application log 분석 - SystemMon : System Metric 데이터 분석 - AlarmMon : 알람을 전송할지 최종 판단하여 여러 체널로 전송 - LogMon : 원본 Log를 검색이 잘 될 수 있도록 처리 (Multi-Line) - 2ndMon : Batch Job 수행 (service, hourly, daily)
    11. 11. 10 LogFileAgent (CNXLog) SystemAgent Planet Mon 을 지탱하는 기술 5. Visualization – Metric Data기반으로 화려하고 다양한 그래프와 Dashboard를 동적으로 생성 – 각 서버의 로그를 통합하여 버벅임 없이 검색할 수 있는 Browser 기반의 Log Viewer 2ndMon PlanetMon Frontend LogMon Frontend Metric Storage Indexed Log Storage • Visualization - PlanetMon Frontend : 서비 스별로 데쉬보드를 확인하고 각 종 알람 설정과 트랜드를 분석 할 수 있도록 제공 함 - LogMon Frontend : 원본 Log 를 통합하여 검색할 수있도록 제 공 • Storage - Metric Storage : Time Series DB 기능으로 Metric 데이터를 aggregation하여 제공 - Indexed Log Storage : NoSQL 저장소로 원본 Log를 indexing 하여 저장 하고 검색을 제공 • Collection - SystemAgent : System Metric 정보를 수집하기 위해 collectd 를 관리할 수 있도록 추가 개발 - LogFileAgent : 수집 Log 파일을 감시하기 위해 NXLog에 관리기능과 Kafka 전송 기능을 추가 • Transport - Kafka를 사용하여 센터 내 데이터를 Buffering 하여 제 공 - Logstash를 사용하여 pull 방식으로 데이터를 중앙으 로 전송 하고 최종 데이터를 스토리지에 저장 ServiceMon SystemMon LogMon AlarmMon • Log Stream Analytics - ServiceMon : access log, application log 분석 - SystemMon : System Metric 데이터 분석 - AlarmMon : 알람을 전송할지 최종 판단하여 여러 체널로 전송 - LogMon : 원본 Log를 검색이 잘 될 수 있도록 처리 (Multi-Line) - 2ndMon : Batch Job 수행 (service, hourly, daily)
    12. 12. 11 PMon Log Stream Analytics Open Source Solution ?
    13. 13. 12 PMon Log Stream Analytics Open Source Solution ? 요구 사항 • Log Line 별로 기본 통계 추출 - 호스트 단위의 Log Line 에서 특정 값을 찾아서 word count, min, max, sum, avg 하는 수준 - 결과에 대한 실시간 Alarm • 처리 성능의 수평확장과 안정성이 보장 되어야 함 - Kafka Consumer Cluster • 운영 편의성 - Kafka Consumer Cluster
    14. 14. 13 Planet Mon Log Stream Analytics 적정한 Log Stream Analytics Server 개발 • Opensource 솔루션을 사용하는 것이 맞는 것인가? • 해결하려는 것에 적절한 가? • Language, Framework 학습 시간은? • Production 에서 Service를 제공할 수 있도록 운영 가능한가? • 자원은 충분 한가? • 보유 기술 : Kafka Consumer Cluster, Modern Java, Spring Boot 출처 : http://blog.besunny.com/?p=20844 출처 : http://egloos.zum.com/cklist/v/5515377
    15. 15. 14 Log Stream Analytics Server Kafka Consumer Cluster 제공 기능 • Scale-out - Partition의 수만큼 Consumer 수를 늘려가며 병렬로 처리할 수 있다. • Failover - Consumer가 죽으면 다른쪽 Consumer로 자동으로 보내준다. • Exactly once - Consumer Group 내 consumer 중 1명에게 1번만 전달 한다. 주의 사항 • Kafka Producer에서 메시지 전송시 순서 보장을 하려면 Message Key 를 동일 하게 지정해서 전송 해야만 한다 • Consumer에 Partition이 할당 되어 전송한다. 누군가 죽거나 추가 되면 그때부터는 다른 Consumer가 Partition을 할당 받게 됨 • Partition 내에는 여러 서버에서 들어온 정보가 혼합 되기때문에 Producer 단위로만 순서가 보장 된다 • 먼저 데이터를 전송했다고 해서 먼저 읽는 것은 아님
    16. 16. 15 Log Stream Analytics Server Modern Java (Java 8 이후) • Lambda • x -> f(x) • Stream 중간에 넣어서 데이터를 가지고 새로운 데이터를 만들면서 처리 • Stream API • Aggregate operations • filter, map, limit, reduce, find, match • sort 후 limit을 사용하여 top 을 구할 수 있음 • [Int, Long, Double]SummaryStatistics • 숫자형 Stream 에서 바로 min, max, count, sum, average 를 구할 수 있음 • combine 를 사용하여 다른 SummaryStatistics와 쉽게 합칠 수 있음 • 예 - Arrays.asList(9, 10, 3, 4, 7, 3, 4).stream().mapToInt(i -> i*i).distinct().filter(i->i>4) .summaryStatistics() ; • CompletableFuture • Lambda와 함께 병렬로 처리할 것 같단하게 수행 • 예 - CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> longRunningTask(params));
    17. 17. 16 Log Stream Analytics Server Spring Boot • Actuator • Http endpoints (Rest API), JMX, remote shell 등을 이용하여구체적인 동작(관리와 모니터링) 으로 변환하는 기능을 말함. • http://www.slideshare.net/JeminHuh/spring-boot-backend
    18. 18. 17 Log Stream Analytics Server ServiceMon Process • InputLogLine • Kafka에서 읽은 데이터를 Host나 Type별로 Line List로 만듬 • KeyTypeExpression • Derived Field 추출과 동시에 데이터 Type을 지정 • Logstash에서 사용하는 Grok 표기법에서 idea를 얻음 • https://www.elastic.co/guide/en/logstash/current/plugins-filters-grok.htm • KeyTypeExpression 예 : %{id:WORD} [%{logLevel:WORD}] %{date:DATE} %{method:WORD} - %{message:TEXT} • StatisticsAccumulator • Derived Field의 Type에 따라 1분단위로 표준 통계 형태로 저장 함 • WORD - value 값 별로 count 함 • TEXT - Statistics 에서는 버리는 거나, Custom 하게 추가로 처리할 Field에 지정 함 • NUMBER - 입력되는 number List 를 수집하고 Aggregation을 통해 통계값을 (min, max, sum, count, avg)을 생성 • DATE – 시간 Format을 인식하여 처리 함 • Output Data • 1분 단위로 생성된 통계를 활용해 여러가지 최종 Metric Data를 생성 함 • Metric Exporter • Kafka Producer로 Metric Data를 Type에 지정된 Kafka topic으로 전송 * 로그 데이터 분석 방법 및 장치, 출원 번호 10-2015-0148452 - KeyTypeExpression과 Type별로 표준 통계를 추출하여 데이터를 생성하는 방법에 관한 특허 Input LogLine KeyType Expression Statistics Accumulator Output DataBuilder Metric Exporter
    19. 19. 18 Planet Mon Architecture Kappa Architecture • http://novoj.github.io/reveal.js/kappa-architecture.html • Input : Kafka • Processing : SystemMon, ServiceMon, AlarmMon, LogMon • Serving : Elasticsearch • App : PMon Frontend, LMon Frontend
    20. 20. 19 기술적 내용이 참 많은데… PMon 에 관해 참으로 놀랄 만한 개발, 운영 노하우를 보유하였으 나, 그것을 다 설명하기에는 @tech 시간이 너무나 짧다. - 수천대의 서버에 설치되는 System Metric, Log 수집 Agent 관리 방법 - 데이터 센터간의 안정적인 데이터 전송을 위한 Kafka, Logstash를 활용한 운영 방법 - Timeseries DB 로 사용하는 Elasticsearch 운영 방법 - 일 5TB 로그가 실시간으로 쌓이는 Elasticsearch 운영 방법 - PMon, LogMon Frontend 개발 방법 - Stream Data 처리 이슈 관리 - 정말 너무 많이 들어오면… - 장애시 데이터를 복구를 할 수 있나?
    21. 21. 20 Q & A

    ×