Menyusun data tidak terstruktur dengan GROK
Jika Anda menggunakan tumpukan elastis (ELK) dan tertarik memetakan log Logstash khusus untuk Elasticsearch, maka posting ini adalah untuk Anda.
ELK Stack adalah singkatan dari tiga proyek sumber terbuka: Elasticsearch, Logstash, dan Kibana. Bersama-sama mereka membentuk platform manajemen log.
- Elasticsearch adalah mesin pencarian dan analisis.
- Logstash adalah pipa pemrosesan data sisi server yang mengambil data dari berbagai sumber secara bersamaan, mentransformasikannya, dan kemudian mengirimkannya ke cache seperti Elasticsearch.
- Kibana memungkinkan pengguna untuk memvisualisasikan data menggunakan grafik dan grafik di Elasticsearch.
Beats datang kemudian dan merupakan pengirim data ringan. Pengenalan Beats telah mengubah Elk Stack menjadi Elastic Stack, tapi bukan itu intinya.
Grok, Logstash, , . Logstash Elasticsearch.
Grok- Logstash, - . (regex) .
, Grok , .
Grok
Grok, Logstash Elasticsearch Kibana, .
, . , .
localhost GET /v2/applink/5c2f4bb3e9fda1234edc64d 400 46ms 5bc6e716b5d6cb35fc9687c0
, , , .
, , , API. .
- localhost == environment
- GET == method
- /v2/applink/5c2f4bb3e9fda1234edc64d == url
- 400 == response_status
- 46ms == response_time
- 5bc6e716b5d6cb35fc9687c0 == user_id
, . – . .
Grok
Grok
Logstash 100 . , , apache, linux, haproxy, aws .
, , ? Grok.
Grok
, Grok. Grok Debugger Grok Patterns.
, Grok : %{SYNTAX:SEMANTIC}
, , Discover Grok. , , Grok, , .
, Grok, , Github Elastic.
, - , .
Grok https://grokdebug.herokuapp.com/
:
localhost GET /v2/applink/5c2f4bb3e9fda1234edc64d 400 46ms 5bc6e716b5d6cb35fc9687c0
Pattern:
%{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. . , , , url-.
Cobalah mencoba ekspresi Grok! Jika Anda memiliki cara lain untuk melakukan ini, atau memiliki masalah dengan contoh di atas, cukup tulis komentar di bawah ini untuk memberi tahu saya.
Terima kasih telah membaca - dan ikuti saya di sini di Medium untuk artikel rekayasa perangkat lunak yang lebih menarik!
Saluran Telegram Elasticsearch