This project turns a small, public macOS system.log
sample into a complete
Splunk endpoint monitoring pack. It deliberately uses non-sensitive, plain-text data so you can
demonstrate the core SIEM workflow—ingest → parse → enrich → visualize → alert without touching
production systems or personal logs. The result is a dashboard and an alert that tell a
clear story about endpoint behavior, while showcasing practical Splunk skills employers expect.
A detailed, step-by-step guide with copy-paste SPL and screenshot captions is included here: PROJECT WALKTHROUGH.
Phase | Description |
---|---|
Data Onboarding | Created index macos . Uploaded Mac_2k.log . Defined sourcetype macos_system_log_loghub ,
one event per line, and explicit time format %b %d %H:%M:%S . |
Parsing (Regex) | Extracted hostname , process , optional pid , and message from raw events.
Saved as a Field Extraction at the sourcetype. |
Enrichment | Added a Calculated Field category via eval case(...) to bucket events into
Network / Hardware / Browser / Auth / Other. |
Visualization | Built a four-panel Classic dashboard: Activity by Category, Noisiest Processes (Top 10), Network Link/Channel Events, Recent High-Signal Events. |
Alerting | Implemented a single, low-impact weekly alert: Network Instability. Saved but can be disabled by default to avoid background use. |
Verification | Validated results in Activity → Triggered Alerts and confirmed field objects under Settings → Fields. |
This repository uses a small, public sample. Findings illustrate the workflow rather than conditions in a live environment.
Observation | What the Dashboard Shows | Notes |
---|---|---|
Network activity dominates | Spikes in Activity by Category and Network Link/Channel Events | Frequent AWDL / AirPort link / channel-change messages in the sample. |
A few processes are very noisy | Noisiest Processes (Top 10) | kernel and a handful of Apple processes contribute most events. |
High-signal events cluster | Recent High-Signal Events (Last 25) | Filtering out “Other” surfaces events worth triage first. |
Recommendation | Purpose / Benefit |
---|---|
Forward live logs with Splunk Universal Forwarder | Real-time visibility instead of static samples. |
Normalize via sourcetype-level extractions | Consistent fields across hosts for better dashboards/alerts. |
Add lookups (process → owner/role/technique) | Richer panels and faster investigations. |
Tune thresholds & throttles on alerts | Reduce noise; align to your environment’s baseline. |
Separate indexes by platform/app | Cleaner retention and faster searches at scale. |
Artifact | Name | Purpose |
---|---|---|
Index | macos |
Stores the dataset for this project. |
Sourcetype | macos_system_log_loghub |
Normalizes event format/timestamps. |
Field Extraction | macos_system_log_loghub_base_fields |
Regex extraction of hostname , process , pid , message . |
Calculated Field | category |
eval case(...) → Network / Hardware / Browser / Auth / Other. |
Dashboard (Classic) | macOS Endpoint Log Analysis | Four focused panels for triage and trends. |
Alert (weekly) | Network Instability (≥3 in 10m per host) | Detects repeated Wi-Fi instability. Severity: Medium. Action: Triggered Alerts. |
Activity by Category
index=macos sourcetype=macos_system_log_loghub
| timechart span=30m count by category
Noisiest Processes (Top 10)
index=macos sourcetype=macos_system_log_loghub
| stats count by process category
| sort - count
| head 10
Network Link/Channel Events
index=macos sourcetype=macos_system_log_loghub
| eval event_type=case(
like(message,"%AirPort Link Down%"), "Wi-Fi Link Down",
like(message,"%Roamed or switched channel%"), "Channel Change",
like(message,"%AWDL%"), "AWDL")
| search event_type=*
| timechart span=30m count by event_type
Recent High-Signal Events (Last 25)
index=macos sourcetype=macos_system_log_loghub
| search category!="Other"
| table _time hostname process pid category message
| sort - _time
| head 25