GROK ನೊಂದಿಗೆ ರಚನೆಯಿಲ್ಲದ ಡೇಟಾವನ್ನು ರಚಿಸುವುದು
ನೀವು ಎಲಾಸ್ಟಿಕ್ (ELK) ಸ್ಟಾಕ್ ಅನ್ನು ಬಳಸುತ್ತಿದ್ದರೆ ಮತ್ತು ಕಸ್ಟಮ್ ಲಾಗ್ಸ್ಟ್ಯಾಶ್ ಲಾಗ್ಗಳನ್ನು Elasticsearch ಗೆ ಮ್ಯಾಪಿಂಗ್ ಮಾಡಲು ಆಸಕ್ತಿ ಹೊಂದಿದ್ದರೆ, ಈ ಪೋಸ್ಟ್ ನಿಮಗಾಗಿ ಆಗಿದೆ.
ELK ಸ್ಟಾಕ್ ಮೂರು ತೆರೆದ ಮೂಲ ಯೋಜನೆಗಳ ಸಂಕ್ಷಿಪ್ತ ರೂಪವಾಗಿದೆ: Elasticsearch, Logstash ಮತ್ತು Kibana. ಒಟ್ಟಿಗೆ ಅವರು ಲಾಗ್ ಮ್ಯಾನೇಜ್ಮೆಂಟ್ ಪ್ಲಾಟ್ಫಾರ್ಮ್ ಅನ್ನು ರೂಪಿಸುತ್ತಾರೆ.
- Elasticsearch ಹುಡುಕಾಟ ಮತ್ತು ವಿಶ್ಲೇಷಣಾತ್ಮಕ ವ್ಯವಸ್ಥೆಯಾಗಿದೆ.
- ಲಾಗ್ಸ್ಟ್ಯಾಶ್ ಸರ್ವರ್-ಸೈಡ್ ಡೇಟಾ ಸಂಸ್ಕರಣಾ ಪೈಪ್ಲೈನ್ ಆಗಿದ್ದು ಅದು ಏಕಕಾಲದಲ್ಲಿ ಅನೇಕ ಮೂಲಗಳಿಂದ ಡೇಟಾವನ್ನು ಒಳಗೊಳ್ಳುತ್ತದೆ, ಅದನ್ನು ಪರಿವರ್ತಿಸುತ್ತದೆ ಮತ್ತು ನಂತರ ಅದನ್ನು ಸ್ಥಿತಿಸ್ಥಾಪಕ ಹುಡುಕಾಟದಂತಹ "ಸ್ಟ್ಯಾಶ್" ಗೆ ಕಳುಹಿಸುತ್ತದೆ.
- ಕಿಬಾನಾ Elasticsearch ನಲ್ಲಿ ಚಾರ್ಟ್ಗಳು ಮತ್ತು ಗ್ರಾಫ್ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಡೇಟಾವನ್ನು ದೃಶ್ಯೀಕರಿಸಲು ಬಳಕೆದಾರರಿಗೆ ಅನುಮತಿಸುತ್ತದೆ.
ಬೀಟ್ಸ್ ನಂತರ ಬಂದಿತು ಮತ್ತು ಹಗುರವಾದ ಡೇಟಾ ಶಿಪ್ಪರ್ ಆಗಿದೆ. ಬೀಟ್ಸ್ನ ಪರಿಚಯವು ಎಲ್ಕ್ ಸ್ಟಾಕ್ ಅನ್ನು ಎಲಾಸ್ಟಿಕ್ ಸ್ಟಾಕ್ ಆಗಿ ಪರಿವರ್ತಿಸಿತು, ಆದರೆ ಅದು ವಿಷಯವಲ್ಲ.
ಈ ಲೇಖನವು ಗ್ರೋಕ್ ಬಗ್ಗೆ, ಇದು ಲಾಗ್ಸ್ಟ್ಯಾಶ್ನಲ್ಲಿನ ವೈಶಿಷ್ಟ್ಯವಾಗಿದ್ದು ಅದು ನಿಮ್ಮ ಲಾಗ್ಗಳನ್ನು ಸ್ಟ್ಯಾಶ್ಗೆ ಕಳುಹಿಸುವ ಮೊದಲು ಪರಿವರ್ತಿಸಬಹುದು. ನಮ್ಮ ಉದ್ದೇಶಗಳಿಗಾಗಿ, ನಾನು ಲಾಗ್ಸ್ಟಾಶ್ನಿಂದ ಎಲಾಸ್ಟಿಕ್ಸರ್ಚ್ಗೆ ಡೇಟಾವನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುವುದರ ಕುರಿತು ಮಾತ್ರ ಮಾತನಾಡುತ್ತೇನೆ.
ಗ್ರೋಕ್ ಲಾಗ್ಸ್ಟ್ಯಾಶ್ನೊಳಗಿನ ಫಿಲ್ಟರ್ ಆಗಿದ್ದು, ರಚನಾತ್ಮಕವಲ್ಲದ ಡೇಟಾವನ್ನು ರಚನಾತ್ಮಕ ಮತ್ತು ಪ್ರಶ್ನಿಸಬಹುದಾದಂತೆ ಪಾರ್ಸ್ ಮಾಡಲು ಬಳಸಲಾಗುತ್ತದೆ. ಇದು ನಿಯಮಿತ ಅಭಿವ್ಯಕ್ತಿ (ರೆಜೆಕ್ಸ್) ಮೇಲೆ ಇರುತ್ತದೆ ಮತ್ತು ಲಾಗ್ ಫೈಲ್ಗಳಲ್ಲಿ ಸ್ಟ್ರಿಂಗ್ಗಳನ್ನು ಹೊಂದಿಸಲು ಪಠ್ಯ ಮಾದರಿಗಳನ್ನು ಬಳಸುತ್ತದೆ.
ಕೆಳಗಿನ ವಿಭಾಗಗಳಲ್ಲಿ ನಾವು ನೋಡುವಂತೆ, ದಕ್ಷ ಲಾಗ್ ನಿರ್ವಹಣೆಗೆ ಬಂದಾಗ Grok ಅನ್ನು ಬಳಸುವುದು ದೊಡ್ಡ ವ್ಯತ್ಯಾಸವನ್ನು ಮಾಡುತ್ತದೆ.
Grok ಇಲ್ಲದೆ ನಿಮ್ಮ ಲಾಗ್ ಡೇಟಾ ರಚನೆಯಿಲ್ಲ
ಗ್ರೋಕ್ ಇಲ್ಲದೆ, ಲಾಗ್ಸ್ಟಾಶ್ನಿಂದ ಎಲಾಸ್ಟಿಕ್ಸರ್ಚ್ಗೆ ಲಾಗ್ಗಳನ್ನು ಕಳುಹಿಸಿದಾಗ ಮತ್ತು ಕಿಬಾನಾದಲ್ಲಿ ರೆಂಡರ್ ಮಾಡಿದಾಗ, ಅವು ಸಂದೇಶ ಮೌಲ್ಯದಲ್ಲಿ ಮಾತ್ರ ಗೋಚರಿಸುತ್ತವೆ.
ಈ ಪರಿಸ್ಥಿತಿಯಲ್ಲಿ ಅರ್ಥಪೂರ್ಣ ಮಾಹಿತಿಯನ್ನು ಪ್ರಶ್ನಿಸುವುದು ಕಷ್ಟಕರವಾಗಿದೆ ಏಕೆಂದರೆ ಎಲ್ಲಾ ಲಾಗ್ ಡೇಟಾವನ್ನು ಒಂದೇ ಕೀಲಿಯಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗಿದೆ. ಲಾಗ್ ಸಂದೇಶಗಳನ್ನು ಉತ್ತಮವಾಗಿ ಆಯೋಜಿಸಿದರೆ ಅದು ಉತ್ತಮವಾಗಿರುತ್ತದೆ.
ಲಾಗ್ಗಳಿಂದ ರಚನೆಯಾಗದ ಡೇಟಾ
localhost GET /v2/applink/5c2f4bb3e9fda1234edc64d 400 46ms 5bc6e716b5d6cb35fc9687c0
ನೀವು ಕಚ್ಚಾ ಡೇಟಾವನ್ನು ಹತ್ತಿರದಿಂದ ನೋಡಿದರೆ, ಅದು ನಿಜವಾಗಿ ವಿಭಿನ್ನ ಭಾಗಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ ಎಂದು ನೀವು ನೋಡುತ್ತೀರಿ, ಪ್ರತಿಯೊಂದೂ ಜಾಗದಿಂದ ಪ್ರತ್ಯೇಕಿಸಲ್ಪಟ್ಟಿದೆ.
ಹೆಚ್ಚು ಅನುಭವಿ ಡೆವಲಪರ್ಗಳಿಗಾಗಿ, ಪ್ರತಿಯೊಂದು ಭಾಗಗಳ ಅರ್ಥವೇನು ಮತ್ತು API ಕರೆಯಿಂದ ಲಾಗ್ ಸಂದೇಶ ಏನು ಎಂದು ನೀವು ಬಹುಶಃ ಊಹಿಸಬಹುದು. ಪ್ರತಿ ಐಟಂನ ಪ್ರಸ್ತುತಿಯನ್ನು ಕೆಳಗೆ ವಿವರಿಸಲಾಗಿದೆ.
ನಮ್ಮ ಡೇಟಾದ ರಚನಾತ್ಮಕ ನೋಟ
- ಲೋಕಲ್ ಹೋಸ್ಟ್ == ಪರಿಸರ
- ಪಡೆಯಿರಿ == ವಿಧಾನ
- /v2/applink/5c2f4bb3e9fda1234edc64d == url
- 400 == ಪ್ರತಿಕ್ರಿಯೆ_ಸ್ಥಿತಿ
- 46ms == ಪ್ರತಿಕ್ರಿಯೆ_ಸಮಯ
- 5bc6e716b5d6cb35fc9687c0 == user_id
ರಚನಾತ್ಮಕ ಡೇಟಾದಲ್ಲಿ ನಾವು ನೋಡುವಂತೆ, ರಚನೆಯಿಲ್ಲದ ಲಾಗ್ಗಳಿಗೆ ಆದೇಶವಿದೆ. ಮುಂದಿನ ಹಂತವು ಕಚ್ಚಾ ಡೇಟಾದ ಸಾಫ್ಟ್ವೇರ್ ಪ್ರಕ್ರಿಯೆಯಾಗಿದೆ. ಇಲ್ಲಿಯೇ ಗ್ರೋಕ್ ಹೊಳೆಯುತ್ತಾನೆ.
ಗ್ರೋಕ್ ಟೆಂಪ್ಲೇಟ್ಗಳು
ಅಂತರ್ನಿರ್ಮಿತ ಗ್ರೋಕ್ ಟೆಂಪ್ಲೇಟ್ಗಳು
ರಚನೆಯಿಲ್ಲದ ಡೇಟಾವನ್ನು ರಚಿಸುವುದಕ್ಕಾಗಿ ಲಾಗ್ಸ್ಟಾಶ್ 100 ಕ್ಕೂ ಹೆಚ್ಚು ಅಂತರ್ನಿರ್ಮಿತ ಟೆಂಪ್ಲೇಟ್ಗಳೊಂದಿಗೆ ಬರುತ್ತದೆ. apache, linux, haproxy, aws ಮತ್ತು ಮುಂತಾದ ಸಾಮಾನ್ಯ ಸಿಸ್ಲಾಗ್ಗಳಿಗೆ ಸಾಧ್ಯವಾದಾಗಲೆಲ್ಲಾ ನೀವು ಖಂಡಿತವಾಗಿಯೂ ಇದರ ಪ್ರಯೋಜನವನ್ನು ಪಡೆದುಕೊಳ್ಳಬೇಕು.
ಆದಾಗ್ಯೂ, ಮೇಲಿನ ಉದಾಹರಣೆಯಲ್ಲಿರುವಂತೆ ನೀವು ಕಸ್ಟಮ್ ಲಾಗ್ಗಳನ್ನು ಹೊಂದಿರುವಾಗ ಏನಾಗುತ್ತದೆ? ನಿಮ್ಮ ಸ್ವಂತ ಗ್ರೋಕ್ ಟೆಂಪ್ಲೇಟ್ ಅನ್ನು ನೀವು ನಿರ್ಮಿಸಬೇಕು.
ಕಸ್ಟಮ್ ಗ್ರೋಕ್ ಟೆಂಪ್ಲೇಟ್ಗಳು
ನಿಮ್ಮ ಸ್ವಂತ ಗ್ರೋಕ್ ಟೆಂಪ್ಲೇಟ್ ಅನ್ನು ನಿರ್ಮಿಸಲು ನೀವು ಪ್ರಯತ್ನಿಸಬೇಕು. ನಾನು ಬಳಸಿದೆ
Grok ಟೆಂಪ್ಲೇಟ್ ಸಿಂಟ್ಯಾಕ್ಸ್ ಈ ಕೆಳಗಿನಂತಿದೆ ಎಂಬುದನ್ನು ಗಮನಿಸಿ: %{SYNTAX:SEMANTIC}
ನಾನು ಮಾಡಲು ಪ್ರಯತ್ನಿಸಿದ ಮೊದಲ ವಿಷಯವೆಂದರೆ ಟ್ಯಾಬ್ಗೆ ಹೋಗುವುದು ಡಿಸ್ಕವರ್ ಗ್ರೋಕ್ ಡೀಬಗರ್ ನಲ್ಲಿ. ಈ ಉಪಕರಣವು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಗ್ರೋಕ್ ಪ್ಯಾಟರ್ನ್ ಅನ್ನು ರಚಿಸಿದರೆ ಅದು ತಂಪಾಗಿರುತ್ತದೆ ಎಂದು ನಾನು ಭಾವಿಸಿದೆವು, ಆದರೆ ಇದು ಕೇವಲ ಎರಡು ಹೊಂದಾಣಿಕೆಗಳನ್ನು ಕಂಡುಕೊಂಡ ಕಾರಣ ಅದು ತುಂಬಾ ಉಪಯುಕ್ತವಾಗಿರಲಿಲ್ಲ.
ಈ ಅನ್ವೇಷಣೆಯನ್ನು ಬಳಸಿಕೊಂಡು, ನಾನು 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"
]
]
}
ಕೈಯಲ್ಲಿ ಗ್ರೋಕ್ ಟೆಂಪ್ಲೇಟ್ ಮತ್ತು ಮ್ಯಾಪ್ ಮಾಡಿದ ಡೇಟಾದೊಂದಿಗೆ, ಲಾಗ್ಸ್ಟಾಶ್ಗೆ ಸೇರಿಸುವುದು ಕೊನೆಯ ಹಂತವಾಗಿದೆ.
Logstash.conf ಕಾನ್ಫಿಗರೇಶನ್ ಫೈಲ್ ಅನ್ನು ನವೀಕರಿಸಲಾಗುತ್ತಿದೆ
ನೀವು ELK ಸ್ಟಾಕ್ ಅನ್ನು ಸ್ಥಾಪಿಸಿದ ಸರ್ವರ್ನಲ್ಲಿ, ಲಾಗ್ಸ್ಟ್ಯಾಶ್ ಕಾನ್ಫಿಗರೇಶನ್ಗೆ ಹೋಗಿ:
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" ]
}
}
ನಿಮ್ಮ ಬದಲಾವಣೆಗಳನ್ನು ಉಳಿಸಿದ ನಂತರ, ಲಾಗ್ಸ್ಟಾಶ್ ಅನ್ನು ಮರುಪ್ರಾರಂಭಿಸಿ ಮತ್ತು ಅದು ಇನ್ನೂ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿದೆಯೇ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಅದರ ಸ್ಥಿತಿಯನ್ನು ಪರಿಶೀಲಿಸಿ.
sudo service logstash restart
sudo service logstash status
ಅಂತಿಮವಾಗಿ, ಬದಲಾವಣೆಗಳು ಜಾರಿಗೆ ಬಂದಿವೆಯೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು, Kibana ನಲ್ಲಿ Logstash ಗಾಗಿ ನಿಮ್ಮ Elasticsearch ಸೂಚಿಯನ್ನು ನವೀಕರಿಸಲು ಮರೆಯದಿರಿ!
Grok ಜೊತೆಗೆ, ನಿಮ್ಮ ಲಾಗ್ ಡೇಟಾ ರಚನೆಯಾಗಿದೆ!
ಮೇಲಿನ ಚಿತ್ರದಲ್ಲಿ ನಾವು ನೋಡುವಂತೆ, ಗ್ರೋಕ್ ಎಲಾಸ್ಟಿಕ್ ಸರ್ಚ್ನೊಂದಿಗೆ ಲಾಗ್ ಡೇಟಾವನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಹೊಂದಿಸಲು ಸಮರ್ಥವಾಗಿದೆ. ಇದು ಲಾಗ್ಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಮತ್ತು ಮಾಹಿತಿಯನ್ನು ತ್ವರಿತವಾಗಿ ಪ್ರಶ್ನಿಸಲು ಸುಲಭಗೊಳಿಸುತ್ತದೆ. ಡೀಬಗ್ ಮಾಡಲು ಲಾಗ್ ಫೈಲ್ಗಳ ಮೂಲಕ ಅಗೆಯುವ ಬದಲು, ಪರಿಸರ ಅಥವಾ url ನಂತಹ ನೀವು ಹುಡುಕುತ್ತಿರುವುದನ್ನು ನೀವು ಸರಳವಾಗಿ ಫಿಲ್ಟರ್ ಮಾಡಬಹುದು.
ಗ್ರೋಕ್ ಅಭಿವ್ಯಕ್ತಿಗಳನ್ನು ಒಮ್ಮೆ ಪ್ರಯತ್ನಿಸಿ! ನೀವು ಇದನ್ನು ಮಾಡಲು ಇನ್ನೊಂದು ಮಾರ್ಗವನ್ನು ಹೊಂದಿದ್ದರೆ ಅಥವಾ ಮೇಲಿನ ಉದಾಹರಣೆಗಳೊಂದಿಗೆ ಯಾವುದೇ ಸಮಸ್ಯೆಗಳನ್ನು ಹೊಂದಿದ್ದರೆ, ನನಗೆ ತಿಳಿಸಲು ಕೆಳಗೆ ಕಾಮೆಂಟ್ ಬರೆಯಿರಿ.
ಓದಿದ್ದಕ್ಕಾಗಿ ಧನ್ಯವಾದಗಳು-ಮತ್ತು ಹೆಚ್ಚು ಆಸಕ್ತಿದಾಯಕ ಸಾಫ್ಟ್ವೇರ್ ಎಂಜಿನಿಯರಿಂಗ್ ಲೇಖನಗಳಿಗಾಗಿ ದಯವಿಟ್ಟು ನನ್ನನ್ನು ಇಲ್ಲಿ ಮೀಡಿಯಂನಲ್ಲಿ ಅನುಸರಿಸಿ!
ಸಂಪನ್ಮೂಲಗಳು
ಪಿಎಸ್
ಟೆಲಿಗ್ರಾಮ್ ಚಾನಲ್ ಮೂಲಕ
ಮೂಲ: www.habr.com