Maximizing NetWitness Performance
Maximizing NetWitness Performance
Takeaways:
- Be aware of how many concentrators your query touches (log only? No need to query packet concentrators)
- Turn on Debug in Investigation
- In multi-site/large environments, consider Brokers to break up into queryable groups
Reporting Engine
Decoder Concentrator Lists, Reports, RE
Alerts = Queries
Investigation
Consume meta/
session ranges
QUERIES
Write packets/logs
Queries
Takeaways:
- Move as much to “pre processing” as possible. App rules & Feeds are your best friend. Results in single keys to query.
- Use feeds instead of Reporting Engine lists whenever possible (RE Lists effectively break up into many logical OR statements)
- Don’t use meta groups with ALL keys open. Break the problem down and open the minimal number to start (every open is a
query)
- Smaller, more specific meta groups.
Instead, what about creating an app rule to move the processing earlier in the pipeline and create a single meta value
(Admin -> Decoder -> Config -> App Rules)?
Query engine
Meta and Packet IDs ValueMap
Raw Log or Packets Metadata
A few stats SummaryDB
PageDB
indexDB indexDB
(‘time’ only)
packetDB(Decoder)
metaDB(Concentrator)
indexDB(Concentrator) ** Heavily impacts performance
Session
Meta Array (stored sequentially), 1-n
Meta ID Start
Meta ID End
Packet Packet Packet Packet
Packet/Log ID 1 4 12 127
Start
Or
Log 1
Value
-
maps
summ
indexDB aryDB
pageD
B
In investigator, you can still manually query values where index level =
IndexKeys but it will be SLOW.
If # unique values for a key in a slice > configured valueMax, that value becomes unsearchable.
(1) Check config for value X (2) Check current slice (or all) to get # unique values for a key
alias.host
406/2,500,000 = OK.
N:M relationship.
Symptoms:
1) Analysts: “We can’t use the
system – it’s too slow”
2) Reports timing out (blank
reports in the morning)
3) Inconsistent reporting
against meta keys (gaps in
data where certain values
should exist)
Checklist
Query time statistics (query distribution) + analysis
# 781001 audit 2016-Oct-10 21:48:27 SDK-Values User admin (session 1390049, 192.168.1.212:60144) has finished values
(channel 1390059, queued 00:00:00, execute 00:00:05, 192.168.1.213:50005=00:00:00 192.168.1.215:56005=00:00:05):
id1=9877205 id2=254187287 size=15 fieldName=ioc.malware where="(time='2016-Oct-10 21:20:00'-'2016-Oct-10 21:29:59') && (ioc.malware
exists)" flags=sessions,sort-total,order-descending threshold=0/sdk values id1=9877205 id2=254187287 size=15 fieldName=ioc.malware
where="(time='2016-Oct-10 21:20:00'-'2016-Oct-10 21:29:59') && (ioc.malware exists)" flags=sessions,sort-total,order-descending
threshold=0
Observations:
1) Lines up with the “Data is missing” complaint. Low alias.host max values, ip.dst randomly restricted to 10,000 on DC2PC1
2) Note (not shown) – DC3LC1 had a HUGE index defined. Many unnecessary IndexValues and large ValuesMax = Too much data in the
index, space filled up before metaDB did.
** This was done due to misunderstanding of the reporting engine. Only meta in the “Where” clause must be indexed, not the
“Select” clause.
Corrective Actions:
1) Full index review (remove unnecessary indexes, remove completely unique indexes like ‘msg’, increase valuesMax for alias.host
2) Make sure indexes are consistent across like-decoders
Observations:
1) Every single report, whether log or packet, was pointed at the Primary Broker
2) Log reports were timing out mainly due to packet concentrators taking a long time to respond to the query !!
3) Many, many inefficient queries, using lists when feeds would be better, etc.
Corrective Actions:
1) Go through each report, point log reports at log devices, packet reports at packet devices
2) Fixed overlapping report ranges (eg. weekly reports asking for 30 days of data)
3) Moved as much logic to app rules as possible, moved most (but not all) lists to feeds
© Copyright 2016 EMC Corporation.
Case Study – Noname Inc.
After things got happy again.
Meta timeroll
Reports ->
split log/packet