آموزش Splunk؛ راهنمای جامع از نصب تا مقیاس‌پذیری و تحلیل پیشرفته

جدول محتوا

آموزش Splunk در این صفحه، راهنمایی عملی و جامع است برای هر کسی که می‌خواهد از جمع‌آوری لاگ تا تحلیل پیشرفته و ساخت داشبوردهای حرفه‌ای را به‌صورت مرحله‌به‌مرحله یاد بگیرد. ابتدا می‌فهمید Splunk چیست و چگونه داده‌ها را ایندکس می‌کند، سپس نصب، ورود داده‌ها (UF/HEC)، پارسینگ (props/transforms)، جستجو با SPL، و در نهایت آلارم، امنیت، و مقیاس‌پذیری را تمرین می‌کنید. با مثال‌های واقعی (مثل Nginx) و نکات بهینه‌سازی (tstats، Acceleration) پیش می‌روید تا سریع‌تر و دقیق‌تر تحلیل کنید. اگر دنبال یک مرجع فارسی عمیق برای Splunk هستید، از همین‌جا شروع کنید.

. Splunk چیست و چه مسأله‌ای حل می‌کند؟

Splunk یک پلتفرم Observability و Analytics داده‌های رویدادی است که لاگ‌ها، متریک‌ها و رخدادها را از منابع متنوع جمع‌آوری، ایندکس و قابل‌جستجو می‌کند. خروجی: جست‌وجوی سریع، بصری‌سازی، آلارم و کشف الگو/ناهنجاری برای تیم‌های DevOps، SecOps و BizOps.

2. معماری Splunk (اجزای اصلی و نقش‌ها)

  • Universal Forwarder (UF): عامل سبک برای جمع‌آوری و ارسال لاگ از سرورها/کانتینرها.
  • Heavy Forwarder (HF): عامل با قابلیت پردازش (پارس/فیلتر/مسیر‌دهی) قبل از ایندکس.
  • Indexer: دریافت، پارس، ایندکس و ذخیره‌سازی داده‌ها؛ پاسخ‌گوی اولیه به جستجو.
  • Search Head (SH): رابط کاربری، مدیریت جستجوها/داشبوردها/آلارم‌ها.
  • Deployment Server / Cluster Master / Deployer / Monitoring Console: اجزای مدیریتی.

3. مدل لایسنس و مفاهیم داده

  • مدل لایسنس: معمولاً بر اساس حجم ورودی روزانه.
  • Index: فضای منطقی ذخیره‌سازی (مثلاً main، web, security).
  • Sourcetype: الگوی فرمت داده (مثلاً access_combined یا json).
  • Host/Source: منشأ فیزیکی/مسیر فایل.
  • Bucket Lifecycle: ‌hot → warm → cold → (اختیاری) frozen.

4. نصب Splunk Enterprise و راه‌اندازی اولیه

Linux (خلاصهٔ عملی):

# 1) ایجاد کاربر اختصاصی
sudo useradd -m splunk
sudo su – splunk

# 2) نصب (فرض: بستهٔ .tgz در /opt)
cd /opt
tar -xzf splunk-<version>-linux.tgz
/opt/splunk/bin/splunk start –accept-license

# 3) ساخت کاربر ادمین و ورود به وب
# وب UI پیش‌فرض: http://<host>:8000

Windows: نصبگر را اجرا کنید، سرویس Splunk را به‌عنوان Service Account امن نصب کنید، پورت 8000 را بررسی کنید.

تنظیمات اولیهٔ حیاتی:

  • تغییر پورت‌ها در صورت نیاز، فعال‌سازی SSL برای UI، زمان‌بندی پشتیبان‌گیری از کانفیگ‌ها.

5. ورودی داده‌ها (Data Onboarding)

  • 5.1 فایل/دایرکتوریدر UI: Add Data → Monitor → Files & Directories
    نکته: sourcetype صحیح، تعیین index اختصاصی.5.2 Syslog
    • ارسال از سرورها به HF/Indexer (پورت UDP/TCP).
    • برای حجم بالا: TCP و صف‌بندی؛ چرخش لاگ و محدود کردن نرخ.
    5.3 HEC (HTTP Event Collector)
    • در Settings → Data Inputs → HTTP Event Collector: یک Token بسازید.
    • ارسال نمونه (cURL):

curl -k https://splunk:8088/services/collector \
-H “Authorization: Splunk <TOKEN>” \
-d ‘{“event”:”hello”,”sourcetype”:”my_json”,”host”:”web-1″,”fields”:{“env”:”prod”}}’

5.4 سایر

  • دیتابیس‌ها (DB Connect)، کلود (S3، GCS)، کانتینر/کوبِرنِتِس (UF + HEC)، متریک‌ها (StatsD/TELEGRAF→HEC).

6. نرمال‌سازی و پارسینگ: props.conf و transforms.conf

اهداف: زمان، جداسازی رویداد، استخراج فیلد، روتینگ/ری‌رایت.

