Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Fetching contributors…

Cannot retrieve contributors at this time

82 lines (52 sloc) 4.283 kb
!! Splunk til MySQL Flytte værktøj !!
Scriptet er lavet til at Mappe data fra Splunk til Skema i MySQL. Mapning er som følger:
Splunk MySQL
------------------------------------------------------------------
PersonCivilRegistration `cprNrBorger`
UserIdentification `bruger`
UserIdentificationOnBehalfOf `ansvarlig`
HealthcareProfessionalOrganization `orgUsingID
SourceSystemIdentifier `systemName`
Activity `handling`
SessionId `sessionId`
"2012....." `tidspunkt`
Med følgende Input til Splunk
2012-06-07T15:26:48.388Z PersonCivilRegistrationIdentifier="100000001" UserIdentifier="0101001000" UserIdentifierOnBehalfOf="0101001000" HealthcareProfessionalOrganization="SOR:12345678" SourceSystemIdentifier="System name" Activity="Sundhedsperson med cpr-nummer 0101001001 har lavet opslag p data." SessionId="urn:uuid:bcf637c1-3032-4cb3-a353-ac36faca3503"
!! Installation af Splunk til MySQL Flytteværktøj !!
Requirements:
For at kunne køre softwaren skal følgende være installeret
* Python 2.7+
* Splunk SDK for Python - https://github.com/splunk/splunk-sdk-python
* Python MySQL API (pymysql) - https://github.com/petehunt/PyMySQL/
Opsætning:
* Installer Python 2.7+
* Hent Splunk SDK herfra: https://github.com/splunk/splunk-sdk-python
* Installer Splunk SDK på server med
python setup.py install
* Hent MySQL API fra https://github.com/petehunt/PyMySQL/
* Installer MySQL API på serveren med
python setup.py install
!! Kørsel af Værktøj !!
Scriptet er beregnet på at blive kørt at udenforstående automatisk kørsel, så som cron eller deamontols.
!! Filer scriptet skriver i !!
STATUS_FILE="Splunk2MySQL.status" - Denne fil indeholder den seneste Index Time som scriptet er nået til at flytte data for.
SPLUNK_DATA_FILE="currentData.csv" - Fil som skrivet skriver med de seneste data hentet fra Splunk og som indsættes i MySQL
LOG_FILE="Splunk2MySQL.log" - Scriptets logfil - Default loglevel er INFO - men for høj debug af actions kan dette rettes til DEBUG ved at rette linjen:
Fra:
logging.basicConfig(filename=LOG_FILE,level=logging.INFO,format='%(asctime)s, %(funcName)s, %(levelname)s, %(message)s', datefmt='%m/%d/%Y %H:%M:%S')
Til:
logging.basicConfig(filename=LOG_FILE,level=logging.DEBUG,format='%(asctime)s, %(funcName)s, %(levelname)s, %(message)s', datefmt='%m/%d/%Y %H:%M:%S')
!! Scripts opbygning !!
Scriptet gør følgende:
* Connecter til Splunk
* Validere Splunk søgningen
* Udføre søgning i Splunk udfra hvor langt man er nået - hvis det er første gang scriptet køre vil det tage op til nu minus 30 sec. Ellers hentes alt der er indexeret siden sidste kørsel til nu minus 30 sec.
* Gemmer data i CSV fil
* Åbner forbindelse til MySQL
* Læser CSV fil og indsætter data i MySQL
* Skriver den højeste index tid i STATUS_FILE
Hvis nået går galt vil dette blive skrevet ud til LOG_FILE og derfor er det vigtigt at denne overvåges for ERROR entries.
!! Antagelser !!
* Scriptet antager at man henter data udfra tidspunktet de er indexeret på i Splunk, da man ikke kan være sikker på at datoen i logs vil være fortløbende - nogle servere kan f.eks. være offline og først aflevere senere og således er den eneste sikre ting at hente data udfra hvornår de er indexeret i Splunk. Derfor bruges denne metode. Tests af scriptet ser ud til at virke i denne hensende. Desuden er der et delay på (default) 30 sekunder der sikre at man ikke henter data op til det sekund som scriptet køre, da der kan nå at komme mere data i de sekund i Splunk skal skal sikres medtages. Derfor er det nu minus 30 sekunder (default) der hentes for i det man kalder scriptet.
!! Usikkerhed !!
* Med den antagelse at man henter data ud af Splunk udfra Indextime og at man dermed får alt data med over i MySQL når scriptet køre. Der er dog ikke udviklet nogen verifikation af at alle data med sikkerhed er flyttet. Det ville være muligt at forsøge validere at der indenfor tidsrammen indextime-x til indextime-y er så mange entries i Splunk og så kigge på om scriptet også har flyttet så mange entries. Dette er nuværende ikke del af scriptet.
Jump to Line
Something went wrong with that request. Please try again.