మాడ్యూల్ పాఠాలు (2/4)
అపాచీ లాగ్ పార్సర్
అపాచీ లాగ్లు (కలిపి ఫార్మాట్) ఖచ్చితమైన నిర్మాణాన్ని కలిగి ఉంటాయి:
127.0.0.1 - - [10/Oct/2024:13:55:36 +0000] "GET /index.html HTTP/1.1" 200 1234పేరున్న సమూహాలు ఉన్న నమూనా ప్రతి ఫీల్డ్ను ఒకే షాట్లో సంగ్రహిస్తుంది:
^(?<ip>\d+\.\d+\.\d+\.\d+)\s+\S+\s+\S+\s+\[[^\]]+\]\s+"(?<metodo>\w+)\s+(?<path>\S+)\s+\S+"\s+(?<status>\d+)\s+(?<size>\d+)ఇది భయంకరంగా కనిపిస్తుంది, కానీ ఇది సాధారణ నమూనాల ** కలయిక**:
(?<ip>\d+\.\d+\.\d+\.\d+)-- మూలం IPv4.\s+\S+\s+\S+-- వినియోగదారు IDలు (సాధారణంగా-).\[[^\]]+\]-- చదరపు బ్రాకెట్లలో తేదీ."(?<metodo>\w+)\s+(?<path>\S+)\s+\S+"-- HTTP పద్ధతి, మార్గం మరియు సంస్కరణతో కోట్లలో అభ్యర్థన.(?<status>\d+)\s+(?<size>\d+)-- స్థితి కోడ్ మరియు బైట్లు పంపబడ్డాయి.
సాధారణ వ్యూహం
- నిజమైన లైన్ నుండి ప్రారంభించండి మరియు డిలిమిటర్లను పిన్ చేయండి: ఖాళీలు, కోట్లు, బ్రాకెట్లు.
- డిలిమిటర్ల మధ్య, టోకెన్ (IP, పదం, సంఖ్య) రకంని గుర్తించండి.
- పేరుగల సమూహాలలో వ్రాప్ చేయండి మీరు సంగ్రహించాల్సిన వాటిని మాత్రమే.
సంక్లిష్ట లాగ్లను అన్వయించడం
లాగ్ పార్సింగ్లో, ఫీల్డ్లు కోట్ చేయబడిన స్ట్రింగ్లు లేదా బ్రాకెట్లను (ఉదా. వినియోగదారు-ఏజెంట్) కలిగి ఉన్నప్పుడు మినహా సాధారణంగా ఖాళీ-వేరు చేయబడతాయి. వైల్డ్కార్డ్ డాట్కు బదులుగా అక్షర తరగతులను మినహాయించడం ద్వారా బహుళ నిలువు వరుసలను తప్పుగా విలీనం చేయడాన్ని నిరోధిస్తుంది.
దీనిని ప్రయత్నించండి
ప్రతి లాగ్ లైన్ ప్రారంభంలో IPv4ని పేరున్న సమూహం `ip`గా సంగ్రహించండి.
సూచనను చూపించు
^ మరియు m ఫ్లాగ్తో లైన్ ప్రారంభానికి యాంకర్ చేయండి మరియు IPని (?<ip>...)లో చుట్టండి.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది
వ్యాయామం సమీక్షించండి
HTTP పద్ధతి మరియు కోట్ల మధ్య అభ్యర్థన యొక్క మార్గాన్ని `metodo` మరియు `path` సమూహాలుగా సంగ్రహించండి.
సూచనను చూపించు
"తో తెరవండి, ఆపై (?<metodo>\\w+)\\s+(?<path>\\S+).
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది
అదనపు సవాలు
Extract only the date and time part enclosed in brackets in logs, e.g. `10/Oct/2024:13:55:36 +0000`, as a named group `timestamp`.
సూచనను చూపించు
Use \[(?<timestamp>[^\]]+)\] to prevent the engine from matching past the closing bracket.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది