آموزش 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 و صفبندی؛ چرخش لاگ و محدود کردن نرخ.
- در 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 سازگار باشید.

7. زبان جستجو (SPL): از مقدماتی تا پیشرفته
- 7.1 اصول
index=web sourcetype=access_combinedstatus>=500 earliest=-24h@hlatest=now | stats count bystatus uri | sort - countsearch/فیلتر اولیه، سپس Pipe به دستورات آماری/تبدیلی.
- فیلترینگ:
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.
index=web sourcetype=access_combinedstatus>=500 | bin _time span=5m | stats count aserrors by _time uri | timechart span=5msum(errors) by uri limit=10Anomaly Detection ساده با z-score:index=web sourcetype=access_combinedstatus=200 | bin _time span=5m | stats count ashits by _time | eventstats avg(hits) as avgstdev(hits) as stdev | evalz=(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) برای فیلتر پویا.
- 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برای تست.
- Guidelines جستجو: فیلتر با

14. مانیتورینگ و عیبیابی
-
- Monitoring Console (DMC): سلامت ایندکسر/سرچهد، تاخیر ایندکس، خطاها.
- btool: تشخیص منبع نهایی کانفیگها.
$SPLUNK_HOME/bin/splunkbtool props list my_nginx --debug - diag: بستهٔ عیبیابی برای پشتیبانی.
splunk diag - internal logs: ایندکسهای
_internal,_auditبرای بررسی مشکلات و کارایی.

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.