スタンドアロン配置ELKログ収集、分析システム
6513 ワード
最近ログ分析をして、logstashが自分のニーズに合っていることを発見しました.
Logstash:システムロゴの収集、転載を行うツール.同時に各種のログプラグインを統合することは、ログのクエリーと分析の効率に大きな助けになります.一般にshipperをlogとして収集し,indexerをlogとして転載する.
Logstash shipperはlogを収集し、logをredisストレージに転送する
Logstash indexerはredisからデータを読み出しelasticsearchに転送する
redis:dbで、logstash shipperはlogをredisデータベースに転送して格納します.Logstash indexerはredisからデータを読み出しelasticsearchに転送する.
Elasticsearch:elasticsearchはluceneベースのオープンソース検索エンジンで、インデックスとして使用されます.
Kibana:オープンソースwebが表示され、インタフェースがきれいで、強力なelasticsearchデータ表示クライアントです.logstashにはkibanaが内蔵されています.kibanaを単独で配置することもできます.最新版のkibana 3は純html+jsクライアントです.
ソフトウェアダウンロードディレクトリ
http://www.elasticsearch.org/downloads/
私の環境は以下の通りです.
一、epel YUMソースの配置
二、jdk環境のインストール
三、redisのインストール、redisの起動
四、設置配置Elasticsearch、起動Elasticsearch
2行構成を追加:
Elasticsearchの起動
Elasticsearchログの表示
五、設置配置Logstash、起動Logstash
indexを設定します.conf
filterを設定します.conf
syslogを設定します.conf
Logstashの起動
六、nginx、kibanaのインストール
構成nginx:
kibanaの設定:
kibanaへのアクセス:
http://192.168.81.44/kibana/
本文は“すべて風に任せます”のブログから出て、転載をお断りします!
Logstash:システムロゴの収集、転載を行うツール.同時に各種のログプラグインを統合することは、ログのクエリーと分析の効率に大きな助けになります.一般にshipperをlogとして収集し,indexerをlogとして転載する.
Logstash shipperはlogを収集し、logをredisストレージに転送する
Logstash indexerはredisからデータを読み出しelasticsearchに転送する
redis:dbで、logstash shipperはlogをredisデータベースに転送して格納します.Logstash indexerはredisからデータを読み出しelasticsearchに転送する.
Elasticsearch:elasticsearchはluceneベースのオープンソース検索エンジンで、インデックスとして使用されます.
Kibana:オープンソースwebが表示され、インタフェースがきれいで、強力なelasticsearchデータ表示クライアントです.logstashにはkibanaが内蔵されています.kibanaを単独で配置することもできます.最新版のkibana 3は純html+jsクライアントです.
ソフトウェアダウンロードディレクトリ
http://www.elasticsearch.org/downloads/
私の環境は以下の通りです.
IP:192.168.81.44 t44
OS:CentOS6.5 x86_64
openjdk version "1.8.0_31"
nginx-1.0.15
redis-2.4.10
elasticsearch-1.5.0
logstash-1.4.2
kibana-3.1.0
一、epel YUMソースの配置
yum -y localinstall http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
二、jdk環境のインストール
yum -y install java-1.8.0-openjdk
三、redisのインストール、redisの起動
yum -y install redis ; /etc/init.d/redis restart
四、設置配置Elasticsearch、起動Elasticsearch
wget -c https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.5.0.tar.gz -O /root/elasticsearch-1.5.0.tar.gz
tar -xvf /root/elasticsearch-1.5.0.tar.gz -C /usr/local/
2行構成を追加:
tail -n2 /usr/local/elasticsearch-1.5.0/config/elasticsearch.yml
http.cors.allow-origin: "/.*/"
http.cors.enabled: true
Elasticsearchの起動
/usr/local/elasticsearch-1.5.0/bin/elasticsearch -d
Elasticsearchログの表示
tail -f /usr/local/elasticsearch-1.5.0/logs/elasticsearch.log
五、設置配置Logstash、起動Logstash
wget -N https://download.elastic.co/logstash/logstash/logstash-1.4.2.tar.gz -O /root/logstash-1.4.2.tar.gz
tar -xvf /root/logstash-1.4.2.tar.gz -C /usr/local/
indexを設定します.conf
cat /usr/local/logstash-1.4.2/bin/index.conf
input {
redis {
host => "127.0.0.1"
# these settings should match the output of the agent
data_type => "list"
key => "logstash"
# We use the 'json' codec here because we expect to read
# json events from redis.
codec =>json
}
file {
type =>"t44message"
path =>["/var/log/messages"]
}
file {
type =>"t44secure"
path =>["/var/log/secure"]
}
file {
type =>"t44nginx"
path =>["/var/log/nginx/*.log"]
}
}
output {
# stdout { debug => true debug_format => "json"}
stdout { codec =>rubydebug }
elasticsearch {
host => "127.0.0.1"
}
}
filterを設定します.conf
cat /usr/local/logstash-1.4.2/bin/filter.conf
input {
redis {
host => "127.0.0.1"
# these settings should match the output of the agent
data_type => "list"
key => "logstash"
# We use the 'json' codec here because we expect to read
# json events from redis.
codec =>json
}
file {
type =>"t44message"
path =>["/var/log/nginx/*.log"]
}
}
filter {
grok {
match => { "message" => "No such file or directory" }
}
date {
match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
}
}
output {
elasticsearch { host => localhost }
stdout { codec => rubydebug }
if "No such file or directory" in [t44message]
{ exec {
command => "echo '%{@timestamp} %{@message}' | mail -s nginx_no_such_file_or_directory -u alarm [email protected]"
} }
}
syslogを設定します.conf
cat /usr/local/logstash-1.4.2/bin/syslog.conf
input {
tcp {
port => 514
type => syslog
}
udp {
port => 514
type => syslog
}
}
filter {
if [type] == "syslog" {
grok {
match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
add_field => [ "received_at", "%{@timestamp}" ]
add_field => [ "received_from", "%{host}" ]
}
syslog_pri { }
date {
match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
}
output {
elasticsearch { host => localhost }
stdout { codec => rubydebug }
}
Logstashの起動
/usr/local/logstash-1.4.2/bin/logstash -f /usr/local/logstash-1.4.2/bin/index.conf
/usr/local/logstash-1.4.2/bin/logstash -f /usr/local/logstash-1.4.2/bin/filter.conf
/usr/local/logstash-1.4.2/bin/logstash -f /usr/local/logstash-1.4.2/bin/syslog.conf
六、nginx、kibanaのインストール
yum -y install nginx
wget -c https://download.elasticsearch.org/kibana/kibana/kibana-3.1.0.tar.gz -O /root/kibana-3.1.0.tar.gz
tar -xvf /root/kibana-3.1.0.tar.gz -C /usr/share/nginx/html/
構成nginx:
egrep -v '^#| #' /etc/nginx/conf.d/default.conf |grep -v '^$'
server {
listen 80 default_server;
server_name _;
include /etc/nginx/default.d/*.conf;
location / {
root /usr/share/nginx/html;
index index.html index.htm index.php;
}
error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_buffer_size 32k;
fastcgi_buffers 8 32k;
include fastcgi_params;
}
}
kibanaの設定:
grep 'elasticsearch:' /usr/share/nginx/html/kibana/config.js |grep -v '\*'
elasticsearch: "http://192.168.81.44:9200",
\cp /usr/share/nginx/html/kibana/app/dashboards/default.json{,.bak}
\cp /usr/share/nginx/html/kibana/app/dashboards/logstash.json /usr/share/nginx/html/kibana/app/dashboards/default.json
kibanaへのアクセス:
http://192.168.81.44/kibana/
本文は“すべて風に任せます”のブログから出て、転載をお断りします!