ElasticSearch + LogStash + Kibana + Redis 로 로그 관리 서비스 구축
9239 단어 kafka
1. 로그 플랫폼 의 구조 설명도
설명:
2. 배치 구축
환경:
redis 단일 컴퓨터 인 스 턴 스 배치:
$ wget https://github.com/antirez/redis/archive/3.0.0-rc1.tar.gz
$ tar zxvf 3.0.0-rc1.tar.gz -C /usr/local
redis. conf 설정 파일 은:
include ../redis.conf
daemonize yes
pidfile /var/run/redis_6379.pid
port 6379
logfile /opt/logs/redis/6379.log
appendonly yes
시작:
$ redis.server redis.conf
ip 는 10.7.40.40 이 고 포트 는 6379 이다.
2.2 배치 센터 LogStash
다운로드 및 압축 풀기:
$ wget https://download.elasticsearch.org/logstash/logstash/logstash-1.4.2.tar.gz
$ tar zxvf logstash-1.4.2.tar.gz -C /usr/local/
$ cd /usr/local/logstash-1.4.2
$ mkdir conf logs
설정 파일 conf / central. conf:
input {
redis {
host => "127.0.0.1"
port => 6379
type => "redis-input"
data_type => "list"
key => "key_count"
}
}
output {
stdout {}
elasticsearch {
cluster => "elasticsearch"
codec => "json"
protocol => "http"
}
}
시작:
$ bin/logstash agent --verbose --config conf/central.conf --log logs/stdout.log
프로필 은 redis 에서 입력 한 것 을 표시 합 니 다. redis 의 list 형식 으로 데 이 터 를 저장 합 니 다. key 는 "key" 입 니 다.count”;elasticsearch 에 출력 합 니 다. cluster 의 이름 은 "elasticsearch" 입 니 다.
2.3 Elastic Search 배치
다운로드 및 압축 풀기:
$ wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.3.4.tar.gz
$ tar zxvf elasticsearch-1.3.4.tar.gz -C /usr/local
elasticsearch 는 기본 설정 을 사용 하면 됩 니 다. 기본 cluster name 은: elasticsearch 입 니 다.
시작:
$ bin/elasticsearch -d
2.4 원 격 LogStash 배치
배치 센터 LogStash 의 절차 와 유사 합 니 다. 설정 파일 만 다 르 면 새로운 설정 파일 로 시작 하면 됩 니 다.
설정 파일 conf / shipper. conf 의 내용 은:
input {
file {
type => "type_count"
path => ["/data/logs/count/stdout.log", "/data/logs/count/stderr.log"]
exclude => ["*.gz", "access.log"]
}
}
output {
stdout {}
redis {
host => "20.8.40.49"
port => 6379
data_type => "list"
key => "key_count"
}
}
설정 파일 은 디 렉 터 리 / data / logs / count / 아래 stdout. log 와 stderr. log 두 파일 을 입력 하고 이 디 렉 터 리 아래 의 모든. gz 파일 과 access. log 를 제외 합 니 다.(path 에 마스크 를 사용 하지 않 았 기 때문에 exclude 는 효과 가 없습니다);출력 은 감 청 된 이 벤트 를 redis 서버 에 보 내 고 redis 의 list 로 저장 합 니 다. key 는 "key" 입 니 다.count ", 여기
data_type
속성 과 key
속성 은 중심 에이전트 의 설정 과 일치 해 야 합 니 다.2.5 키 바 나 배치
다운로드 및 설치:
$ wget https://download.elasticsearch.org/kibana/kibana/kibana-3.1.1.tar.gz
$ tar zxvf kibana-3.1.1.tar.gz
설정 파일 config. js 를 수정 하려 면 elasticsearch 의 주소 만 설정 하면 됩 니 다.
elasticsearch: "http://20.8.40.49:9200"
디 렉 터 리 kibana - 3.1.1 을 Jetty 의 webapp 디 렉 터 리 에 복사 하고 Jetty 를 시작 합 니 다.
$ mv kibana-3.1.1 /usr/local/jetty-distribution-9.2.1.v20140609/webapps/
$ bin/jetty start
브 라 우 저 접근:
http://20.8.40.49:8080/kibana-3.1.1/
$ tail -f logs/stdout.log
원 격 에이전트 의 데 이 터 는
rpush
작업 으로 이 벤트 를 redis 의 list 에 전송 합 니 다. 중심 에이전트 는 blpop
명령 을 통 해 redis 의 list 에서 데 이 터 를 추출 합 니 다. 따라서 테스트 시 데이터 양 이 적어 명령 llen key_count
을 통 해 되 돌아 오 는 결과 가 비어 있 을 수 있 습 니 다. 따라서 redis 의 데이터 흐름 변 화 를 관찰 하기 위해 사용 할 수 있 습 니 다 monitor
명령:$ redis-cli -p 6379 monitor
현재, 우 리 는 / data / logs / count 디 렉 터 리 에 있 는 stdout. log 와 stderr. log 에 각각 데 이 터 를 보 냅 니 다.
$ echo "stdout: just a test message" >> stdout.log
$ echo "stderr: just a test message" >> stderr.log
원 격 에이전트 와 센터 에이전트 는 이벤트 메 시 지 를 받 습 니 다. 예 를 들 어 원 격 에이전트 의 로 그 는 다음 과 같 습 니 다.
{:timestamp=>"2014-10-31T09:30:40.323000+0800", :message=>"Received line", :path=>"/data/logs/count/stdout.log", :text=>"stdout: just a test message", :level=>:debug, :file=>"logstash/inputs/file.rb", :line=>"134"}
{:timestamp=>"2014-10-31T09:30:40.325000+0800", :message=>"writing sincedb (delta since last write = 52)", :level=>:debug, :file=>"filewatch/tail.rb", :line=>"177"}
......
{:timestamp=>"2014-10-31T09:30:49.350000+0800", :message=>"Received line", :path=>"/data/logs/count/stderr.log", :text=>"stderr: just a test message", :level=>:debug, :file=>"logstash/inputs/file.rb", :line=>"134"}
{:timestamp=>"2014-10-31T09:30:49.352000+0800", :message=>"output received", :event=>{"message"=>"stderr: just a test message", "@version"=>"1", "@timestamp"=>"2014-10-31T01:30:49.350Z", "type"=>"type_count", "host"=>"dn1", "path"=>"/data/logs/count/stderr.log"}, :level=>:debug, :file=>"(eval)", :line=>"19"}
redis 의 출력 을 관찰 할 수 있 습 니 다:
1414714174.936642 [0 20.20.79.75:54010] "rpush" "key_count" "{\"message\":\"stdout: just a test message\",\"@version\":\"1\",\"@timestamp\":\"2014-10-31T00:10:04.530Z\",\"type\":\"type_count\",\"host\":\"dn1\",\"path\":\"/data/logs/count/stdout.log\"}"
1414714174.939517 [0 127.0.0.1:56094] "blpop" "key_count" "0"
1414714198.991452 [0 20.20.79.75:54010] "rpush" "key_count" "{\"message\":\"stderr: just a test message\",\"@version\":\"1\",\"@timestamp\":\"2014-10-31T00:10:28.586Z\",\"type\":\"type_count\",\"host\":\"dn1\",\"path\":\"/data/logs/count/stderr.log\"}"
1414714198.993590 [0 127.0.0.1:56094] "blpop" "key_count" "0"
elasticsearch 에서 다음 과 같은 간단 한 조 회 를 실행 합 니 다.
$ curl 'localhost:9200/_search?q=type:type_count&pretty'
{
"took" : 3,
"timed_out" : false,
"_shards" : {
"total" : 6,
"successful" : 6,
"failed" : 0
},
"hits" : {
"total" : 2,
"max_score" : 0.5945348,
"hits" : [ {
"_index" : "logstash-2014.10.31",
"_type" : "type_count",
"_id" : "w87bRn8MToaYm_kfnygGGw",
"_score" : 0.5945348,
"_source":{"message":"stdout: just a test message","@version":"1","@timestamp":"2014-10-31T08:10:04.530+08:00","type":"type_count","host":"dn1","path":"/data/logs/count/stdout.log"}
}, {
"_index" : "logstash-2014.10.31",
"_type" : "type_count",
"_id" : "wwmA2BD6SAGeNsuYz5ax-Q",
"_score" : 0.5945348,
"_source":{"message":"stderr: just a test message","@version":"1","@timestamp":"2014-10-31T08:10:28.586+08:00","type":"type_count","host":"dn1","path":"/data/logs/count/stderr.log"}
} ]
}
}
Kibana 웹 인터페이스 로 전환:http://20.8.40.49:8080/kibana-3.1.1
4. 후속 작업
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Spring Cloud를 사용한 기능적 Kafka - 1부지금까지 찾을 수 없었던 Spring Cloud Kafka의 작업 데모를 만들기 위해 이 기사를 정리했습니다. Confluent 스키마 레지스트리 7.1.0 이 기사는 먼저 Spring Cloud Stream을 사용...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.