# Splunk MA-c19 Offboarding Notes

## Test Data
Customer asked for test data prior to roll off. 

Steps
- tar up a bucket
- test the bucket on a standalone splunk install
    Standalone splunk
    centos7
    m5a.xlarge
    vpc-038e00d0478425598
    subnet-035fc7b980229db6a
    xdr-indexer-instance-role
    ma-c19-splunk-test-standalone
    msoc-build
- install a modern version of the aws cli. 
    - `/usr/local/bin/aws --version`
        - aws-cli/1.21.4 is too old. 
    
- set it to the customer via aws s3 presign url
    - use the xdr-ma-c19-prod-splunk-frozen bucket
        `/usr/local/bin/aws s3 cp azure_bucket.tar.gz s3://xdr-ma-c19-prod-splunk-frozen`
    - Create presigned URL
        `/usr/local/bin/aws s3 presign s3://xdr-ma-c19-prod-splunk-frozen/azure_bucket.tar.gz --expires-in 604800`


## PREP

Customer is OK with Splunk .tsidx files. No need to convert them to text files. 
Customer does need smaller file sizes. Index tar.gz files will need to be broken up. 

- Document which indexes will be moved
- Adjust CM to set data retention ( if, needed )
- Allow indexers to prune old data ( if, needed )
- Ensure all data is replicated to all indexers
    - Check the indexer clustering webpage and ensure 3 copies are green for each index
    - This is configured via the site_replication_factor setting
- Stop splunk on one indexer
- Tar up index directories
- Upload to s3
- Download from s3 to temp indexers and extract to ensure data is readable
- Repeat for all indexes
- Break up tar.gz files into smaller chunks for customer to consume
- Upload smaller chunks to S3 for final customer delivery

How big and old are the indexes?
```
| rest /services/data/indexes/  
| search title=* NOT title=_* NOT title=junk
| eval indexSizeGB = if(currentDBSizeMB >= 1 AND totalEventCount >=1, currentDBSizeMB/1024, null())     
| eval elapsedTime = now() - strptime(minTime,"%Y-%m-%dT%H:%M:%S%z")    
| eval dataAge = ceiling(elapsedTime / 86400)   
| stats sum(indexSizeGB) AS totalSize max(dataAge) as oldestDataAge by title    
| eval totalSize = if(isnotnull(totalSize), round(totalSize, 2), 0)     
| eval oldestDataAge = if(isNum(oldestDataAge), oldestDataAge, "N/A")       
| rename title as "Index" totalSize as "Total Size (GB)" oldestDataAge as "Oldest Data Age (days)"
```

What is the current license usage? Is data is coming in?
```
index=_internal host=ma-c19-splunk-cm* source="/opt/splunk/var/log/splunk/license_usage.log*" type=Usage 
| eval mb = round(b/1024/1024,2) 
| timechart span=1d useother=f sum(mb) AS gbytes BY h
```


## Indexes to be Copied

/opt/splunkdata/hot/normal_primary
            Uncompressed    Compressed
(5 parts uploaded)app_aws     368GB     246G   
(3 parts uploaded)salesforce  185GB           112GB
(4 parts uploaded)junk        223GB     163G  
(done)azure       47GB            36GB
(done)app_o365    4.8GB           3.3GB
(done)defaultdb   12MB            7.1MB
(done)audit       30GB            21GB
total: 635GB
total Compressed: 581 GB
Progress Bar: 12/12
total progress bar: 16/16

File sizes `du -sh * | sort -h`


## Prep Indexes

- Stop Splunk
- Use tmux to avoid ssh session timeout and incase it takes a long time to create the .tar.gz. 
- Tar index folder
    - tar cvzf myindex_index.tar.gz myindex/


## Upload to S3

Ensure the aws cli is installed. If not, use a python venv to setup aws cli. This assumes python3 is already installed. Why not use awscliv2? Because it is not in pip! These instructions need to be updated to use awscliv2. 

```
cd ~
python3 -m venv awscli
source awscli/bin/activate
cd awscli/bin
pip install awscli
chmod +x aws
aws --version

#bash oneliner
cd ~ && python3 -m venv awscli && source awscli/bin/activate && cd awscli/bin && pip install awscli && chmod +x aws && aws --version
```

The aws cli should be able to use the IAM instance role to connect to S3. No need to add AWS keys but you will need to configure the region (us-gov-east-1). 

```
aws configure
aws s3 ls
```

Actually upload the file with this command:
```
~/awscli/bin/aws s3 cp /opt/splunkdata/hot/normal_primary/app_o365_index.tar.gz s3://xdr-ma-c19-prod-splunk-frozen/app_o365_index.tar.gz
```
Run this some where you have awscliv2 ( sorry super annoying i know! If you don't use awscliv2 you will not be able to download the file. )
`aws --profile=mdr-prod-ma-c19-gov s3 presign s3://xdr-ma-c19-prod-splunk-frozen/app_o365_index.tar.gz --expires-in 86400`

## Split files before uploading 

split -b 50G salesforce_index.tar.gz salesforce_index.tar.gz.part-
