ubuntu 18.04 + Elasticsearch + kibana + logstash (file + http) + apache 로그 모니터링
0. 개요
Kibana + Elasticsearch + Logstash를 도입하여 Apache 로그를 모니터링합니다.
일반적인 파일에 첨부하여 로그를 빨아들이는 방법부터 네트워크 너머로 로그를 받는 방법까지.
1. Installation
$ sudo apt-get install openjdk-8-jdk
$ wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
$ sudo apt-get install apt-transport-https
$ echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
$ sudo apt-get update && sudo apt-get install elasticsearch
$ sudo vi /etc/elasticsearch/elasticsearch.yml
# add configuration
network.host:0.0.0.0
$ sudo vi /etc/elasticsearch/jvm.options
# modify configuration
-Xmx64m
-Xms64m
$ sudo systemctl start elasticsearch
$ systemctl status elasticsearch
$ sudo systemctl enable elasticsearch
$ sudo apt-get install kibana
$ sudo vi /etc/kibana/kibana.yml
server.host: "0.0.0.0"
$ sudo systemctl start kibana
$ systemctl status kibana
$ sudo systemctl enable kibana
$ sudo apt-get install logstash
$ sudo systemctl start logstash
$ systemctl status logstash
$ sudo systemctl enable logstash
2. Settings
$ sudo vim /etc/logstash/conf.d/apache.conf
다음 입력
input {
file {
path=> "/var/log/apache2/access.log"
}
}
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "apache"
}
}
재부팅
$ sudo systemctl restart logstash.service
Kibana를 열고 Management->Index Patterns -> Create Index Pattern에서 apache를 추가합니다.
이것으로 로그를 감시할 수 있게 된다.
3. Check & Delete
Check
데이터베이스 목록이 반환됩니다.
$ curl http://localhost:9200/_cat/indices?v
이런 느낌으로 돌아온다
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open index YZfpJsZAStOXOSynXNvxpQ 5 1 0 0 868b 868b
yellow open apache m5JbbZVITx6q-LxNHKW-TA 5 1 199 0 534.7kb 534.7kb
yellow open .kibana bngpvzOfRJ2UYLan0WvfYA 1 1 3 0 15.3kb 15.3kb
이제 Index를 확인하고, 필요없는 데이터베이스는 다음의 순서로 지웁니다.
Delete
$ curl -XDELETE localhost:9200/index/type/[INDEX NAME]
4. Application
이대로는 내부 파일 밖에 가시화할 수 없기 때문에 외부에서 JSON 형식으로 로그를 보내 저장한다.
그것에는 HTTP Plugin이라는 원래부터 들어있는 것을 사용하면 좋지만, 보통 Config 파일을 기술하면 경쟁합니다.
다음과 같이 Config 파일을 쓰면 충돌을 막을 수 있다.
우선 아파치
input {
file {
tags => "apache"
path=> "/var/log/apache2/access.log"
}
}
filter {
if "apache" in [tags] {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
}
}
output {
if "apache" in [tags]{
elasticsearch {
hosts => ["localhost:9200"]
index => "apache"
}
}
}
그런 다음 외부 Json
input {
http {
tags => "external"
host=> "0.0.0.0"
port=> 31000
}
}
output {
if "external" in [tags] {
elasticsearch {
hosts => ["localhost:9200"]
index => "external"
}
}
}
내부 루프백으로 인한 로그 만 (내부에서만) 수신하는 경우 127.0.0.1
를 host로 지정
나중에 Logstash를 다시 시작하고 아래에서 로그 보내기
curl -H "content-type: application/json" -XPUT 'http://127.0.0.1:31000/' -d '{
"user" : "log",
"post_date" : "2009-11-15T14:12:12",
"message" : "hello"
}'
수신할 수 있으면 완성
덧붙여 URL 후에도 슬래시를 붙여 Header를 지정할 수 있다
'http://127.0.0.1:31000/[Request_URI]'
그래서 웹 페이지의 크롤링 결과 등을 넣는 경우는 웹 페이지의 URL을 그대로 계속 넣어도 좋을지도 모른다.
Reference
이 문제에 관하여(ubuntu 18.04 + Elasticsearch + kibana + logstash (file + http) + apache 로그 모니터링), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/harmegiddo/items/179163175b9533eb35cb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ sudo apt-get install openjdk-8-jdk
$ wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
$ sudo apt-get install apt-transport-https
$ echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
$ sudo apt-get update && sudo apt-get install elasticsearch
$ sudo vi /etc/elasticsearch/elasticsearch.yml
# add configuration
network.host:0.0.0.0
$ sudo vi /etc/elasticsearch/jvm.options
# modify configuration
-Xmx64m
-Xms64m
$ sudo systemctl start elasticsearch
$ systemctl status elasticsearch
$ sudo systemctl enable elasticsearch
$ sudo apt-get install kibana
$ sudo vi /etc/kibana/kibana.yml
server.host: "0.0.0.0"
$ sudo systemctl start kibana
$ systemctl status kibana
$ sudo systemctl enable kibana
$ sudo apt-get install logstash
$ sudo systemctl start logstash
$ systemctl status logstash
$ sudo systemctl enable logstash
2. Settings
$ sudo vim /etc/logstash/conf.d/apache.conf
다음 입력
input {
file {
path=> "/var/log/apache2/access.log"
}
}
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "apache"
}
}
재부팅
$ sudo systemctl restart logstash.service
Kibana를 열고 Management->Index Patterns -> Create Index Pattern에서 apache를 추가합니다.
이것으로 로그를 감시할 수 있게 된다.
3. Check & Delete
Check
데이터베이스 목록이 반환됩니다.
$ curl http://localhost:9200/_cat/indices?v
이런 느낌으로 돌아온다
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open index YZfpJsZAStOXOSynXNvxpQ 5 1 0 0 868b 868b
yellow open apache m5JbbZVITx6q-LxNHKW-TA 5 1 199 0 534.7kb 534.7kb
yellow open .kibana bngpvzOfRJ2UYLan0WvfYA 1 1 3 0 15.3kb 15.3kb
이제 Index를 확인하고, 필요없는 데이터베이스는 다음의 순서로 지웁니다.
Delete
$ curl -XDELETE localhost:9200/index/type/[INDEX NAME]
4. Application
이대로는 내부 파일 밖에 가시화할 수 없기 때문에 외부에서 JSON 형식으로 로그를 보내 저장한다.
그것에는 HTTP Plugin이라는 원래부터 들어있는 것을 사용하면 좋지만, 보통 Config 파일을 기술하면 경쟁합니다.
다음과 같이 Config 파일을 쓰면 충돌을 막을 수 있다.
우선 아파치
input {
file {
tags => "apache"
path=> "/var/log/apache2/access.log"
}
}
filter {
if "apache" in [tags] {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
}
}
output {
if "apache" in [tags]{
elasticsearch {
hosts => ["localhost:9200"]
index => "apache"
}
}
}
그런 다음 외부 Json
input {
http {
tags => "external"
host=> "0.0.0.0"
port=> 31000
}
}
output {
if "external" in [tags] {
elasticsearch {
hosts => ["localhost:9200"]
index => "external"
}
}
}
내부 루프백으로 인한 로그 만 (내부에서만) 수신하는 경우 127.0.0.1
를 host로 지정
나중에 Logstash를 다시 시작하고 아래에서 로그 보내기
curl -H "content-type: application/json" -XPUT 'http://127.0.0.1:31000/' -d '{
"user" : "log",
"post_date" : "2009-11-15T14:12:12",
"message" : "hello"
}'
수신할 수 있으면 완성
덧붙여 URL 후에도 슬래시를 붙여 Header를 지정할 수 있다
'http://127.0.0.1:31000/[Request_URI]'
그래서 웹 페이지의 크롤링 결과 등을 넣는 경우는 웹 페이지의 URL을 그대로 계속 넣어도 좋을지도 모른다.
Reference
이 문제에 관하여(ubuntu 18.04 + Elasticsearch + kibana + logstash (file + http) + apache 로그 모니터링), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/harmegiddo/items/179163175b9533eb35cb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ sudo vim /etc/logstash/conf.d/apache.conf
input {
file {
path=> "/var/log/apache2/access.log"
}
}
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "apache"
}
}
$ sudo systemctl restart logstash.service
Check
데이터베이스 목록이 반환됩니다.
$ curl http://localhost:9200/_cat/indices?v
이런 느낌으로 돌아온다
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open index YZfpJsZAStOXOSynXNvxpQ 5 1 0 0 868b 868b
yellow open apache m5JbbZVITx6q-LxNHKW-TA 5 1 199 0 534.7kb 534.7kb
yellow open .kibana bngpvzOfRJ2UYLan0WvfYA 1 1 3 0 15.3kb 15.3kb
이제 Index를 확인하고, 필요없는 데이터베이스는 다음의 순서로 지웁니다.
Delete
$ curl -XDELETE localhost:9200/index/type/[INDEX NAME]
4. Application
이대로는 내부 파일 밖에 가시화할 수 없기 때문에 외부에서 JSON 형식으로 로그를 보내 저장한다.
그것에는 HTTP Plugin이라는 원래부터 들어있는 것을 사용하면 좋지만, 보통 Config 파일을 기술하면 경쟁합니다.
다음과 같이 Config 파일을 쓰면 충돌을 막을 수 있다.
우선 아파치
input {
file {
tags => "apache"
path=> "/var/log/apache2/access.log"
}
}
filter {
if "apache" in [tags] {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
}
}
output {
if "apache" in [tags]{
elasticsearch {
hosts => ["localhost:9200"]
index => "apache"
}
}
}
그런 다음 외부 Json
input {
http {
tags => "external"
host=> "0.0.0.0"
port=> 31000
}
}
output {
if "external" in [tags] {
elasticsearch {
hosts => ["localhost:9200"]
index => "external"
}
}
}
내부 루프백으로 인한 로그 만 (내부에서만) 수신하는 경우 127.0.0.1
를 host로 지정
나중에 Logstash를 다시 시작하고 아래에서 로그 보내기
curl -H "content-type: application/json" -XPUT 'http://127.0.0.1:31000/' -d '{
"user" : "log",
"post_date" : "2009-11-15T14:12:12",
"message" : "hello"
}'
수신할 수 있으면 완성
덧붙여 URL 후에도 슬래시를 붙여 Header를 지정할 수 있다
'http://127.0.0.1:31000/[Request_URI]'
그래서 웹 페이지의 크롤링 결과 등을 넣는 경우는 웹 페이지의 URL을 그대로 계속 넣어도 좋을지도 모른다.
Reference
이 문제에 관하여(ubuntu 18.04 + Elasticsearch + kibana + logstash (file + http) + apache 로그 모니터링), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/harmegiddo/items/179163175b9533eb35cb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
input {
file {
tags => "apache"
path=> "/var/log/apache2/access.log"
}
}
filter {
if "apache" in [tags] {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
}
}
output {
if "apache" in [tags]{
elasticsearch {
hosts => ["localhost:9200"]
index => "apache"
}
}
}
input {
http {
tags => "external"
host=> "0.0.0.0"
port=> 31000
}
}
output {
if "external" in [tags] {
elasticsearch {
hosts => ["localhost:9200"]
index => "external"
}
}
}
curl -H "content-type: application/json" -XPUT 'http://127.0.0.1:31000/' -d '{
"user" : "log",
"post_date" : "2009-11-15T14:12:12",
"message" : "hello"
}'
'http://127.0.0.1:31000/[Request_URI]'
Reference
이 문제에 관하여(ubuntu 18.04 + Elasticsearch + kibana + logstash (file + http) + apache 로그 모니터링), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/harmegiddo/items/179163175b9533eb35cb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)