$SPLUNK_HOME/etc/system/local/props.conf (یا در اپ اختصاصی):

[my_nginx]
SHOULD_LINEMERGE = false
TIME_FORMAT = %d/%b/%Y:%H:%M:%S %z
TIME_PREFIX = \[
LINE_BREAKER = ([\r\n]+)
TRUNCATE = 100000
REPORT-extract = my_nginx_fields

transforms.conf:

[my_nginx_fields]
REGEX = ^(?P<client>[^ ]+) [^ ]+ [^ ]+ \[(?P<time>[^\]]+)\] “(?P<method>\w+) (?P<uri>[^”]+) HTTP/(?P<httpver>[^”]+)” (?P<status>\d{3}) (?P<bytes>\d+)
FORMAT = client::$1 time::$2 method::$3 uri::$4 httpver::$5 status::$6 bytes::$7

نکتهٔ حرفه‌ای: تا حد ممکن از sourcetype استاندارد (مثل access_combined) استفاده کنید تا با CIM سازگار باشید.

آموزش Splunk؛ راهنمای جامع از نصب تا مقیاس‌پذیری و تحلیل پیشرفته | اخبار

7. زبان جستجو (SPL): از مقدماتی تا پیشرفته

  • 7.1 اصولindex=web sourcetype=access_combined status>=500 earliest=-24h@h latest=now | stats count by status uri | sort - count
    • search/فیلتر اولیه، سپس Pipe به دستورات آماری/تبدیلی.
    7.2 دستورات کلیدی
    • فیلترینگ: search, where, fields, dedup
    • تبدیل/محاسبه: eval, replace, coalesce, split, mvexpand
    • آمار: stats, eventstats, streamstats, timechart, chart
    • پردازش متن/JSON: rex, spath, replace, match
    • ترنزاکشن/سشن: transaction (محتاطانه برای هزینهٔ محاسباتی بالا)، جایگزین با stats+streamstats
    • Lookup/KV: lookup, inputlookup, outputlookup
    • کارایی: tstats روی Data Modelهای شتاب‌گرفته، accelerate، summary indexing.
    7.3 الگوهای پرکاربردنرخ خطای 5xx به تفکیک سرویس/مسیر:index=web sourcetype=access_combined status>=500 | bin _time span=5m | stats count as errors by _time uri | timechart span=5m sum(errors) by uri limit=10 Anomaly Detection ساده با z-score:index=web sourcetype=access_combined status=200 | bin _time span=5m | stats count as hits by _time | eventstats avg(hits) as avg stdev(hits) as stdev | eval z=(hits-avg)/stdev | where z>3 تحلیل JSON (مثلاً لاگ اپلیکیشن):index=app sourcetype=my_json | spath| stats count by level component error.code | where level="ERROR"

8. Lookups، KV Store، CIM و Data Models

  • CSV Lookup: تطبیق شناسه‌ها با توضیحات/تگ‌ها.
  • KV Store: ذخیرهٔ کلید-مقدار پایدار برای پیکره‌بندی/وایت‌لیست/بلک‌لیست.
  • CIM (Common Information Model): استانداردسازی فیلدها برای اپ‌های امنیتی/مانیتورینگ.
  • Data Model & Acceleration: ایجاد لایهٔ تحلیلی و استفاده از tstats برای سرعت بالا.

نمونهٔ tstats:

| tstats count where index=web

by host, sourcetype

9. داشبوردسازی

  • 9.1 Classic (SimpleXML)
    • پنل‌ها، base search و post-process برای صرفه‌جویی منابع.
    • توکن‌ها (tokens) برای فیلتر پویا.
    9.2 Dashboard Studio
    • UI مدرن با ویجت‌های غنی و JSON-based.
    • بهترین‌روش: جداسازی لایهٔ جست‌وجو (saved searches) از لایهٔ ارائه.

10. آلارم‌ها و Scheduled Searches

    • Trigger Conditions: آستانه‌ها، تغییرات درصدی، ناهنجاری.
    • Actions: ایمیل، وب‌هوک، ServiceNow/Jira، نوشتن به Index.
    • Throttling: جلوگیری از اسپم آلارم.
    • Notable Events: در سناریوهای امنیتی/ES.

11. امنیت و دسترسی

    • RBAC: نقش‌ها → قابلیت‌ها → دسترسی به Indexها.
    • HEC Tokens: حداقل سطح دسترسی، چرخش دوره‌ای، محدودیت سورس/اندپوینت.
    • TLS: برای UI و HEC فعال کنید؛ گواهی معتبر.
    • Secrets Management: محافظت از گذرواژه‌ها و credها.

12. مقیاس‌پذیری و High Availability

      • Indexer Clustering: کپی‌برداری داده (Replication Factor) و جستجوپذیری (Search Factor).
      • Search Head Clustering: هماهنگی اشیای دانشی/جستجوها بین SHها.
      • Multisite: تاب‌آوری بین دیتاسنترها.
      • Partitioning منطقی: ایندکس‌های جدا برای محیط‌ها/دامنه‌های لاگ.

