ساختار فایل های کانفیگ

ساختار به صورت زیر می باشد :

<key/attribute> = <value>

مقدار Key به حروف بزرگ و کوچک حساس می باشد. تنظیمات به صورت یک واحد منحصر به فرد <stanza> مرتب می شوند.

برای دیدن تمامی تنظیمات می توانیم به داخل فولدر زیر برویم و فایل config خودمان را با پسوند .spec ببینیم :

$SPLUNK_HOME/etc/system/README

در پیکربندی داریم :

مقدار # برای بیان توضیحات استفاده می شود.

[default] برای این است که تنظیمات global انجام شود که به تمام فایل اعمال می شود به جز آنکه overwrite توسط دستورات دیگری شود.

لایه های پیکربندی و ارث بری :

اسپلانک از پیکربندی لایه ای و ارث بری پشتیبانی می کند و اجازه می دهد تنظیمات از لایه بالاتر توسط لایه های پایین تر ارث ببرند. این مورد باعث ساده سازی مدیریت پیکربندی به وسیله کم کردن تکرار ها می شود. قوانین ارث بری به نوع فایل .conf و هدف آن بستگی دارد.

مقادیر پیش فرض stanza و تنظیمات global :

مقادر پیش فرض معمولا در مسیر زیر یافت می شوند :

$SPLUNK_HOME/etc/system/default

برای سفارشی سازی یک فایل جدید در مسیر های زیر می توانیم درست کنیم :‌

$SPLUNK_HOME/etc/system/local
$SPLUNK_HOME/etc/apps/<app_name>/local

متصل کردن چندین فایل conf :

در اسپلانک فایل های conf معمولا در چندین مسیر در داخل یک دایکتوری مادر پیدا می شوند مانند :

$SPLUNK_HOME/etc/
users
apps
system

هنگامی که اسپلانک شروع به خواندن فایل های پیکربندی می کند، اطلاعات فایل های conf های مختلف از یک نوع را با هم ادغام می کند. این ادغام تنظیمات مختلف روی فایل های conf را به صورت یک تنظیمات واحد در حافظه درست می کند برای اجرا شدن.

اسپلانک یک ترتیب مشخص برای ادغام فایل های پیکربندی هم نوع دارد که بستگی به مفهوم context فایل conf دارد که می تواند global یا app/user باشد.

global (index time)
app/user (search time)

ابتدا نگاهی به فایلهای پیکربندی مورد استفاده در فاز های مختلف اسپلانک می پردازیم :

insputs.conf

این فایل داده های ورودی برای مانیتورینگ و ایندکس شدن در اسپلانک را پیکربندی کند. یک فایل استاندارد است که در تمامی نمونه های اسپلانک موجود می باشد.

props.conf

این فایل تنظیمات مربوط به parse کردن داده ها هنگام پروسس کردن را به عهده دارد قبل از اینکه عملیات ایندکس شدن انجام گیرد و هم چنین قبل از اینکه پروسه استخراج فیلد زمان جستجو انجام گیرد.

transforms.conf

این فایل شامل پیکربندی انتقال داده ها قبل از ایندکس شدن و استخراج فیلد های پیشرفته، پیکربندی فایل های جستجو، و پروسه استخراج فیلد زمان برای جستجو می باش.

indexes.conf

شامل اطلاعات پیکربندی ایندکس ها می باشد.

server.conf

برای پیکربندی تنظیمات سرور مانند ssl, HTTP و مود های کلاستر شدن.

outputs.conf

شامل تنظیمات مربوط به اینکه دیتا به کجا ارسال شود می باشد.معمولا در Forwarder ها استفاده می شود و همچنین در اسپلانک های که تنظیمات Forwarder آنها فعال شده باشد مورد استفاده قرار می گیرد.

سیستم فولدر ها به شرح زیر می باشد :

\etc\users\<user-name>\<app-name>\
\etc\apps\<app-name>\
\etc\system\

زیر فولدر های که داخل آنها است نیز مانند :

\default\
\local\

اسپلانک پیشنهاد می دهد فایل های پیکربندی داخل \etc\system\default\ را تغییر ندهیم. در عوض یک فایل جدید در مسیر \etc\system\local\ بسازیم و آن را ویرایش کنیم.

فایل های پیکربندی پیش فرض اسپلانک در مسیر زیر می باشد :

$SPLUNK_HOME/etc/system/default/

فهمیدن اولویت بندی فایل های کانفیگ

مسیر $SPLUNK_HOME/etc محلی می باشد که تمامی پیکربندی موجود در اسپلانک قرار می گیرد.

برای هر فایل پیکربندی می تواند چندین مسیر وجود داشته باشد. این مورد به این دلیل است که ادمین ها و برنامه نویسها بتوانند بر اساس نیاز خودشان پلت فرم را سفارشی سازی کنند. این انعطاف اجازه می دهد کنترل دقیقی روی برنامه ها و تجربه کاربر داشته باشیم. اولیت بندی فایل های کانفیگ یکسان در مسیر های مختلف برای اجرا توسط اسپلانک مشخص می گردد.

فایل های کانفیگ در مسیر های زیر می توانند موجود باشند :

