GROK සමඟ ව්යුහගත නොවන දත්ත ව්යුහගත කිරීම
ඔබ ඉලාස්ටික් (ELK) තොගය භාවිතා කරන්නේ නම් සහ අභිරුචි ලොග්ස්ටාෂ් ලොග් ඉලාස්ටික් සෙවුම් වෙත සිතියම්ගත කිරීමට කැමති නම්, මෙම සටහන ඔබ සඳහා වේ.
ELK stack යනු විවෘත මූලාශ්ර ව්යාපෘති තුනක කෙටි යෙදුමකි: Elasticsearch, Logstash සහ Kibana. ඔවුන් එක්ව ලොග් කළමනාකරණ වේදිකාවක් සාදයි.
- Elasticsearch සෙවුම් සහ විශ්ලේෂණ පද්ධතියකි.
- ලොග්ස්ටැෂ් යනු සේවාදායක පාර්ශ්ව දත්ත සැකසුම් නල මාර්ගයක් වන අතර එය බහු ප්රභව වලින් දත්ත එකවර අවශෝෂණය කර, එය පරිවර්තනය කරයි, පසුව එය Elasticsearch වැනි “stash” වෙත යවයි.
- කිබානා 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 ඇමතුමෙන් එක් එක් කොටස් වලින් අදහස් කරන්නේ කුමක්ද සහ එම ලොග් පණිවිඩය කුමක්දැයි අනුමාන කළ හැකිය. එක් එක් අයිතමයේ ඉදිරිපත් කිරීම පහත දක්වා ඇත.
අපගේ දත්තවල ව්යුහගත දසුන
- දේශීය සත්කාරක == පරිසරය
- GET == ක්රමය
- /v2/applink/5c2f4bb3e9fda1234edc64d == url
- 400 == ප්රතිචාර_තත්ත්වය
- 46ms == ප්රතිචාර_කාලය
- 5bc6e716b5d6cb35fc9687c0 == user_id
ව්යුහගත දත්තවල අප දකින පරිදි, ව්යුහගත නොකළ ලඝු-සටහන් සඳහා නියෝගයක් තිබේ. ඊළඟ පියවර වන්නේ අමු දත්ත මෘදුකාංග සැකසීමයි. ග්රෝක් බැබළෙන්නේ මෙහිදීය.
Grok සැකිලි
තනා ඇති Grok සැකිලි
Logstash ව්යුහගත නොවන දත්ත ව්යුහගත කිරීම සඳහා ගොඩනඟන ලද සැකිලි 100 කට අධික ප්රමාණයක් සමඟ පැමිණේ. apache, linux, haproxy, aws වැනි සාමාන්ය syslog සඳහා හැකි සෑම විටම ඔබ මෙයින් ප්රයෝජන ගත යුතුය.
කෙසේ වෙතත්, ඉහත උදාහරණයේ මෙන් ඔබට අභිරුචි ලොග ඇති විට කුමක් සිදුවේද? ඔබ ඔබේම Grok සැකිල්ලක් ගොඩනගා ගත යුතුය.
අභිරුචි Grok සැකිලි
ඔබ ඔබේම Grok සැකිල්ලක් සෑදීමට උත්සාහ කළ යුතුය. මම පාවිච්චි කළා
Grok අච්චු වාක්ය ඛණ්ඩය පහත පරිදි බව සලකන්න: %{SYNTAX:SEMANTIC}
මම මුලින්ම කරන්න උත්සාහ කළේ ටැබ් එකට යන්න ඩිස්කවර් Grok නිදොස්කරණයේ. මෙම මෙවලමට ස්වයංක්රීයව Grok රටාවක් ජනනය කළ හැකි නම් එය සිසිල් වනු ඇතැයි මම සිතුවෙමි, නමුත් එයට ගැලපීම් දෙකක් පමණක් හමු වූ බැවින් එය එතරම් ප්රයෝජනවත් නොවීය.
මෙම සොයා ගැනීම භාවිතා කරමින්, මම Elastic Github පිටුවේ ඇති වාක්ය ඛණ්ඩය භාවිතා කරමින් Grok debugger හි මගේම අච්චුවක් නිර්මාණය කිරීමට පටන් ගතිමි.
විවිධ වාක්ය ඛණ්ඩ සමඟ සෙල්ලම් කිරීමෙන් පසුව, අවසානයේ මට අවශ්ය ආකාරයට ලොග් දත්ත ව්යුහගත කිරීමට මට හැකි විය.
Grok Debugger සබැඳිය
මුල් පෙළ:
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
අවසාන වශයෙන්, වෙනස්කම් බලාත්මක වී ඇති බව තහවුරු කර ගැනීමට, Kibana හි Logstash සඳහා ඔබගේ Elasticsearch දර්ශකය යාවත්කාලීන කිරීමට වග බලා ගන්න!
Grok සමඟින්, ඔබගේ ලොග් දත්ත ව්යුහගත කර ඇත!
ඉහත රූපයේ අපට පෙනෙන පරිදි, ග්රෝක් හට ඉලාස්ටික් සෙවුම් සමඟ ලොග් දත්ත ස්වයංක්රීයව ගැලපීමේ හැකියාව ඇත. මෙය ලඝු-සටහන් කළමනාකරණය කිරීම සහ ඉක්මනින් තොරතුරු විමසීම පහසු කරයි. දෝශ නිරාකරණය කිරීමට ලොග් ලිපිගොනු හෑරීම වෙනුවට, ඔබට පරිසරයක් හෝ url එකක් වැනි ඔබ සොයන දේ අනුව සරලව පෙරීමට හැකිය.
Grok ප්රකාශන උත්සාහ කර බලන්න! ඔබට මෙය කිරීමට වෙනත් ක්රමයක් තිබේ නම් හෝ ඉහත උදාහරණ සමඟ කිසියම් ගැටළුවක් ඇත්නම්, මට දැනුම් දීමට පහත අදහසක් ලියන්න.
කියවීමට ස්තූතියි-තව තවත් රසවත් මෘදුකාංග ඉංජිනේරු ලිපි සඳහා කරුණාකර මා මෙහි මා අනුගමනය කරන්න!
සම්පත්
ටෙලිග්රාම් නාලිකාව විසින්
මූලාශ්රය: www.habr.com