परिचय
Logstash
एक लॉग प्रबंधन उपकरण है जो विभिन्न स्रोतों से डेटा एकत्र करता है, इसे तात्कालिक रूप से रूपांतरित करता है, और इसे आपके इच्छित गंतव्य पर भेजता है। इसका अक्सर Elasticsearch के लिए डेटा पाइपलाइन के रूप में उपयोग किया जाता है, जो एक ओपन-सोर्स एनालिटिक्स और सर्च इंजन है।
Filebeat
एक हल्का शिपर है जो लॉग डेटा को आगे बढ़ाने और केंद्रीकरण के लिए उपयोग किया जाता है। एक एजेंट के रूप में स्थापित होने के बाद, यह आपके द्वारा निर्दिष्ट लॉग फ़ाइलों या स्थानों की निगरानी करता है, लॉग घटनाएँ एकत्र करता है, और उन्हें इंडेक्सिंग के लिए आगे बढ़ाता है, आमतौर पर Elasticsearch या Logstash पर।
अब, Manticore भी Logstash और Filebeat का उपयोग प्रसंस्करण पाइपलाइनों के रूप में समर्थन करता है। यह एकत्रित और रूपांतरित डेटा को Manticore पर भेजने की अनुमति देता है जैसे कि इसे Elasticsearch पर भेजा जाता है। वर्तमान में, Logstash संस्करण >= 7.6 और Filebeat संस्करण >= 7.10 का समर्थन किया जाता है।
आइए हम एक Logstash कॉन्फ़िगरेशन फ़ाइल का एक साधारण उदाहरण देखें जिसका उपयोग dpkg.log
, जो कि Debian पैकेज प्रबंधक की एक मानक लॉग फ़ाइल है, को इंडेक्सिंग के लिए किया जाता है। लॉग की संरचना सरल है, जैसा कि नीचे दिखाया गया है:
2023-05-31 10:42:55 status triggers-awaited ca-certificates-java:all 20190405ubuntu1.1
2023-05-31 10:42:55 trigproc libc-bin:amd64 2.31-0ubuntu9.9 <none>
2023-05-31 10:42:55 status half-configured libc-bin:amd64 2.31-0ubuntu9.9
2023-05-31 10:42:55 status installed libc-bin:amd64 2.31-0ubuntu9.9
2023-05-31 10:42:55 trigproc systemd:amd64 245.4-4ubuntu3.21 <none>
Logstash कॉन्फ़िगरेशन
यहाँ एक Logstash कॉन्फ़िगरेशन का उदाहरण है:
input {
file {
path => ["/var/log/dpkg.log"]
start_position => "beginning"
sincedb_path => "/dev/null"
mode => "read"
exit_after_read => "true"
file_completed_action => "log"
file_completed_log_path => "/dev/null"
}
}
output {
elasticsearch {
index => " dpkg_log"
hosts => ["http://localhost:9308"]
ilm_enabled => false
manage_template => false
}
}
यह ध्यान रखना महत्वपूर्ण है कि आगे बढ़ने से पहले, एक महत्वपूर्ण चेतावनी को संबोधित करना आवश्यक है: Manticore Log Template Management और Elasticsearch की Index Lifecycle Management सुविधाओं का समर्थन नहीं करता है। चूंकि ये सुविधाएँ Logstash में डिफ़ॉल्ट रूप से सक्षम हैं, इसलिए इन्हें कॉन्फ़िगरेशन में स्पष्ट रूप से बंद करना होगा। इसके अतिरिक्त, output
कॉन्फ़िगरेशन अनुभाग में hosts
विकल्प Manticore के HTTP सुनने वाले पोर्ट (डिफ़ॉल्ट है localhost:9308
) से मेल खाना चाहिए।
Logstash परिणाम
जैसे ही आप उपरोक्त अनुसार कॉन्फ़िगरेशन को समायोजित करते हैं, आप Logstash चला सकते हैं, और dpkg लॉग से डेटा Manticore पर भेजा जाएगा और सही ढंग से इंडेक्स किया जाएगा।
यहाँ बनाई गई तालिका की परिणामी स्कीमा और दर्ज किए गए दस्तावेज़ का एक उदाहरण है:
mysql> DESCRIBE dpkg_log;
+------------------+--------+---------------------+
| Field | Type | Properties |
+------------------+--------+---------------------+
| id | bigint | |
| message | text | indexed stored |
| @version | text | indexed stored |
| @timestamp | text | indexed stored |
| path | text | indexed stored |
| host | text | indexed stored |
+------------------+--------+---------------------+
mysql> SELECT * FROM dpkg_log LIMIT 1\G
*************************** 1. row ***************************
id: 7280000849080746110
host: logstash-db848f65f-lnlf9
message: 2023-04-12 02:03:21 status unpacked libc-bin:amd64 2.31-0ubuntu9
path: /var/log/dpkg.log
@timestamp: 2023-06-16T09:23:57.405Z
@version: 1
Filebeat कॉन्फ़िगरेशन
कच्चा डेटा एकत्र करने का एक वैकल्पिक तरीका Filebeat एजेंट का उपयोग करना है। नीचे हमारे उदाहरण dpkg लॉग के साथ काम करने के लिए एक Filebeat कॉन्फ़िगरेशन है:
filebeat.inputs:
- type: filestream
id: example
paths:
- /var/log/dpkg.log
output.elasticsearch:
hosts: ["http://localhost:9308"]
index: "dpkg_log"
allow_older_versions: true
setup.ilm:
enabled: false
setup.template:
name: "dpkg_log"
pattern: "dpkg_log"
Filebeat संस्करण 8.10 से अधिक के लिए कॉन्फ़िगरेशन
Filebeat संस्करण 8.10 से अधिक में डिफ़ॉल्ट रूप से आउटपुट संकुचन सुविधा सक्षम होती है। इसलिए compression_level: 0
विकल्प को Manticore के साथ संगतता प्रदान करने के लिए कॉन्फ़िगरेशन फ़ाइल में जोड़ा जाना चाहिए:
filebeat.inputs:
- type: filestream
id: example
paths:
- /var/log/dpkg.log
output.elasticsearch:
hosts: ["http://localhost:9308"]
index: "dpkg_log"
allow_older_versions: true
compression_level: 0
setup.ilm:
enabled: false
setup.template:
name: "dpkg_log"
pattern: "dpkg_log"
Filebeat परिणाम
जैसे ही आप इस कॉन्फ़िगरेशन के साथ Filebeat चलाते हैं, लॉग डेटा Manticore पर भेजा जाएगा और सही ढंग से इंडेक्स किया जाएगा। यहाँ Manticore द्वारा बनाई गई तालिका की परिणामी स्कीमा और दर्ज किए गए दस्तावेज़ का एक उदाहरण है:
mysql> DESCRIBE dpkg_log;
+------------------+--------+--------------------+
| Field | Type | Properties |
+------------------+--------+--------------------+
| id | bigint | |
| @timestamp | text | indexed stored |
| message | text | indexed stored |
| log | json | |
| input | json | |
| ecs | json | |
| host | json | |
| agent | json | |
+------------------+--------+--------------------+
mysql> SELECT * FROM dpkg_log LIMIT 1\G
*************************** 1. row ***************************
id: 7280000849080753116
@timestamp: 2023-06-16T09:27:38.792Z
message: 2023-04-12 02:06:08 status half-installed libhogweed5:amd64 3.5.1+really3.5.1-2
input: {"type":"filestream"}
ecs: {"version":"1.6.0"}
host: {"name":"logstash-db848f65f-lnlf9"}
agent: {"ephemeral_id":"587c2ebc-e7e2-4e27-b772-19c611115996","id":"2e3d985b-3610-4b8b-aa3b-2e45804edd2c","name":"logstash-db848f65f-lnlf9","type":"filebeat","version":"7.10.0","hostname":"logstash-db848f65f-lnlf9"}
log: {"offset":80,"file":{"path":"/var/log/dpkg.log"}}
निष्कर्ष
इस प्रकार, आप अब आसानी से Manticore का उपयोग करते हुए अपने लॉग डेटा को Logstash या Filebeat के साथ अनुक्रमित कर सकते हैं। Manticore का Logstash और Filebeat के साथ एकीकरण लॉग डेटा को आसानी से अनुक्रमित करने के लिए नए अवसर खोलता है।