ืื ืืืช ื ืชืื ืื ืื ืืืื ืื ืขื GROK
ืื ืืชื ืืฉืชืืฉ ืืขืจืืืช Elastic (ELK) ืืืขืื ืืื ืืืคืืช ืืืื ื Logstash ืืืชืืืื ืืืฉืืช ื- Elasticsearch, ืืคืืกื ืืื ืืื ืืฉืืืื.
ืืืกื ืืช ELK ืืื ืจืืฉื ืชืืืืช ืฉื ืฉืืืฉื ืคืจืืืงืืื ืืงืื ืคืชืื: Elasticsearch, Logstash ื-Kibana. ืืื ืื ืืืฆืจืื ืคืืืคืืจืื ืื ืืืื ืืืื ืื.
- Elasticsearch ืืื ืืขืจืืช ืืืคืืฉ ืื ืืชืื.
- ืืืืกืืืฉ ืืื ืฆืื ืืจ ืขืืืื ื ืชืื ืื ืืฆื ืืฉืจืช ืืฉืจ ืงืืื ื ืชืื ืื ืืืกืคืจ ืืงืืจืืช ืื-ืืื ืืช, ืืืคื ืืืชื, ืืืืืจ ืืื ืฉืืื ืืืชื ื"ืกืืืฉ" ืืืื Elasticsearch.
- ืงืืืื ื ืืืคืฉืจ ืืืฉืชืืฉืื ืืืืืื ื ืชืื ืื ืืืืฆืขืืช ืชืจืฉืืืื ืืืจืคืื ื- Elasticsearch.
ืคืขืืืืช ืืืืข ืืืืืจ ืืืชืจ ืืืื ืฉืืื ื ืชืื ืื ืงื ืืฉืงื. ืืืงืืื ืฉื Beats ืืคืื ืืช Elk Stack ื- Elastic Stack, ืืื ืื ืื ืืขื ืืื.
ืืืืจ ืื ืขืืกืง ื-Grok, ืฉืืื ืชืืื ื ื-Logstash ืฉืืืืื ืืฉื ืืช ืืช ืืืืื ืื ืฉืื ืืคื ื ืฉืื ื ืฉืืืื ื-stash. ืืืืจืืชืื ื, ืืืืจ ืจืง ืขื ืขืืืื ื ืชืื ืื ื-Logstash ืืชืื Elasticsearch.
Grok ืืื ืืกื ื ืืชืื Logstash ืืืฉืืฉ ืื ืืชืื ื ืชืื ืื ืื ืืืื ืื ืืืฉืื ืืืื ื ืื ืืชื ืืฉืืืืชืืช. ืืื ืืืฉื ืขื ืืืืื ืจืืืืจื (ืจืืงืก) ืืืฉืชืืฉ ืืืคืืกื ืืงืกื ืืื ืืืชืืื ืืืจืืืืช ืืงืืืฆื ืืืื.
ืืคื ืฉื ืจืื ืืกืขืืคืื ืืืืื, ืืฉืืืืฉ ืืืจืืง ืขืืฉื ืืืื ืืืื ืืื ืื ืืืข ืื ืืืื ืืืื ืืขืื.
ืืื Grok ื ืชืื ื ืืืืื ืฉืื ืืื ื ืืืื ืื
ืืื Grok, ืืืฉืจ ืืืื ืื ื ืฉืืืื ื-Logstash ืื Elasticsearch ืืืขืืืืื ื-Kibana, ืื ืืืคืืขืื ืจืง ืืขืจื ืืืืืขื.
ืืืคืืฉ ืืืืข ืืฉืืขืืชื ืืืฆื ืื ืงืฉื ืืืืืื ืฉืื ื ืชืื ื ืืืืื ืืืืืกื ืื ืืืคืชื ืืื. ืขืืืฃ ืืื ืื ืืืืขืืช ืืืืื ืืื ืืืืจืื ืืช ืืื ืืืชืจ.
ื ืชืื ืื ืื ืืืื ืื ืืืืื ืื
localhost GET /v2/applink/5c2f4bb3e9fda1234edc64d 400 46ms 5bc6e716b5d6cb35fc9687c0
ืื ืชืกืชืื ืืงืจืื ืขื ืื ืชืื ืื ืืืืืืืื, ืชืจืื ืฉืื ืืืขืฉื ืืืจืืืื ืืืืงืื ืฉืื ืื, ืื ืืื ืืืคืจื ืืจืืื.
ืืืคืชืืื ืื ืืกืื ืืืชืจ, ืืชื ืื ืจืื ืืืื ืื ืืฉ ืื ืืืฉืืขืืช ืฉื ืื ืืื ืืืืืงืื ืืืื ืืืืขืช ืืืืื ืืื ืืืงืจืืื ื-API. ืืืฆืืช ืฉื ืื ืคืจืื ืืชืืืจืช ืืืื.
ืชืฆืืื ืืืื ืืช ืฉื ืื ืชืื ืื ืฉืื ื
- localhost == ืกืืืื
- ืฉืืืช GET ==
- โ /v2/applink/5c2f4bb3e9fda1234edc64d == url
- โ400 == ืชืืืื_ืกืืืืก
- โ46ms == ืืื_ืชืืืื
- โ 5bc6e716b5d6cb35fc9687c0 == user_id
ืืคื ืฉืื ื ืจืืืื ืื ืชืื ืื ืืืื ืื, ืืฉ ืกืืจ ืืืืืื ืื ืืืื ืื. ืืฉืื ืืื ืืื ืขืืืื ืชืืื ื ืฉื ื ืชืื ืื ืืืืืืื. ืื ืืืงืื ืฉืื ืืจืืง ืืืจื.
ืชืื ืืืช ืืจืืง
ืชืื ืืืช ืืจืืง ืืืื ืืช
Logstash ืืืืข ืขื ืืืขืื ื-100 ืชืื ืืืช ืืืื ืืช ืืื ืืืช ื ืชืื ืื ืื ืืืื ืื. ืืชื ืืืืื ืฆืจืื ืื ืฆื ืืช ืื ืืื ืคืขื ืฉืืคืฉืจ ืขืืืจ ืกืืกืืืืื ืืืืืื ืืื apache, linux, haproxy, aws ืืื ืืืื.
ืขื ืืืช, ืื ืงืืจื ืืฉืืฉ ืื ืืืื ืื ืืืชืืืื ืืืฉืืช ืืื ืืืืืื ืืืขืื? ืขืืื ืืื ืืช ืชืื ืืช ืืจืืง ืืฉืื.
ืชืื ืืืช ืืจืืง ืืืชืืืืช ืืืฉืืช
ืืชื ืฆืจืื ืื ืกืืช ืืื ืืช ืชืื ืืช ืืจืืง ืืฉืื. ืืฉืชืืฉืชื
ืฉืืื ืื ืฉืชืืืืจ ืชืื ืืช Grok ืืื ืืืืงืื: %{SYNTAX:SEMANTIC}
ืืืืจ ืืจืืฉืื ืฉื ืืกืืชื ืืขืฉืืช ืืื ืืืืช ืืืจืืืกืืื ืืืืื ืืืืฃ ืืจืืง. ืืฉืืชื ืฉืื ืืืื ืืื ืื ืื ืืืื ืืื ืืืื ืืืฆืืจ ืืืืคื ืืืืืืื ืชืื ืืช ืืจืืง, ืืื ืื ืื ืืื ืฉืืืืฉื ืืื ืืืืืื ืฉืืื ืืฆื ืจืง ืฉืชื ืืชืืืืช.
ืืืืฆืขืืช ืืืืืื ืืื, ืืชืืืชื ืืืฆืืจ ืชืื ืืช ืืฉืื ืืืคืจืง ืืืืืื ืฉื Grok ืืืืฆืขืืช ืืชืืืืจ ืฉื ืืฆื ืืืฃ Elastic Github.
ืืืืจ ืฉืฉืืืงืชื ืขื ืชืืืืจืื ืฉืื ืื, ืกืืฃ ืกืืฃ ืืฆืืืชื ืืื ืืช ืืช ื ืชืื ื ืืืืื ืืื ืฉืจืฆืืชื.
ืงืืฉืืจ ืื ืืคืื ืืืืื ืฉื ืืจืืง
ืืงืกื ืืงืืจื:
localhost GET /v2/applink/5c2f4bb3e9fda1234edc64d 400 46ms 5bc6e716b5d6cb35fc9687c0
ืชึทืึฐื ึดืืช:
%{WORD:environment} %{WORD:method} %{URIPATH:url} %{NUMBER:response_status} %{WORD:response_time} %{USERNAME:user_id}
ืื ืงืจื ืืกืืฃ
{
"environment": [
[
"localhost"
]
],
"method": [
[
"GET"
]
],
"url": [
[
"/v2/applink/5c2f4bb3e9fda1234edc64d"
]
],
"response_status": [
[
"400"
]
],
"BASE10NUM": [
[
"400"
]
],
"response_time": [
[
"46ms"
]
],
"user_id": [
[
"5bc6e716b5d6cb35fc9687c0"
]
]
}
ืขื ืชืื ืืช Grok ืื ืชืื ืื ืืืืคืื ืืื, ืืฉืื ืืืืจืื ืืื ืืืืกืืฃ ืืืชื ื-Logstash.
ืขืืืื ืงืืืฅ ืืชืฆืืจื Logstash.conf
ืืฉืจืช ืฉืื ืืชืงื ืช ืืช ืืืกื ืืช ELK, ืขืืืจ ืื ืชืฆืืจืช Logstash:
sudo vi /etc/logstash/conf.d/logstash.conf
ืืืืง ืืช ืืฉืื ืืืื.
input {
file {
path => "/your_logs/*.log"
}
}
filter{
grok {
match => { "message" => "%{WORD:environment} %{WORD:method} %{URIPATH:url} %{NUMBER:response_status} %{WORD:response_time} %{USERNAME:user_id}"}
}
}
output {
elasticsearch {
hosts => [ "localhost:9200" ]
}
}
ืืืืจ ืฉืืืจืช ืืฉืื ืืืื ืฉืื, ืืคืขื ืืืืฉ ืืช Logstash ืืืืืง ืืช ืืกืืืืก ืฉืื ืืื ืืืืื ืฉืืื ืขืืืื ืขืืื.
sudo service logstash restart
sudo service logstash status
ืืืกืืฃ, ืืื ืืืืื ืฉืืฉืื ืืืื ื ืื ืกื ืืชืืงืฃ, ืืงืคื ืืขืืื ืืช ืืื ืืงืก Elasticsearch ืฉืื ืขืืืจ Logstash ื-Kibana!
ืขื Grok, ื ืชืื ื ืืืืื ืฉืื ืืืื ืื!
ืืคื ืฉืื ื ืืืืืื ืืจืืืช ืืชืืื ื ืืืขืื, Grok ืืกืืื ืืืชืืื ืืืืคื ืืืืืืื ื ืชืื ื ืืืื ืขื Elasticsearch. ืื ืืงื ืขื ื ืืืื ืืืื ืื ืืฉืืืืชืืช ืืืืข ืืืืืจืืช. ืืืงืื ืืืคืืจ ืืงืืืฆื ืืืื ืืื ืืืฆืข ื ืืคืื ืืืืื, ืืชื ืืืื ืคืฉืื ืืกื ื ืืคื ืื ืฉืืชื ืืืคืฉ, ืืืื ืกืืืื ืื ืืชืืืช ืืชืจ.
ื ืกื ืืช ืืืืืื ืืจืืง! ืื ืืฉ ืื ืืจื ืืืจืช ืืขืฉืืช ืืืช ืื ืฉืืฉ ืื ืืขืืืช ืืืฉืื ืขื ืืืืืืืืช ืืืขืื, ืคืฉืื ืืชืื ืชืืืื ืืืื ืืื ืืืืืข ืืืชื.
ืชืืื ืฉืงืจืืชื - ืืืืงืฉื ืขืงืื ืืืจื ืืื ื-Medium ืืขืื ืืืืจืื ืืขื ืืื ืื ืืื ืืกืช ืชืืื ื!
ะ ะตััััั
ื .ื.
ืขืจืืฅ ืืืืจื ืืืช
ืืงืืจ: www.habr.com