13. بهینه‌سازی کارایی

    • Guidelines جستجو: فیلتر با index/sourcetype، محدود کردن بازهٔ زمانی، fields برای کاهش payload.
    • Acceleration: Report/Data Model Acceleration، Summary Indexing.
    • Metrics Index: برای متریک‌ها از mstats استفاده کنید (فشرده، سریع).
    • Base + Post-Process: یک جستجوی سنگین → چند پنل سبک.
    • Sampling: sample/head برای تست.
آموزش Splunk؛ راهنمای جامع از نصب تا مقیاس‌پذیری و تحلیل پیشرفته | اخبار

14. مانیتورینگ و عیب‌یابی

    • Monitoring Console (DMC): سلامت ایندکسر/سرچ‌هد، تاخیر ایندکس، خطاها.
    • btool: تشخیص منبع نهایی کانفیگ‌ها.$SPLUNK_HOME/bin/splunk btool props list my_nginx --debug
    • diag: بستهٔ عیب‌یابی برای پشتیبانی.splunk diag
    • internal logs: ایندکس‌های _internal, _audit برای بررسی مشکلات و کارایی.
آموزش Splunk؛ راهنمای جامع از نصب تا مقیاس‌پذیری و تحلیل پیشرفته | اخبار

15. پروژهٔ عملی: از Nginx تا داشبورد و آلارم

هدف: نرخ ارور، کندی پاسخ، و نقاط داغ ترافیک را نظارت کنیم.

15.1 ورود داده

  • روی سرور وب UF نصب کنید و مسیر access.log/error.log را مانیتور کنید.
  • sourcetype=access_combined و index=web تعیین کنید.

15.2 نرمال‌سازی

  • در props.conf زمان/line breaking را تثبیت کنید.
  • در صورت JSON در error.log از INDEXED_EXTRACTIONS=json یا spath در سرچ استفاده کنید.

15.3 داشبورد (Widgetها)

  • KPIها: RPS, نرخ 5xx, میانگین bytes, توزیع status.
  • Top URIs, Top Clients, Latency percentiles (اگر زمان پاسخ را دارید).

index=web sourcetype=access_combined |

eval is_error=if(status>=500,1,0) |

bin _time span=1m | stats count as rps sum(is_error) as errors

avg(bytes) as avg_bytes by _time

| eval err_rate=round(100*errors/rps,2)

15.4 آلارم

  • اگر err_rate > 2% به‌مدت 10 دقیقه → ایمیل/وب‌هوک.
  • Throttle: 30 دقیقه.

15.5 تحلیل ناهنجاری

index=web sourcetype=access_combined

status>=500 | bin _time span=5m | stats count as errors by _time

uri | eventstats avg(errors) as avg stdev(errors) as sd by uri |

eval z=(errors-avg)/sd | where z>3

16. چک‌لیست Best Practices

  • برای هر دامنهٔ داده index اختصاصی و retention متناسب.
  • sourcetype استاندارد و سازگار با CIM انتخاب کنید.
  • تا می‌توانید پارس را در ایندکس انجام دهید (پایداری و کارایی بهتر).
  • برای داشبوردها از saved searches و base search استفاده کنید.
  • آلارم‌ها را با Throttle و متن عملیاتی (Playbook) تنظیم کنید.
  • به‌طور منظم DMC را بررسی و capacity planning داشته باشید.
  • نسخه/اپ‌ها را در App اختصاصی نگهداری و ورژن‌گذاری کنید (Git).
  • دسترسی‌ها را با RBAC حداقلی مدیریت کنید؛ Tokenها را بچرخانید.
  • برای متریک‌ها به‌جای لاگ از metrics index بهره ببرید.
  • کانفیگ‌ها را با btool اعتبارسنجی و با diag پشتیبان‌گیری کنید.

17. پرسش‌های پرتکرار (FAQ)

Splunk Enterprise vs Splunk Cloud؟
Cloud مدیریت زیرساخت را بر عهده می‌گیرد؛ Enterprise انعطاف و کنترل کامل On-Prem می‌دهد.

Universal Forwarder یا Heavy Forwarder؟
UF سبک و پرکاربرد است؛ اگر قبل از ایندکس به پارس/مسیر‌دهی پیچیده نیاز دارید HF.

چه زمانی transaction مناسب است؟
برای هم‌بندی رویدادهای مرتبط (مثل شروع/پایان سشن). در اغلب موارد stats/streamstats کاراتر است.

tstats چه مزیتی دارد؟
روی Data Modelهای شتاب‌گرفته جستجو می‌کند؛ بسیار سریع‌تر از stats روی raw events.

67 / 100 امتیاز سئو

لطفا به ما امتیاز دهید

0 / 5 0

امتیاز صفحه شما :