PROFESSIONAL AI DEVELOPER CHAGAUN
텍스트
텍스트
텍스트
텍스트
텍스트
PROFESSIONAL AI DEVELOPER CHAGAUN
[Ubuntu 18.04 에 ELK 7.15.2 설치 히스토리]
reference site : https://websiteforstudents.com/how-to-install-elk-stack-on-ubuntu/
1. 준비사항
-. Ubuntu 18.04가 설치되어 있는 우분투 서버를 준비합니다.
-. openjdk-11
-. elasticsearch-7-15-2, logstash-7-15-2, kibana-7-15-2
1. 먼저 java 설치 여부를 확인하여 openjdk-11 버전으로 Upgrade해 놓습니다
$ java -version
openjdk version "1.8.0_302"
OpenJDK Runtime Environment (build 1.8.0_302-b08)
OpenJDK 64-Bit Server VM (build 25.302-b08, mixed mode)
=>
-. # sudo apt install openjdk-11-jre-headless
-. /etc/profile 파일끝에 다음을 추가
export ES_JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export PATH=$ES_JAVA_HOME/bin:$PATH
2. elasticsearch-7-15-2, logstash-7-15-2, kibana-7-15-2을 직접 다운로드하여 설치를 합니다.
먼저 아래의 사이트로 이동하여 설치파일을 내려받아 우분투 서버에 가져다 놓습니다.
참고로 DEB X86_64 버전을 다운로드 받으면 됩니다.
https://www.elastic.co/kr/downloads/past-releases/elasticsearch-7-15-2
https://www.elastic.co/kr/downloads/past-releases/logstash-7-15-2
https://www.elastic.co/kr/downloads/past-releases/kibana-7-15-2
$ sudo dpkg -i elasticsearch-7-15-2.deb
$ sudo dpkg -i logstash-7-15-2.deb
$ sudo dpkg -i kibana-7-15-2.deb
[Elasticsearch 설치]
0. 위에서 처럼 직접 다운로드 받아 설치를 한 경우 3번으로 바로 이동하고
GPG repository key를 만들어 온라인으로 설치하고자 하는 경우 아래처럼 진행합니다.
1. GPG repository key를 이용한 설치
-. Elasticsearch설치를 위한 GPG repository key 생성합니다
# wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
-. elastic-7.x.list라고 하는 repository file을 생성합니다.
# echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
2. elasticsearch를 설치합니다.
# sudo apt update
# sudo apt install elasticsearch
3. 처음 Elasticsearch가 설치된 경로를 보면 다읍과 같습니다.
home dir: /usr/share/elasticsearch
config dir : /etc/elasticsearch
data dir : /var/lib/elasticsearch
log dir : /var/log/elasticsearch
elkuser라는 하나의 ubuntu user를 통해 통합 관리를 하기 위해서는 다음과 같은 몇가지 조치가 필요합니다.
4.elasticsearch와 관련된 폴더들의 오너쉽을 일반유저 계정(elkuser:elkuser)으로 바꾸어 줍니다.
sudo chown -R elkuser:elkuser /usr/share/elasticsearch
sudo chown -R elkuser:elkuser /var/log/elasticsearch
sudo chown -R elkuser:elkuser /var/lib/elasticsearch
sudo chown -R elkuser:elkuser /etc/elasticsearch
sudo chown -R elkuser:elkuser /etc/default/elasticsearch
5. Service 파일을 열어 config와 logs 폴더를 변경해 줍니다.
-. sudo vi /usr/lib/systemd/system/elasticsearch.service
:
Environment=ES_PATH_CONF=/home/elkuser/elastic/elasticsearch/config
User=elkuser
Group=elkuser
:
6. sudo vi /etc/default/elasticsearch
:
ES_JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
ES_PATH_CONF=/home/elkuser/elastic/elasticsearch/config
7. elkuser라는 홈 폴더에elasticseatch 폴더 환경을 만든다.
$ mkdir /home/elkuser/elastic/elasticsearch/config
$ mkdir /home/elkuser/elastic/elasticsearch/logs
-. /etc/elasticsearch config 파일들을 /home/elkuser/elastic/elasticsearch/config 폴더에 복사한다
$ cp -r /etc/elasticsearch/* /home/elkuser/elastic/elasticsearch/config/
8. elasticsearch 기본 환경을 구성한다
vi /home/elkuser/elastic/elasticsearch/config/elasticsearch.yml
:
path.data: /var/lib/elasticsearch
path.logs: /home/elkuser/elastic/elasticsearch/logs
cluster.name: toktok_elasticsearch
node.name: es-node-1
bootstrap.memory_lock: true
network.host: 0.0.0.0
discovery.seed_hosts: ["127.0.0.1", "[::1]"]
http.port: 9200
transport.port: 9300
cluster.initial_master_nodes: ["es-node-1"]
xpack.security.enabled: true
9. TLS 암호화 및 https 통신을 활성화 합니다.
-. elasticsearch-certutil 통해 인증기관 파일(elastic-stack-ca.p12)을 생성(비밀번호 생략)
/usr/share/elasticsearch$ ./bin/elasticsearch-certutil ca
=> elastic-stack-ca.p12 이 생성됨
-. elasticsearch-certutil 통해 인증서 파일(elastic-certificates.p12)을 생성(비밀번호 생략)
/usr/share/elasticsearch$ ./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
=> elastic-certificates.p12 이 생성됨
-. 생성된 2개의 인증 파일을 /config/certs 에 가져다 놓는다
$ mkdir /home/elkuser/elastic/elasticsearch/config/certs
mv *.p12 /home/elkuser/elastic/elasticsearch/config/certs
-. elasticsearch-certgen 을 통해 1개의 zip파일(certificate-bundle.zip)을 만든 후 config/certs 에 가져다 놓은 다음 압축을 풀어 놓는다
/usr/share/elasticsearch$ ./bin/elasticsearch-certgen
# instance:kibana, ip:127.0.0.1,100.0.1.21, dns:localhost 입력
$ mv certificate-bundle.p12 /home/elkuser/elastic/elasticsearch/config/certs/
$ cd /home/elkuser/elastic/elasticsearch/config/certs
$ unzip certificate-bundle.zip
9. elasticsearch.yml에 보안 환경을 추가한다
vi /home/elkuser/elastic/elasticsearch/config/elasticsearch.yml
:
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: /home/elkuser/elastic/elasticsearch/config/certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: /home/elkuser/elastic/elasticsearch/config/certs/elastic-certificates.p12
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.key: /home/elkuser/elastic/elasticsearch/config/certs/kibana/kibana.key
xpack.security.http.ssl.certificate: /home/elkuser/elastic/elasticsearch/config/certs/kibana/kibana.crt
xpack.security.http.ssl.certificate_authorities: ["/home/elkuser/elastic/elasticsearch/config/certs/ca/ca.crt"]
:
10. Elasticsearch 에서 디폴트로 만들어 놓은 계정들의 비번을 변경해 놓는다
./bin/elasticsearch-setup-passwords interactive
Enter password for [elastic]:
Reenter password for [elastic]:
Enter password for [apm_system]:
Reenter password for [apm_system]:
Enter password for [kibana_system]:
Reenter password for [kibana_system]:
Enter password for [logstash_system]:
Reenter password for [logstash_system]:
Enter password for [beats_system]:
Reenter password for [beats_system]:
Enter password for [remote_monitoring_user]:
Reenter password for [remote_monitoring_user]:
9. 추가 옵션 : elasticseaarch.yml에 bootstrap.memory_lock: true 옵션을 주었는데도 memory lock 제한을 unlimit로 주어야 한다
-. sudo vi /etc/security/limits.conf
:
user soft memlock unlimited
user hard memlock unlimited
-. sudo vi /etc/systemd/system/elasticsearch.service.d/override.conf
[Service]
LimitMEMLOCK=infinity
-. 서비스 파일을 변경한 경우 아래의 명령어를 실행해 놓아야 한다
# sudo systemctl daemon-reload
10. 다음 명령어로 서비스를 활성화 한 후 서비스를 실행한다
sudo systemctl enable elasticsearch
sudo systemctl restart elasticsearch
11. 설치된 버전을 확인합니다.
# curl -X GET "127.0.0.1:9200?pretty"
# curl --user elastic -X GET "127.0.0.1:9200?pretty"
# curl -u elastic --cacert /home/elkuser/elastic/elasticsearch/config/certs/ca/ca.crt https://localhost:9200/?pretty
{
"name" : "itt-krc-was-dat-vm01",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "Cyuy4hWYRW-WA5q8WkquRQ",
"version" : {
"number" : "7.16.3",
"build_flavor" : "default",
"build_type" : "deb",
"build_hash" : "4e6e4eab2297e949ec994e688dad46290d018022",
"build_date" : "2022-01-06T23:43:02.825887787Z",
"build_snapshot" : false,
"lucene_version" : "8.10.1",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
12. 플러그인 설치
# ./bin/elasticsearch-plugin install analysis-nori
[Kibana 설치]
0. 위에서 처럼 직접 다운로드 받아 설치를 한 경우 2번으로 바로 이동하고
온라인으로 설치하고자 하는 경우 아래처럼 진행합니다.
1. kibana를 설치합니다.
# sudo apt install kibana
2. 처음 kibana 설치된 경로를 보면 다읍과 같습니다.
home dir: /usr/share/kibana
config dir : /etc/kibana
elkuser라는 하나의 ubuntu user를 통해 통합 관리를 하기 위해서는 다음과 같은 몇가지 조치가 필요합니다.
3.kibana와 관련된 폴더들의 오너쉽을 일반유저 계정(elkuser:elkuser)으로 바꾸어 줍니다.
sudo chown -R elkuser:elkuser /usr/share/kibana
sudo chown -R elkuser:elkuser /var/log/kibana
sudo chown -R elkuser:elkuser /var/lib/kibana
sudo chown -R elkuser:elkuser /etc/kibana
sudo chown -R elkuser:elkuser /etc/default/kibana
sudo chown -R elkuser:elkuser /run/kibana
4. Service 파일을 열어 config와 logs 폴더를 변경해 줍니다.
-. sudo vi /etc/systemd/system/kibana.service
:
User=elkuser
Group=elkuser
Environment=KBN_PATH_CONF=/home/elkuser/elastic/kibana/config
ExecStart=/usr/share/kibana/bin/kibana --logging.dest="/home/elkuser/elastic/kibana/logs/kibana.log" --pid.file="/run/kibana/kibana.pid"
5. sudo vi /etc/default/kibana
user="elkuser"
group="elkuser"
chroot="/"
chdir="/"
nice=""
KBN_PATH_CONF="/home/elkuser/elastic/kibana/config"
6. elkuser라는 홈 폴더에 kibana 폴더 환경을 만든다.
$ mkdir /home/elkuser/elastic/kibana/config
$ mkdir /home/elkuser/elastic/kibana/logs
-. /etc/kibana config 파일들을 /home/elkuser/elastic/kibana/config 폴더에 복사한다
(.kibana.keystore.initial_md5sum 내용에서 경로를 확인하여 수정해 놓는다)
$ cp -r /etc/kibana/* /home/elkuser/elastic/kibana/config/
7. kibana 환경을 설정한다.
-. vi /home/elkuser/elastic/kibana/config/kibana.yml
:
server.port: 5601
server.host: "0.0.0.0" # 모든 클라이언트로부터 접속 가능
# server.host: "127.0.0.1" # 모든 클라이언트로부터 접속 가능
# https: 로 설정해 놓는다
elasticsearch.hosts: ["https://100.0.1.21:9200"]
elasticsearch.username: "elastic"
elasticsearch.password: "xxxxxxxx"
# SSL 인증 파일 설정을 해 놓는다
server.ssl.enabled: true
server.ssl.key: /home/elkuser/elastic/elasticsearch/config/certs/kibana/kibana.key
server.ssl.certificate: /home/elkuser/elastic/elasticsearch/config/certs/kibana/kibana.crt
elasticsearch.ssl.key: /home/elkuser/elastic/elasticsearch/config/certs/kibana/kibana.key
elasticsearch.ssl.certificate: /home/elkuser/elastic/elasticsearch/config/certs/kibana/kibana.crt
elasticsearch.ssl.certificateAuthorities: ["/home/elkuser/elastic/elasticsearch/config/certs/ca/ca.crt"]
xpack.security.authc.providers:
basic.basic1:
order: 0
icon: "https://dev.w3.org/SVG/tools/svgweb/samples/svg-files/android.svg"
hint: "Typically for administrators"
8. 주의사항
kibana를 리스타트 하기 위해서는 /etc/default/kibana에 있는 KBN_PATH_CONF을 실시간 반영해 주어야 한다
# export KBN_PATH_CONF="/home/elkuser/elastic/kibana/config"
# echo $KBN_PATH_CONF
9. 다음 명령어로 서비스를 활성화 한 후 서비스를 실행한다
sudo systemctl enable kibana
sudo systemctl start kibana
[Logstash 설치]
0. 위에서 처럼 직접 다운로드 받아 설치를 한 경우 2번으로 바로 이동하고
온라인으로 설치하고자 하는 경우 아래처럼 진행합니다.
1. kibana를 설치합니다.
$ sudo apt install logstash
4. 처음 Logstash 설치된 경로를 보면 다읍과 같습니다.
home dir: /usr/share/logstash
config dir : /etc/logstash
data dir : /var/lib/logstash
log dir : /var/log/logstash
elkuser라는 하나의 ubuntu user를 통해 통합 관리를 하기 위해서는 다음과 같은 몇가지 조치가 필요합니다.
5.logstash 관련된 폴더들의 오너쉽을 일반유저 계정으로 바꾸어 준다
sudo chown -R elkuser:elkuser /usr/share/logstash
sudo chown -R elkuser:elkuser /var/log/logstash
sudo chown -R elkuser:elkuser /var/lib/logstash
sudo chown -R elkuser:elkuser /etc/logstash
sudo chown -R elkuser:elkuser /etc/default/logstash
6. Service 파일을 열어 config와 logs 폴더를 변경
-. sudo vi /etc/systemd/system/logstash.service
:
User=elkuser
Group=elkuser
ExecStart=/usr/share/logstash/bin/logstash "--path.settings" "/home/elkuser/elastic/logstash/config"
-. sudo vi /etc/default/logstash
:
LS_HOME="/usr/share/logstash"
LS_SETTINGS_DIR="/home/elkuser/elastic/logstash/config"
LS_USER="elkuser"
LS_GROUP="elkuser"
LS_GC_LOG_FILE="/home/elkuser/elastic/logstash/logs/gc.log"
:
7. elkuser라는 유저 계정에 logstash 폴더 환경을 만든다.
$ mkdir /home/elkuser/elastic/logstash/config
$ mkdir /home/elkuser/elastic/logstash/logs
-. /etc/logstash config 파일들을 /home/elkuser/elastic/logstash/config 폴더에 복사한다
sudo cp -r /etc/logstash/* /home/elkuser/elastic/logstash/config/
8. logstash 환경을 설정한다.
-. vi /home/elkuser/elastic/logstash/config/logstash.yml
:
path.data: /var/lib/logstash
path.logs: /home/elkuser/elastic/logstash/logs
xpack.monitoring.enabled: false
config.reload.automatic: true #변경된 config 파일을 자동으로 설정 감지
config.reload.interval: 3s # 3초 마다 체크
xpack.monitoring.elasticsearch.hosts: ["https://100.0.1.21:9200"]
xpack.monitoring.elasticsearch.username: "elastic"
xpack.monitoring.elasticsearch.password: "121212"
9. 다음 명령어로 서비스를 활성화 한 후 서비스를 실행한다
sudo systemctl enable logstash
sudo systemctl start logstash
[히스토리]
21-11-18 :
logstash에 대한 서비스 실행이 안되어(단위실행은 됨) 시스템 리부팅을 했으나 자동으로
ELK 서비스가 안올라왔다
sudo systemctl restart elasticsearch 하니까 올라왔다(다시한번 더 해볼 필요)
sudo systemctl restart kibana 해도 안올라왔다 /home/elkuser/elastic/kibana/logs의 로그를 보니까 /run/kibana에 권한이 없어서 스타트가 안된다고 나왔다
sudo chown -R elkuser:tocat /run/kibana를 한 후
sudo systemctl restart kibana하니까 잘 올라왔다
이상입니다.
전체목록