Logstashを利用して多様なInputとOutputを処理する方法を説明します。
Configuring Logstashを参照してください。
Logstashを使用してLogを収集、転送する方法を説明します。
Logstashを利用して、Log & Crash Collector Logを収集する方法を説明します。
input {
...
file {
path => [ "/root/apps/nelo2/collector/logs/*" ]
}
}
filter {
...
## Collector's Multi-line Log
multiline {
pattern => "=+Show Running Statistic=+"
what => "previous"
}
multiline {
pattern => "OwfsSink:.*\(total=.*increase=.*speed=.*\)"
what => "previous"
}
multiline {
pattern => "KafkaSink:.*\(total=.*increase=.*speed=.*\)"
what => "previous"
}
...
Logstashを使用して、Log & Crash CollectorにLogを転送する方法を説明します。
filter {
...
## Convert Logstash event to Log & Crash HTTP REST event
mutate {
remove_field => [ "@version", "@timestamp", "path", "tags" ]
rename => {
"message" => "body"
"host" => "host"
}
add_field => {
## TODO:: modify below fields. see> nelo2-http-rest-api-manual-kr.md
"projectName" => "nelo2-webapp"
"projectVersion" => "0.0.1"
"logVersion" => "v2"
"logType" => "logstash"
"logSource" => "collector"
"logLevel" => "INFO"
}
}
}
- remove_fieldを使用して、必要ないfieldを除去します。転送されるログサイズを減らすために使用できます。
- renameを使用して、Log & Crash HTTP REST APIに合わせてfield名を変更します。
- add_fieldを使用して、Log & Crash HTTP REST APIに必要なfieldを追加します。
- "projectName":必須。プロジェクト名/アプリケーションキー
- "projectVersion":必須。プロジェクトバージョン
- "logVersion":必須。ログフォーマットバージョン
- "logType":オプション。ログタイプ
- "logSource":オプション。ログソース
- "logLevel":オプション。ログレベル
output {
...
http {
url => "https://api-logncrash.cloud.toast.com/v2/log"
http_method => "post"
format => "json"
verify_ssl => false
}
}
- urlに転送するLog & Crash Collectorアドレスに修正する必要があります。
- NHN Cloud Log & Crash Collectorアドレス:https://api-logncrash.cloud.toast.com/v2/log
- URIは/v2/logである必要があります。
Logstashを利用して、Apache Access/Error Logを収集する方法を説明します。
input {
...
file {
path => [ "/root/logs/apache/access.log.*" ]
type => "apache-access"
}
file {
path => [ "/root/logs/apache/error.log.*" ]
type => "apache-error"
}
...
}
-上のpathは、CAB DEV Webサーバーで使用される値です。Logの位置が合っていなければ修正する必要があります。
filter {
if [type] == "apache-access" {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
}
if [type] == "apache-error" {
grok {
match => { "message" => "%{APACHEERRORLOG}" }
#patterns_dir => [ "/root/kwonshin/logstash-1.5.6/my-pat.grok" ]
patterns_dir => [ "./my-pat.grok" ]
}
}
}
- typeが"apache-access"の場合、grokでデフォルトで提供される"%{COMBINEDAPACHELG}"を使用します。
- typeが"apache-error"の場合、"./my-pat.grok"に定義されている"%{APACHEERRORLOG}"を使用します。
- my-pat.grok
HTTPERRORDATE %{DAY} %{MONTH} %{MONTHDAY} %{TIME} %{YEAR}
#APACHEERRORLOG \[%{HTTPERRORDATE:timestamp}\] \[%{WORD:severity}\] \[client %{IPORHOST:clientip}\] %{GREEDYDATA:message_remainder}
APACHEERRORLOG \[%{HTTPERRORDATE:timestamp}\] \[%{WORD:severity}\] %{GREEDYDATA:message_remainder}
- A bit of logstash cookingで使用されたgrok patternを修正しました。
他のログを収集するには、次のURLを参照してください。
logstashは、次の環境変数をサポートします。logstashが使用するメモリ量は、LS_HEAP_SIZE環境変数を通して設定できます。
参考 Logstash Webサイト Logstash Reference A bit of logstash cooking