INXヘラジカ+ + + grafanaのRedisの

構造が説明するのは簡単です:nginxの+ Logstash + Redisのシングル+ Logstash + Elasticsearchクラスタ+ grafana + kibana(そこには使用はありませんが、grafanaショー付き)

A. nginxのログ形式

 

LOG_FORMATメイン'$ REMOTE_ADDR [$ time_local] "$依頼"'
                           '$のrequest_body $ステータスの$ body_bytes_sent "$ HTTP_REFERER" "$ HTTP_USER_AGENT"'
            '$ REQUEST_TIME $ upstream_response_time';

ログの表示:

172.16.16.132 [21/7月/ 2019:09:56:12 -0400] "GET /favicon.ico HTTP / 1.1" - 404 555 "http://172.16.16.74/" の「Mozilla / 5.0(Windows NTの10.0。 Win64の、ヤモリなどのx64)のAppleWebKit / 537.36(KHTML)クローム/ 75.0.3770.142サファリ/ 537.36" 0.000 -

II。elstaticsearchクラスタのセットアップ

rootとしてインストールするだけでなく、いくつかのパラメータを調整することがないように注意してください、あなたは、特定のエラーログ、Baiduのを見ることができます。

あなただけが「172.16.16.80:9300","172.16.16.80:9301は」第三マシンのポートが9201であることに注意してください、私は2 elasticsearchを開くために、マシンをだから、次のパラメータを変更する必要があるので、

三点のelastaicsearch注意がnode.nameを変更します。

cluster.name:私のアプリケーション

node.name:ノード-1

network.host:0.0.0.0

たhttp.port:9200

discovery.seed_hosts:[ "172.16.16.74:9300"、 "172.16.16.80:9300","172.16.16.80:9301"]

cluster.initial_master_nodes:[ "ノード1"]

そうでない場合、ノードは、データファイルを削除してから再起動し、そのを調査するために、特定のエラーに基づいています。rootユーザーによって実行される、または特定のパラメータを変更するために、一般的に報告されます

 

 

 

 

 

 

クラスタを検出する方法:

Googleは、ブラウザのプラグインelasticsearch頭を持っています

元々マスタは今、このような撮影テストクラスタ続いて、ノード1です。

 

 

III。Redisのを維持するために収集されたログをlogstash

1. logstash_in.confを構築するためにlogstash confディレクトリに解凍します

入力{
ファイル{
タイプ=> "nginxの"
パス=>「/usr/local/nginx/logs/host.access.log"######nginx的ログ文件
START_POSITION => "最初"
}
}

 

output {
stdout { codec => rubydebug }#############打印显示
if [type] == "nginx" {
redis {
host => "172.16.16.74"
data_type => "list"
key => "logstash-service_name"
}
}
}

2.nohup ./logstash  -f  ../conf/logstash_in.conf

3.tail -f nohup.out 检查有没有报错

四。logstash抓取redis日志到elasticsearch

1.这里用的gork正则来解析nginx的日志,并且解决url带中文的问题,这个正则有点麻烦

这个网站可以帮忙调正则  http://grokdebug.herokuapp.com/

 

 

 

input {
redis {
host => "172.16.16.74"
type => "nginx"
data_type => "list"
key => "logstash-service_name"
}
}


filter {

grok { match => { "message" => "%{IPORHOST:clientip} \[%{HTTPDATE:time}\] \"%{WORD:verb} %{URIPATHPARAM:request} HTTP/%{NUMBER:httpversion}\" \- %{NUMBER:http_status_code} %{NUMBER:bytes} \"(?<http_referer>\S+)\" \"(?<http_user_agent>(\S+\s+)*\S+)\".* %{BASE16FLOAT:request_time}"
}}
urldecode {
all_fields => true
}
date {
match => [ "timestamp" , "dd/MMM/YYYY:HH:mm:ss Z" ]
}

}

 


output {

stdout { codec => rubydebug }
elasticsearch {
hosts => ["172.16.16.74:9200","172.16.16.80:9200","172.16.16.80:9201"]
index => "logstash--%{+YYYY.MM.dd}"}
}

 

 

 

可以查看 nohup.out文件,发现gork解析了

 

 五。grafana展示

1.首先配置数据源


这里报这个错误是因为要选择对应的elastaticsearch版本      这里选择2点多的版本所以报错了,No date field named @timestamp found

 

 

 

 

おすすめ

転載: www.cnblogs.com/lc226/p/11223099.html