نصب اسپلانک بصورت پیشرفته و طبق استاندارد
صفحه اول نصب اسپلانک بصورت پیشرفته و طبق استاندارد Splunk Advanced Installation with Standard Structure سلام! درسته، راه اندازی اسپلانک خیلی ساده است، ولی آیا
Splunk Advanced Installation with Standard Structure
سلام!
درسته، راه اندازی اسپلانک خیلی ساده است، ولی آیا این نصب ساده که انجام میدید استاندارد هست؟ چقدر در آینده بادوام خواهد بود؟
حتما براتون پیش اومده که وقتی App و Addon و یا بخشهای مختلف اسپلانک را که وارد کردید نصب کردید کانفیگ کردید، اما باز هم اسپلانک به درستی کار نکرده.
توی این مطلب میخوام سعی کنم تجربه خودم در خصوص نصب Splunk و راه اندازی و تنظیم Splunk را به اشتراک بذارم.
نکته: این مطلب به مرور به روز خواهد شد.
بخش اول: پیش نیازهای لینوکس برای نصب اسپلانک
در خصوص نصب اسپلانک روی لینوکس، توسط توسعه دهندگان اسپلانک در فروم های آموزش و پرسش پاسخ اسپلانک، پیشنهاداتی ارائه شده، که در این بخش در موردشون صحبت میکنیم.
قدم اول) پارتیشن بندی اسپلانک / Splunk Partitioning
بنا به استفاده از سرورها، از پارتیشن ها و حافظه های مختلف استفاده میشود. بطور مثال برای سیستم عامل از SSD، برای پردازش های سریع روی لاگ از SSD و دیسک های سریع و برای آرشیو کردن از Tape استفاده میشود. همچنین مفهومی به نام File System وجود دارد که یکی از کاربردهاش برای فردی که در حال راه اندازی سرویس است، تناسب فایل سیستم با کاربردی سرویس مورد نظر آن Admin میباشد. این موضوع در سیستم عامل های NIX (لینوکس و یونیکس) چشمگیر بوده چرا که با کمی جستجو در موضوع سرویستان میتوانید بهترین فایل سیستم را برای آن انتخاب کنید.
البته که در حال حاضر EXT4 به اندازه کافی قوی و کامل است اما چنانچه که باز هم حساس هستید میتوانید از فایل سیستم های دیگر استفاده کنید.
موضوع بعدی LVM (Logical Volume Manager) می باشد، خیلی خلاصه بگم، چنانچه که فکر میکنید ممکن است در آینده نیاز به Extend کردن فضای دیسکتان دارید، حتما LVM را تیک بزنید و انتخاب کنید.
در آخر در مبحث پارتیشن بندی، باید بدانید که نسبت به سیستم عاملی که انتخاب کردید (CentOS، Debian، Ubuntu و…) چه حجمی را برای مسیرهای boot و swap انتخاب کنید. برای این کار میتونید جستجو کنید یا از فرمول های زیر استفاده کنید.
یکی از الگوهای زیر را انتخاب نمایید:
پیشنهاد خودم خیلی ساده است:
حجم 500 مگابایت برای /boot از نوع GPT در نظر بگیرید.
حجم 2 برابر RAM که به سرور میدهید، برای Swap از نوع GPT در نظر بگیرید.
همچنین برای اینکه احیانا برای سیستم عاملتون مشکلی پیش نیاد (از لحاظ کمبود فضا)، میتوانید برای مسیرهایی مثلا /tmp هم پارتیشن مجزا در نظر بگیرید.
برای سیستم عامل های اوبانتو پیشنهاد شده است که:
حجم حداقل 12 گیگابایت برای / از نوع Primary با فایل سیستم EXT4 در نظر بگیرید.
حجم حداقل 750 مگابایت برای Swap از نوع Logical در نظر بگیرید.
برای سیستم عامل های Redhat و زیرشاخه های آن، پیشنهاد شده است که:
اگه حافظه RAM که به سرور میدهید کمتر از 2 گیگابایت است، 2 برابر RAM برای Swap در نظر بگیرید، همچنین اگر میخاهید از Hibernate هم استفاده کنید این مقدار را 3 برابر RAM در نظر بگیرید.
اگه حافظه RAM که به سرور میدهید 2 الی 8 گیگابایت است، به اندازه RAM برای Swap در نظر بگیرید، همچنین اگر میخاهید از Hibernate هم استفاده کنید این مقدار را 2 برابر RAM در نظر بگیرید.
اگه حافظه RAM که به سرور میدهید 8 الی 64 گیگابایت است، 4 گیگابایت برای Swap در نظر بگیرید، همچنین اگر میخاهید از Hibernate هم استفاده کنید این مقدار را 1.5 برابر RAM در نظر بگیرید.
اگه حافظه RAM که به سرور میدهید بیش از 64 گیگابایت است، 4 گیگابایت برای Swap در نظر بگیرید، و پیشنهاد نمیشود که قابلیت Hibernate را فعال کنید.
برای /boot از فایل سیستم های EX2، EX3 و EXT4 با حجم 250 مگابایت استفاده کنید.
برای مسیر /var از 4 گیگابایت حافظه از نوع LVM استفاده کنید.
و مسیر /home را نیز از / جدا کنید و هر دو را LVM در نظر بگیرید.
برای سیستم عامل های Fedora پیشنهاد شده است که:
برای /boot از 100 مگابایت حافظه با فایل سیستم EXT3 انتخاب گردد.
برای Swap حجم 2 گیگابایت انتخاب گردد.
برای /var حجم 4 گیگابایت از نوع LVM و با فایل سیستم EXT4 در نظر گرفته شود.
مسیر /home از / جدا بوده و هر کدام از نوع LVM با فایل سیستم EXT4 باشند.
یکی از سایت های فنی لینوکس نیز پیشنهاد زیر را ارائه میکند:
حجم حداقل 25 گیگابایت را برای / در نظر بگیرید.
حجم 4 گیگابایت را برای مسیر /var در نظر بگیرید.
حجم 2 گیگابایت را برای /tmp در نظر بگیرید.
حجمی معادل 2 برابر حافظه RAM سرورتان را برای Swap در نظر بگیرید.
/opt/splunk/var/lib/splunk
حجم سوم با نام LV2 برای مسیر دیتابیس های Cold اسپلانک با فایل سیستم EXT4 بسازید. مسیر آن به انتخاب خودتان اما پیشنهاد میشود که مسیر زیر را انتخاب کنید و به یاد بسپارید (چون برای ساخت ایندکس ها باید بصورت دستی وارد کنید)/opt/splunk/var/lib/splunk/cold/
همین مراحل را برای سرورهای Forwarder و Cluster Master و Search Head و… تکرار کنید، با این تفاوت که دیگر نیازی به LV1 و LV2 ندارید.مثلا در پارتیشن بندی که در تصاویر بالا میبینید، برای سرورهای Indexer سه دیسک مختلف با سرعت های مختلف مشخص شده است.
دیسک اول از نوع SSD برای Boot و Swap، و یک LVM برای مسیر /
دیسک دوم از نوع SSD اما RAID شده برای مسیر دیتابیس های اسپلانک
دیسک سوم از نوع HDD با سرعت مناسب برای مسیر دلخواهی که میخواهیم فاز Cold اسپلانک در آنجا نگهداری شود.
برای سایر سرورها نیز به نسبت سرویس و نیازشان پارتیشن بندی مناسب انجام می دهیم.
برای استفاده، نگهداری و کار با لینوکس میتوانید از ابزارهای از پیش نصب شده بهره ببرید. اما پیشنهاد میدم ابزارها و برنامه های زیر را در تمام سرورهای اسپلانکتون نصب کنید.
شیوه نصب برای سرورهای خانواده Debian:
ابتدا sudo apt-get update را بزنید تا سرور شما کاتالوگ های جدید را دریافت کند.
سپس نصب کنید، مثلا برای htop بزنید: sudo apt-get install htop
نام پکیج | توضیح |
---|---|
htop | همان برنامه top با امکانات بیشتر و ظاهر گرافیکی تر میباشد، لیست پروسه های در حال اجرا با جزئیات را ارائه میدهد. مثلا: چه پروسه ای CPU و RAM سرور را اشغال کرده؟ |
tcpdump | بطور خلاصه برای اینکه متوجه بشوید “آیا Packet به دست سرور شما میرسد یا از سرور شما خارج میشود؟” و “محتوای آن چیست” به شما کمک میکند. ابزاری بسیار قدرتمند که پیشنهاد میشود حتما در مورد آن یادگیری زیادی داشته باشید. مثلا: آیا سرور من هیچ پکتی از لاگ های سرور دیتابیس دریافت میکند؟ |
iptraf-ng | نسخه جدید iptraf میباشد که ایرادات نسخه قبلی را برطرف کرده و تحت نام جدید منتشر شده است. استفاده از این ابزار به شما امکان رصد کردن ترافیک ورودی و خروجی را میدهد. مثلا: سرور من در حال حاضر درحال دریافت از چه سرورهایی با چه پورت ها و پروتکل هایی است؟ |
nload | پهنای باند ترافیک شبکه ای سرور را بصورت گراف نمایش میدهد. مثلا: چقدر روی سرور بار ترافیکی داریم؟ |
nmon | برنامه ای کامل از رصد اجزای سرور از جمله دیسک، پردازنده و… که میتواند جایگزین برنامه های دیگر نیز باشد. مثلا: روی کدام دیسک های سرور بار وجود دارد؟ |
nano | برنامه nano یک ویرایشگر متن ساده است. ممکن است روی برخی از سرورها نصب نباشد. اگر نیاز به استفاده از ویرایشگرهای قدرتمندی مانند vi ندارید و برنامه nano ویرایشگر ساده با کاربری سریع میباشد. مثلا: برای ویرایش فایل های کانفیگ و یا ساختن فایل های کانفیگ جدید |
lsof | برنامه ای جهت نمایش فایل های باز (در حال پردازش) که با سویچ های زیادی که دارد در عیب یابی کندی سرور به شما کمک میکند. مثلا: چه فایلی در کجاها باز است (در کدام منابع در حال پردازش است؟) و چه ارتباط شبکه ای در حال اجرایی دارد؟ |
ss | ارتباطات شبکه ای سرور شما را نمایش میدهد. مثلا: از چه آدرسی، با چه پورتی، به چه آدرسی و چه پورتی تحت چه پروتکلی ارتباط برقرار شده است؟ آیا پورت فلان (مثلا پورت مربوط به دریافت لاگ) باز است؟ آیا ارتباط شبکه ای هم با آن پورت برقرار شده است؟ |
netstat | همانند برنامه lsof و ss میباشد. در بین این سه ابزار هر کدام که برای شما کارآمدتر است نصب کنید. |
nmap | نصب برنامه nmap فقط برای عیب یابی از طریق کامندهای اسکن آن و ذخیره کردن گزارش در این لیست آمده است. میتوانید از ابزارهای دیگر که خودتان میشناسید نیز استفاده کنید. مثلا: لیست وب سرورهایی که قابل دسترس هستند را لیست کن تا با لیست سنسورهایم مقایسه کنم! |
nc | برنامه netcat برای آن پیشنهاد شده است که چنانچه نیاز به دانش برای باز کردن پورتی روی سرورتان ندارید، با این برنامه به سادگی یک پورت TCP یا UDP باز کنید. مثلا: تست موقت و مقایسه بار ترافیکی دریافتی روی TCP و یا UDP، جهت عیب یابی و یا تصمیم گیری بهتر! |
wget | در این برنامه میتوانید محتوایی را از شبکه وب دانلود نمایید. مثلا: برای دانلود کردن فایل نصب اسپلانک از روی سایت Splunk.com و یا سایت های دیگر! |
توجه داشته باشید که برخی از این برنامه ها توانایی پوشش قابلیت بقیه برنامه ها را داشته باشند و نیاز نیست تمامی برنامه ها نصب شوند. همچنین این برنامه ها برای من کاربردی هستند، پس اگر خودتان ابزارهای مناسب تری میشناسید، میتوانید از آنها استفاده کنید.
چنانچه که در حین نصب اوبانتو، SSH را نصب نکرده باشید، به ترتیب مراحل زیر را انجام بدهید.
ابتدا OpenSSH-Server را نصب کنید:
sudo apt install openssh-server
سپس فایل کانفیگ آن را باز کنید:
sudo nano /etc/ssh/sshd_config
دنبال خطی بگردید که PermitRootLogin نوشته شده باشد. آن را از کانت در بیاورید (علامت # را از ابتدای آن پاک کنید) و در ادامه ی آن yes بنویسید:
PermitRootLogin yes
سپس سرویس ssh را فعال کنید و یا سرور لینوکس تان را reboot نمایید.
(تنظیمات امن تری برای ssh نیز میباشد که در این مقاله فرصت باز کردن آن نیست).
اگر از تمام اهمیت های “دقیق بودن زمان سرور” گذر کنیم، برای ارسال و دریافت لاگ چنانچه که زمان ها دقیق نباشند و یا Timezone و Daylight در آنها رعایت نشده باشد، باعث بهم ریختن تقدم و تاخر لاگ ها شده و نه تنها اطلاعات ناقص و بهم ریخته و حتی اشتباه خواهد شد، بلکه در پروسه Correlation و Investigation نیز به مشکل بزرگی خواهید خورد و مجبور خواهید شد که خیلی از مراحل را بصورت دستی انجام بدهید و یا زمان زیادی برای تبدیل و ترجمه زمان ها بگذارید.
پس پیشنهاد میشود حداقل هم روی سرورهای SIEM و هم روی سنسورها، NTP تنظیم گردد.
مراحل زیر جهت فعالسازی و تنظیم کردن NTP روی سرور Ubuntu میباشد اما با کمی مطالعه و جستجو روی تمامی سیستم عامل ها و دارایی ها میتوانید NTP را تنظیم نمایید.
اول: تنظیم کردن Timezone روی ایران:
sudo timedatectl set-timezone Asia/Tehran
دوم: نصب برنامه جهت معرفی سرورهای دلخواه بعنوان NTP Server:
sudo apt-get install ntpdate
سوم: وارد کردن سرورهای مورد نظر جهت NTP Server و اسم گذاشتن روی آن:
ابتدا فایل hosts را با برنامه nano یا vi باز کنید. سپس در هر خط اسم و آدرس NTP Serverهای مورد نظرتان را وارد کنید. فایل را ذخیره کرده و از ویرایشگر خارج بشوید و با دستورات ntpdate یکی یکی سرورها را معرفی نمایید.
در مثال زیر سه سرور داخلی بعنوان NTP Server معرفی شده است:
sudo nano /etc/hosts
192.168.1.11 ntp1
192.168.1.12 ntp2
192.168.1.13 ntp3
sudo ntpdate ntp1
sudo ntpdate ntp2
sudo ntpdate ntp3
چهارم: غیرفعال کردن Timesync
sudo timedatectl set-ntp off
پنجم: نصب و تنظیم کردن NTP Client جهت جایگزین کردن منبع زمان
ابتدا برنامه NTP Client را نصب کرده، سپس فایل کانفیگ آن را باز کرده و سرورهای NTPتان را وارد کرده و در نهایت با ذخیره کردن فایل کانفیگ سرویسش را Restart کنید.
sudo apt install ntp
sudo nano /etc/ntp.conf
server ntp1 prefer iburst
server ntp2 prefer iburst
server ntp3 prefer iburst
sudo systemctl restart ntp
ششم: چک کردن صحت کارهایی که انجام دادیم:
این کامند را اجرا کنید، تا یکی یکی زمان را از سرورها بپرسد، نسبت به نتیجه متوجه خواهید شد که آیا سرورهای NTP که وارد کردید، سرویس ارائه میدهند؟ آیا کانفیگ ها را به درستی انجام داده اید؟
ntpq -p
در این مرحله نیاز هست که تمام پورت ها (یا حتی آدرس دارایی ها) که مربوط به هر سرورتان است را در دست داشته باشید تا بتوانید یک تنظیم مناسب برای فایروال سرورتان انجام دهید.
بطور مثال میتوانید مشخص کنید که دقیقا چه آدرس های IP بتوانند به سرور SSH بزنند و یا وب اسپلانک را باز کنند. در مثال زیر علاوه بر NTP و SSH، پورت های پیشفرض اسپلانک و پورت Syslog هم برای TCP و هم برای UDP بعنوان Allow مشخص شده اند. بنابراین اگر پورت های پیشفرض اسپلانک را در فاز طراحی ساختار اسپلانکتان تغییر داده اید، نیاز است در تنظیم کردن فایروال هر سرورتان به آنها دقت نمایید.
همچنین، پیشنهاد میگردد که IPv6 در سرورتان فعال و در فایروال نیز لحاظ گردد چرا که برخی از ماژول ها و پایتون های اسپلانک هم با IPv4 و هم با IPv6 کار میکنند.
در ابتدا فایل کانفیگ فایروال ufw را باز کرده و وضعیت IPv6 آن را مشاهده و در صورت نیاز به yes تغییر دهید و بعد از آن یکی یکی رول های مورد نظر خود را وارد کرده، وضعیت پیشفرض را هم روی Deny Incoming و Allow Outgoing گذاشته و در مرحله آخر فایروال را فعال کنید.
توجه داشته باشید که چنانچه که SSH را وارد نکنید و یا قبل از وارد کردن رول ها فایروال را فعال کنید دسترسی شما به سرور قطع خواهد شد و باید بصورت کنسولی به سرور وصل شوید.
sudo nano /etc/default/ufw
IPV6=yes
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ntp
sudo ufw allow ssh
sudo ufw allow 514
sudo ufw allow 514/udp
sudo ufw allow 8000
sudo ufw allow 8089
sudo ufw allow 8088
sudo ufw allow 9100
sudo ufw allow 9887
sudo ufw allow 9997
sudo ufw enable
sudo ufw reload
sudo ufw status
تنظیمات فوق برای کل نقش های اسپلانک میباشد اما چنانچه که میخواهید به ازای هر سرور کانفیگ فایروال خودش را وارد کنید، باید ابتدا نقش سرورهایتان و پورت ها (و حتی آدرس های سرورهای مرتبط) را برنامه ریزی و سپس وارد کنید.
سایت Splunk.com کشور ایران را تحریم کرده است، بنابراین شما امکان دانلود مستقیم را “بصورت عادی” ندارید.
بنابراین شما چند قدم برای به دست آوردن فایل نصب اسپلانک برای سرور لینوکس تان دارید:
اول اینکه با یک فیلترشکن وارد سایت اسپلانک شده و لینک فایل tgz آخرین نسخه را بدست بیاورید.
وارد سرورتان شده و DNSهای سرورتان را “موقتا” به دو آدرس معرفی شده توسط “شکن” تغییر بدید:
sudo nano /etc/resolv.conf
nameserver 185.51.200.2
nameserver 178.22.122.100
سپس سرویسی که کارت شبکه شما را مدیریت میکند را ری استارت کنید. مثلا اگر سرویس networkd و یا netplan است به صورت زیر ری استارت کنید:
(توجه: اگر فقط دسترسی ssh دارید، و احیانا کانفیگ اشتباهی زده باشید، امکان دارد دسترسی شما قطع بشود)
sudo systemctl restart networkd
sudo systemctl restart netplan
پیشنهاد میشود با status گرفتن از سرویس ها، یا دستورات شبکه ای دیگر از کانفیگ صحیح تان مطمئن بشوید.
sudo systemctl status networkd
sudo systemctl status netplan
حالا به مسیر دلخواهتان cd وارد شده و از طریق wget و مسیری که از Splunk.com بدست آوردید، فایل نصب با پسوند tgz را دانلود نمایید: (لینک پایین فقط یک مثال است برای ارائه الگوی استفاده و امکان دارد دیگر وجود خارجی ندارد)
wget -O splunk-8.2.3.tgz ‘https://download.splunk.com/products/splunk/releases/8.2.3/linux/splunk-8.2.3-cd0848707637-Linux-x86_64.tgz‘
برای باقی سرورها، نیاز نیست مراحل بالا را تکرار کنید، میتوانید از طریق ssh و scp فایل را به سایر سرورها منتقل نمایید.
مثلا اگر سرور فعلی آدرس 192.168.1.1 و سرور دوم آدرس 192.168.1.2 را داشته باشد، و نام یوزر mohammad باشد و فایل اسپلانک را روی سرور اول دانلود کرده باشید:
از روی سرور اول میتوانید روی سرور دوم کپی نمایید:
scp /path/to/sourcefile mohammad@192.168.1.2:/path/to/destination
یا از روی سرور دوم میتوانید از روی سرور اول فایل را بردارید:
scp mohammad@192.168.1.1:/path/to/sourcefile /path/to/destination
پس از آن با دستور زیر فایل tar را Extract کرده و عملا کار نصب را انجام بدهید:
نکته: حتما با یوزری غیر از root این کارا انجام بدهید.
sudo tar xvzf splunk.tgz -C /opt
ویژگی های SELinux (Security-Enhanced Linux) شرایطی را برای سرور شما محیا میکند که از نظر امنیتی وضعیت بسیار مناسبی را از طریق اعمال دسترسی های مناسب پیدا کند. SELinux دارای فایل کانفیگ مجزا میباشد که میتوان بصورت دستی کانفیگ مورد نظر خود را در آن قرار داد و یا با دستوراتی آن را تنظیم کرد.
چنانچه کانفیگ کردن SELinux برایتان ساده نیست، میتوانید پیرو حالت پیشفرض SELinux روی برخی لینوکس ها، آن را غیرفعال کنید.
یکی از راه های زیر را انتخاب نمایید:
چنانچه که قصد دارید SELinux را غیرفعال کنید، مسیر کانفیگ آن را باز کرده و عبارت disabled را قرار بدهید:
sudo nano /etc/selinux/config
SELINUX=disabled
و یا با دستور زیر آن را غیرفعال کنید:
sudo setenforce 0
پس از آن سرور را با دستور reboot ری استارت کرده و با دستور sestatus وضعیت آن را بررسی کنید.
چنانچه که قصد دارید SELinux فعال باشد، برای اینکه اسپلانک اجازه ی اجرا شدن و انجام پروسه هایش را داشته باشد، دستورات زیر را وارد نمایید:
chcon -c -v -R -u system_u -r object_r -t lib_t $SPLUNK_HOME/lib 2>&1 > /dev/null
اگر قدم به قدم با من پیش آمده باشید، احتمالا با خطا مواجه خواهید شد چرا که سرور اسپلانک اجرا نشده و متغیر $SPLUNK_HOME نیز در جایی تعریف نشده است، پس کافیست مسیر اسپلانک را بصورت ساده وارد کنید:
chcon -c -v -R -u system_u -r object_r -t lib_t /opt/splunk/lib 2>&1 > /dev/null
و پس از آن با وارد کردن دستور زیر (از دستورات اسپلانک) چک کردن SELinux توسط اسپلانک را غیرفعال کنید:
/opt/splunk/bin/setSplunkEnv script
export SPLUNK_IGNORE_SELINUX=1
کانفیگ ها و دستورالعمل های زیادی برای SELinux جهت اجرای پروسه های اسپلانک وجود دارد که یکی از بهترین آن ها مربوط به لینک گیت هاب زیر میباشد:
سیستم Transparent Huge Pages یا به اختصار THP جهت مدیریت حافظه لینوکس فعال شده است. اما چه مشکلی برای اسپلانک بوجود می آورد؟
فعال بودن این سیستم تقریبا در تضاد کامل با نحوه کار اسپلانک (یعنی پروسه های کوچک و موقت) بوده و همین باعث میشود که Performance اسپلانک افت شدیدی داشته باشد. همچنین ممکن است این مشکل برای لینوکس شما نیز بوجود بیاید چرا که حافظه های موقتی که توسط اسپلانک استفاده شده به سرعت آزاد نمیشوند و فرآیندی را باید سپری کنند که هم باعث بوجود آمدن فرآیندهای اضافی روی لینوکس و اختلال در استفاده بهینه اسپلانک از حافظه خواهد شد.
همچنین به گفته مستندات اسپلانک در مطالب و فروم های مختلف (مانند این مطلب / کلیک کنید) فعال بودن THP روی I/O اسپلانک تاثیر منفی میگذارد.
پس با مراحل زیر این سیستم را (چنانچه که فعال باشد) غیرفعال کنید:
ابتدا یوزر root را فعال کنید. برای اینکار دستور sudo passwd را وارد کنید. از شما چند پسورد خواسته میشود که میبایست به آنها دقت کنید. احتمالا اولین پسورد مربوط به یوزر فعلی شما میباشد و دو پسورد بعدی برای ست کردن پسورد روی یوزر root میباشد.
پس از آن با دستور sudo su به یوزر root سویچ یوزر کنید.
در این مرحله میتوانید با دستور زیر کانفیگ thp را تغییر بدهید:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
و یا میتوانید با دستورات زیر کانفیگ را با دستور تغییر دهید:
apt-get install hugepages
hugeadm –thp-never
به غول آخر، که حساسترین قدم نیز است خوش آمدید!
دستور ulimit برای نمایش دادن و تنظیم کردن محدودیت هایی است که هر لینوکس برای سیستم یا کاربر ایجاد میکند. از مزایای این محدودیت ها که بگذریم، با تعریف کوتاهی خودتان متوجه خواهید شد که کانفیگ نکردن این محدودیت ها، باعث چه مشکلاتی در اسپلانک خواهد شد.
با دستور ulimit شما میتوانید تنظیمات فعلی در خصوص محدودیت لینوکس برای باز کردن همزمان فایل ها و حتی Touch کردن فایل ها را رویت کنید.
بطور خلاصه چهار حالت کلی را نیاز است بدانید:
تنظیم System-Wide یعنی تنظیمی که برای کل سیستم (شامل لینوکس) تعریف شده است.
تنظیم User-Wide که تنظیماتی که برای کاربران تعریف شده است.
حالت Soft، حدودی است که تعریف شده اما باعث محدودیت نمیشود و مثلا در بخش هایی لاگ هایی و Noticeهایی ایجاد میکند.
حالت Hard، حدودی است که محدودیت اجرا خواهد شد و بالاتر از عدد مشخص شده، اجرای جدیدی صورت نمیگیرد. (محدود میشود)
برای مشاهده تنظیمات فعلی خود (هم برای زمان فعلی و هم بعد از اعمال تغییرات) از دستورات زیر میتوانید استفاده کنید. دستورات مشابه به یکدیگر هستند و از هر کدام که راحت تر هستید استفاده کنید.
ulimit -a
ulimit -Sn
ulimit -Hn
cat /proc/sys/fs/file-max
sysctl fs.file-max
جهت تنظیم کردن محدودیت ها، نسبت به سیستم عامل تان، و Init-Based یا Systemd-Based بودن کانفیگ مورد نظر، میتوانید از این دستورات استفاده کنید.
توجه نمایید که این دستورات صرفا برای اطلاع شما ذکر شده اما در فرآیند نصب اسپلانک از این دستورات استفاده نمیشود:
1) init-based set limits (persistence):
/etc/security/limits.conf
2) systemd-based set limits (persistence)
system-wide: /etc/systemd/system.conf
user-wide: /etc/systemd/user.conf
3) sysctl:
/etc/sysctl.conf
fs.file-max = 100000
sysctl -p
در دستورات بالا، شما تنظیمات را برای کل سیستم و در هر شرایطی تغییر خواهید داد. اما چنانچه که قصد دارید این تنظیمات فقط همراه با سرویس اسپلانک فعال گردد میتوانید آن را روی کانفیگ Startup کردن سرویس اسپلانک وارد کنید.
مزیت این کار، عدم تغییر کانفیگ برای کل سیستم در تمام شرایط است و عیب آن پروظیفه شدن سرویس اسپلانک خواهد بود.
با توجه به اینکه هنوز سرویس اسپلانک را اجرا نکرده اید، نیاز است در صورت وجود نداشتن فایل های عنوان شده، آن را بسازید و یا ابتدا مرحله نصب اسپلانک را تکمیل کرده و به این مرحله برگردید. (حتما مرحله دهم را مطالعه کنید، نکته ای در اولین اجرای سرویس وجود دارد!)
نکته: برای تغییر اعداد، در همان ضریب اعداد را تغییر دهید، مثلا 1024 را به 2000 تبدیل نکنید، به 2048 تبدیل کنید.
با توجه به فقط Init-Based بودن و یا Systemd-Based بودن لینوکس تان، از دستورات زیر جهت کانفیگ کردن Startup سرویس اسپلانک استفاده کنید.
/etc/systemd/system/Splunkd.service
LimitNOFILE=64000
LimitNPROC=16000
LimitDATA=8589934592
LimitFSIZE=infinity
TasksMax=8192
/etc/init.d/splunk
splunk_start() {
echo Starting Splunk…
ulimit -Hn 20480
ulimit -Sn 10240
“/opt/splunk/bin/splunk” start –no-prompt –answer-yes
RETVAL=$?
}
جهت بدست آوردن اعداد Ulimit، نیاز است اول از همه شما بینش کافی در خصوص ساختار اسپلانک، میزان لاگ ها و… داشته باشید. پارامترهایی تاثیرگذار عبارتند از:
پس از اطلاعات فوق، پیشنهاد میگردد با تنظیمات بالا روی حالت Soft پیش بروید و سپس لاگ های لینوکس و لاگ های اسپلانک را بررسی کنید.
چنانچه که اعداد شما کمتر از نیاز باشد سرور اسپلانک لاگ هایی واضح در خصوص محدود شدن CPU، Memory، Disk و یا File نمایش خواهد داد که متوجه خواهید شد کدام محدودیت را افزایش دهید.
چنانچه که عددهای قرار داده شده بیش از حد نیاز باشند، سرویس اسپلانک شما در سبک ترین Queryهای در حال اجرا در پس زمینه، رفته رفته سیستم شما را کند میکند به طوری که جایی برای Queryهای جدید نداشته و به کندی عمل خواهد کرد.
در اینجا به ابزارهایی که در مراحل قبلی معرفی شد مراجعه و سرور را Tune کنید.
تمام پیش نیازها انجام شد. اگر تا قبل از تنظیم کردن ulimit و Startup آن، سرویس را اجرا نکردید با یوزری غیر از root دستور زیر را اجرا کنید:
./splunk enable boot-start -user root -systemd-managed 1
پس از اولین اجرا از شما خواسته میشود که موارد قراردادی را Accept کنید. با زدن چند Enter یا Space از این متن عبور کنید و Agree کنید.
سپس از شما خواسته میشود که نام کاربری برای اسپلانک مشخص کنید، که پیشنهاد میشود آن را admin قرار دهید.
در بعضی از Appها و Addonهای قدیمی، اسکریپت ها ماکروهای قدیمی که دیگر توسعه داده نشده اما همچنان استفاده میشوند؛ همچنین ماژول هایی که توسط شخص توسعه داده شده است مشکلات کد دارند که به اصطلاح برای یوزر admin، هاردکد (Hardcode) شده اند.
یوزر admin در نسخه های قدیمی اسپلانک بعنوان اولین یوزر بصورت خودکار مشخص میشد.
البته جای نگرانی وجود ندارد، چرا که تیم توسعه اسپلانک، در حال توسعه Appها و Addonهای به روز جهت جایگزین کردن با (حداقل) این دسته از ماژول ها می باشد
خب! امیدوارم این آموزش براتون کاربردی بوده باشه. سعی میکنم ساختارهای مناسب و پیشنهاد اسپلانک و نحوه کلاسترهای مختلف اسپلانک، با Best Practice اسپلانک را در مقاله ای جدا به شما عزیزان اهل علم و اهل فن ارائه کنم.
امتیاز، اشتراک گذاری و دنبال کردن در شبکه هایی که در انتهای صفحه هست به من انرژی خواهد داد، اگر سوالی داشتید هم بپرسید. موفق باشید./محمد، 24 بهمن 1400
این آموزش باز هم با نکات و تصاویر بیشتر آپدیت خواهد شد.
متن
صفحه اول نصب اسپلانک بصورت پیشرفته و طبق استاندارد Splunk Advanced Installation with Standard Structure سلام! درسته، راه اندازی اسپلانک خیلی ساده است، ولی آیا
صفحه اول تشخیص درگاه های پرداخت اینترنتی اصلی از جعلی (جلوگیری از فیشینگ و هک شدن حساب بانکی) سلام! حتما تا الان حداقل به گوشتون
صفحه اول تاریخ هجری شمسی در MS Project بدون مشکل در سال 1400 و بعد از آن به همراه وارد کردن تعطیلات روز جمعه و