آموزش نصب Elasticsearch

خوش اومدید به مقاله آموزش نصب Elasticsearch از مجموعه آموزشی ابرآس
Elastic Stack – که به عنوان ELK Stack نیز شناخته می شود – شامل مجموعهای از نرمافزار اوپن سورس تولید شده توسط Elastic است که به شما امکان جستجو، تجزیه و تحلیل و بصری سازی گزارشهای تولید شده از هر منبعی را در هر قالبی را میدهد، عملی که به عنوان ثبت متمرکز شناخته میشود. ثبت متمرکز میتواند هنگام تلاش برای شناسایی مشکلات سرورها یا اپلیکیشن های شما مفید باشد، چرا که به شما امکان جستجو همه گزارشهای خود را در یک مکان می دهد. همچنین یکی دیگه از مزیت های این سیستم قدرتمند فراهم آوردن امکان اینکه مسائلی را که چندین سرور را در بر میگیرند با مرتبط کردن گزارشهای آنها در یک بازه زمانی خاص شناسایی کنید.
استک الاستیک چهار جزء اصلی دارد:
- Elasticsearch: یک موتور جستجوی RESTful توزیع شده که تمام داده های جمع آوری شده را ذخیره می کند.
- Logstash: جزء پردازش داده های Elastic Stack که داده های دریافتی را به Elasticsearch ارسال می کند.
- Kibana: یک رابط وب برای جستجو و بصری سازی گزارشها.
- Beats: فرستنده داده های سبک و تک منظوره که می توانند داده ها را از صدها یا هزاران دستگاه به Logstash یا Elasticsearch ارسال کنند.
در مقاله آموزش نصب Elasticsearch، استک الاستیک را روی سرور اوبونتو 22.04 نصب خواهید کرد. شما یاد خواهید گرفت که چگونه تمام اجزای Elastic Stack را نصب کنید – از جمله Filebeat، بیتی(Beat) که برای ارسال و متمرکز کردن گزارشها و فایلها استفاده میشود – و آنها را برای جمعآوری و بصری سازی گزارشهای سیستم پیکربندی کنید. علاوه بر این، از آنجایی که Kibana معمولاً فقط در لوکال هاست در دسترس است، ما از Nginx برای پروکسی آن استفاده می کنیم تا از طریق یک مرورگر وب قابل دسترسی باشد. ما تمام این اجزا را روی یک سرور نصب می کنیم که از آن به عنوان سرور Elastic Stack خود یاد می کنیم.
راهنمای مقاله
Toggleنیازمندی های ادامه مقاله
- یک سرور اوبونتو 22.04 با 4 گیگابایت رم و 2 سی پی یو که با کاربر sudo غیر روت راه اندازی شده است. برای آموزش نصب Elasticsearch، ما با حداقل مقدار سی پی یو و رم مورد نیاز برای اجرای Elasticsearch کار خواهیم کرد. توجه داشته باشید که مقدار سی پی یو، رم و فضای ذخیرهسازی مورد نیاز سرور Elasticsearch شما بستگی به حجم گزارشهایی دارد که انتظار دارید.
- OpenJDK 11 نصب شده باشد.
- Nginx روی سرور شما نصب شده باشد که در ادامه مقاله آموزش نصب Elasticsearch به عنوان یک پروکسی برای Kibana پیکربندی خواهیم کرد.
علاوه بر این، از آنجایی که Elastic Stack برای دسترسی به اطلاعات ارزشمندی درباره سرور شما استفاده میشود که نمیخواهید کاربران غیرمجاز به آنها دسترسی داشته باشند، مهم است که سرور خود را با نصب یک گواهی TLS/SSL ایمن نگه دارید. این اختیاری است اما به شدت توصیه می شود.
نصب و راه اندازی Elasticsearch
اجزای Elasticsearch در ریپازیتوری پکیج پیش فرض اوبونتو در دسترس نیستند. با این حال، پس از افزودن ریپازیتوری پکیج Elastic، می توان آنها را با APT نصب کرد.
همه پکیج ها با کلید امضای Elasticsearch امضا می شوند تا از سیستم شما در برابر جعل پکیج محافظت شود. پکیج هایی که با استفاده از کلید احراز هویت شده اند، توسط مدیر پکیج (APT) شما قابل اعتماد تلقی می شوند. در این مرحله، کلید عمومی GPG Elasticsearch را وارد کرده و ریپازیتوری Elastic را برای نصب Elasticsearch اضافه میکنید.
شما همچنین می تونید از طریق داکر اقدام به نصب استک الاستیک اقدام کنیند.
آموزش نصب Elasticsearch
برای شروع، از cURL، ابزار خط فرمان برای انتقال داده ها با URL ها، برای وارد کردن کلید GPG عمومی Elasticsearch به APT استفاده کنید. توجه داشته باشید که ما از آرگومانهای fsSL- استفاده میکنیم تا همه پیشرفتها و خطاهای احتمالی را خاموش کنیم (بهجز خرابی سرور) و به cURL اجازه میدهیم در صورت تغییر مسیر، در یک مکان جدید درخواست ارسال کند. خروجی دستور curl را به دستور gpg –dearmor وارد کنید، که کلید را به قالبی تبدیل می کند که apt می تواند از آن برای تأیید پکیج های دانلود شده استفاده کند.
curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch |sudo gpg --dearmor -o /usr/share/keyrings/elastic.gpg
سپس، ریپازیتوری Elastic را به فهرست sources.list.d اضافه کنید، جایی که APT منابع جدید را جستجو می کند.
echo "deb [signed-by=/usr/share/keyrings/elastic.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-8.x.list
در مرحله بعد، لیست های پکیج خود را به روز کنید تا APT منبع جدید Elastic را بخواند.
sudo apt update
با کمک دستور زیر میتوانید اقدام به نصب Elasticsearch نمایید.
sudo apt install elasticsearch
Elasticsearch اکنون نصب شده و آماده پیکربندی است. از ویرایشگر متن دلخواه خود برای ویرایش فایل پیکربندی اصلی elasticsearch.yml استفاده کنید.
sudo nano /etc/elasticsearch/elasticsearch.yml
فایل elasticsearch.yml گزینه های پیکربندی برای کلاستر، سرور، مسیرها، حافظه، شبکه، کشف و دروازه شما را فراهم می کند. اکثر این گزینه ها در فایل از قبل پیکربندی شده اند اما شما می توانید آنها را بر اساس نیاز خود تغییر دهید. برای اهداف نمایش پیکربندی تک سرور، ما فقط تنظیمات میزبان شبکه را تنظیم می کنیم.
Elasticsearch به ترافیک از همه جا در پورت 9200 گوش می دهد. شما می خواهید دسترسی خارجی را به سرور Elasticsearch خود محدود کنید تا از خواندن داده های شما توسط افراد خارجی جلوگیری کنید یا کلاستر Elasticsearch شما را از طریق [REST API] آن خاموش کنند.
### /etc/elasticsearch/elasticsearch.yml network.host: localhost
ما در مقاله آموزش نصب Elasticsearch, لوکال هاست (localhost) را مشخص کرده ایم تا Elasticsearch به تمام اینترفیس ها و IP های موجود گوش دهد. اگر می خواهید الاستیک را فقط در یک اینترفیس خاص گوش کند، می توانید IP آن را به جای localhost مشخص کنید. elasticsearch.yml را ذخیره کرده و ببندید.
سرویس Elasticsearch را با systemctl شروع کنید. برای راه اندازی به Elasticsearch چند لحظه فرصت دهید. در غیر این صورت، ممکن است با خطاهایی مبنی بر عدم امکان اتصال مواجه شوید.
sudo systemctl start elasticsearch
در مرحله بعد، دستور زیر را اجرا کنید تا Elasticsearch هر بار که سرور شما بوت می شود، راه اندازی شود.
sudo systemctl enable elasticsearch
نصب و راه اندازی Kibana
طبق مستندات رسمی، کیبانا را فقط پس از نصب Elasticsearch باید نصب کنید. نصب به این ترتیب تضمین می کند که اجزایی که هر محصول به آنها وابسته است به درستی در جای خود قرار دارند.
sudo apt install kibana sudo systemctl enable kibana sudo systemctl start kibana
از آنجایی که کیبانا طوری پیکربندی شده است که فقط در لوکال هاست گوش دهد، باید یک پروکسی راه اندازی کنیم تا اجازه دسترسی خارجی به آن را بدهیم. ما برای این منظور از Nginx استفاده خواهیم کرد که قبلاً باید روی سرور شما نصب شده باشد.
ابتدا از دستور openssl برای ایجاد یک کاربر مدیریتی Kibana استفاده کنید که از آن برای دسترسی به رابط وب کیبانا استفاده خواهید کرد. به عنوان مثال، نام این حساب را abrus-admin میگذاریم، اما برای اطمینان از امنیت بیشتر، توصیه میکنیم نامی غیر استاندارد برای کاربر خود انتخاب کنید که حدس زدن آن دشوار باشد.
برای ادامه مقاله آموزش نصب Elasticsearch از مجموعه ابرآس نیازه که وب سرور Nginx نصب باشد, برای اینکار می تونید از دستور زیر کمک بگیرید.
sudo apt install nginx -y
دستور زیر کاربر و رمز عبور کیبانا را ایجاد کرده و در فایل htpasswd.users ذخیره می کند. شما Nginx را طوری پیکربندی میکنید که به این نام کاربری و رمز عبور نیاز داشته باشد برای اینکار:
echo "abrus-admin:`openssl passwd -apr1`" | sudo tee -a /etc/nginx/htpasswd.users
در مرحله بعد رمز عبور را وارد کنید و آن را تأیید کنید. این اطلاعات ورودی را به خاطر بسپارید، چرا که برای دسترسی به رابط وب کیبانا به آن نیاز دارید.
سپس یک فایل بلوک سرور Nginx ایجاد می کنیم. به عنوان مثال، ما به این فایل با عنوان abrus_domain اشاره می کنیم، اگرچه ممکن است برای شما مفید باشد که نامی مناسب به فایل خود بدهید. به عنوان مثال، اگر شما یک رکورد FQDN و DNS برای این سرور تنظیم کرده اید، می توانید این فایل را به نام FQDN خود نام گذاری کنید.
sudo nano /etc/nginx/sites-available/abrus_domain
بلوک کد زیر را به فایل اضافه کنید، حتما abrus_domain را برای مطابقت با FQDN یا آدرس IP عمومی سرور خود به روز کنید. این کد, Nginx را پیکربندی می کند تا ترافیک HTTP سرور شما را به برنامه Kibana هدایت کند که در localhost:5601 گوش می دهد. علاوه بر این، Nginx را برای خواندن فایل htpasswd.users پیکربندی می کند و نیاز به احراز هویت اولیه دارد.
server { listen 80; server_name abrus_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; } }
وقتی کارتان تمام شد، فایل را ذخیره و ببندید.
در مرحله بعد، پیکربندی جدید را با ایجاد یک پیوند نمادین (symbolic link) به دایرکتوری sites-enabled فعال کنید. اگر قبلاً یک فایل بلوک سرور با همین نام در پیش نیاز Nginx ایجاد کرده اید، نیازی به اجرای این دستور ندارید.
sudo ln -s /etc/nginx/sites-available/abrus_domain /etc/nginx/sites-enabled/abrus_domain
سپس پیکربندی انجام شده را برای خطاها بررسی کنید:
sudo nginx -t
اگر خطایی در خروجی شما گزارش شد، به عقب برگردید و دوباره بررسی کنید که محتوایی که در فایل پیکربندی خود قرار داده اید به درستی اضافه شده است. هنگامی که سینتکس در خروجی اوکی است، ادامه دهید و سرویس Nginx را مجددا راه اندازی کنید.
sudo systemctl reload nginx
اگر فایروال سیستم عامل شما فعال است با دستور زیر ترافیک وب را مجاز کنید.
sudo ufw allow 'Nginx Full'
Kibana اکنون از طریق FQDN یا آدرس IP عمومی سرور Elastic Stack شما قابل دسترسی است. میتوانید صفحه وضعیت سرور کیبانا را با پیمایش به آدرس زیر و وارد کردن اعتبار ورود خود در صورت درخواست بررسی کنید.
http://abrus_domain/status
نصب و راه اندازی Logstash
اگرچه ممکن است Beats داده ها را مستقیماً به پایگاه داده Elasticsearch ارسال کند، استفاده از Logstash برای پردازش داده ها معمول است. این به شما امکان انعطاف پذیری بیشتری را برای جمع آوری داده ها از منابع مختلف، تبدیل آن به یک قالب مشترک و صادرات آن به پایگاه داده دیگر می دهد.
برای نصب Logstash می توان از دستور زیر کمک گرفت.
sudo apt install logstash -y
پس از نصب Logstash، می توانید به پیکربندی آن بروید. فایل های پیکربندی Logstash در پوشه /etc/logstash/conf.d/ قرار دارند. برای اطلاعات بیشتر در مورد نحو پیکربندی، می توانید مرجع پیکربندی که Elastic ارائه می دهد را بررسی کنید.
همانطور که فایل را پیکربندی میکنید، مفید است که Logstash را بهعنوان خط لولهای در نظر بگیرید که دادهها را از یک طرف دریافت میکند، آنها را به روشی پردازش میکند و به مقصد میفرستد (در این مورد، مقصد Elasticsearch است). یک خط لوله Logstash دارای دو عنصر ضروری، ورودی و خروجی، و یک عنصر اختیاری، فیلتر است. پلاگین های ورودی داده ها را از یک منبع مصرف می کنند، پلاگین های فیلتر داده ها را پردازش می کنند و افزونه های خروجی داده ها را به مقصد می نویسند.
یک فایل پیکربندی به نام beats-input.conf ایجاد کنید که در آن ورودی Filebeat خود را تنظیم کنید.
sudo nano /etc/logstash/conf.d/beats-input.conf
پیکربندی ورودی زیر را وارد کنید که این ورودی Beat را مشخص می کند که به پورت TCP 5044 گوش می دهد.
input { beats { port => 5044 } }
با وارد کردن پیکربندی خروجی اساساً، این خروجی Logstash را پیکربندی میکند تا دادههای Beats را در Elasticsearch که در localhost:9200 اجرا میشود، در فهرستی به نام Beat مورد استفاده ذخیره کند. Beat مورد استفاده در این آموزش Filebeat است.
sudo nano /etc/logstash/conf.d/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}" } } }
فایل مربوطه را ذخیره و ببندید.
برای تست تنظیمات مربوطه به logstsh می توان از دستور زیر کمک گرفت.
sudo -u logstash /usr/share/logstash/bin/logstash --path.settings /etc/logstash -t
اگر اروری را در خروجی خود نمی بینید، خطاهای ذکر شده در خروجی خود را بررسی کنید و پیکربندی خود را برای اصلاح آنها به روز کنید. توجه داشته باشید که اخطارهایی از OpenJDK دریافت خواهید کرد، اما نباید مشکلی ایجاد کنند و می توان آنها را نادیده گرفت.
sudo systemctl start logstash sudo systemctl enable logstash
صحبت پایانی:
ممنون که تا اینجای مقاله آموزش نصب Elasticsearch از مجموعه آموزشی ابراس همراهمون بودی.
می دونستی با اشتراک گذاری این مقاله می تونی از ما حمایت کنی!