Zookeeper 설치 Zookeeper 소개 분산 시스템을 설계 하다보면, 가장 문제점 중의 하나가 분산된 시스템 간의 정보를 어떻게 공유할 것이고, 클러스터에 있는 서버들의 상태를 체크할 필요가 있으며 또한, 분산된 서버들간에 동기화를 위한 락(lock)을 처리하는 것들이 문제로 부딪힌다. 이러한 문제를 해결하는 시스템을 코디네이션 서비스 시스템 (coordination service)라고 하는데, Apache Zookeeper가 대표적이다. 이 코디네이션 서비스는 분산 시스템 내에서 […]
[Elasticsearch] elasticsearch-sql
Elasticsearch Sql ElasticSearch 6.3.x 버전부터 X-Pack을 통해 SQL-Like Query 기능을 제공한다. Index 에 대해서 SQL 질의를 바로 하는 것이 아니라, ElasticSearch 에 최적화된 DSL 로 translate 한 뒤 해당 DSL을 이용해 조회한다. SELECT SQL만 가능하고, multi-index 조회 (join SQL)은 수행되지 않는다. 또한 스칼라 서브쿼리 등 조금만 복잡해져도 잘 안 됨. Kibana와 Curl REST API 를 […]
[MySQL] mysqldump
mysqldump mysqldump 프로세스가 실행된 순간의 데이터베이스 스키마 및 데이터를 SQL로 추출한다. 이 방식으로 백업하는 경우, DB에 TX가 발생하지 않는 상황에서 하는 것이 좋다. (AP 서비스 종료 후 백업하는 것을 권장) Usage 전체 데이터베이스 백업 mysqldump -uroot -p -A > full_database.sql 특정 데이터베이스 백업 mysqldump -uroot -p specific_database_name > specific_database_name.sql 특정 테이블 백업 mysqldump -uroot -p […]
[Fluentd] Usecase – forward
Fluentd Usecase forward 플러그인 활용하기 망이 분리되어있거나 ssl 등의 네트워크 보안을 활용하는 경우 또는 스토리지에 연결되는 채널을 간소화하여 관리하기 위해 forward 플러그인을 활용할 수 있다. fluentd config remote fluentd agent remote fluentd agent는 해당 agent가 설치된 호스트의 파일 로그를 수집할 수도 있고 별도의 플러그인으로 다양한 로그들을 수집한다. 이를 스토리지에 직접 저장할 수 없는 경우 다른 […]
[Fluentd] Usecase – http
Fluentd Use Case http 플러그인 활용하기 지정한 Listener Port 를 통해 POST 되는 데이터를 수집한다. openAPI openAPI 를 이용해 REST 하게 받아온 데이터를 다시 Fluentd http listener 에 전달해줌으로써 데이터를 수집한다. 데이터 소스 vi /app/python/sources/JayWalkingAll.py JayWalkingAll #!/app/python/bin/python from urllib.request import urlopen from urllib.parse import urlencode,quote_plus,unquote import urllib import requests import json url = ‘http://apis.data.go.kr/B552061/jaywalking/getRestJaywalking’ my_service_key […]
[Fluentd] Usecase – tail
Fluentd Use Case tail 플러그인 활용하기 in_tail 플러그인은 텍스트 파일을 읽어 수집할 수 있는 기본 플러그인이며, 로그파일과 같이 갱신되는 파일을 증분만 계속해서 수집할 수도 있다. csv 데이터 분석 데이터셋이나 기초 데이터셋과 같이 일회성 또는 배치성으로 수집하는 csv 텍스트 파일을 수집하는 방법이다. 수집 데이터 소스 head -n 5 accidentology.csv timestamp,Date,Hour,Dept,Com,Address,Zip code,Corner,Segment,Address1,Address2,Vehicle 1 description,Vehicle 1,Vehicle 2 Description,Vehicle […]
[Fluentd] Usecase – exec
Fluentd Use Case exec 플러그인 활용하기 in_exec 플러그인을 활용하면 사용자가 수집하고자 하는 정확한 정보를 만들어내서 수집할 수 있다. linux_free linux 모니터링 명령어인 free 의 결과를 주기적으로 수집해본다. 데이터 소스 스크립트 vi /app/fluentd/scripts/free.sh #!/bin/bash DATE=date "+%Y-%m-%d %H:%M:%S" DATA=free -k | grep "Mem:" | awk '{print $2,$3,$4,$5,$6,$7}' echo $DATA $DATE fluentd config # linux_free ## Input @type […]
[Fluentd] Usecase – rsyslog
Fluentd Use Case rsyslog 플러그인 활용하기 fluentd 는 기본적으로 rsyslog 를 수신하고 파싱할 수 있는 플러그인이 설치된다. rsyslogd 자체적으로 로그를 모을수 있는 기능이 있으므로 aggregator 서버를 통해 rsyslog 를 1차적으로 모은 다음, 몇 대의 aggregator 서버에서 fluentd 에게 로그를 전달해줄 수 있도록 한다. rsyslog data 흐름은 다음과 같다. 여러 대의 syslog 발생 서버 -> 몇 […]
[ElasticSearch] Configuration
ElasticSearch 설정/관리 elasticsearch.yml 아래는 엘라스틱서치 바이너리 내에 yml.template 로 기본 기재된 파라미터 Parameter Name Default Value cluster.name my-application node.name node-1 node.attr.rack r1 path.data /path/to/data path.logs /path/to/logs bootstrap.memory_lock true network.host 192.168.0.1 http.port 9200 discovery.zen.ping.unicast.hosts [“host1”, “host2”] discovery.zen.minimum_master_nodes gateway.recover_after_nodes 3 action.destructive_requires_name true cluster.name 클러스터 이름. 이 이름이 같아야 멤버 노드드들이 조인이 가능하다. 다른 엘라스틱서치 시스템 노드의 클러스터 […]
[ElasticSearch] Index Template
ElasticSearch Index templates Index template은 새로운 index가 생성될 때에, index 설정 또는 특정 필드의 데이터 타입을 정의해준다. ElasticSearch에 Logstash 등 수집기로 데이터 수집 전 index가 사전 생성될 필요가 없다. 그런데 그냥 수집하면 숫자나 날짜는 알아서 파싱을 하는데 나머지 대부분은 text로 해석한다. index template를 생성함으로써 index별로 Shard 갯수나 특정 필드에 대한 개별적인 관리를 할 수 있다. […]