GROK ã䜿çšããéæ§é åããŒã¿ã®æ§é å
Elastic (ELK) ã¹ã¿ãã¯ã䜿çšããŠããŠãã«ã¹ã¿ã Logstash ãã°ã Elasticsearch ã«ãããã³ã°ããããšã«èå³ãããå Žåã¯ããã®æçš¿ãæé©ã§ãã
ELK ã¹ã¿ãã¯ã¯ãElasticsearchãLogstashãKibana ãšãã XNUMX ã€ã®ãªãŒãã³ ãœãŒã¹ ãããžã§ã¯ãã®é åèªã§ãã ãããã¯äžç·ã«ãªã£ãŠãã°ç®¡çãã©ãããã©ãŒã ã圢æããŸãã
- Elasticsearch ã¯æ€çŽ¢ããã³åæã·ã¹ãã ã§ãã
- ãã°ã¹ã¿ãã·ã¥ ã¯ãè€æ°ã®ãœãŒã¹ããåæã«ããŒã¿ãåã蟌ã¿ãå€æããŠãElasticsearch ãªã©ã®ãã¹ã¿ãã·ã¥ãã«éä¿¡ãããµãŒããŒåŽã®ããŒã¿åŠçãã€ãã©ã€ã³ã§ãã
- æšå Ž ãŠãŒã¶ãŒã¯ Elasticsearch ã§ãã£ãŒããã°ã©ãã䜿çšããŠããŒã¿ãèŠèŠåã§ããŸãã
ããŒã åŸããç»å Žãã軜éã®ããŒã¿ ã·ãããŒã§ãã Beats ã®å°å ¥ã«ãã Elk Stack 㯠Elastic Stack ã«å€ãããŸããããéèŠãªã®ã¯ããã§ã¯ãããŸããã
ãã®èšäºã¯ãGrok ã«ã€ããŠèª¬æããŸããGrok ã¯ããã°ãã¹ã¿ãã·ã¥ã«éä¿¡ããåã«å€æã§ãã Logstash ã®æ©èœã§ãã ããã§ã¯ãç®çã®ããã«ãLogstash ãã Elasticsearch ãžã®ããŒã¿ã®åŠçã«ã€ããŠã®ã¿èª¬æããŸãã
Grok ã¯ãéæ§é åããŒã¿ãæ§é åãããã¯ãšãªå¯èœãªããŒã¿ã«è§£æããããã«äœ¿çšããã Logstash å ã®ãã£ã«ã¿ãŒã§ãã ããã¯æ£èŠè¡šçŸ (regex) ã®äžã«äœçœ®ããããã¹ã ãã¿ãŒã³ã䜿çšããŠãã° ãã¡ã€ã«å ã®æååãšäžèŽããŸãã
次ã®ã»ã¯ã·ã§ã³ã§èª¬æããããã«ãGrok ã䜿çšãããšãå¹ççãªãã°ç®¡çãšããç¹ã§å€§ããªéããçããŸãã
Grok ããªããšãã° ããŒã¿ã¯æ§é åãããŠããŸãã
Grok ã䜿çšããªãå Žåããã°ã Logstash ãã Elasticsearch ã«éä¿¡ãããKibana ã§ã¬ã³ããªã³ã°ããããšãããã°ã¯ã¡ãã»ãŒãžå€ã«ã®ã¿è¡šç€ºãããŸãã
ãã¹ãŠã®ãã° ããŒã¿ã XNUMX ã€ã®ããŒã«ä¿åãããŠããããããã®ç¶æ³ã§æå³ã®ããæ å ±ãã¯ãšãªããããšã¯å°é£ã§ãã ãã°ã¡ãã»ãŒãžããã£ãšããæŽçãããŠããã°ãã£ãšè¯ãã§ãããã
ãã°ããã®éæ§é åããŒã¿
localhost GET /v2/applink/5c2f4bb3e9fda1234edc64d 400 46ms 5bc6e716b5d6cb35fc9687c0
çããŒã¿ãããèŠããšãå®éã«ã¯ã¹ããŒã¹ã§åºåãããããŸããŸãªéšåã§æ§æãããŠããããšãããããŸãã
çµéšè±å¯ãªéçºè ã§ããã°ãããããåéšåã®æå³ãšãAPI åŒã³åºãããã®ãã° ã¡ãã»ãŒãžãäœã§ããããæšæž¬ã§ããã§ãããã åé ç®ã®æŠèŠã¯ä»¥äžã®ãšããã§ãã
ããŒã¿ã®æ§é åããããã¥ãŒ
- localhost == ç°å¢
- GET ==ã¡ãœãã
- â /v2/applink/5c2f4bb3e9fda1234edc64d == url
- 400 == å¿çã¹ããŒã¿ã¹
- 46ms == å¿çæé
- â 5bc6e716b5d6cb35fc9687c0 == user_id
æ§é åããŒã¿ã§ãããããã«ãéæ§é åãã°ã«ãé åºããããŸãã 次ã®ã¹ãããã¯ãçããŒã¿ã®ãœãããŠã§ã¢åŠçã§ãã ãããGrokãèŒããšããã§ãã
Grok ãã³ãã¬ãŒã
çµã¿èŸŒã¿ã® Grok ãã³ãã¬ãŒã
Logstash ã«ã¯ãéæ§é åããŒã¿ãæ§é åããããã® 100 ãè¶ ããçµã¿èŸŒã¿ãã³ãã¬ãŒããä»å±ããŠããŸãã ApacheãLinuxãhaproxyãaws ãªã©ã®äžè¬ç㪠syslog ã§ã¯ãå¯èœãªéããããå©çšããå¿ èŠããããŸãã
ãã ããäžèšã®äŸã®ãããªã«ã¹ã¿ã ãã°ãããå Žåã¯ã©ããªãã§ãããã? ç¬èªã® Grok ãã³ãã¬ãŒããæ§ç¯ããå¿ èŠããããŸãã
ã«ã¹ã¿ã Grok ãã³ãã¬ãŒã
ç¬èªã® Grok ãã³ãã¬ãŒããæ§ç¯ããŠã¿ãå¿
èŠããããŸãã ç§ã䜿çšãã
Grok ãã³ãã¬ãŒãã®æ§æã¯æ¬¡ã®ãšããã§ããããšã«æ³šæããŠãã ããã %{SYNTAX:SEMANTIC}
æåã«ããããšããã®ã¯ãã¿ãã«ç§»åããããšã§ãã åæã«ããçŸç¶ææ¡ Grok ãããã¬ãŒã§ã ãã®ããŒã«ã Grok ãã¿ãŒã³ãèªåçã«çæã§ããã°çŽ æŽãããã ãããšæããŸããããäžèŽãããã®ã XNUMX ã€ããèŠã€ãããªãã£ããããããŸã圹ã«ç«ã¡ãŸããã§ããã
ãã®çºèŠãå©çšããŠãElastic Github ããŒãžã«ããæ§æã䜿çšããŠãGrok ãããã¬ãŒã§ç¬èªã®ãã³ãã¬ãŒãã®äœæãéå§ããŸããã
ããŸããŸãªæ§æãè©Šããçµæãæçµçã«åžæã©ããã«ãã° ããŒã¿ãæ§é åããããšãã§ããŸããã
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
æåŸã«ãå€æŽãæå¹ã«ãªã£ãŠããããšã確èªããããã«ã Kibana ã® Logstash ã® Elasticsearch ã€ã³ããã¯ã¹ãå¿ ãæŽæ°ããŠãã ããã
Grok ã䜿çšãããšããã° ããŒã¿ãæ§é åãããŸãã
äžã®ç»åã§ãããããã«ãGrok ã¯ãã° ããŒã¿ã Elasticsearch ãšèªåçã«ç §åã§ããŸãã ããã«ããããã°ã®ç®¡çã容æã«ãªããæ å ±ãè¿ éã«ã¯ãšãªã§ããããã«ãªããŸãã ãããã°ã®ããã«ãã° ãã¡ã€ã«ã調ã¹ã代ããã«ãç°å¢ã URL ãªã©ãæ¢ããŠãããã®ã§åçŽã«ãã£ã«ã¿ãªã³ã°ã§ããŸãã
Grok åŒãè©ŠããŠã¿ãŠãã ããã ãããè¡ãå¥ã®æ¹æ³ãããå ŽåããŸãã¯äžèšã®äŸã«åé¡ãããå Žåã¯ã以äžã«ã³ã¡ã³ããæžããŠãç¥ãããã ããã
èªãã§ããã ãããããšãããããŸããããã«èå³æ·±ããœãããŠã§ã¢ ãšã³ãžãã¢ãªã³ã°ã®èšäºãèªãããã«ãMedium ã§ç§ããã©ããŒããŠãã ããã
ãªãœãŒã¹
é»å ±ãã£ã³ãã«ã«ãã
åºæïŒ habr.com