いくつかのダミー ログを生成する小さな Java プログラムを作成しました (基本的には txt ファイルに書き込みます)。次に、このデータを ELK スタックにフィードします。基本的に、logstash は txt ファイルからこのデータを読み取る必要があり、これらの変更をキバナで視覚化して、その感触をつかみたいと思います。
基本的にやりたいことは、プログラムがダミー ログを txt ファイルに書き込む速度を変更して、kibana で変更を確認できるようにすることです。
ELK スタックの調査を開始したばかりですが、この種の分析を行うには完全に間違った方法である可能性があります。これを行うための他のより良い方法があるかどうかを提案してください(現在作業する実際のログがないことを考慮して)
編集:@Val
input {
generator {
message => “’83.149.9.216 - - [17/May/2015:10:05:03 +0000] "GET /presentations/logstash-monitorama-2013/images/kibana-search.png HTTP/1.1" 200 203023 "http://semicomplete.com/presentations/logstash-monitorama-2013/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36””
count => 10
}
}
だからここに私のものがありますlogstash.conf
:
input {
stdin { }
}
filter {
grok {
match => {
"message" => '%{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] "%{WORD:verb} %{DATA:request} HTTP/%{NUMBER:httpversion}" %{NUMBER:response:int} (?:-|%{NUMBER:bytes:int}) %{QS:referrer} %{QS:agent}'
}
}
date {
match => [ "timestamp", "dd/MMM/YYYY:HH:mm:ss Z" ]
locale => en
}
geoip {
source => "clientip"
}
useragent {
source => "agent"
target => "useragent"
}
}
output {
stdout {
codec => plain {
charset => "ISO-8859-1"
}
}
elasticsearch {
hosts => "http://localhost:9200"
index => "apache_elk_example"
template => "./apache_template.json"
template_name => "apache_elk_example"
template_overwrite => true
}
}
Elasticsearch と kabana を開始した後、次のことを行います。
cat apache_logs | /usr/local/opt/logstash/bin/logstash -f apache_logs
apache_logs
私のJavaプログラムから供給された場所:
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
PrintStream out = new PrintStream(new FileOutputStream("/Users/username/Desktop/user/apache_logs"));
System.setOut(out);
} catch (FileNotFoundException ex) {
System.out.print("Exception");
}
while(true)
//for(int i=0;i<5;++i)
{
System.out.println(generateRandomIPs() + //other log stuff);
try {
Thread.sleep(1000); //1000 milliseconds is one second.
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
}
}
だからここに問題があります:
Kibana はリアルタイムの視覚化を表示しません。つまり、私の Java プログラムがデータをapache_log
ファイルにフィードするとき、それは表示されません。の実行時に「apache_log」にすでに書き込まれているデータまでのみ表示されます。
cat apache_logs | /usr/local/opt/logstash/bin/logstash -f apache_logs