هيكلة البيانات غير المنظمة مع GROK
إذا كنت تستخدم المكدس المرن (ELK) وترغب في تعيين سجلات Logstash المخصصة إلى Elasticsearch ، فإن هذا المنشور هو لك.
ELK Stack هو اختصار لثلاثة مشاريع مفتوحة المصدر: Elasticsearch و Logstash و Kibana. ويشكلان معًا نظامًا أساسيًا لإدارة السجلات.
- Elasticsearch هو محرك بحث وتحليلات.
- Logstash هو خط أنابيب لمعالجة البيانات من جانب الخادم يأخذ البيانات من مصادر متعددة في نفس الوقت ، ويحولها ، ثم يرسلها إلى ذاكرة تخزين مؤقت مثل Elasticsearch.
- تتيح كيبانا للمستخدمين تصور البيانات باستخدام الرسوم البيانية والرسوم البيانية في Elasticsearch.
جاءت الضربات لاحقًا وهي شركة شحن بيانات خفيفة. أدى إدخال Beats إلى تحويل Elk Stack إلى Elastic Stack ، لكن هذه ليست النقطة.
تركز هذه المقالة على 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-.
حاول إعطاء تعبيرات Grok لقطة! إذا كان لديك طريقة أخرى للقيام بذلك ، أو لديك أي مشاكل مع الأمثلة أعلاه ، فما عليك سوى كتابة تعليق أدناه لإخبارنا بذلك.
شكرًا للقراءة - ويرجى متابعتي هنا على Medium للحصول على المزيد من مقالات هندسة البرمجيات الشيقة!
PS رابط للمصدر
قناة Elasticsearch Telegram