본문 바로가기

Monitoring

(25)
05. Install StatsD 다음으로 StatsD 서버 를 Graphite Web 이 설치된 PC 에 설치하면 된다. StatsD 는 NodeJS 로 구성되어 있기 때문에 NodeJS 먼저 설치후 Git 서버에서 StatsD 소스를 다운받아 Griphite 와의 연결 정보를 입력 후 서비스를 실행하는 구조이다. #패키지 레포지토리 업데이트 ($ sudo rm -rf /var/lib/apt/lists/* - 업데이트 에러발생시) $ sudo apt-get update #NodeJS 설치 $ sudo apt-get install curl -y $ curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash - $ sudo apt-get install nodejs -y #Git 설치 $ s..
04. Install Graphite Graphite 는 기본적으로 Unix Base 의 환경에서 구축해야 한다. 왜냐하면 윈도우는 체계가 다른 Regular Expression 시스템을 사용하기 때문에 여러가지 문제가 발생할 수 있다. 여기에서는 Ubuntu 에서 Graphite 를 설치하는 방법에 대해서 알아보도록 하자. 포트 열기 먼저 StatsD 클라이언트가 8125 번 포트를 통해 데이터를 전송하므로 해당 포트를 열어놓는다. 그리고 웹 기반으로 동작하므로 80 (HTTP) , 443 (HTTPS) , 8125 (StatsD) 가 모두 정상적으로 열렸는지 확인하자. $ ufw allow 8125/tcp $ ufw status 우분투 업데이트 및 업그레이드 다음으로 우분투를 업그레이드 한 다음 재부팅한다. #패키지 레포지토리 업데이트 ..
03. StatsD StatsD 는 metric value 를 모아서 Graphite 의 Carbon 컴포넌트로 데이터를 전송하는 데몬이다. StatsD 서버는 StatsD 클라이언트로에서 생성된 metric value 를 기본적으로 UDP 를 통해 데이터를 수신한다. ( TCP 방식도 지원한다. ) Datagram statsd 서버가 수집하는 데이터는 다음과 같은 형태를 가진다. :|type|@ bucket : key 에 해당하는 데이터로 위의 첫번째 예에서 MyService.Api.Invocation 에 해당한다. value : 말그대로 해당 key 에 대응하는 value 값이다. type : 데이터 value 의 종류를 의미한다. 아래 정리해 놓은 내용을 참조하자. sampling rate : 0.1 이라고 넣으면 데..
02. Graphite Grafana 에 연결 가능한 데이터 소스는 Graphite 나 influxDB, Elasticsearch 등의 DB 가 많이 사용된다. 하지만 Grafana 는 다른 Data Source 에 비해서 Graphite 와 상당히 좋은 조합을 보인다. 왜냐하면 Graphite 가 시간과 데이터를 받는 시계열 데이터베이스이기 때문이다. 반면 ElasticSearch 를 사용한 모니터링은 보통 로그 수집에 사용된다. ElasticSearch가 Graphite의 기능을 대개 커버할 수 있을지는 모르지만, 단순 시계열 데이터를 저장하는데 최적화된 플랫폼은 아니다. Graphite Graphite 는 자체로 모 웹 사이트, 어플리케이션, 특정 데이터나 서버를 모니터링 하는 툴이다. Graphite 는 다음의 세 가지..
01. Grafana Grafana는 대시보드 웹 어플리케이션으로 시계열 데이터 베이스를 보여주는데 최적화된 모니터링 웹 어플리케이션이다. 보통의 Grafana 는 단독으로 동작하기 보다는 다른 Data Soruce 와 연결되어 사용된다. 이때의 툴 체인은 보통 아래와 같다. 데이터의 흐름으로 보면 아래와 같다. 즉 서버 등에서 데이터를 DB 에 저장하고 Grafana 가 이를 읽어 Display 한다. Grafana Back-end Grafana 는 파이선 모듈로 이루어진 Grafana Back-end 를 가지고 있다. 이 Back-end 모듈은 Data Source 로부터 모니터링 하고자 하는 metrics 정보를 가져온다. 그리고 연결 가능한 Data Source 는 여러가지가 될 수 있다. Data Source Gra..
12. Aggregation 통계 (aggregation) 옵션을 이용하면 query 에 따른 documents 의 통계 결과를 알 수 있다. aggregation 옵션의 설명과 사용에 앞서 테스트용 데이터를 입력하자. POST /order/default/_bulk GET /order/default/_mapping { "order" : { "mappings" : { "default" : { "properties" : { "lines" : { "properties" : { "amount" : { "type" : "float" }, "product_id" : { "type" : "long" }, "quantity" : { "type" : "long" } } }, "purchased_at" : { "type" : "date" }, "sa..
11. Query Result Options Select the output field 특정 field 만 output 결과에 설정하려면 _source 옵션을 사용한다. 아래와 같이 다양한 방식으로 설정 가능하다. GET /recipe/default/_search { "_source" : ["user", "created_at"], "query" : { "term" : {"title" : "test"} } } GET /recipe/default/_search { "_source" : false, "query" : { "term" : {"title" : "test"} } } GET /recipe/default/_search { "_source" : "user", "query" : { "term" : {"title" : "test"} } } GET /r..
10. Joining Query Relation 관계형 DB 에는 엔티티간에 키를 설정하여 연결을 설정한다. 예를 들어 특정 부서가 어떤 도시에 속해있는지를 관계형 DB 로 표현하면 아래와 같이 스키마를 만들고 데이터는 아래와 같이 각 부서별 도시를 포인팅하는 방식으로 저장 공간이 효율적으로 사용되며 데이터를 읽기 위해서는 두 Table 을 Join Query 하여 그 결과를 얻을수 있다. Denormalized Database NoSQL 은 기본적으로 RDBMS 방식의 관계 (엔티티를 키로 연결하는 것) 를 지원하지 않는다. 따라서 관계를 비정규화 하는 방식으로 데이터를 저장한다. 예를 들어 아래의 category 를 비정규화 하면 User_messages 에 category 이름을 직접 저장함으로써 User_messages 테이블에..