ELK(Elasticsearch) 7계에서 CSV로부터 Coordinate Map을 만든다
8240 단어 Elasticsearch키바나LogstashELK
【경위】
ELK로 오픈 데이터를 시각화하는 사이트를 작성하고 있습니다.
지도에 데이터를 그래프로 표시하고 싶고, Kibana의 Coordinate Map을 사용하려고 생각했지만, 예상외로 고전했습니다.
비망을 겸해 투고합니다.
덧붙여서 Map 이미지는 이런 느낌입니다.
【Kibana의 지도에 대해서】
Kibana에서는 맵이 2종류 있습니다.
・Region Map:지정한 지구의 영역을 색칠해 표시한다.
· Coodinate Map : 지정된 위도 경도의 포인트에 메트릭을 표시합니다.
Redion Map에 대해서는 이하의 사이트가 참고가 됩니다.
Kibana 5.5.0의 새로운 기능 Region Map을 사용해 보았습니다.
Region Map에서 도도부 현 데이터를 그려 보았습니다.
이 게시물에서는 Coodinate Map을 다루고 싶습니다.
【환경】
OS: Amazon Linux 2
데이터베이스: Elasticsearch 7.1
데이터 투입: Logstash 7.1
데이터 시각화: Kibana 7.1
※주의:본 투고는 ELK7계에서의 순서입니다. 다른 버전에서는 아마 다른 설정·순서가 될까 생각하므로 유의해 주십시오.
【작업 순서】
전체 작업 흐름
Kibana에서는 맵이 2종류 있습니다.
・Region Map:지정한 지구의 영역을 색칠해 표시한다.
· Coodinate Map : 지정된 위도 경도의 포인트에 메트릭을 표시합니다.
Redion Map에 대해서는 이하의 사이트가 참고가 됩니다.
Kibana 5.5.0의 새로운 기능 Region Map을 사용해 보았습니다.
Region Map에서 도도부 현 데이터를 그려 보았습니다.
이 게시물에서는 Coodinate Map을 다루고 싶습니다.
【환경】
OS: Amazon Linux 2
데이터베이스: Elasticsearch 7.1
데이터 투입: Logstash 7.1
데이터 시각화: Kibana 7.1
※주의:본 투고는 ELK7계에서의 순서입니다. 다른 버전에서는 아마 다른 설정·순서가 될까 생각하므로 유의해 주십시오.
【작업 순서】
전체 작업 흐름
전체 작업 흐름
그러면 구체적인 절차가 아래에 나와 있습니다.
1. CSV 파일 준비
먼저 CSV 파일을 준비합니다.
sample.csv
id,nengetsu,chiku,gyorui,kairui,sonota,sourui,sousuu,kingaku,lat,lon #←この行は削除すること
ID,年月,市町村名,魚類,貝類,その他,藻類,総数,漁獲金額,緯度,経度 #←この行は削除すること
1,2018-01-01,深浦町,220201,278,87827,930,309236,199231,40.650993,139.929676
2,2018-01-01,鰺ヶ沢町,82891,16,64543,27,147477,80995,40.778099,140.220862
3,2018-01-01,つがる市,2185,0,688,0,2873,1690,40.882709,140.2922
(以下省略)
선두의 2행은 설명을 위해서 표기하고 있습니다. 실제 CSV에서는 처음 두 줄을 삭제하십시오.
2. Logstash conf 파일 만들기
Logstash에서 CSV 데이터를 가져오려면 다음과 같은 conf 파일을 준비합니다.
sample.conf
input {
file {
path => ["/etc/logstash/conf.d/sample.csv"]
start_position => "beginning"
sincedb_path => "/dev/null"
}
}
filter {
csv {
columns => ["id","nengetsu","chiku","gyorui","kairui","sonota","sourui","sousuu","kingaku","latitude","longitude"]
}
date {
match => ["nengetsu", "yyyy-MM-dd"]
}
mutate {
convert => {
"id" => integer
"chiku" => string
"gyorui" => integer
"kairui" => integer
"sonota" => integer
"sourui" => integer
"sousuu" => integer
"kingaku" => integer
"latitude" => "float"
"longitude" => "float"
}
add_field => {
"[location][lat]" => "%{latitude}"
"[location][lon]" => "%{longitude}"
}
convert => {
"[location][lat]" => "float"
"[location][lon]" => "float"
}
}
}
output {
elasticsearch {
index => "sample"
document_id => "%{id}"
}
}
3. index template 설정
csv와 conf가 준비된 곳에서 데이터 투입, 가고 싶은 곳입니다만, 투입전에 Elasticsearch에서 index template의 설정이 필요합니다.
# curl -H 'Content-Type: application/json' -XPUT 'http://localhost:9200/_template/sample' -d '
{
"index_patterns": "sample*",
"mappings": {"properties": {"location": {"type": "geo_point"}}}
}'
위 명령을 실행하고 "{"acknowledged":true}"라고 표시되면 OK입니다.
4. logstash로 csv 데이터 가져오기
그럼 드디어 데이터를 투입합니다.
먼저 sample.csv와 sample.conf를/etc/logstash/conf.d/에 배포하십시오.
# pwd
/etc/logstash/conf.d
# ls
sample.conf sample.csv
그리고 다음 명령으로 실행합니다. 조금 시간이 걸릴 수 있습니다.
# /usr/share/logstash/bin/logstash -f ./sample.conf
몇 분 정도 시간이 걸릴 수 있습니다.
[ERROR]가 나오지 않고 [Successfully started Logstash API endpoint]라는 메시지가 나오면 OK입니다.
([WARN]은 신경 쓰지 않아도 괜찮습니다.)
5. Kibana에서 Coordinate Map 만들기
마지막으로 Kibana에서지도를 만듭니다.
① 우선 [Management]의 [index Patterns]에서 index patarn을 작성합니다.
이름은 "sample*"입니다.
Time Fileter는 [ @timestamp ]을 선택합니다.
② 다음으로 [Visualise]의 신규 작성에서 [Coordinate Map]을 선택하고 [sample*]을 선택합니다.
③ [Metrics]와 [Buckets]를 설정합니다.
또한 오른쪽 상단의 대상 기간을 적절하게 설정하십시오. (기본값으로는 아무것도 표시되지 않을 수 있습니다.)
설정이 끝나면 삼각형 실행 아이콘을 클릭하면 MAP에 표시됩니다.
④ MAP 왼쪽 상단의 중간 아이콘을 클릭하면 딱 좋은 느낌으로 줌 해줍니다.
뭔가 좋은 느낌으로 표시되었습니다!
【마지막으로】
포인트는 logstash로 캡처하기 전에 template를 설정해 두는 것이군요. 이것을 모르고 고전했습니다.
(logstash의 conf로 geo_point형을 설정할 수 없는가와 여러가지 챌린지 했습니다만, 결국은 template로 해결했습니다.)
Elastic과 Kibana를 사용하여 작성한 그래프를 다음 사이트에서 공개하고 있습니다.
관심이 있으시면 살펴보세요.
아오모리의 통계 데이터를 보자.
Reference
이 문제에 관하여(ELK(Elasticsearch) 7계에서 CSV로부터 Coordinate Map을 만든다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kuro1975/items/7474f018e4ec85d9ceaa
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(ELK(Elasticsearch) 7계에서 CSV로부터 Coordinate Map을 만든다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kuro1975/items/7474f018e4ec85d9ceaa텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)