$SPLUNK_HOME/etc/users

شامل تغییرات خصوصی و مربوط به کاربر می باشد. این تغییرات از بقیه کاربران ایزوله شده است.

$SPLUNK_HOME/etc/apps/<app-name>/[default|local]

پیکربندی هایی که توسط برنامه ها ایجاد می گردد در این دایرکتوری ذخیره می گردد. این تغییرات برای همه کاربرانی که دسترسی به این برنامه دارند در دسترس می باشد.

$SPLUNK_HOME/etc/system/local

برای global configuration می باشد و برای همه کاربران در دسترس می باشد.

اولویت بندی بر اساس نوع فایل کانفیگ input, props, indexes و … و مفهوم آنها می باشد.

دو مفهوم به شرح زیر می باشد :

Global :

پیکربندی هایی که از کاربران و برنامه ها مستقل می باشند مانند پیکربندی های indexing, monitoring, deployment, server configuration و … .

App/user

فایل های پیکربندی زمان جستجو در context های app/user ذخیره می شوند. شامل تنظیماتی مانند : dashboards, reports, alerts, field extractions و تغییرات دیگر که با کاربر و برنامه ها کار می کنند می باشد.

Search-Time اولیت بندی :

مثال هایی از این فایل های پیکربندی شامل savedsearches.conf, macros.conf, props.conf و دیگر تنظیماتی که موقع جستجو مورد استفاده قرار می گیرند می باشند. به عنوان مثال یک کاربر می تواند یک آلارم ایجاد کند و میدان دید آن را به مود خصوصی تغییر دهد. این بدین معنی می باشد که این آلارم فقط منابعی که به این کاربر اختصاص دارد را می تواند استفاده کند.

ترتیب فایل های پیکربندی در هنگام جستجو به شرح زیر می باشد :‌

$SPLUNK_HOME/etc/users/<user-name>/<app-name>/local
$SPLUNK_HOME/etc/apps/<app-name>/local
$SPLUNK_HOME/etc/apps/<app-name>/default
$SPLUNK_HOME/etc/system/local
$SPLUNK_HOME/etc/system/default

اگر یک فایل در دو APP وجود داشته ترتیب اولویت بر اساس reverse lexicographical می باشد. خلاف ترتیب الفبا

اسپلانک برای پیدا کردن اولویت بندی دستوری به نام btool دارد که می تواند پیکربندی و اولیت بندی را به ما نشان دهد.

Index-time اولیت بندی :

اولویت بندی هایی می باشند که به پیکربندی های که به کل سیستم تعلق می گیرند مرتبط می باشد و به یک کاربر وابسته نمی باشد. تنظیمات Global می باشند و کارهایی همانند ایندکس کردن و مانیتور کردن فایلها موقع ورود می باشند.

هنگام اینکس کردن اطلاعات فایلهای پیکربندی زیادی وجود دارد مانند :

indexes.conf
server.conf
serverclass.conf
inputs.conf

این فایلها پیکربندی های مربوط به اینکه چطور ایندکس شدن انجام گیرد و چطور سرور پیکربندی شود و چطور داده های ورودی مانیتور گردند. اسپلانک اولویت بندی پیکربندی ها را موقع ایندکس شدن به شرح زیر انجام می دهد :

$SPLUNK_HOME/etc/system/local
$SPLUNK_HOME/etc/apps/<app-name>/local
$SPLUNK_HOME/etc/apps/<app-name>/default
$SPLUNK_HOME/etc/system/default

یک مورد خاص وجود دارد که اگر یک فایل پیکربندی در دو App با نام یکسان وجود داشته باشد اولویت بندی توسط اسپلانک بر اساس الفبا می باشد. در این نوع اولویت بندی ابتدا اعداد سپس حروف بزرگ و سپس حروف کوچک اولویت دارند.

دستور btool برای پیدا کردن مشکلات

در مسیر زیر وجود دارد :

$SPLUNK_HOME/bin

--debug برای نشان دادن مسیر واقعی فایل های پیکربندی

--user از دید یک کاربر خاص پیکربندی را نشان می دهد

--app از دید یک برنامه پیکربندی را نشان می دهد

<conf_file_prefix>

پشوندی که برای فایل های پیکربندی مورد استفاده قرار می گیرند مانند : props, indexes, inputs, transforms.

برای مثال داریم :

splunk btool indexes list --debug

برای دیدن اینکه آیا پیکربندی ها درست است یا خیر از دستور زیر استفاده می کنیم :‌

splunk btool check

موارد زیر را در هنگام استفاده از btool باید در ذهن داشته باشیم :

خروجی btool ممکن است با چیزی که الان متفاوتی باشد که بدین دلیل است که پیکربندی ها برای اجرا نیاز به ریستارت شدن سرویس دارد.

btool توسط اپلانک پشتیبانی نمی شود و تیم پشتیبانی اسپلانک از شما خروجی diag را می خواهد که شامل خروجی btool نیز می شود.

وقتی با دستور btool فایل inputs.conf را بررسی می کنیم تنظیمات مربوط به default stanza در خروجی نمایش داده نمی شود.

می توان دستور btool را وقتی که اسپلانک run نیست هم استفاده نمود.