Сохторсозии маълумоти сохторнашуда бо GROK
Агар шумо стеки Elastic (ELK) -ро истифода баред ва ба харитасозии гузоришҳои фармоишии Logstash ба Elasticsearch таваҷҷӯҳ дошта бошед, пас ин паём барои шумост.
Стеки ELK мухтасари се лоиҳаи кушодаасос аст: Elasticsearch, Logstash ва Kibana. Якҷоя онҳо платформаи идоракунии гузоришро ташкил медиҳанд.
- Ҷустуҷӯи Elastics системаи ҷустуҷӯӣ ва таҳлилӣ мебошад.
- Logstash як лӯлаи коркарди додаҳо дар сервер мебошад, ки маълумотро аз якчанд манбаъҳо ҳамзамон ворид мекунад, онро табдил медиҳад ва сипас ба "нигоҳдорӣ" ба монанди Elasticsearch мефиристад.
- Кибана ба корбарон имкон медиҳад, ки маълумотро бо истифода аз диаграммаҳо ва графикҳо дар Elasticsearch тасаввур кунанд.
Beats дертар омад ва интиқолдиҳандаи маълумоти сабук аст. Ҷорисозии Beats Elk Stack-ро ба Stack Elastic табдил дод, аммо ин гап нест.
Ин мақола дар бораи Grok аст, ки хусусияти Logstash аст, ки метавонад гузоришҳои шуморо пеш аз фиристодан ба анбор табдил диҳад. Барои мақсадҳои мо, ман танҳо дар бораи коркарди маълумот аз Logstash ба Elasticsearch сӯҳбат мекунам.
Grok як филтр дар дохили Logstash аст, ки барои таҳлили додаҳои сохторнашуда ба чизи сохторӣ ва дархостшаванда истифода мешавад. Он дар болои ифодаи муқаррарӣ (regex) ҷойгир аст ва намунаҳои матниро барои мувофиқ кардани сатрҳо дар файлҳои журнал истифода мебарад.
Тавре ки мо дар бахшҳои зерин мебинем, истифодаи Grok дар мавриди идоракунии самараноки гузоришҳо фарқияти калон меорад.
Бе Grok маълумоти сабти шумо сохторӣ нест
Бе Grok, вақте ки гузоришҳо аз Logstash ба Elasticsearch фиристода мешаванд ва дар Кибана намоиш дода мешаванд, онҳо танҳо дар арзиши паём пайдо мешаванд.
Дар ин вазъият пурсиш кардани иттилооти пурмазмун душвор аст, зеро тамоми маълумотҳои сабт дар як калид нигоҳ дошта мешаванд. Бехтар мебуд, ки хабархои журнал бехтар ташкил карда мешуданд.
Маълумоти сохторнашуда аз гузоришҳо
localhost GET /v2/applink/5c2f4bb3e9fda1234edc64d 400 46ms 5bc6e716b5d6cb35fc9687c0
Агар шумо ба маълумоти хом бодиққат назар кунед, шумо хоҳед дид, ки он воқеан аз қисмҳои гуногун иборат аст, ки ҳар яки онҳо бо фосила ҷудо карда шудаанд.
Барои таҳиягарони ботаҷриба, шумо эҳтимол метавонед тахмин кунед, ки ҳар як қисм чӣ маъно дорад ва ин паёми гузориш аз занги API чӣ аст. Муаррифии ҳар як ашё дар поён оварда шудааст.
Намоиши сохтории маълумоти мо
- localhost == муҳити зист
- GET == усули
- /v2/applink/5c2f4bb3e9fda1234edc64d == url
- 400 == ҳолати ҷавоб
- 46ms == вақти ҷавоб
- 5bc6e716b5d6cb35fc9687c0 == user_id
Тавре ки мо дар маълумоти сохторӣ мебинем, фармоиш барои сабтҳои сохторнашуда вуҷуд дорад. Қадами навбатӣ коркарди нармафзори маълумоти хом мебошад. Дар ин чо Грок медурахшад.
Шаблонҳои Grok
Шаблонҳои дарунсохташудаи Grok
Logstash бо зиёда аз 100 қолабҳои дарунсохт барои сохтори додаҳои сохторнашуда меояд. Шумо бояд ҳатман аз ин то ҳадди имкон барои системаҳои умумӣ ба монанди apache, linux, haproxy, aws ва ғайра истифода баред.
Аммо, вақте ки шумо дар мисоли дар боло овардашуда гузоришҳои фармоишӣ доред, чӣ мешавад? Шумо бояд қолаби Grok-и худро созед.
Шаблонҳои фармоишии Grok
Шумо бояд кӯшиш кунед, ки қолаби Grok-и худро созед. истифода кардам
Дар хотир доред, ки синтаксиси қолаби Grok чунин аст: %{SYNTAX:SEMANTIC}
Аввалин чизе, ки ман кӯшиш кардам, ки ба ҷадвал равам кашф дар debugger Grok. Ман фикр мекардам, ки агар ин асбоб ба таври худкор як намунаи Grok тавлид кунад, хуб мебуд, аммо он чандон муфид набуд, зеро он танҳо ду мувофиқат ёфт.
Бо истифода аз ин кашф, ман сохтани қолаби худро дар debugger Grok бо истифода аз синтаксиси дар саҳифаи Elastic Github пайдошуда оғоз кардам.
Пас аз бозӣ кардан бо синтаксисҳои гуногун, ман ниҳоят тавонистам маълумотҳои гузоришро тавре сохтам, ки ман мехостам.
Пайванди Debugger Grok
Матни аслӣ:
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 дар Кибана навсозӣ кунед!
Бо Grok, маълумоти сабти шумо сохтор шудааст!
Тавре ки мо дар тасвири боло мебинем, Grok қодир аст ба таври худкор маълумоти сабтро бо Elasticsearch мувофиқ созад. Ин идоракунии гузоришҳо ва зуд дархост кардани маълумотро осон мекунад. Ба ҷои кофтани файлҳои гузориш барои ислоҳ кардан, шумо метавонед танҳо аз рӯи он чизе, ки ҷустуҷӯ мекунед, ба монанди муҳити зист ё URL филтр кунед.
Ифодаҳои Grok-ро санҷед! Агар шумо роҳи дигари ин корро дошта бошед ё бо мисолҳои дар боло овардашуда мушкилот дошта бошед, танҳо дар зер шарҳ нависед, то ба ман хабар диҳед.
Ташаккур барои хондан ва лутфан маро дар Medium барои мақолаҳои ҷолибтар оид ба муҳандисии нармафзор пайравӣ кунед!
Манбаъҳо
Канали телеграм аз ҷониби
Манбаъ: will.com