# kibana 설치.

kibana 설치는 아래 가이드처럼 rpm으로 간단하게 설치 가능하다.
elasticsearch는 공식홈페이지에 모든게 다 잘 정리되어있다.

"중요한 것은 elasticsearch와 kibana의 버전이 동일해야한다는 것"

<<elasticsearch 공홈에 가이드가 아주 잘 나와있음>>
https://www.elastic.co/guide/en/kibana/7.2/rpm.html

 

Install Kibana with RPM | Kibana Guide [7.2] | Elastic

An alternative package, kibana-oss, which contains only features that are available under the Apache 2.0 license is also available. To install it, use the following baseurl in your kibana.repo file: baseurl=https://artifacts.elastic.co/packages/oss-7.x/yum

www.elastic.co

- RPM설치후에 kibana.yml 에서 elasticsearch.hosts 부분을 array로 넣어주었고, kibana port만 만번대로 변경하여, kibana를 시작했다.

elasticsearch.hosts : ["node1", "node2", "node3"]

 

- kibana configuration을 더 하려면 아래 문서 참고.
https://www.elastic.co/guide/en/kibana/7.2/settings.html

- 이렇게 kibana를 설치하면 kibana에서 node현황도 볼수있고, indexing된 데이터도 볼 수 있고, elasticsearch의 restapi로 request도 날릴수있다.

 

# Filebeat 설치.

- 이번에는 filebeat를 설치하여, 로그를 kibana로 전송해보자. <<역시 가이드 잘 나와있음>>
- 역시나 elasticsearch/kibana와 "버전을 잘 맞춰 설치한다".
https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-module-elasticsearch.html

curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.4.1-x86_64.rpm 
sudo rpm -vi filebeat-7.4.1-x86_64.rpm

- filebeat configure : log path잡아주고, elasticsearch hosts와 kibana host만 내꺼에 잘 맞춰서 넣어줬다.

filebeat.inputs:
	type: log
	enabled: true
	paths:
		/var/log/*.log
		/var/log/elasticsearch/elasticsearch.log

output.elasticsearch:
	hosts: ["myEShost:9200"]

setup.kibana:
	host: "mykibanahost:5601"

 

- 가이드대로 filebeat 에서 elasticsearch module을 활성화 시키고, 초기 환경변수를 setup하고, 시작하는 command를 날렸다.

filebeat setup --dashboards
filebeat modules enable elasticsearch
filebeat setup -e
service filebeat start

<<참고문서>>

 

# 마무리.

- kibana에서 index pattern을 생성도 해보고,
- kibana gui에서 mornitoring 옵션을 활성화 시키면
- 이제 node상태들도 보이고, index도 보이고, 로그도 보인다~

DataFrame의 결과를 Elasticsearch의 Index로 넣어야 했다.
물론? python에서도 elasticsearch의 패키지가 있다.

아래와 같이 es_client를 정의 할때, 내가 넣고자 하는 ES_HOST를 파라미터로 넘겨주면 된다.

예: Elasticsearch('localhost:9200')

use_these_keys에는 dataframe의 여러 컬럼중에서 내가 es에 넣을 필드의 리스트를 넣어 주면 된다.
아래 helpers.bulk를 이용하여 doc_generator에 정의한 index, type, _id, _source 의 형태로 값이 들어간다.

from elasticsearch import Elasticsearch
from elasticsearch import helpers

es_client = Elasticsearch(http_compress=True)
def doc_generator(df):
    df_iter = df.iterrows()
    for index, document in df_iter:
        yield {
                "_index": 'your_index',
                "_type": "_doc",
                "_id" : f"{document['id']}",
                "_source": filterKeys(document),
            }
    raise StopIteration

use_these_keys = ['id', 'value', 'value1']

def filterKeys(document):
    return {key: document[key] for key in use_these_keys }    


helpers.bulk(es_client, doc_generator(your_dataframe))

+ Recent posts