به دلیل اینکه داده ها در ایندکس بعد از مدت زمان معین و یا سایز مشخص حذف می شوند تخمین سایز ایندکس در اول کار بسیار مهم می باشد. برای تخمین فضای مورد نیاز ابتدا باید به سوالات زیر جواب دهیم :
چه مدت زمان نیاز است (چند روز) تا داده ها نگه داری شوند.
چه مقدار داده در روز ممکن است توسط لاگ های ما در روز تولید شود.
فرمول مورد نیاز برای محاصبه به شرح زیر می باشد :
تعداد روزهای مورد برای نگهداری * فضای استفاده هر روز * ۱/۲
فضای مورد نیاز لاگ ها در روی تقسیم بر دو می شود زیرا هم فشرده سازی داریم و هم اینکه ایندکس فایلهایی باید تولید گردند که در اینجا نصف در نظر می گیریم.
به عنوان مثال اگر برای ۱۰۰ روز اطاعات را می خواهیم نگه داریم و هر روز ۱ گیگابایت اطلاعات برای لاگ شدن داریم فضای مورد استفاده به شرح زیر می شود :
۱۰۰*۱*۱/۲ = ۵۰ گیگ فضای مورد نیاز
راه های مختلفی برای ساخت ایندکس داریم :
وب اسپلانک :
وارد قسمت زیر می شویم :
Setting->Indexes

در صفحه ای که باز می شود می توانیم نام ایندکس مورد نظر را بدهیم و مشخص کنیم حجم آن چقدر باشد و گزینه Save را بزنیم.
در این صفحه گزینه New Index را کلیک می کنیم. در همین صفحه می توانیم ایندکس های ساخته شده را هم بیینیم :

اگر مقادیر دیگر را وارد نکنیم خود اسپلانک این مقادیر را بر اساس مقدار های پیش فرض انتخاب می کند که قابل قبول می باشد.
روش CLI :
در ویندوز و لینوکس از طریق خط فرمان هم می توانیم با دستورات زیر ایندکس بسازیم :
splunk add index <index_name> -<parameter> <value>
Parameter : homePath, coldPath, thawedPath, app and so on.
به عنوان مثال داریم :
splunk add index windows-event-logs -app search
هر دو این روش ها اطلاعات را در فایل indexes.conf قرار می دهند. همچنین می توان با قرار دادن اطلاعات در این فایل ایندکس مورد نظر را ساخت.
توضیحات مربوط به indexes.conf
می توان از پارامتر های زیر در فایل برای تنظیمات پیشرفته تر استفاده نمود :
homePath.maxDataSizeMB
درست کردن محدودیت سایز برای باکت Hot و Warm
coldPath.maxDataSizeMB
محدودیت روی coldPath برای باکت Cold
برای محدود کردن تعداد باکت های warm و hot که می توانند ساخته شوند از تنظیم مقادیر maxHotBuckets و maxWarmDBCount باید استفاده کنیم. برای ایندکس های با حجم بالا که سایز ایندکسینگ بیشتر از ۱۰ گیگ در روز می باشد اسپلانک پیشنهاد می کند مقدار maxHotBuckets از مقدار ۳ به مقدار ۱۰ تغییر پیدا کند.
به صورت پیشفرض اسپلانک روی سایز Hot باکت به اندازه ۷۵۰ مگابایت با دستور maxDataSize = auto اعمال می کند. اگر ایندکس سایز در روز زیاد باشد اسپلانک توصیه می کند این مقدار به صورت زیر تغییر پیدا کند :
maxDataSize = auto_high_volume
برای اینکه اسپلانک بتواند Hot باکت های برای ۱۰ گیگ داده در روز بسازد. ابن تنظیم بدین دلیل است که اسپلانک تعداد زیادی باکت های کوچک نسازد. تعداد زیاد باکت باعث باعث افت کارایی اسپلانک می شود. وقتی باکت Hot مقدار ماگزیممش را بدست آورد به باکت Warm تبدیل می شود و یک باکت Hot جدید ایجاد می گردد.
maxTotalDataSizeMB
محدودیت کل سایز یک ایندکس را مشخص می کند.
مقادیر تنظیمات Global در فایل indexes.conf برای همه ایندکس های مشخص شده استفاده می گردد.
برای دیدن لیست کامل می توان به فایل indexes.conf.spec مراجعه کرد که در داکیومند های اسپلانک می باشد. در تنظیمات global پارامتر lastChanceIndex می تواند پیکربندی شود. این مقدار برای داده های خارجی می باشد که ایندکسی برایشان مشخص نگردیده است و از مقدار این پارامتر برای ایندکس آنها استفاده می شود. اگر این مقدار خالی باشد اسپلانک به سادگی این اطلاعات ورودی را discard می کند.
اگر داده های داخل باکت Cold خیلی جستجو نمی شدند آیا این منطقی است که هزینه زیادی برای این نوع داده برای فضای ذخیره سازی استفاده شود ؟
اسپلانک پیشنهاد می دهد برای باکت های Hot و Warm از هارد های با latency و throughput بالا استفاده شود زیرا داده های اخیر برای جستجو زیاد مورد استفاده قرار خواهند گرفت. برای باکت های cold از هارد های معمولی می توانیم استفاده کنیم که هزینه کمتری دارد. برای بدست آوردن این مهم می توان از volume ها استفاده نمود.
Index Volumes
Volume ها دایرکتوری های مشخصی از سیستم فایلی هستند که برای مدیریت فضای ذخیره سازی موثر ایندکس ها مورد استفاده قرار می گیرند. در سیستم عامل لینوکس و یونیکس می توانیم Volume ها را به دایکتوری های خاص نسبت دهیم و از همین ها بعدا در پیکربندی hot, cold باکت استفاده نماییم.
فایل indexes.conf.spec در مسیر زیر قرار دارد :
$SPLUNK_HOME/etc/system/README
پشتیبان گیری از ایندکس ها :
این مهم است که بدانیم از کدام فولدر ها باید پشتیبان گیری کنیم که هنگام مشکل بتوانیم از آنها استفاده کنیم. دو فولدر مهم به شرح زیر می باشند :
فولدر $SPLUNK_DB که همان فولدر زیر می باشد :
$SPLUNK_DB = $SPLUNK_HOME/var/lib/splunk
نمی توان از باکت Hot وقتی که اسپلانک در حال اجرا می باشد پشتیبان گیری نمود. در عوض می توانیم اسنپ شات ها incremental بگیریم و از این اسنپ شات ها پشتیبان گیری کنیم.
فولدر $SPLUNK_HOME/etc/
این فولدر شامل App ها و پیکربندی کاربران، فایل های پیکربندی سیستمی و لایسنس ها می باشد. این فولدر در اسپلانک یک فولدر حیاتی می باشد که تمامی اطلاعات پیکربندی و نحوه رفتار اسپلانک را تعریف می کند.
مانیتور کردن ایندکس های اسپلانک
وارد قسمت زیر می شویم :
Setting -> Monitoring Console
سپس وارد زیر منوی زیر می شویم :
indexing -> Indexed and Volumes -> Index Detail: Instance

همانطور که دیده میشود با انتخاب ایندکس مورد نظر می توان هم اطلاعات و هم صحت عملکرد آن را مشاهده نمود.
برای دیدن تمامی ایندکس ها در یک نگاه می شوند منوی Indexes and Volumes: Instance را انتخاب کنیم که همانند تصویر زیر اطلاعات تمامی ایندکس ها را یکجا می بینیم :
