Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
서비스 모니터링 구현 사례 공유
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을 지탱하는 기술

13,625 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
  • Login to see the comments

서비스 모니터링 구현 사례 공유 - 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

×