Elasticsearchروشی که به centralized logging شناخته می شود. centralized logging می تواند در هنگام تلاش برای شناسایی مشکلات سرورها یا برنامه های کاربردی مفید باشد ، زیرا این امکان را به شما می دهد تا از طریق تمام ورودهای خود در یک مکان جستجو کنید. این ویژگی همچنین از این لحاظ مفید است که به شما امکان می دهد با پیوند دادن ورودهای چند سرور در یک بازه زمانی خاص مسائلی را که آن سرورها را ارتباط میدهد شناسایی کنید.
Elastic Stack چهار مؤلفه اصلی دارد:
Elasticsearch: یک موتور جستجوی توزیع شده RESTful که تمام داده های جمع آوری شده را ذخیره می کند.
Logstash: مولفه پردازش داده ها از Stack Elastic که داده های ورودی را به Elasticsearch می فرستد.
Kibana: رابط وب برای جستجو و تجسم ورودها.
Beats: حمل و نقل داده های سبک و یک منظوره که می توانند داده ها را از صدها یا هزاران دستگاه به Logstash یا Elasticsearch ارسال کنند.
در این آموزش Elastic Stack را روی سرور Ubuntu 20.04 نصب خواهید کرد. یاد می گیرید که چگونه تمام مؤلفه های Elastic Stack – از جمله Filebeat را نصب کنید، که یک ضربان برای ارسال و متمرکز کردن ورود ها و فایل ها است – و آن ها را برای جمع آوری و تجسم ورودهای مربوط به سیستم پیکربندی میکند. علاوه بر این ، به دلیل اینکه معمولاً Kibana فقط در localhost موجود است ، ما از Nginx برای پروکسی استفاده می کنیم ، بنابراین از طریق مرورگر وب قابل دسترسی خواهد بود. همه این مؤلفه ها را روی یک سرور واحد نصب خواهیم کرد که به عنوان سرور Elastic Stack ما به آن اشاره خواهیم کرد.
توجه: هنگام نصب Elastic Stack ، باید از نسخه مشابه در کل پشته استفاده کنید. در این آموزش آخرین نسخه های کل پشته را نصب خواهیم کرد که در زمان نوشتن این مقاله ، Elasticsearch 7.7.1 ، Kibana 7.7.1 ، Logstash 7.7.1 و Filebeat 7.7.1 هستند.
پیش نیازها
برای تکمیل این آموزش به موارد زیر نیاز دارید:
سرور Ubuntu 20.04 با رم 4 گیگابایتی و دو CPU با کاربر sudo غیر ریشه. شما می توانید با پیروی از مقاله ستاپ اولیه سرور برای Ubuntu 20.04 به این هدف برسید. برای این آموزش ، ما با حداقل مقدار CPU و RAM مورد نیاز برای اجرای Elasticsearch کار خواهیم کرد. توجه داشته باشید که میزان CPU ، RAM و حافظه ذخیره شده مورد نیاز سرور Elasticsearch شما به حجم ورود هایی که انتظار دارید بستگی دارد.
⦁ OpenJDK 11 نصب شده باشد. برای انجام این کار به بخش نصب پیش فرض JRE / JDK نحوه نصب جاوا با Apt در اوبونتو 20.04 مراجعه کنید.
⦁ Nginx بر روی سرور شما نصب شده باشد ، که بعداً در این راهنما به عنوان یک پروکسی معکوس برای Kibana پیکربندی می کنیم. برای تنظیم این برنامه ، راهنمای ما در مورد نحوه نصب Nginx در اوبونتو 20.04 را دنبال کنید.
علاوه بر این ، از آنجا که از Elastic Stack برای دسترسی به اطلاعات ارزشمندی درباره سرور خود استفاده می کنید که نمی خواهید کاربران غیرمجاز به آنها دسترسی پیدا کنند ، مهم است که با نصب گواهی TLS / SSL ، سرور خود را ایمن نگه دارید. این کار اختیاری است اما به شدت توصیه میشود.
با این وجود ، از آن جا که در نهایت در طول این راهنما تغییراتی در بلوک سرور Nginx خود ایجاد خواهید کرد ، به احتمال زیاد منطقی تر خواهد بود که راهنمای Let’s Encrypt در Ubuntu 20.04 را در پایان مرحله دوم این آموزش پیگیری کنید. با توجه به این نکته ، اگر می خواهید پیکربندی Let’s Encrypt را روی سرور خود انجام دهید ، قبل از انجام این کار به موارد زیر نیاز دارید:
• نام دامنه کاملاً واجد شرایط ( (FQDN. در سراسر این آموزش از your_domain استفاده خواهد شد. می توانید نام دامنه را در Namecheap خریداری کنید ، یکی را به صورت رایگان در Freenom دریافت کنید ، یا از ثبت دامنه مورد نظر خود استفاده کنید.
• هر دو رکورد DNS زیر برای سرور شما تنظیم شده باشد. برای جزئیات بیشتر در مورد چگونگی اضافه کردن آنها می توانید این مقدمه را در vpsgol DNS دنبال کنید.
o یک رکورد A با your_domain که آدرس IP عمومی سرور شما را نشان می دهد.
o رکورد A با آدرس www.your_domain که به آدرس IP عمومی سرور شما اشاره کند.
مرحله 1 – نصب و پیکربندی Elasticsearch
مولفه های Elasticsearch در مخازن بسته پیش فرض اوبونتو در دسترس نیستند. اما می توانند پس از افزودن لیست منبع بسته بندی Elastic ، با APT نصب کنید.
به منظور محافظت از سیستم خود در مقابل جعل بسته ، همه بسته ها با کلید امضای Elasticsearch امضا شده اند. بسته هایی که با استفاده از کلید تأیید شده اند توسط مدیر بسته شما قابل اعتماد خواهند بود. در این مرحله ، کلید GPG عمومی Elasticsearch را وارد کرده و به منظور نصب Elasticsearch ، لیست منبع بسته بندی الاستیک را اضافه می کنید.
برای شروع ، از cURL ، ابزار خط فرمان برای انتقال داده با URL ، برای وارد کردن کلید عمومی GPG Elasticsearch در APT استفاده کنید. توجه داشته باشید که ما از آرگومان -fsSL برای غیر فعال کردن همه فرآیندها و خطاهای احتمالی (به جز عدم موفقیت سرور) استفاده می کنیم و به cURL اجازه می دهیم در صورت تغییر مسیر، یک درخواست در مکان جدید ایجاد کند. خروجی دستور cURL را در برنامه apt-key قرار دهید ، که کلید عمومی GPG را به APT اضافه می کند.
⦁ $ curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add –

در مرحله بعد ، لیست منبع الاستیک را به دیرکتوری Sources.list.d اضافه کنید ، جایی که APT در جستجوی منابع جدید است:
⦁ $ echo “deb https://artifacts.elastic.co/packages/7.x/apt stable main” | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

سپس، لیست بسته های خود را به روز کنید تا APT منبع جدید الاستیک را بخواند:
⦁ $ sudo apt update

در مرحله بعد با این دستور Elasticsearch را نصب کنید:
⦁ $ sudo apt install elasticsearch

اکنون Elasticsearch نصب شده است و آماده پیکربندی است. از ویرایشگر متن دلخواه خود برای ویرایش فایل اصلی پیکربندی Elasticsearch ، elasticsearch.yml استفاده کنید. در اینجا ، ما از nano استفاده خواهیم کرد:
⦁ $ sudo nano /etc/elasticsearch/elasticsearch.yml

توجه: فایل پیکربندی Elasticsearch با فرمت YAML است ، به این معنی که ما باید قالب دندانه ای را حفظ کنیم. مطمئن شوید که با ویرایش این فایل هیچ فضای اضافی ایجاد نمی کنید.

فایل elasticsearch.yml گزینه های پیکربندی را برای خوشه ، گره ، مسیرها ، حافظه ، شبکه ، جستجو و گیت شما فراهم می کند. بسیاری از این گزینه ها در فایل از پیش تنظیم شده اند اما شما می توانید آنها را با توجه به نیاز خود تغییر دهید. برای اهداف نمایش پیکربندی تک سرور ، فقط تنظیمات میزبان شبکه را تنظیم خواهیم کرد.
Elasticsearch ترافیک را از هر جایی در پورت 9200 گوش می دهد. بهتر است دسترسی خارجی به نمونه Elasticsearch خود را محدود کنید تا از خوانده شدن اطلاعات توسط دیگر افراد یا خاموش کردن خوشه Elasticsearch از طریق REST API جلوگیری کنید. برای محدود کردن دسترسی و در نتیجه افزایش امنیت ، خطی را که شبکه را مشخص می کند ، پیدا کنید ، آن را حذف کنید و مقدار آن را با localhost مانند این جایگزین کنید:
/etc/elasticsearch/elasticsearch.yml
. . .
# ———————————- Network ———————————–
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: localhost
. . .

ما localhost را مشخص کرده ایم تا Elasticsearch در تمام رابط ها و IP های محدود گوش کند. اگر می خواهید فقط به یک رابط خاص گوش دهید ، می توانید IP آن را به جای localhost مشخص کنید. elasticsearch.ym را ذخیره کرده و ببندید. اگر از nano استفاده می کنید ، می توانید با فشار دادن CTRL + X ، به دنبال آن Y و سپس ENTER این کار را انجام دهید.
این حداقل تنظیماتی است که می توانید با استفاده از Elasticsearch انجام دهید. اکنون می توانید برای اولین بار Elasticsearch را شروع کنید.
سرویس Elasticsearch را با systemctl شروع کنید. برای شروع کار چند لحظه به الاستیک وقت بدهید. در غیر این صورت ، ممکن است با خطای عدم امکان اتصال مواجه شوید.
⦁ $ sudo systemctl start elasticsearch

سپس ، دستور زیر را اجرا کنید تا Elasticsearch بتواند هر بار که سرور خود را راه اندازی می کند اجرا شود:
⦁ $ sudo systemctl enable elasticsearch

با ارسال یک درخواست HTTP می توانید آزمایش کنید که آیا سرویس Elasticsearch شما اجرا شده است:
⦁ $ curl -X GET “localhost:9200”

پاسخی را مشاهده خواهید کرد که اطلاعات اصلی در مورد گره محلی شما را نشان می دهد ، مشابه این:
Output
{
“name” : “Elasticsearch”,
“cluster_name” : “elasticsearch”,
“cluster_uuid” : “qqhFHPigQ9e2lk-a7AvLNQ”,
“version” : {
“number” : “7.7.1”,
“build_flavor” : “default”,
“build_type” : “deb”,
“build_hash” : “ef48eb35cf30adf4db14086e8aabd07ef6fb113f”,
“build_date” : “2020-03-26T06:34:37.794943Z”,
“build_snapshot” : false,
“lucene_version” : “8.5.1”,
“minimum_wire_compatibility_version” : “6.8.0”,
“minimum_index_compatibility_version” : “6.0.0-beta1”
},
“tagline” : “You Know, for Search”
}

اکنون که Elasticsearch در حال اجرا و کار است ، بیایید Kibana ، مؤلفه بعدی Elastic Stack را نصب کنیم.
مرحله 2 – نصب و پیکربندی داشبورد Kibana
طبق مستندات رسمی ، باید Kibana را تنها پس از نصب Elasticsearch نصب کنید. نصب با این ترتیب این اطمینان را می دهد که مولفه های مربوط به هر محصول به طور صحیح در جای خود قرار دارند.
از آنجا که شما در مرحله قبل منبع بسته الاستیک را اضافه کرده اید ، می توانید با استفاده از apt فقط مولفه های باقیمانده Elastic Stack را نصب کنید:
⦁ $ sudo apt install kibana

سپس سرویس Kibana را فعال و راه اندازی کنید:
⦁ $ sudo systemctl enable kibana

⦁ $ sudo systemctl start kibana

از آنجا که Kibana پیکربندی شده است که فقط به localhost گوش کند ، ما باید یک پروکسی معکوس تنظیم کنیم تا دسترسی خارجی به آن امکان پذیر باشد. برای این منظور از Nginx استفاده خواهیم کرد که قبلاً باید روی سرور شما نصب شود.
ابتدا از دستور openssl برای ایجاد یک کاربر ادمین Kibana استفاده کنید که برای دسترسی به رابط وب Kibana استفاده خواهید کرد. به عنوان نمونه ما این حساب را kibanaadmin نامگذاری می کنیم ، اما برای اطمینان از امنیت بیشتر توصیه می کنیم برای کاربر خود یک نام غیر استاندارد انتخاب کنید که حدس زدن آن دشوار خواهد بود.
دستور زیر کاربر و پسورد ادمین Kibana را ایجاد کرده و آنها را در فایل htpasswd.users ذخیره می کند. Nginxرا پیکربندی می کنید تا این نام کاربری و رمز عبور را دریافت کرده و این فایل را لحظه به لحظه بخوانید:
⦁ $ echo “kibanaadmin:`openssl passwd -apr1`” | sudo tee -a /etc/nginx/htpasswd.users

با مشاهده اعلان، رمز عبور را وارد و تأیید کنید. این اطلاعات را به خاطر بسپارید یا یادداشت کنید ، زیرا برای دسترسی به رابط وب Kibana به آن نیاز خواهید داشت.
در مرحله بعد ، یک فایل بلوک سرور Nginx ایجاد خواهیم کرد. به عنوان نمونه ، ما این فایل را your_domain می نامیم ، گرچه ممکن است بهتر باشد یک نام توصیف کننده تر انتخاب کنید. به عنوان مثال ، اگر یک فایل FQDN و DNS برای این سرور تنظیم کرده اید ، می توانید این فایل را پس از FQDN خود نامگذاری کنید.
با استفاده از nano یا ویرایشگر متن مورد نظر خود ، فایل بلوک سرور Nginx را ایجاد کنید:
⦁ $ sudo nano /etc/nginx/sites-available/your_domain

بلوک کد زیر را در فایل اضافه کنید ، مطمئن شوید که your_domain خود را به روز می کنید تا با FQDN یا آدرس IP عمومی سرور شما مطابقت داشته باشد. این کد Nginx را پیکربندی می کند تا ترافیک HTTP سرور شما را به برنامه Kibana منتقل کند ، که در حال گوش دادن به localhost: 5601 است. علاوه بر این ، Nginx را برای خواندن فایل htpasswd.users پیکربندی می کند و احتیاج به احراز هویت اساسی دارد.
توجه داشته باشید که اگر از قبل آموزش Nginx را امتحان کرده اید ، ممکن است قبلاً این فایل را ایجاد کرده باشید و آن را با محتوای قبلی پر کرده اید. در این حالت ، قبل از اضافه کردن موارد زیر تمام محتوای موجود در فایل را حذف کنید:
/etc/nginx/sites-available/your_domain
server {
listen 80;

server_name your_domain;

auth_basic “Restricted Access”;
auth_basic_user_file /etc/nginx/htpasswd.users;

location / {
proxy_pass http://localhost:5601;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection ‘upgrade’;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}

پس از اتمام ، فایل را ذخیره کنیدو ببندید.
در مرحله بعد ، پیکربندی جدید را با ایجاد پیوند سمبولیکی به دیرکتوری sites-enabled فعال کنید. اگر در پیش شرط Nginx یک فایل بلوک سرور با همین نام ایجاد کرده اید ، نیازی به اجرای این دستور ندارید:
⦁ $ sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/your_domain

سپس پیکربندی خطاهای نحوی را بررسی کنید:
⦁ $ sudo nginx -t

اگر خطایی در خروجی شما گزارش شده بود ، به عقب برگردید و بررسی کنید که محتوایی که در فایل پیکربندی خود قرار داده اید به درستی اضافه شده است. وقتی syntax is ok را در خروجی مشاهده کردید ، پیش بروید و سرویس Nginx را ریستارت کنید:
⦁ $ sudo systemctl reload nginx

اگر راهنمای ستاپ اولیه سرور را دنبال کرده باشید ، باید فایروال UFW را فعال کنید. برای اجازه اتصال به Nginx ، می توانیم قوانین را با تایپ دستور زیر تنظیم کنیم:
⦁ $ sudo ufw allow ‘Nginx Full’

توجه: اگر از آموزش مقدماتی Nginx پیروی کرده اید ، ممکن است یک قانون UFW ایجاد کرده باشید که مشخصات Nginx HTTP را از طریق فایروال امکان پذیر کند. از آنجا که پروفایل Nginx Full امکان عبور و مرور HTTP و HTTPS را از طریق فایروال فراهم می کند ، می توانید با خیال راحت قانونی را که در آموزش پیش نیاز ایجاد کرده اید حذف کنید. این کار را با دستور زیر انجام دهید:
⦁ $ sudo ufw delete allow ‘Nginx HTTP’

اکنون Kibana از طریق FQDN یا آدرس IP عمومی سرور Elastic Stack شما قابل دسترسی است. می توانید با رفتن به آدرس زیر و وارد کردن اطلاعات ورود به سیستم هنگام درخواست ، صفحه وضعیت سرور Kibana را بررسی کنید:
http://your_domain/status
این صفحه وضعیت اطلاعات مربوط به استفاده از منابع سرور را نشان می دهد و افزونه های نصب شده را لیست می کند.

توجه: همانطور که در بخش Preferences ذکر شد ، توصیه می شود SSL / TLS را روی سرور خود فعال کنید. برای به دست آوردن یک گواهینامه رایگان SSL برای Nginx در اوبونتو 20.04 می توانید از راهنمای Let’s Encrypt استفاده کنید. پس از اخذ گواهینامه های SSL / TLS ، می توانید دوباره به این مرحله برگردید و این آموزش را تکمیل کنید.
اکنون که داشبورد Kibana پیکربندی شده است ، بگذارید مؤلفه بعدی را نصب کنیم : Logstash .
مرحله 3 – نصب و پیکربندی Logstash
اگرچه ممکن است Beats داده را مستقیماً به پایگاه داده Elasticsearch ارسال کند ، استفاده از Logstash برای پردازش داده ها معمول است. این کار به شما امکان می دهد انعطاف پذیری بیشتری برای جمع آوری داده ها از منابع مختلف ، تبدیل آن به یک قالب مشترک و انتقال آن به پایگاه داده دیگری داشته باشید.
Logstash را با این دستور نصب کنید:
⦁ $ sudo apt install logstash

پس از نصب Logstash می توانید به پیکربندی آن بروید. فایل های پیکربندی Logstash در دیرکتوری /etc/logstash/conf.d مستقر هستند. برای اطلاعات بیشتر در مورد دستورات پیکربندی ، می توانید مرجع پیکربندی که Elastic ارائه می دهد را بررسی کنید. وقتی فایل را پیکربندی می کنید ، مفید است که به Logstash به عنوان خط اتصال فکر کنید که داده ها را در یک انتها می گیرد ، آن را به روشی پردازش می کند و سپس به مقصد می فرستد (در این حالت مقصد Elasticsearch است). رابط اتصال Logstash دارای دو عنصر مورد نیاز ، ورودی و خروجی ، و یک عنصر اختیاری ، یعنی فیلتر است. پلاگین های ورودی داده ها را از یک منبع استفاده می کنند ، پلاگین های فیلتر داده ها را پردازش می کنند و پلاگین های خروجی داده ها را در مقصد می نویسند.

یک فایل پیکربندی به نام 02-beats-input.conایجاد کنید که ورودی Filebeat خود را تنظیم کنید:
$ sudo nano /etc/logstash/conf.d/02-beats-input.conf

پیکربندی ورودی زیر را وارد کنید. این یک ورودی beats را مشخص می کند که پورت TCP 5044 را گوش خواهد /etc/logstash/conf.d/02-beats-input.conf
input {
beats {
port => 5044
}
}
کرد.
فایل را ذخیره کنید و ببندید.
در مرحله بعد ، یک فایل پیکربندی به نام 30-elasticsearch-output.conf ایجاد کنید:
⦁ $ sudo nano /etc/logstash/conf.d/30-elasticsearch-output.conf

پیکربندی خروجی زیر را وارد کنید. در اصل ، این خروجی Logstash را برای ذخیره داده های Beats در Elasticsearch ، که در localhost: 9200 در حال اجرا است ، در شاخصی به نام Beat استفاده می کند. بیت مورد استفاده در این آموزش Filebeat است:
/etc/logstash/conf.d/30-elasticsearch-output.conf
output {
if [@metadata][pipeline] {
elasticsearch {
hosts => [“localhost:9200”]
manage_template => false
index => “%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}”
pipeline => “%{[@metadata][pipeline]}”
}
} else {
elasticsearch {
hosts => [“localhost:9200”]
manage_template => false
index => “%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}”
}
}
}

فایل را ذخیره کنید و ببندید.
پیکربندی Logstash خود را با این دستور تست کنید:
⦁ $ sudo -u logstash /usr/share/logstash/bin/logstash –path.settings /etc/logstash -t

اگر خطایی در دستورات وجود نداشته باشد ، خروجی شما بعد از چند ثانیه Config Validation Result: OK. Exiting Logstash را نشان میدهد. اگر این را در خروجی خود مشاهده نمی کنید ، خطاهای ذکر شده در خروجی خود را بررسی کنید و پیکربندی را به روز کنید تا آنها را اصلاح کنید. توجه داشته باشید که از OpenJDK اخطار دریافت خواهید کرد ، اما نباید مشکلی ایجاد کنند و می توان آنها را نادیده گرفت.
اگر آزمایش پیکربندی شما موفقیت آمیز است ، Logstash را راه اندازی و فعال کنید تا تغییرات پیکربندی را به مرحله اجرا برساند:
⦁ $ sudo systemctl start logstash

⦁ $ sudo systemctl enable logstash

اکنون که Logstash به درستی کار کرده و کاملاً پیکربندی شده است ، بیایید Filebeat را نصب کنیم.
مرحله 4 – نصب و پیکربندی Filebeat
Elastic Stack از چندین فرستنده داده سبک به نام Beats برای جمع آوری داده ها از منابع مختلف و انتقال آنها به Logstash یا Elasticsearch استفاده می کند. در اینجا Beats که در حال حاضر از Elastic موجود است:
⦁ Filebeat: فایل های ورود را جمع آوری و ارسال می کند.
⦁ Metricbeat: معیارها را از سیستم ها و سرویس های شما جمع آوری می کند.
⦁ Packetbeat: داده های شبکه را جمع آوری و تجزیه و تحلیل می کند.
⦁ Winlogbeat: ورودهای مربوط به رویدادهای Windows را جمع می کند.
⦁ Auditbeat: داده های چارچوب حسابرسی لینوکس را جمع می کند و بر یکپارچگی فایل نظارت می کند.
⦁ Heartbeat: سرویس ها را برای دسترس پذیری آنها با استفاده از پروب فعال کنترل می کند.
در این آموزش از Filebeat استفاده خواهیم کرد تا ورود های محلی را به Stack Elastic ارسال کنیم.
Filebeat را با استفاده از apt نصب کنید:
⦁ $ sudo apt install filebeat

سپس ، Filebeat را پیکربندی کنید تا به Logstash وصل شوید. در اینجا ، فایل پیکربندی مثال را که همراه Filebeat است اصلاح خواهیم کرد.
فایل پیکربندی Filebeat را باز کنید:
⦁ $ sudo nano /etc/filebeat/filebeat.yml

توجه: مانند Elasticsearch ، فایل پیکربندی Filebeat به فرمت YAML است. این بدان معنی است که کنگره گذاری مناسب بسیار مهم است ، بنابراین حتماً از همان تعداد فضاهایی استفاده کنید که در این دستورالعمل ها ذکر شده است.

Filebeat از خروجی های بی شماری پشتیبانی می کند ، اما شما معمولاً فقط رویدادها را به طور مستقیم به Elasticsearch یا Logstash ارسال می کنید. در این آموزش ، ما از Logstash برای انجام پردازش بیشتر روی داده های جمع آوری شده توسط Filebeat استفاده خواهیم کرد.Filebeat به ارسال اطلاعات به طور مستقیم به Elasticsearc نیاز نخواهد داشت، بنابراین بیایید آن خروجی را غیرفعال کنیم. برای انجام این کار ، بخش input.elasticsearch را بیابید و خطوط زیر را با قرار دادن # قبل از آنها خارج کنید:
/etc/filebeat/filebeat.yml

#output.elasticsearch:
# Array of hosts to connect to.
#hosts: [“localhost:9200”]

سپس بخش output.logstash را پیکربندی کنید. خطوط out.logstash: و hosts: [“localhost:5044”] را با حذف # خارج کنید . با این کار Filebeat را برای پیوند دادن به Logstash در سرور Elastic Stack در پورت 5044 پیکربندی می کنید ، پورتی که برای آن ورودی Logstash را قبلاً مشخص کردیم:
/etc/filebeat/filebeat.yml
output.logstash:
# The Logstash hosts
hosts: [“localhost:5044”]

فایل را ذخیره کنید و ببندید.
قابلیت Filebeat را می توان با ماژول های Filebeat گسترش داد. در این آموزش از ماژول سیستم استفاده خواهیم کرد که ورود های ایجاد شده توسط سرویس ثبت ورود سیستم توزیع های رایج لینوکس را جمع آوری و تجزیه می کند.
بیایید آن را فعال کنیم:
⦁ $ sudo filebeat modules enable system

با اجرای لیست می توانید ماژول های فعال و غیرفعال را مشاهده کنید:
⦁ $ sudo filebeat modules list

لیستی مشابه موارد زیر را مشاهده خواهید کرد:
Output
Enabled:
system

Disabled:
apache2
auditd
elasticsearch
icinga
iis
kafka
kibana
logstash
mongodb
mysql
nginx
osquery
postgresql
redis
traefik

به طور پیش فرض ، Filebeat پیکربندی شده است تا از مسیرهای پیش فرض برای ورودهای مربوط به syslog و مجوزها استفاده کند. در مورد این آموزش نیازی به تغییر چیزی در پیکربندی نیست. پارامترهای ماژول را می توانید در فایل پیکربندی /etc/filebeat/modules.d/system.yml مشاهده کنید.
در مرحله بعد ، باید اتصالات ورودی Filebeat را تنظیم کنیم ، که داده های ورود را قبل از ارسال از طریق logstash به Elasticsearch تجزیه می کند. برای لود خط اتصال ورودی برای ماژول سیستم ، دستور زیر را وارد کنید:
⦁ $ sudo filebeat setup –pipelines –modules system

در مرحله بعد ، قالب فهرست را در Elasticsearch بارگذاری کنید. ایندکس Elasticsearch مجموعه ای از اسنادی است که دارای مشخصات مشابه است. ایندکس ها با یک نام مشخص می شوند که در هنگام انجام عملیات های مختلف درون آن ، به ایندکس اشاره می شود. الگوی ایندکس با ایجاد یک ایندکس جدید به طور خودکار اعمال می شود.
برای لود الگو ، از دستور زیر استفاده کنید:
⦁ $ sudo filebeat setup –index-management -E output.logstash.enabled=false -E ‘output.elasticsearch.hosts=[“localhost:9200”]’

Output
Index setup finished.

Filebeat با داشبورد نمونه Kibana بسته بندی شده است که به شما امکان می دهد داده های Filebeat را در Kibana تجسم کنید. قبل از استفاده از داشبورد ، باید الگوی ایندکس را ایجاد کرده و داشبورد را درون Kibana بارگذاری کنید.
با لود داشبورد ، Filebeat برای بررسی اطلاعات نسخه به Elasticsearch متصل می شود. برای لود داشبورد هنگام فعال شدن Logstash ، باید خروجی Logstash را غیرفعال کنید و خروجی Elasticsearch را فعال کنید:
⦁ $ sudo filebeat setup -E output.logstash.enabled=false -E output.elasticsearch.hosts=[‘localhost:9200’] -E setup.kibana.host=localhost:5601

باید خروجی مشابه این دریافت کنید:
Output
Overwriting ILM policy is disabled. Set `setup.ilm.overwrite:true` for enabling.

Index setup finished.
Loading dashboards (Kibana must be running and reachable)
Loaded dashboards
Setting up ML using setup –machine-learning is going to be removed in 8.0.0. Please use the ML app instead.
See more: https://www.elastic.co/guide/en/elastic-stack-overview/current/xpack-ml.html
Loaded machine learning job configurations
Loaded Ingest pipelines

اکنون می توانید Filebeat را شروع و فعال کنید:
⦁ $ sudo systemctl start filebeat

⦁ $ sudo systemctl enable filebeat

اگر به طور صحیح Elastic Stack خود تنظیم کرده باشید ، Filebeat شروع به ارسال syslog و ورودهای مجاز به Logstash می کند ، و سپس این داده ها را در Elasticsearch لود می کند.
برای تأیید اینکه Elasticsearch در واقع این داده ها را دریافت می کند ، شاخص Filebeat را با این دستور پرس و جو کنید:
⦁ $ curl -XGET ‘http://localhost:9200/filebeat-*/_search?pretty’

باید خروجی مشابه این دریافت کنید:
Output

{
{
“took” : 4,
“timed_out” : false,
“_shards” : {
“total” : 2,
“successful” : 2,
“skipped” : 0,
“failed” : 0
},
“hits” : {
“total” : {
“value” : 4040,
“relation” : “eq”
},
“max_score” : 1.0,
“hits” : [
{
“_index” : “filebeat-7.7.1-2020.06.04”,
“_type” : “_doc”,
“_id” : “FiZLgXIB75I8Lxc9ewIH”,
“_score” : 1.0,
“_source” : {
“cloud” : {
“provider” : “vpsgol”,
“instance” : {
“id” : “194878454”
},
“region” : “nyc1”
},
“@timestamp” : “2020-06-04T21:45:03.995Z”,
“agent” : {
“version” : “7.7.1”,
“type” : “filebeat”,
“ephemeral_id” : “cbcefb9a-8d15-4ce4-bad4-962a80371ec0”,
“hostname” : “june-ubuntu-20-04-elasticstack”,
“id” : “fbd5956f-12ab-4227-9782-f8f1a19b7f32”
},

اگر خروجی شما جمع کل 0 را نشان می دهد ، Elasticsearch در زیر ایندکسی که جستجو کرده اید ، هیچ فایلی را لود نمی کند ، و شما نیاز به بررسی تنظیمات خود برای رفع خطاها دارید. اگر خروجی مورد انتظار را دریافت کردید ، به مرحله بعدی بروید ، که در آن خواهیم دید که چگونه می توان از طریق داشبورد Kibana پیش رفت.
مرحله 5 – جستجو در داشبورد Kibana
بیایید به رابط وب Kibana که قبلاً نصب کردیم برگردیم.
در یک مرورگر وب ، به FQDN یا آدرس IP عمومی سرور Elastic Stack بروید. اگر بخش فعلی شما دچار اختلال شده است ، باید اعتبار خود را که در مرحله 2 تعریف کردید ، دوباره وارد کنید. پس از ورود به سیستم ، باید صفحه اصلی Kibana را دریافت کنید:

بر روی لینک Discover  در نوار پیمایش در سمت چپ کلیک کنید (برای دیدن موارد منوی ناوبری باید روی نماد Expand در پایین سمت چپ کلیک کنید). در صفحه Discover ، الگوی شاخص از پیش تعریف شده filebeat- * را انتخاب کنید تا داده های Filebeat را ببینید. به طور پیش فرض ، همه اطلاعات گزارش را در طول 15 دقیقه گذشته به شما نشان می دهد. یک هیستوگرام با گزارش ورود به سیستم و برخی از پیامهای ورود را در زیر مشاهده خواهید کرد:

در اینجا می توانید ورودهای خود را جستجو و مرور کنید و همچنین داشبورد خود را به صورت دلخواه تنظیم کنید. اگرچه در این مرحله موارد زیادی وجود نخواهد داشت زیرا شما فقط syslogs را از سرور Elastic Stack خود دریافت می کنید.
برای رفتن به صفحه داشبورد و جستجوی داشبورد Filebeat System از پنل سمت چپ استفاده کنید. پس از آنجا ، می توانید داشبورد نمونه ای را که با ماژول سیستم Filebeat همراه است ، انتخاب کنید.
به عنوان مثال ، می توانید آمار دقیق را بر اساس پیام های syslog خود مشاهده کنید:

همچنین می توانید مشاهده کنید که کدام کاربران و چه موقع از دستور sudo استفاده کرده اند:

Kibana بسیاری از ویژگی های دیگر ، مانند نمودار و فیلتر را دارد ، بنابراین به راحتی در آن جستجو کنید.
نتیجه
در این آموزش ، نحوه نصب و پیکربندی Elastic Stack را برای جمع آوری و تحلیل ورودهای مربوط به سیستم آموخته اید. به یاد داشته باشید که می توانید تقریباً هر نوع ورود به سیستم یا داده های ایندکس شده را با استفاده از Beats به Logstash برای Logstash ارسال کنید ، اما اگر با فیلتر Logstash تجزیه و ساختار بندی شود ، داده ها حتی مفیدتر خواهند شد ، زیرا این داده ها را به یک قالب پایدار تبدیل می کند که به راحتی توسط Elasticsearch قابل خواندن است.

برچسب‌ها:, ,