SlideShare une entreprise Scribd logo
1  sur  70
Télécharger pour lire hors ligne
도커(Docker) 메트릭스 & 로그 수집
@nacyot
0
naycot
Leevi Inc.
http://leevi.co.kr/
목차
메트릭스 & 로그 수집
로그
메트릭스
수집 시스템 구성
도커 메트릭스 & 로그 수집
도커 호스트 시스템 로그
도커 호스트 시스템 메트릭스
컨테이너 어플리케이션 로그
컨테이너 어플리케이션 메트릭스
컨테이너 모니터링
최종 구상도
메트릭스 & 로그 수집의 미래
Just Docker
어플리케이션
기획
구현(프로그래밍)
운영
운영
서비스 환경 구축
서버에서 어플리케이션 가동
서버 운영
메트릭스 수집
로그 수집
피드백
장애 대응
어플리케이션 개선
스케일 아웃 & 인
모니터링 & 로그 수집
메트릭스 로그
수치 정보
리소스 모니터링
Munin, Diamond, Sensu, …
CPU, Load Avarage,
Memory, …
쿼리수, 접속자수, 부하, …
어플리케이션 모니터링
대개 직접 구현
접속자수, 에러수, …
임의 수치
행으로 구분되는 데이터셋
비정형 데이터
시스템 로그
사용자 정보, 로그인 정보
각종 시스템 서비스 로그
어플리케이션 로그
대개 직접 구현
로그
행으로 구분되는 데이터셋
비정형 데이터
어플리케이션마다 독자적인 포맷 사용
CSV, XML, JSON, …
완전한 독자적 형식
어플리케이션마다 독자적인 출력 사용
파일
표준 출력
아파치 로그 예제
195.140.144.83 - - [16/Aug/2011:00:49:33 +0900] "GET …
195.140.144.83 - - [16/Aug/2011:00:49:37 +0900] "GET …
121.3.24.52 - - [17/Aug/2011:03:23:12 +0900] "GET …
로그 수집기(어플리케이션, 시스템)
시스템
Syslog
어플리케이션
Fluentd
LogStash
로그 저장소
ElasticSearch
MongoDB
Datadog
PaperTrail
메트릭스
시간 + 수치 정보
[Timestamp, Namespace, ]
[1406886733, us-west1.node1.cpu.usage, 83]
[1406886734, us-west1.node1.cpu.usage, 50]
[1406886735, us-west1.node1.cpu.usage, 3]
메트릭스 수집
시스템
Diamond
Sensu
Munin
Fluentd(?)
어플리케이션
어플리케이션에서 자체 구현
시계열 데이터베이스
RRDtool
Munin
GrowthForecast
Graphite
InfluxDB
Hosted Graphite
시스템 구성 예제(1)
시스템 구성 예제(2)
결론
2 (시스템, 어플리케이션) by 2 (로그, 메트릭스)
1. 시스템 로그
2. 시스템 메트릭스
3. 어플리케이션 로그
4. 어플리케이션 메트릭스
Docker
An open platform for distributed applications for developers
and sysadmins.
경량 가상화
로그 & 모니터링
2 (시스템, 어플리케이션) by 2 (로그, 메트릭스)
1. 시스템 로그
2. 시스템 메트릭스
3. 어플리케이션 로그
4. 어플리케이션 메트릭스
도커 로그 & 모니터링 구조도 (1)
도커 로그 & 모니터링 구조도 (2)
도커 로그 & 모니터링
1. 도커 호스트 시스템 로그
2. 도커 호스트 시스템 메트릭스
3. 컨테이너 어플리케이션 로그
4. 컨테이너 어플리케이션 메트릭스
5. 컨테이너 메트릭스
도커 호스트 시스템 로그
기존 방식과 다르지 않음
뒤에서 다시
도커 호스트 시스템 메트릭스
기존 방식과 다르지 않음
뒤에서 다시
컨테이너 어플리케이션 로그
생각해볼 수 있는 방법
컨테이너 안에서 수집
어플리케이션 컨테이너에서 수집기 운용
컨테이너 외부에서 수집
Docker 로그 파일 직접 사용
서비스(컨테이너)적인 사고법
로그는 서비스의 일부분이 아님
컨테이너에는 데이터가 저장되어서는 안 됨
The Twelve Factor App
http://the-twelve-factor-app.herokuapp.com/
The Twelve Factor App - Log (1)
로그는 모든 실행중인 프로세스와 백엔드 서비스의 누적되며
시간순으로 수집되고 정렬되는 이벤트 스트림이다. 일반적으
로 어플리케이션이 직접 생성하는 로그는 한 줄에 하나의 이
벤트를 텍스트 포맷으로 기록한다(예외를 추적하는 로그는
여러줄로 쓰여지기도 한다). 로그는 고정된 시작과 끝이 없으
면 어플리케이션이 실행되는 한 계속된다.
Twelve Factor App은 어플리케이션의 출력 스트림의 목적지
나 어디에 저장되는 지 일체 간섭하지 않는다. 어플리케이션
은 로그를 작성하거나 로그 파일을 관리하려고 해서는 안된
다. 로그 파일을 관리하는 대신 각각의 실행중인 프로세스는
자신의 이벤트 스트림을 버퍼없이 stdout에 출력한다.
The Twelve Factor App - Log (2)
로그는 시간순으로 수집되고 정렬되는 이벤트 스트림이다.
-> 표준 출력에 출력!
출력 스트림의 목적지나 어디에 저장되는 지 일체 간섭하지
않는다.
-> 어플리케이션에는 로그에 대한 설정/로직이 없어야함!
도커 로그(로그 파일을 통한 수집)
docker logs 명령어
json으로 저장
docker inspect로 위치 파악
/var/lib/docker/containers 디렉터리의 {containerid}-json.log
접근시 root 권한 필요
progrium/logspout
Docker Log Router
컨테이너로 실행
syslog 지원
HTTP API 지원
progrium/logspout 구조도
progrium/logspout 장단점
장점
logspout 컨테이너 하나면 됨
매우 일관적인 로그 수집 시스템(표준 출력)
12 Factor App에서 환경변수로 설정을 관리하는 것과 비슷
단점
컨테이너에 문제가 생기면 로그 수집 정지(?!)
약간의 딜레이
stdout과 stderr만 수집 가능
어플리케이션 설계시 고려가 필요
컨테이너 어플리케이션 메트릭스
기존과 크게 다르지 않음
메트릭스는 대개 실시간 데이터
어플리케이션에서 라이브러리로 직접 보냄
필요한 경우 파일이나 다른 수집기 사용
컨테이너 모니터링
cgroup
가상화된 컨테이너별 데이터 수집
Resouce 메트릭스
sys/fs/cgroup 에서 수집 가능
Network & Exit Time …
Gathering LXC and Docker containers metrics
sys/fs/cgroup
/sys/fs/cgroup/
├── cpu
│ ├── docker
│ │ ├── 0660f4e1d4054d4ebb6a3212a35b8ba1593dee7e26a6cc96999f796
465bce9f7
│ │ ├── 09ecfbb7a3cffbd0860a7ae163bfa6bbf5ad73c730932df62127531
1ef16d04d
│ │ ├── 2ab6917f2711586438b8ade5b55b55a15e94ae6209831f8fc4dd47e
4b288cafe
│ │ ├── 42e782ffcceafbdb6e939abbf6a4f71b9089ccd06dae3349b3429ad
651bf5814
│ │ ├── 61a8ffc27ad4f2d4c81b4b70d1f575b5593df8433c7edf47231efb4
7fd3607a7
│ │ ├── afb4bfe3db0ddf38db9ac4b2b08150885ddf090696722e066a07923
5b4ce964d
│ │ └── b6b689622627c477b298a1da6d9020ce517ef5ca9f45ca392e51e29
7c962d469
│ └── user
│ └── 1000.user
│ └── c1.session
...
cgroup 데이터 수집기
Diamond collector
CpuAcctCgroupCollector
MemoryCgroupCollector
Sensu
Cgroup Metrics Plugin
docker-metricsd
Diamond 예제
[[MemoryCgroupCollector]]
enabled = True
[[CpuAcctCgroupCollector]]
enabled = True
docker-metricsd + fluentd
$ curl http://host.example.com:12375/containers/f9093f3df8d8/json |
jq
.
{
"ID":
"f9093f3df8d84db914f544139d828e3c7ba7f5a353f83220c0580536b61ec5c3",
...
"Metrics": {
"memory": {
"failcnt": 0,
"stats": {
"unevictable": 0,
"total_unevictable": 0,
"total_swap": 0,
"total_rss": 380928,
"total_pgpgout": 681084,
도커 메트릭스 & 로그 수집 최종 구조도
도커 메트릭스 & 로그 수집 최종 구조도
(2)
도커 로그 & 모니터링 결론
1. 도커 호스트 시스템 로그
기존과 같음(ex - host에서 syslog-ng 사용)
2. 도커 호스트 시스템 메트릭스
기존과 같음(ex - host에서 diamond 사용)
3. 컨테이너 어플리케이션 로그
표준 출력으로 로그 기록
json 파일 / logspout으로 수집
4. 컨테이너 어플리케이션 메트릭스
기존과 비슷함(ex - 어플리케이션에서 직접 데이터 저장소로)
5. 컨테이너 메트릭스
Diamond or docker-metricsd(Cgroup 메트릭스 데이터 수집)
Configuration Management
Docker Base Image
Syslog
Diamond
docker-metricsd
Docker
Logspout
Demo
Metrics Server
ElasticSearch & Kibana
Graphite & Grafana
App Server
diamond
system
cgroup
syslog-ng
logspout
Demo - Metrics-Server
Digital Ocean
Image
Docker 1.1.1
Ubuntu 14.04
Fig 설치
$ curl -L https://github.com/orchardup/fig/releases/download/0.5.2/
linux > /usr/local/bin/fig
$ chmod +x /usr/local/bin/fig
ElasticSearch & Grafana Setup
$ git clone https://gist.github.com/f0dc7d9e05238ffd0f2f.git ~/moni
toring
$ cd monitoring
$ fig up
ElasticSearch Dashboard - Kibana
Graphite Dashboard - Grafana
Demo - App-Server
Digital Ocean
Image
Docker 1.1.1
Ubuntu 14.04
Diamond 설치
$ apt-get update
$ apt-get install make pbuilder python-mock python-configobj python
-support cdbs
$ git clone https://github.com/BrightcoveOS/Diamond.git
$ cd Diamond/
$ make builddeb
$ dpkg -i build/diamond_3.4.573_all.deb
$ git clone https://gist.github.com/d0f9c491f8aa8ff42f16 /etc/diamo
nd/gist
$ cp /etc/diamond/gist/diamond.conf /etc/diamond/diamond.conf
$ service diamond start
Diamond 설정
Graphite Handler 설정
[[GraphiteHandler]]
host = 0.0.0.0
port = 2003
timeout = 15
batch = 1
수집 간격 설정
[collectors]
interval = 5
Grafana & Diamond
Diamond - cgroup 설정
[collectors]
[[MemoryCgroupCollector]]
enabled = True
[[CpuAcctCgroupCollector]]
enabled = True
Grafana & Diamond(Cgroup)
syslog-ng
$ apt-get install -y syslog-ng-core syslog-ng
$ git clone https://gist.github.com/87d0d902663390b11ff6 /etc/syslo
g-ng/gist
$ cp /etc/syslog-ng/gist/syslog-ng.conf /etc/syslog-ng/syslog-ng.co
nf
syslog-ng.conf
@version: 3.5
@include "scl.conf"
options {
time_reap(30);
mark_freq(10);
keep_hostname(yes);
};
source src {
unix-stream("/dev/log");
internal();
system();
};
destination d_network { udp( "0.0.0.0" port(5140) ); };
log { source(src); destination(d_network); };
agent-td:syslog_to_elasticsearch
$ docker run -d -p 5140:5140/udp 
-e SYSLOG_TAG=syslog.system -e SYSLOG_FORMAT= -e SYSLO
G_TIME_FORMAT= 
-e ES_HOST=<ES_HOST> -e ES_TAG=syslog.** nacyot/syslog
_to_elasticsearch
syslog-ng & Kibana
logspout
테스트 컨테이너 실행
$ docker run -d busybox /bin/sh -c "while true; do echo Container 1
; sleep 1; done"
$ docker run -d busybox /bin/sh -c "while true; do echo Container 2
; sleep 5; done"
logspout 실행
$ docker run -d --name log -p 9500:8000 -v=/var/run/docker.sock:/tm
p/docker.sock progrium/logspout
$ curl $(docker port log 9500)/logs
Syslog로 보내기
$ docker run -v=/var/run/docker.sock:/tmp/docker.sock progrium/logs
pout 
syslog://0.0.0.0:5141
agent-td:syslogtoelasticsearch
$ docker run -d -p 5141:5140/udp 
-e SYSLOG_TAG=docker.log -e ES_TYPE=docker 
-e ES_HOST=<ES_HOST> -e ES_TAG=docker.** nacyot/syslog
_to_elasticsearch
logspout & Kibana
메트릭스 & 로그 수집의 미래
도커다운 해결책
로그 수집기의 컨테이너화
메트릭스 수집기의 컨테이너화
앞서 미뤄둔 이야기
호스트에서 돌려야하는 수집기
도커 호스트 시스템 로그
도커 호스트 시스템 메트릭스
(컨테이너 메트릭스)
구상도
Just Docker
Docker Base Image
Docker
Logspout
Syslog-ng
Diamond
docker-metricsd
비교
Host + Docker Docker
Docker Base Image
Syslog
Diamond
docker-metricsd
Docker
Logspout
Docker Base Image
Docker
Logspout
Syslog-ng
Diamond
docker-metricsd
장점
Stateless한 수집 시스템
컨테이너로 로그 수집 시스템 추상화
컨테이너로 수집기 논리적 분리
사용하고 싶은 수집기로 쉽게 변경 가능
컨테이너 교체
단점 / 문제점
컨테이너에 문제가 생겼을 때 대응
필요한 건 컨테이너의 정보가 아닌 호스트의 정보
호스트의 정보를 어떻게 가져올 수 있을까?
호스트의 정보를 가져올 수 있을까?
해결법
$ docker run -d -v /proc:/host_proc:ro -link nuxeoServer:nuxeo -nam
e collector nuxeo/diamond
-v /proc:/hostproc:ro
로그 수집 모듈의 로직을 일일히 다 바꿔줘야함
아직은 비현실적인 해결책
Q/A

Contenu connexe

Tendances

Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법pyrasis
 
Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1Steve Shim
 
도커 학습과 Boot2Docker
도커 학습과 Boot2Docker도커 학습과 Boot2Docker
도커 학습과 Boot2Dockerpyrasis
 
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]David Lee
 
[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기
[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기
[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기KTH, 케이티하이텔
 
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXpressEngine
 
Docker Casual Talk #2 - Dockerizing newrelic-sysmond
Docker Casual Talk #2 - Dockerizing newrelic-sysmondDocker Casual Talk #2 - Dockerizing newrelic-sysmond
Docker Casual Talk #2 - Dockerizing newrelic-sysmondDaegwon Kim
 
Docker.소개.30 m
Docker.소개.30 mDocker.소개.30 m
Docker.소개.30 mWonchang Song
 
Docker 기반 개발환경 구축 - XE Open seminar #2
Docker 기반 개발환경 구축 - XE Open seminar #2Docker 기반 개발환경 구축 - XE Open seminar #2
Docker 기반 개발환경 구축 - XE Open seminar #2XpressEngine
 
RancherOS Introduction
RancherOS IntroductionRancherOS Introduction
RancherOS IntroductionRemotty
 
Open stack의 vm개념을 통한 docker의 활용
Open stack의 vm개념을 통한 docker의 활용Open stack의 vm개념을 통한 docker의 활용
Open stack의 vm개념을 통한 docker의 활용Tae Young Lee
 
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3Ji-Woong Choi
 
Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기iFunFactory Inc.
 
Devfair kubernetes 101
Devfair kubernetes 101Devfair kubernetes 101
Devfair kubernetes 101Daegwon Kim
 
초심자를 위한 도커 소개 및 입문
초심자를 위한 도커 소개 및 입문초심자를 위한 도커 소개 및 입문
초심자를 위한 도커 소개 및 입문Daniel Seo
 
docker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea Clouddocker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea CloudJude Kim
 
Docker 사내교육 자료
Docker 사내교육 자료Docker 사내교육 자료
Docker 사내교육 자료Juneyoung Oh
 
도커 없이 컨테이너 만들기 2편
도커 없이 컨테이너 만들기 2편도커 없이 컨테이너 만들기 2편
도커 없이 컨테이너 만들기 2편Sam Kim
 
docker-based remote desktop
docker-based remote desktopdocker-based remote desktop
docker-based remote desktopHyeong-Kyu Lee
 

Tendances (20)

Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법
 
Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1
 
도커 학습과 Boot2Docker
도커 학습과 Boot2Docker도커 학습과 Boot2Docker
도커 학습과 Boot2Docker
 
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
 
[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기
[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기
[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기
 
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
 
Docker Casual Talk #2 - Dockerizing newrelic-sysmond
Docker Casual Talk #2 - Dockerizing newrelic-sysmondDocker Casual Talk #2 - Dockerizing newrelic-sysmond
Docker Casual Talk #2 - Dockerizing newrelic-sysmond
 
AWS + Docker in Vingle
AWS + Docker in VingleAWS + Docker in Vingle
AWS + Docker in Vingle
 
Docker.소개.30 m
Docker.소개.30 mDocker.소개.30 m
Docker.소개.30 m
 
Docker 기반 개발환경 구축 - XE Open seminar #2
Docker 기반 개발환경 구축 - XE Open seminar #2Docker 기반 개발환경 구축 - XE Open seminar #2
Docker 기반 개발환경 구축 - XE Open seminar #2
 
RancherOS Introduction
RancherOS IntroductionRancherOS Introduction
RancherOS Introduction
 
Open stack의 vm개념을 통한 docker의 활용
Open stack의 vm개념을 통한 docker의 활용Open stack의 vm개념을 통한 docker의 활용
Open stack의 vm개념을 통한 docker의 활용
 
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
 
Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기
 
Devfair kubernetes 101
Devfair kubernetes 101Devfair kubernetes 101
Devfair kubernetes 101
 
초심자를 위한 도커 소개 및 입문
초심자를 위한 도커 소개 및 입문초심자를 위한 도커 소개 및 입문
초심자를 위한 도커 소개 및 입문
 
docker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea Clouddocker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
 
Docker 사내교육 자료
Docker 사내교육 자료Docker 사내교육 자료
Docker 사내교육 자료
 
도커 없이 컨테이너 만들기 2편
도커 없이 컨테이너 만들기 2편도커 없이 컨테이너 만들기 2편
도커 없이 컨테이너 만들기 2편
 
docker-based remote desktop
docker-based remote desktopdocker-based remote desktop
docker-based remote desktop
 

Similaire à 도커(Docker) 메트릭스 & 로그 수집

Fluentd with MySQL
Fluentd with MySQLFluentd with MySQL
Fluentd with MySQLI Goo Lee
 
Hyperledger fabric practice(pdf)
Hyperledger fabric practice(pdf)Hyperledger fabric practice(pdf)
Hyperledger fabric practice(pdf)wonyong hwang
 
클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기YoungSu Son
 
[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어
[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어
[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어NHN FORWARD
 
[2018] Java를 위한, Java에 의한 도구들
[2018] Java를 위한, Java에 의한 도구들[2018] Java를 위한, Java에 의한 도구들
[2018] Java를 위한, Java에 의한 도구들NHN FORWARD
 
[232] 성능어디까지쥐어짜봤니 송태웅
[232] 성능어디까지쥐어짜봤니 송태웅[232] 성능어디까지쥐어짜봤니 송태웅
[232] 성능어디까지쥐어짜봤니 송태웅NAVER D2
 
안드로이드 플랫폼 설명
안드로이드 플랫폼 설명안드로이드 플랫폼 설명
안드로이드 플랫폼 설명Peter YoungSik Yun
 
PHP Log Tracking with ELK & Filebeat part#2
PHP Log Tracking with ELK & Filebeat part#2PHP Log Tracking with ELK & Filebeat part#2
PHP Log Tracking with ELK & Filebeat part#2Juwon Kim
 
20170908 tech day-9th-재미없는 java runtime process 디버그-김성중
20170908 tech day-9th-재미없는 java runtime process 디버그-김성중20170908 tech day-9th-재미없는 java runtime process 디버그-김성중
20170908 tech day-9th-재미없는 java runtime process 디버그-김성중ymtech
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020Ji-Woong Choi
 
[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native 서비스...
[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native 서비스...[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native 서비스...
[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native 서비스...OpenStack Korea Community
 
Open source apm scouter를 통한 관제 관리 jadecross 정환열 수석
Open source apm scouter를 통한 관제  관리 jadecross 정환열 수석Open source apm scouter를 통한 관제  관리 jadecross 정환열 수석
Open source apm scouter를 통한 관제 관리 jadecross 정환열 수석uEngine Solutions
 
Remote-debugging-based-on-notrace32-20130619-1900
Remote-debugging-based-on-notrace32-20130619-1900Remote-debugging-based-on-notrace32-20130619-1900
Remote-debugging-based-on-notrace32-20130619-1900Samsung Electronics
 
Python on Android
Python on AndroidPython on Android
Python on Android용 최
 
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: 인터넷 쇼핑몰의 실시간 분석 플랫폼 구축 사례
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: 인터넷 쇼핑몰의 실시간 분석 플랫폼 구축 사례GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: 인터넷 쇼핑몰의 실시간 분석 플랫폼 구축 사례
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: 인터넷 쇼핑몰의 실시간 분석 플랫폼 구축 사례Gruter
 
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기Jaeseung Ha
 
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)Ji-Woong Choi
 

Similaire à 도커(Docker) 메트릭스 & 로그 수집 (20)

Fluentd with MySQL
Fluentd with MySQLFluentd with MySQL
Fluentd with MySQL
 
Hyperledger fabric practice(pdf)
Hyperledger fabric practice(pdf)Hyperledger fabric practice(pdf)
Hyperledger fabric practice(pdf)
 
클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기
 
KAFKA 3.1.0.pdf
KAFKA 3.1.0.pdfKAFKA 3.1.0.pdf
KAFKA 3.1.0.pdf
 
[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어
[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어
[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어
 
[2018] Java를 위한, Java에 의한 도구들
[2018] Java를 위한, Java에 의한 도구들[2018] Java를 위한, Java에 의한 도구들
[2018] Java를 위한, Java에 의한 도구들
 
[232] 성능어디까지쥐어짜봤니 송태웅
[232] 성능어디까지쥐어짜봤니 송태웅[232] 성능어디까지쥐어짜봤니 송태웅
[232] 성능어디까지쥐어짜봤니 송태웅
 
Kafka slideshare
Kafka   slideshareKafka   slideshare
Kafka slideshare
 
안드로이드 플랫폼 설명
안드로이드 플랫폼 설명안드로이드 플랫폼 설명
안드로이드 플랫폼 설명
 
Scala for play
Scala for playScala for play
Scala for play
 
PHP Log Tracking with ELK & Filebeat part#2
PHP Log Tracking with ELK & Filebeat part#2PHP Log Tracking with ELK & Filebeat part#2
PHP Log Tracking with ELK & Filebeat part#2
 
20170908 tech day-9th-재미없는 java runtime process 디버그-김성중
20170908 tech day-9th-재미없는 java runtime process 디버그-김성중20170908 tech day-9th-재미없는 java runtime process 디버그-김성중
20170908 tech day-9th-재미없는 java runtime process 디버그-김성중
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
 
[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native 서비스...
[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native 서비스...[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native 서비스...
[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native 서비스...
 
Open source apm scouter를 통한 관제 관리 jadecross 정환열 수석
Open source apm scouter를 통한 관제  관리 jadecross 정환열 수석Open source apm scouter를 통한 관제  관리 jadecross 정환열 수석
Open source apm scouter를 통한 관제 관리 jadecross 정환열 수석
 
Remote-debugging-based-on-notrace32-20130619-1900
Remote-debugging-based-on-notrace32-20130619-1900Remote-debugging-based-on-notrace32-20130619-1900
Remote-debugging-based-on-notrace32-20130619-1900
 
Python on Android
Python on AndroidPython on Android
Python on Android
 
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: 인터넷 쇼핑몰의 실시간 분석 플랫폼 구축 사례
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: 인터넷 쇼핑몰의 실시간 분석 플랫폼 구축 사례GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: 인터넷 쇼핑몰의 실시간 분석 플랫폼 구축 사례
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: 인터넷 쇼핑몰의 실시간 분석 플랫폼 구축 사례
 
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
 
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
 

Plus de Daegwon Kim

2015 07 31_yashin_project
2015 07 31_yashin_project2015 07 31_yashin_project
2015 07 31_yashin_projectDaegwon Kim
 
InfovisKr 고전 독서 모임 소개 - The Grammar of Graphics
InfovisKr 고전 독서 모임 소개 - The Grammar of GraphicsInfovisKr 고전 독서 모임 소개 - The Grammar of Graphics
InfovisKr 고전 독서 모임 소개 - The Grammar of GraphicsDaegwon Kim
 
Ruby Enumerator(루비 열거자) 이해하기
Ruby Enumerator(루비 열거자) 이해하기Ruby Enumerator(루비 열거자) 이해하기
Ruby Enumerator(루비 열거자) 이해하기Daegwon Kim
 
Docker introduction
Docker introductionDocker introduction
Docker introductionDaegwon Kim
 
커맨드 라인 도구 활용하기 - zsh + oh-my-zsh, tmux, peco
커맨드 라인 도구 활용하기 - zsh + oh-my-zsh, tmux, peco커맨드 라인 도구 활용하기 - zsh + oh-my-zsh, tmux, peco
커맨드 라인 도구 활용하기 - zsh + oh-my-zsh, tmux, pecoDaegwon Kim
 
Translation memory
Translation memoryTranslation memory
Translation memoryDaegwon Kim
 
이미지 기반의 배포 패러다임 Immutable infrastructure
이미지 기반의 배포 패러다임 Immutable infrastructure이미지 기반의 배포 패러다임 Immutable infrastructure
이미지 기반의 배포 패러다임 Immutable infrastructureDaegwon Kim
 
Design pattern chapter_3_template_pattern
Design pattern chapter_3_template_patternDesign pattern chapter_3_template_pattern
Design pattern chapter_3_template_patternDaegwon Kim
 
Visualization and data mapping
Visualization and data mappingVisualization and data mapping
Visualization and data mappingDaegwon Kim
 
Movie explorer - Moplo! Introduction
Movie explorer - Moplo! IntroductionMovie explorer - Moplo! Introduction
Movie explorer - Moplo! IntroductionDaegwon Kim
 
Ruby codemetric automation server - Putne Introduction
Ruby codemetric automation server - Putne IntroductionRuby codemetric automation server - Putne Introduction
Ruby codemetric automation server - Putne IntroductionDaegwon Kim
 
Ruby for biginner - Don't be suprised
Ruby for biginner - Don't be suprisedRuby for biginner - Don't be suprised
Ruby for biginner - Don't be suprisedDaegwon Kim
 

Plus de Daegwon Kim (12)

2015 07 31_yashin_project
2015 07 31_yashin_project2015 07 31_yashin_project
2015 07 31_yashin_project
 
InfovisKr 고전 독서 모임 소개 - The Grammar of Graphics
InfovisKr 고전 독서 모임 소개 - The Grammar of GraphicsInfovisKr 고전 독서 모임 소개 - The Grammar of Graphics
InfovisKr 고전 독서 모임 소개 - The Grammar of Graphics
 
Ruby Enumerator(루비 열거자) 이해하기
Ruby Enumerator(루비 열거자) 이해하기Ruby Enumerator(루비 열거자) 이해하기
Ruby Enumerator(루비 열거자) 이해하기
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
커맨드 라인 도구 활용하기 - zsh + oh-my-zsh, tmux, peco
커맨드 라인 도구 활용하기 - zsh + oh-my-zsh, tmux, peco커맨드 라인 도구 활용하기 - zsh + oh-my-zsh, tmux, peco
커맨드 라인 도구 활용하기 - zsh + oh-my-zsh, tmux, peco
 
Translation memory
Translation memoryTranslation memory
Translation memory
 
이미지 기반의 배포 패러다임 Immutable infrastructure
이미지 기반의 배포 패러다임 Immutable infrastructure이미지 기반의 배포 패러다임 Immutable infrastructure
이미지 기반의 배포 패러다임 Immutable infrastructure
 
Design pattern chapter_3_template_pattern
Design pattern chapter_3_template_patternDesign pattern chapter_3_template_pattern
Design pattern chapter_3_template_pattern
 
Visualization and data mapping
Visualization and data mappingVisualization and data mapping
Visualization and data mapping
 
Movie explorer - Moplo! Introduction
Movie explorer - Moplo! IntroductionMovie explorer - Moplo! Introduction
Movie explorer - Moplo! Introduction
 
Ruby codemetric automation server - Putne Introduction
Ruby codemetric automation server - Putne IntroductionRuby codemetric automation server - Putne Introduction
Ruby codemetric automation server - Putne Introduction
 
Ruby for biginner - Don't be suprised
Ruby for biginner - Don't be suprisedRuby for biginner - Don't be suprised
Ruby for biginner - Don't be suprised
 

도커(Docker) 메트릭스 & 로그 수집

  • 1. 도커(Docker) 메트릭스 & 로그 수집 @nacyot 0
  • 3. 목차 메트릭스 & 로그 수집 로그 메트릭스 수집 시스템 구성 도커 메트릭스 & 로그 수집 도커 호스트 시스템 로그 도커 호스트 시스템 메트릭스 컨테이너 어플리케이션 로그 컨테이너 어플리케이션 메트릭스 컨테이너 모니터링 최종 구상도 메트릭스 & 로그 수집의 미래 Just Docker
  • 5. 운영 서비스 환경 구축 서버에서 어플리케이션 가동 서버 운영 메트릭스 수집 로그 수집 피드백 장애 대응 어플리케이션 개선 스케일 아웃 & 인
  • 6. 모니터링 & 로그 수집 메트릭스 로그 수치 정보 리소스 모니터링 Munin, Diamond, Sensu, … CPU, Load Avarage, Memory, … 쿼리수, 접속자수, 부하, … 어플리케이션 모니터링 대개 직접 구현 접속자수, 에러수, … 임의 수치 행으로 구분되는 데이터셋 비정형 데이터 시스템 로그 사용자 정보, 로그인 정보 각종 시스템 서비스 로그 어플리케이션 로그 대개 직접 구현
  • 7. 로그 행으로 구분되는 데이터셋 비정형 데이터 어플리케이션마다 독자적인 포맷 사용 CSV, XML, JSON, … 완전한 독자적 형식 어플리케이션마다 독자적인 출력 사용 파일 표준 출력 아파치 로그 예제 195.140.144.83 - - [16/Aug/2011:00:49:33 +0900] "GET … 195.140.144.83 - - [16/Aug/2011:00:49:37 +0900] "GET … 121.3.24.52 - - [17/Aug/2011:03:23:12 +0900] "GET …
  • 10. 메트릭스 시간 + 수치 정보 [Timestamp, Namespace, ] [1406886733, us-west1.node1.cpu.usage, 83] [1406886734, us-west1.node1.cpu.usage, 50] [1406886735, us-west1.node1.cpu.usage, 3]
  • 15. 결론 2 (시스템, 어플리케이션) by 2 (로그, 메트릭스) 1. 시스템 로그 2. 시스템 메트릭스 3. 어플리케이션 로그 4. 어플리케이션 메트릭스
  • 16. Docker An open platform for distributed applications for developers and sysadmins.
  • 18. 로그 & 모니터링 2 (시스템, 어플리케이션) by 2 (로그, 메트릭스) 1. 시스템 로그 2. 시스템 메트릭스 3. 어플리케이션 로그 4. 어플리케이션 메트릭스
  • 19. 도커 로그 & 모니터링 구조도 (1)
  • 20. 도커 로그 & 모니터링 구조도 (2)
  • 21. 도커 로그 & 모니터링 1. 도커 호스트 시스템 로그 2. 도커 호스트 시스템 메트릭스 3. 컨테이너 어플리케이션 로그 4. 컨테이너 어플리케이션 메트릭스 5. 컨테이너 메트릭스
  • 22. 도커 호스트 시스템 로그 기존 방식과 다르지 않음 뒤에서 다시
  • 23. 도커 호스트 시스템 메트릭스 기존 방식과 다르지 않음 뒤에서 다시
  • 24. 컨테이너 어플리케이션 로그 생각해볼 수 있는 방법 컨테이너 안에서 수집 어플리케이션 컨테이너에서 수집기 운용 컨테이너 외부에서 수집 Docker 로그 파일 직접 사용
  • 25. 서비스(컨테이너)적인 사고법 로그는 서비스의 일부분이 아님 컨테이너에는 데이터가 저장되어서는 안 됨 The Twelve Factor App http://the-twelve-factor-app.herokuapp.com/
  • 26. The Twelve Factor App - Log (1) 로그는 모든 실행중인 프로세스와 백엔드 서비스의 누적되며 시간순으로 수집되고 정렬되는 이벤트 스트림이다. 일반적으 로 어플리케이션이 직접 생성하는 로그는 한 줄에 하나의 이 벤트를 텍스트 포맷으로 기록한다(예외를 추적하는 로그는 여러줄로 쓰여지기도 한다). 로그는 고정된 시작과 끝이 없으 면 어플리케이션이 실행되는 한 계속된다. Twelve Factor App은 어플리케이션의 출력 스트림의 목적지 나 어디에 저장되는 지 일체 간섭하지 않는다. 어플리케이션 은 로그를 작성하거나 로그 파일을 관리하려고 해서는 안된 다. 로그 파일을 관리하는 대신 각각의 실행중인 프로세스는 자신의 이벤트 스트림을 버퍼없이 stdout에 출력한다.
  • 27. The Twelve Factor App - Log (2) 로그는 시간순으로 수집되고 정렬되는 이벤트 스트림이다. -> 표준 출력에 출력! 출력 스트림의 목적지나 어디에 저장되는 지 일체 간섭하지 않는다. -> 어플리케이션에는 로그에 대한 설정/로직이 없어야함!
  • 28. 도커 로그(로그 파일을 통한 수집) docker logs 명령어 json으로 저장 docker inspect로 위치 파악 /var/lib/docker/containers 디렉터리의 {containerid}-json.log 접근시 root 권한 필요
  • 29. progrium/logspout Docker Log Router 컨테이너로 실행 syslog 지원 HTTP API 지원
  • 31. progrium/logspout 장단점 장점 logspout 컨테이너 하나면 됨 매우 일관적인 로그 수집 시스템(표준 출력) 12 Factor App에서 환경변수로 설정을 관리하는 것과 비슷 단점 컨테이너에 문제가 생기면 로그 수집 정지(?!) 약간의 딜레이 stdout과 stderr만 수집 가능 어플리케이션 설계시 고려가 필요
  • 32. 컨테이너 어플리케이션 메트릭스 기존과 크게 다르지 않음 메트릭스는 대개 실시간 데이터 어플리케이션에서 라이브러리로 직접 보냄 필요한 경우 파일이나 다른 수집기 사용
  • 34. cgroup 가상화된 컨테이너별 데이터 수집 Resouce 메트릭스 sys/fs/cgroup 에서 수집 가능 Network & Exit Time … Gathering LXC and Docker containers metrics
  • 35. sys/fs/cgroup /sys/fs/cgroup/ ├── cpu │ ├── docker │ │ ├── 0660f4e1d4054d4ebb6a3212a35b8ba1593dee7e26a6cc96999f796 465bce9f7 │ │ ├── 09ecfbb7a3cffbd0860a7ae163bfa6bbf5ad73c730932df62127531 1ef16d04d │ │ ├── 2ab6917f2711586438b8ade5b55b55a15e94ae6209831f8fc4dd47e 4b288cafe │ │ ├── 42e782ffcceafbdb6e939abbf6a4f71b9089ccd06dae3349b3429ad 651bf5814 │ │ ├── 61a8ffc27ad4f2d4c81b4b70d1f575b5593df8433c7edf47231efb4 7fd3607a7 │ │ ├── afb4bfe3db0ddf38db9ac4b2b08150885ddf090696722e066a07923 5b4ce964d │ │ └── b6b689622627c477b298a1da6d9020ce517ef5ca9f45ca392e51e29 7c962d469 │ └── user │ └── 1000.user │ └── c1.session ...
  • 36. cgroup 데이터 수집기 Diamond collector CpuAcctCgroupCollector MemoryCgroupCollector Sensu Cgroup Metrics Plugin docker-metricsd
  • 37. Diamond 예제 [[MemoryCgroupCollector]] enabled = True [[CpuAcctCgroupCollector]] enabled = True
  • 38. docker-metricsd + fluentd $ curl http://host.example.com:12375/containers/f9093f3df8d8/json | jq . { "ID": "f9093f3df8d84db914f544139d828e3c7ba7f5a353f83220c0580536b61ec5c3", ... "Metrics": { "memory": { "failcnt": 0, "stats": { "unevictable": 0, "total_unevictable": 0, "total_swap": 0, "total_rss": 380928, "total_pgpgout": 681084,
  • 39. 도커 메트릭스 & 로그 수집 최종 구조도
  • 40. 도커 메트릭스 & 로그 수집 최종 구조도 (2)
  • 41. 도커 로그 & 모니터링 결론 1. 도커 호스트 시스템 로그 기존과 같음(ex - host에서 syslog-ng 사용) 2. 도커 호스트 시스템 메트릭스 기존과 같음(ex - host에서 diamond 사용) 3. 컨테이너 어플리케이션 로그 표준 출력으로 로그 기록 json 파일 / logspout으로 수집 4. 컨테이너 어플리케이션 메트릭스 기존과 비슷함(ex - 어플리케이션에서 직접 데이터 저장소로) 5. 컨테이너 메트릭스 Diamond or docker-metricsd(Cgroup 메트릭스 데이터 수집)
  • 42. Configuration Management Docker Base Image Syslog Diamond docker-metricsd Docker Logspout
  • 43. Demo Metrics Server ElasticSearch & Kibana Graphite & Grafana App Server diamond system cgroup syslog-ng logspout
  • 44. Demo - Metrics-Server Digital Ocean Image Docker 1.1.1 Ubuntu 14.04
  • 45. Fig 설치 $ curl -L https://github.com/orchardup/fig/releases/download/0.5.2/ linux > /usr/local/bin/fig $ chmod +x /usr/local/bin/fig
  • 46. ElasticSearch & Grafana Setup $ git clone https://gist.github.com/f0dc7d9e05238ffd0f2f.git ~/moni toring $ cd monitoring $ fig up
  • 49. Demo - App-Server Digital Ocean Image Docker 1.1.1 Ubuntu 14.04
  • 50. Diamond 설치 $ apt-get update $ apt-get install make pbuilder python-mock python-configobj python -support cdbs $ git clone https://github.com/BrightcoveOS/Diamond.git $ cd Diamond/ $ make builddeb $ dpkg -i build/diamond_3.4.573_all.deb $ git clone https://gist.github.com/d0f9c491f8aa8ff42f16 /etc/diamo nd/gist $ cp /etc/diamond/gist/diamond.conf /etc/diamond/diamond.conf $ service diamond start
  • 51. Diamond 설정 Graphite Handler 설정 [[GraphiteHandler]] host = 0.0.0.0 port = 2003 timeout = 15 batch = 1 수집 간격 설정 [collectors] interval = 5
  • 53. Diamond - cgroup 설정 [collectors] [[MemoryCgroupCollector]] enabled = True [[CpuAcctCgroupCollector]] enabled = True
  • 55. syslog-ng $ apt-get install -y syslog-ng-core syslog-ng $ git clone https://gist.github.com/87d0d902663390b11ff6 /etc/syslo g-ng/gist $ cp /etc/syslog-ng/gist/syslog-ng.conf /etc/syslog-ng/syslog-ng.co nf
  • 56. syslog-ng.conf @version: 3.5 @include "scl.conf" options { time_reap(30); mark_freq(10); keep_hostname(yes); }; source src { unix-stream("/dev/log"); internal(); system(); }; destination d_network { udp( "0.0.0.0" port(5140) ); }; log { source(src); destination(d_network); };
  • 57. agent-td:syslog_to_elasticsearch $ docker run -d -p 5140:5140/udp -e SYSLOG_TAG=syslog.system -e SYSLOG_FORMAT= -e SYSLO G_TIME_FORMAT= -e ES_HOST=<ES_HOST> -e ES_TAG=syslog.** nacyot/syslog _to_elasticsearch
  • 59. logspout 테스트 컨테이너 실행 $ docker run -d busybox /bin/sh -c "while true; do echo Container 1 ; sleep 1; done" $ docker run -d busybox /bin/sh -c "while true; do echo Container 2 ; sleep 5; done" logspout 실행 $ docker run -d --name log -p 9500:8000 -v=/var/run/docker.sock:/tm p/docker.sock progrium/logspout $ curl $(docker port log 9500)/logs Syslog로 보내기 $ docker run -v=/var/run/docker.sock:/tmp/docker.sock progrium/logs pout syslog://0.0.0.0:5141
  • 60. agent-td:syslogtoelasticsearch $ docker run -d -p 5141:5140/udp -e SYSLOG_TAG=docker.log -e ES_TYPE=docker -e ES_HOST=<ES_HOST> -e ES_TAG=docker.** nacyot/syslog _to_elasticsearch
  • 62. 메트릭스 & 로그 수집의 미래 도커다운 해결책 로그 수집기의 컨테이너화 메트릭스 수집기의 컨테이너화
  • 63. 앞서 미뤄둔 이야기 호스트에서 돌려야하는 수집기 도커 호스트 시스템 로그 도커 호스트 시스템 메트릭스 (컨테이너 메트릭스)
  • 65. Just Docker Docker Base Image Docker Logspout Syslog-ng Diamond docker-metricsd
  • 66. 비교 Host + Docker Docker Docker Base Image Syslog Diamond docker-metricsd Docker Logspout Docker Base Image Docker Logspout Syslog-ng Diamond docker-metricsd
  • 67. 장점 Stateless한 수집 시스템 컨테이너로 로그 수집 시스템 추상화 컨테이너로 수집기 논리적 분리 사용하고 싶은 수집기로 쉽게 변경 가능 컨테이너 교체
  • 68. 단점 / 문제점 컨테이너에 문제가 생겼을 때 대응 필요한 건 컨테이너의 정보가 아닌 호스트의 정보 호스트의 정보를 어떻게 가져올 수 있을까? 호스트의 정보를 가져올 수 있을까?
  • 69. 해결법 $ docker run -d -v /proc:/host_proc:ro -link nuxeoServer:nuxeo -nam e collector nuxeo/diamond -v /proc:/hostproc:ro 로그 수집 모듈의 로직을 일일히 다 바꿔줘야함 아직은 비현실적인 해결책
  • 70. Q/A