Mac에서 docker 컨테이너를 사용하여 elasticsearch 및 kibana 시작

10078 단어 도커Elasticsearch

docker 컨테이너를 사용하여 elasticsearch 및 kibana 시작



아래를 참조하여 docker 설치

Install Compose on Linux

elasticsearch 및 kibana를 시작하기 위한 파일(docker-compose.yaml) 준비
mkdir ~/test
cd ~/test
vim docker-compose.yaml

docker-compose.yaml
version: "3"

services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.6.2
    environment:
      - discovery.type=single-node
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    ports:
      - 9200:9200
    volumes:
      - es-data:/usr/share/elasticsearch/data
  kibana:
    image: docker.elastic.co/kibana/kibana:7.6.2
    ports:
      - 5601:5601

volumes:
  es-data:

docker 컨테이너 시작
docker-compose up -d

localhost : 5601에 브라우저에서 액세스하여 다음과 같이 kibana가 보이면 OK


평가 평가



아래를 참고로 시험으로 kibana를 이용해 보겠습니다.

Elasticsearch 6.1에서 추가된 Machine Learning의 새로운 기능을 사용해 보았다. 예측 기능이 재미있다!
뉴욕시의 택시 승강 데이터로 Machine Learning 체험

로그 데이터 얻기
wget https://s3.amazonaws.com/nyc-tlc/trip+data/yellow_tripdata_2016-11.csv 
curl https://s3.amazonaws.com/nyc-tlc/misc/taxi+_zone_lookup.csv | cut -d, -f 1,3 | tail +2 > taxi.csv

elastic search에 제공하는 로그 형식으로 변환하는 logstash 설치
brew install logstash

logstash config 준비

nyc-taxi-yellow-translate-logstash.conf
input {
  stdin { type => "tripdata" }
}
filter {
  csv {
    columns => ["VendorID","tpep_pickup_datetime","tpep_dropoff_datetime","passenger_count","trip_distance","RatecodeID","store_and_fwd_flag","PULocationID","DOLocationID","payment_type","fare_amount","extra","mta_tax","tip_amount","tolls_amount","improvement_surcharge","total_amount"]
    convert => {"extra" => "float"}
    convert => {"fare_amount" => "float"}
    convert => {"improvement_surcharge" => "float"}
    convert => {"mta_tax" => "float"}
    convert => {"tip_amount" => "float"}
    convert => {"tolls_amount" => "float"}
    convert => {"total_amount" => "float"}
    convert => {"trip_distance" => "float"}
    convert => {"passenger_count" => "integer"}
  }
  date {
    match => ["tpep_pickup_datetime", "yyyy-MM-dd HH:mm:ss", "ISO8601"]
    timezone => "EST"
  }
  date {
    match => ["tpep_pickup_datetime", "yyyy-MM-dd HH:mm:ss", "ISO8601"]
    target => ["@tpep_pickup_datetime"]
    remove_field => ["tpep_pickup_datetime"]
    timezone => "EST"
  }
  date {
    match => ["tpep_dropoff_datetime", "yyyy-MM-dd HH:mm:ss", "ISO8601"]
    target => ["@tpep_dropoff_datetime"]
    remove_field => ["tpep_dropoff_datetime"]
    timezone => "EST"
  }
  translate {
    field => "RatecodeID"
    destination => "RatecodeID"
    dictionary => [
      "1", "Standard rate",
      "2", "JFK",
      "3", "Newark",
      "4", "Nassau or Westchester",
      "5", "Negotiated fare",
      "6", "Group ride"
    ]
  }
  translate {
    field => "VendorID"
    destination => "VendorID_t"
    dictionary => [
      "1", "Creative Mobile Technologies",
      "2", "VeriFone Inc"
    ]
  }
  translate {
    field => "payment_type"
    destination => "payment_type_t"
    dictionary => [
      "1", "Credit card",
      "2", "Cash",
      "3", "No charge",
      "4", "Dispute",
      "5", "Unknown",
      "6", "Voided trip"
    ]
  }
  translate {
    field => "PULocationID"
    destination => "PULocationID_t"
    dictionary_path => "taxi.csv"
  }
  translate {
    field => "DOLocationID"
    destination => "DOLocationID_t"
    dictionary_path => "taxi.csv"
  }
  mutate {
    remove_field => ["message", "column18", "column19", "RatecodeID", "VendorID", "payment_type", "PULocationID", "DOLocationID"]
  }
}
output {
   file {
     path => "./output.log"
     codec => json_lines
    }
}

실행
tail +2 yellow_tripdata_2016-11.csv | logstash -f nyc-taxi-yellow-translate-logstash.conf 
cat output.log | head -100000 > output2.log 

kibana에 업로드

Upload data from logfile


output2.log 드래그 앤 드롭


그대로 가져오기






로그 분석 결과가 출력되면 OK


Anomaly Detection



Machine learning --> Anomaly Detection에서 이상 검지를 할 수 있는 것 같습니다.
일단 같은 데이터(output2.log)를 주어 보자.


이상인지 여부를 score로 판정해 주고 있을 것 같다.
정확하게 이상 검출하기 위해서는 데이터의 부여 방법에 궁리가 필요할 것 같다.

Machine Learning shown as unavailable



Machine Learning shown as unavailable

라이센스에 의존하는 것 같습니다.
일단 Trial 라이센스로 사용할 수있었습니다.

참고



Elasticsearch + Kibana를 docker-compose로 빠르게 이동
Running Kibana on Dockeredit
Install Elasticsearch with Docker-edit
Install Compose on Linux
Mac에 ELK (Elasticsearch, Logstash, Kibana)를 설치해 보았습니다.

좋은 웹페이지 즐겨찾기