[DATA] ELK
Elastic
설치
- 가상머신 준비
cpu mem 프로그램 centos8 2 4 엘라스틱서치 ip : 192.168.197.100 centos8 1 2 로그스태시 ip : 192.168.197.110 centos8 1 2 키바나 ip : 192.168.197.120
- 엘라스틱 서치
- 방화벽 해제
systemctl stop firewalld systemctl disable firewalld setenforce 0
- 방화벽 해제
- 레포지터리 추가
cat > /etc/yum.repos.d/elasticsearch.repo <<EOF [elasticsearch-7.x] name=Elasticsearch repository for 7.x packages baseurl=https://artifacts.elastic.co/packages/7.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md EOF
- 설치
dnf -y install elasticsearch
- 바인딩 주소 설정
vi /etc/elasticsearch/elasticsearch.yml
network.host: 192.168.197.100
discovery.seed_hosts: ["192.168.197.100"]
cluster.initial_master_nodes: ["192.168.197.100"]
- 실행
systemctl enable elasticsearch systemctl restart elasticsearch
- 로그스태시
- 방화벽 해제
systemctl stop firewalld systemctl disable firewalld setenforce 0
- 레포지터리 추가
cat > /etc/yum.repos.d/elasticsearch.repo <<EOF [elasticsearch-7.x] name=Elasticsearch repository for 7.x packages baseurl=https://artifacts.elastic.co/packages/7.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md EOF
- 로그스태시 설치
dnf -y install logstash
- 간단한 파이프라인 설정
chgrp logstash /var/log/secure # 권한 설정 chmod 640 /var/log/secure # 권한 설정 vi /etc/logstash/conf.d/sshd.conf
input {
file {
type => "seucure_log"
path => "/var/log/secure"
}
}
filter {
grok {
add_tag => [ "sshd_fail" ]
match => { "message" => "Failed %{WORD:sshd_auth_type} for %{USERNAME:sshd_invalid_user} from %{IP:sshd_client_ip} port %{NUMBER:sshd_port} %{GREEDYDATA:sshd_protocol}" }
}
}
output {
elasticsearch {
hosts => ["http://192.168.197.100:9200"] #엘라스틱서치 아이피
index => "sshd_fail-%{+YYYY.MM}"
}
}
- 실행
systemctl restart logstash # 만약 오류가 나면 # ps -ef | grep logstash # kill -9 logstash번호
- 확인
로그스태시를 다른 창에 실행시켜 접속 아이디를 틀려보면
curl 192.168.197.100:9200/_cat/indices?v
- 키바나
- 방화벽 해제
systemctl stop firewalld systemctl disable firewalld setenforce 0
- 레포지터리 추가
cat > /etc/yum.repos.d/elasticsearch.repo <<EOF [elasticsearch-7.x] name=Elasticsearch repository for 7.x packages baseurl=https://artifacts.elastic.co/packages/7.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md EOF
- 키바나 설치
dnf -y install kibana
- 키바나 설정
vi /etc/kibana/kibana.yml
```shell
7번 라인 주석 해제 후 다음과 같이 설정
server.host: “0.0.0.0”
32번 라인 주석 해제 후
elasticsearch.hosts: [“http:// 엘라스틱 서치의 IP :9200”]
![image](/assets/img/image/elastic/5.png)<br/>
![image](/assets/img/image/elastic/6.png)<br/>
- 실행
```shell
systemctl enable kibana
systemctl restart kibana
- 확인
윈도우에서 웹브라우저로http://키바나IP주소:5601
Kafka와 연결
` logstash `
vi /etc/logstash/conf.d/kafka.conf
input {
kafka {
bootstrap_servers => "192.168.197.10:9092" # 내 카프카 ip
topics => ["logging.post.like"]
}
}
output {
file {
path => "/etc/logstash/data/kafka.log"
}
}
- 확인
```shell mkdir /etc/logstash/data cd /etc/logstash/data touch kafka.log chmod 755 kafka.log chown logstash:logstash kafka.log
systemctl restart logstash # 재시작
```shell
tail -f kafka.log
장고의 like버튼을 눌러 확인
엘라스틱에 카프카 정보 보내기
` logstash `
vi /etc/logstash/conf.d/kafka.conf
input {
kafka {
bootstrap_servers => "192.168.197.10:9092"
topics => ["logging.post.like"]
}
}
output {
elasticsearch {
hosts => ["http://192.168.197.100:9200"] # 엘라스틱 ip
index => "post-like-%{+YYYY.MM}"
}
}
- 재시작
systemctl restart logstash systemctl restart elasticsearch
- 확인
홈페이지에서 like를 누르면 카프카의 정보가 로그스태시를 통해 키바나로 이동되어 키바나 홈페이지에 출력된다.