
लॉग पार्सिंग के लिए एक मशीन लर्निंग टूलकिट [ICSE'19, DSN'16]
Logparser एक मशीन लर्निंग टूलकिट और स्वचालित लॉग पार्सिंग के लिए बेंचमार्क प्रदान करता है, जो संरचित लॉग एनालिटिक्स के लिए एक महत्वपूर्ण कदम है। Logparser को लागू करके, उपयोगकर्ता असंरचित लॉग्स से स्वचालित रूप से इवेंट टेम्पलेट्स निकाल सकते हैं और कच्चे लॉग संदेशों को संरचित इवेंट्स के अनुक्रम में बदल सकते हैं। लॉग पार्सिंग की प्रक्रिया को साहित्य में मैसेज टेम्पलेट एक्सट्रैक्शन, लॉग की एक्सट्रैक्शन, या लॉग मैसेज क्लस्टरिंग के रूप में भी जाना जाता है।

लॉग पार्सिंग का एक उदाहरण
pip install logparser3 के माध्यम से इंस्टॉल करें।💡 अपने पार्सर कोड को logparser में पुश करने और अपने पेपर को तालिका में जोड़ने के लिए PR सबमिट करने हेतु आपका स्वागत है।
हम pip install के माध्यम से logparser पैकेज और आवश्यकताएँ इंस्टॉल करने की अनुशंसा करते हैं।``` pip install logparser3
विशेष रूप से, पैकेज निम्नलिखित आवश्यकताओं पर निर्भर करता है। ध्यान दें कि Python में regex मिलान नाजुक है, इसलिए हम regex लाइब्रेरी को संस्करण 2022.3.2 पर स्थिर करने की अनुशंसा करते हैं।
नोट: यदि आपको ``"Error: need to escape..."`` मिलता है, तो कृपया [यहाँ](https://github.com/logpai/logparser/issues/122) दिए गए निर्देशों का पालन करें।
+ python 3.6+
+ regex 2022.3.2
+ numpy
+ pandas
+ scipy
+ scikit-learn
सशर्त आवश्यकताएँ:
+ यदि MoLFI का उपयोग कर रहे हैं: `deap`
+ यदि SHISO का उपयोग कर रहे हैं: `nltk`
+ यदि SLCT का उपयोग कर रहे हैं: `gcc`
+ यदि LogCluster का उपयोग कर रहे हैं: `perl`
+ यदि NuLog का उपयोग कर रहे हैं: `torch`, `torchvision`, `keras_preprocessing`
+ यदि DivLog का उपयोग कर रहे हैं: `openai`, `tiktoken` (python 3.8+ आवश्यक)
### आरंभ करें
1. डेमो चलाएँ:
प्रत्येक लॉग पार्सर के लिए, हम आपको आरंभ करने में मदद करने हेतु एक डेमो प्रदान करते हैं। प्रत्येक डेमो लक्षित लॉग पार्सर के बुनियादी उपयोग और कॉन्फ़िगर करने के लिए हाइपर-पैरामीटर दिखाता है। उदाहरण के लिए, निम्न कमांड दिखाता है कि Drain के लिए डेमो कैसे चलाएँ।
```
cd logparser/Drain
python demo.py
```
2. बेंचमार्क चलाएँ:
प्रत्येक लॉग पार्सर के लिए, हम पार्सिंग सटीकता का मूल्यांकन करने हेतु [loghub_2k डेटासेट](https://github.com/logpai/logparser/tree/main/data#loghub_2k) पर लॉग पार्सिंग चलाने के लिए एक बेंचमार्क स्क्रिप्ट प्रदान करते हैं। आप [लॉग पार्सिंग के लिए अन्य बेंचमार्क डेटासेट](https://github.com/logpai/logparser/tree/main/data#datasets) का भी उपयोग कर सकते हैं।
```
cd logparser/Drain
python benchmark.py
```
बेंचमार्किंग परिणाम प्रत्येक पार्सर की readme फ़ाइल में पाए जा सकते हैं, जैसे, https://github.com/logpai/logparser/tree/main/logparser/Drain#benchmark.
3. अपने स्वयं के लॉग पार्स करें:
अपने स्वयं के लॉग डेटा को पार्स करने के लिए logparser लागू करना आसान है। ऐसा करने के लिए, आपको पहले logparser3 पैकेज स्थापित करना होगा। फिर आप लॉग पार्सिंग शुरू करने के लिए नीचे दिए गए कोड स्निपेट का अनुसरण करते हुए अपनी स्वयं की स्क्रिप्ट विकसित कर सकते हैं। पूरा उदाहरण कोड [example/parse_your_own_logs.py](https://github.com/logpai/logparser/blob/main/example/parse_your_own_logs.py) पर देखें।
```python
from logparser.Drain import LogParser
input_dir = 'PATH_TO_LOGS/' # The input directory of log file
output_dir = 'result/' # The output directory of parsing results
log_file = 'unknow.log' # The input log file name
log_format = '<Date> <Time> <Level>:<Content>' # Define log format to split message fields
# Regular expression list for optional preprocessing (default: [])
regex = [
r'(/|)([0-9]+\.){3}[0-9]+(:[0-9]+|)(:|)' # IP
]
st = 0.5 # Similarity threshold
depth = 4 # Depth of all leaf nodes
parser = LogParser(log_format, indir=input_dir, outdir=output_dir, depth=depth, st=st, rex=regex)
parser.parse(log_file)
```
logparser चलाने के बाद, आप आउटपुट फ़ोल्डर में निकाले गए इवेंट टेम्पलेट और पार्स किए गए संरचित लॉग प्राप्त कर सकते हैं।
+ `*_templates.csv` (उदाहरण देखें [HDFS_2k.log_templates.csv](https://github.com/logpai/logparser/blob/main/logparser/Drain/demo_result/HDFS_2k.log_templates.csv))
| EventId | EventTemplate | Occurrences |
|----------|------------------------------------------------|-------------|
| dc2c74b7 | PacketResponder <*> for block <*> terminating | 311 |
| e3df2680 | Received block <*> of size <*> from <*> | 292 |
| 09a53393 | Receiving block <*> src: <*> dest: <*> | 292 |
+ `*_structured.csv` (उदाहरण देखें [HDFS_2k.log_structured.csv](https://github.com/logpai/logparser/blob/main/logparser/Drain/demo_result/HDFS_2k.log_structured.csv))
| ... | Level | Content | EventId | EventTemplate | ParameterList |
|-----|-------|-----------------------------------------------------------------------------------------------|----------|---------------------------------------------------------------------|--------------------------------------------|
| ... | INFO | PacketResponder 1 for block blk_38865049064139660 terminating | dc2c74b7 | PacketResponder <*> for block <*> terminating | ['1', 'blk_38865049064139660'] |
| ... | INFO | Received block blk_3587508140051953248 of size 67108864 from /10.251.42.84 | e3df2680 | Received block <*> of size <*> from <*> | ['blk_3587508140051953248', '67108864', '/10.251.42.84'] |
| ... | INFO | Verification succeeded for blk_-4980916519894289629 | 32777b38 | Verification succeeded for <*> | ['blk_-4980916519894289629'] |
### उत्पादन उपयोग
logparser का मुख्य लक्ष्य अनुसंधान और बेंचमार्क उद्देश्यों के लिए उपयोग किया जाना है। शोधकर्ता नए लॉग पार्सर विकसित करने के लिए logparser को कोड आधार के रूप में उपयोग कर सकते हैं, जबकि व्यवसायी हमारे बेंचमार्किंग के माध्यम से वर्तमान लॉग पार्सिंग विधियों के प्रदर्शन और स्केलेबिलिटी का आकलन कर सकते हैं। हम दृढ़ता से अनुशंसा करते हैं कि व्यवसायी अपने उत्पादन वातावरण में logparser आज़माएँ। लेकिन सावधान रहें कि logparser का वर्तमान कार्यान्वयन उत्पादन उपयोग के लिए तैयार होने से बहुत दूर है। जबकि हमारे पास वर्तमान में ऐसा करने की कोई योजना नहीं है, हमारे पास उन डेवलपर्स के लिए कुछ सुझाव हैं जो एक बुद्धिमान उत्पादन-स्तरीय लॉग पार्सर बनाना चाहते हैं।
+ कृपया logparser में उपयोग किए गए [तृतीय-पक्ष लाइब्रेरी के लाइसेंस](https://github.com/logpai/logparser/blob/main/LICENSE.md) से अवगत रहें। हम सुझाव देते हैं कि एक पार्सर रखें और बाकी को हटा दें और फिर पैकेज व्हील को पुनः निर्मित करें। इससे logparser का उपयोग नहीं टूटेगा।
+ कृपया logparser को मल्टी-प्रोसेसिंग के साथ दक्षता और स्केलेबिलिटी से बेहतर बनाएँ, विफलता पुनर्प्राप्ति जोड़ें, डिस्क या मैसेज क्यू Kafka में निरंतरता जोड़ें।
+ [Drain3](https://github.com/logpai/Drain3) उत्पादन परिदृश्यों के लिए [व्यावहारिक संवर्द्धन](https://github.com/logpai/Drain3#new-features) के साथ निर्मित आपके संदर्भ हेतु एक अच्छा उदाहरण प्रदान करता है।
### 🔥 उद्धरण
यदि आप अपने प्रकाशन में हमारे logparser टूल या बेंचमार्किंग परिणामों का उपयोग करते हैं, तो कृपया निम्नलिखित पत्रों को उद्धृत करें।
+ [**ICSE'19**] Jieming Zhu, Shilin He, Jinyang Liu, Pinjia He, Qi Xie, Zibin Zheng, Michael R. Lyu. [Tools and Benchmarks for Automated Log Parsing](https://arxiv.org/pdf/1811.03509.pdf). *International Conference on Software Engineering (ICSE)*, 2019.
+ [**DSN'16**] Pinjia He, Jieming Zhu, Shilin He, Jian Li, Michael R. Lyu. [An Evaluation Study on Log Parsing and Its Use in Log Mining](https://jiemingzhu.github.io/pub/pjhe_dsn2016.pdf). *IEEE/IFIP International Conference on Dependable Systems and Networks (DSN)*, 2016.
### 🤗 योगदानकर्ता
<!-- readme: zhujiem,contributors -start -->
<table>
<tbody>
<tr>
<td align="center">
<a href="https://github.com/zhujiem">
<img src="https://assets.kitploit.com/production/public/readmes/51023/471767126e4450e42b40b8e3f5437c2d9d0616f468675dde6feccac1976b18d0/ee334336551226b1483445bee71089fdf5e61115652a2a99375e54566f34c9bf-display-v1.webp" width="80;" alt="zhujiem"/>
<br />
<sub><b>Zhujiem</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/PinjiaHe">
<img src="https://assets.kitploit.com/production/public/readmes/51023/e9f83f96ab3d84e92152317c8d85d54a12fb0b0baea267d29e7d317a5caff94b/5b4a6af1bda6245edbb5c40ea1467625828536aeb88e984716753945b6235da2-display-v1.webp" width="80;" alt="PinjiaHe"/>
<br />
<sub><b>Pinjia He</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/JinYang88">
<img src="https://assets.kitploit.com/production/public/readmes/51023/7785c7974d5753fa21792097907be1e20efb5fc5bbf3aba61b0b4d2f4fe26fec/19a47a39c4db07a8a052ed05304e166cca4cf18683d89a1400688c576ae48b52-display-v1.webp" width="80;" alt="JinYang88"/>
<br />
<sub><b>LIU, Jinyang</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/Siyuexi">
<img src="https://assets.kitploit.com/production/public/readmes/51023/fe7de7203a407b36e2f44a57603594e01266d124ef558b53cb95ba28afc6127c/f7a7173a142ced37b910b650e3ad957b27fcf2f13f4c828ff6a72fb87111435f-display-v1.webp" width="80;" alt="Siyuexi"/>
<br />
<sub><b>Junjielong Xu</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/ShilinHe">
<img src="https://assets.kitploit.com/production/public/readmes/51023/c8b37cadfeb622c955b807776ab0fa19f058c8ad512ebb22eb98c79ad5e90c17/fc476296c1b1aa6b1dd7c3220a81a1b70838d5c113a65e6b2f98196d0615b8a3-display-v1.webp" width="80;" alt="ShilinHe"/>
<br />
<sub><b>Shilin HE</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/JosephMeghanathD">
<img src="https://assets.kitploit.com/production/public/readmes/51023/c2036c74a3116c7de955cae32687ffae61d8be46868cbcc61f771a7e9be4fa33/011ea30ec30f0db362d75632b310850b2783bd2c2428dfee7dc0fff182dc1bf8-display-v1.webp" width="80;" alt="JosephMeghanathD"/>
<br />
<sub><b>Joseph</b></sub>
</a>
</td>
</tr>
<tr>
<td align="center">
<a href="https://github.com/jcordon5">
<img src="https://assets.kitploit.com/production/public/readmes/51023/a4f67dd9f820a1dc763ae05e6d66ec6418d7e70abad8a9b5906413ab909f709e/4c8dc9fc08525d6d3c2334983160c0c9a48077fcc22b3498fe658aa133a2da02-display-v1.webp" width="80;" alt="jcordon5"/>
<br />
<sub><b>José A. Cordón </b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/rustamtemirov">
<img src="https://assets.kitploit.com/production/public/readmes/51023/3690f9e2cd318e8555a586fb32e221080e59e5de8917d82584da1f69e00be8cc/95300504879ab023f96e1cd73ca726c6720367b23e0d476e9a0b6cc23b89ff4d-display-v1.webp" width="80;" alt="rustamtemirov"/>
<br />
<sub><b>Rustam Temirov</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/gaiusyu">
<img src="https://assets.kitploit.com/production/public/readmes/51023/68c5eeea49f8a2ee2cd39b633ed1fb9765cde38399b12636dea0a3dd0920c86d/8faa00619c5b17d96e80dff1b124695997ece681c0931519346fa0e62407c578-display-v1.webp" width="80;" alt="gaiusyu"/>
<br />
<sub><b>Siyu Yu (Youth Yu)</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/thomasryck">
<img src="https://assets.kitploit.com/production/public/readmes/51023/ad3710fbbe7106ffe560fe918f87e77a95a6bf7a21dbf65827f93138c96aca5a/ed736bf9ffd9aa54686cc7a3d404f7c0072ecaced2403ff467d112482255c2b3-display-v1.webp" width="80;" alt="thomasryck"/>
<br />
<sub><b>Thomas Ryckeboer</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/IsuruBoyagane15">
<img src="https://assets.kitploit.com/production/public/readmes/51023/dca9ea34301dd9441404246eb535a39d034518fd1311bebd68f1725bc38ba6b3/57b77cdaafca63553a32d53d83f1859d971c1628ef640c36ab1125939bb43a00-display-v1.webp" width="80;" alt="IsuruBoyagane15"/>
<br />
<sub><b>Isuru Boyagane</b></sub>
</a>
</td>
</tr>
<tbody>
</table>
<!-- readme: zhujiem,contributors -end -->
### चर्चा
किसी भी प्रश्न और चर्चा के लिए हमारे WeChat समूह में शामिल होने के लिए आपका स्वागत है। वैकल्पिक रूप से, आप [यहाँ एक मुद्दा खोल सकते हैं](https://github.com/logpai/logparser/issues/new)।

| प्रकाशन | पार्सर | पेपर शीर्षक | बेंचमार्क |
|---|