استفاده از قابلیت Routing در اسپلانک

در پیاده سازی اسپلانک گاهی نیاز می‌شود داده ها را به سمت یک مقصد خاص بفرستیم که با توجه به سناریوهای موجود از دو روش Selective Indexing و Selective Forwarding می‌توان استفاده کرد.

در پیاده سازی اسپلانک گاهی نیاز می‌شود داده ها را به سمت یک مقصد خاص بفرستیم که با توجه به سناریوهای موجود از دو روش Selective Indexing و Selective Forwarding می‌توان استفاده کرد. Selective Indexing زمانی اتفاق می‌افتد که به عنوان مثال لاگ ها در HF و یک ایندکس خاص مثل Main قرار دارد و ما می‌خواهیم Reindex کرده و این لاگ ها را در Indexer بر روی یک ایندکس دیگر مثل Test قرار دهیم. حالت Selective Forwarding زمانی اتفاق می‌افتد که ما می‌خواهیم یک لاگ را با توجه به یک Source، SourceType یا Host  فیلتر کرده و لاگ های فیلتر شده را به سمت Indexer های خاص بفرستیم.

در این بخش ما بر روی Selective Forward تمرکز می‌کنیم و در آینده به بخش Selective Indexing نیز اشاره خواهیم کرد.

گاهی نیاز داریم یک دسته از لاگ های خود را به سمت یک Indexer خاص ارسال نماییم و باید در اسپلانک به نحوی فیلتر انجام شود که از یک منبع خاص، داده های مورد نظر، به سمت مقصدی که مدنظر ما می‌باشد ارسال شود. این کار بر روی HF یا Heavy Forwarder انجام می‌شود. برای انجام این کار ابتدا بر روی Shell سرور HF لاگین کرده و وارد مسیر زیر می‌شویم:

$SPLUNK_HOME/etc/system/local/

شکل1- مسیر فایل های پیکربندی و فایل های موجود

در این بخش ما باید سه فایل Props.conf، Transforms.conf و Outputs.conf را تغییر ‌دهیم و فیلترهای خود را آنجا اعمال کنیم. در صورت نبود این سه فایل می‌توان آنها را ساخت. پس از وارد شدن به فایل Props.conf، تغییرات مورد نیاز را اعمال می‌کنیم. در فایل Props.conf فیلترها به صورتی که در ادامه بیان می‌شود، می‌باشند.

  • Host::<host>
  • Source::<source>
  • <sourcetype>

اگر فیلتر ما بر اساس Host یک Event باشد از گزینه‌ی اول، اگر بر اساس Source باشد از گزینه‌ی دوم و اگر بر اساس Sourcetype یک Event باشد، از گزینه‌ی آخر استفاده می‌کنیم. سپس نیاز است برای کلید TRANSFORMS-routing یک Tag Name مشخص کنیم که بتوانیم از آن در مراحل بعدی استفاده کنیم.

مثال جهت نوشتن فیلتر در فایل Props.conf:

  • [host::192.168.1.1]
  • [source::tcp:1010]
  • [windows]

همچنین بدیهی است برای یک Asset یا منبع خاص نمی‌توان از هر سه این گزینه ها استفاده نمود. در ادامه پس از مشخص کردن منبع مورد نظر از عبارت زیر استفاده می‌کنیم.

TRANSFORMS-routing = windows

در این بخش یک Value انتخاب می‌کنیم و چون در این مثال ما می‌خواهیم لاگ های ویندوز را Route کنیم از واژه Windows استفاده میکنیم و در سناریو ها و مثال های متفاوت این Value نیز می‌تواند تغییر کند.

شکل2-تغیرات اعمالی فایل props.conf

در این بخش ما از یک host با آدرس 192.168.1.1 و TRANSFORMS-routing = windows استفاده کردیم.

در مرحله بعدی می‌باست وارد فایل Transforms.conf شده و تغییرات لازم را در آنجا اعمال کنیم. در این فایل تغییرات خود را بر روی چندین متغیر که شامل REGEX،DEST_KEY  وFORMAT  می‌باشد اعمال می‌کنیم. در REGEX فیلتر می‌کنیم که لاگ هایی که دارای یک عبارت یا ساختار خاص هستند را انتخاب کند، سپس در بخش DEST_KEY مشخص می‌کنیم که داده هایی که قرار است ارسال شود به صورت TCP ارسال گردد یا UDP. برای ارسال با پروتکل TCP از عبارت _TCP_ROUTING و برای ارسال با پروتکل UDP از عبارت_SYSLOG_ROUTING  می‌توان استفاده نمود و در FORMAT نیز یک Tag Name انتخاب می‌کنیم تا از آن در فایل Outputs.conf استفاده کنیم.

شکل3-تغیرات اعمالی فایل Transforms.conf

در این بخش پس از فراخوانی Tag Name Windows که در فایل Props.conf تعریف کرده بودیم، REXEX را [.] می‌گذاریم چرا که می‌خواهیم فیلتر خود را بر روی تمام لاگ ها اعمال کنیم. سپس پروتکل ارسال لاگ را مشخص می‌کنیم که در این مثال ما از TCP استفاده کردیم و در نهایت در بخش FORMAT یک Tag Name دلخواه انتخاب می‌کنیم که در این مثال از tcpwindows استفاده شده است.

در نهایت نیاز است تغییرات فایل Outputs.conf را انجام دهیم تا تعیین کنیم لاگ های مشخص شده به سمت چه مقصدی باید ارسال گردند. در این فایل تغییرات خود را بر روی دو متغییر که شامل tcpout (در صورت انتخاب کردن tcp) یا syslog ( در صورت انتخاب کردن udp) است و در بخش Tag Name فایل Transforms.conf تعریف شده بود، وارد می‌کنیم. همچنین برای متغیر server نیز  باید آدرس و شماره پورت مقصد را مانند تصویری که در ادامه آورده شده است، وارد کنیم.

شکل4-تغیرات اعمالی فایل Outputs.conf

در این بخش پس از فراخوانی Tag Name تعریف شده در فایل Transforms.conf و مشخص کردن آدرس و شماره پورت سرور مقصد، فایل پیکربندی را ذخیره کرده و خارج می‌شویم و در مرحله پایانی سرویس اسپلانک را ریستارت می‌کنیم.

نویسنده: احمدرضا نوروزی

منبع: شرکت فناوری راه نو سورین