0

siem からログ イベントを取得し、さらに処理するために Hadoop に取り込める csv ファイルに処理する方法についてサポートが必要です。以下は、siem のサンプルと目的の結果です。私はPythonで作業していますが、必要なほど経験がありません。

Apr 22 11:52:28 siem <159>Apr 22 11:55:26 10.1.1.10 LEEF:1.0|Websense|Security|7.7.3|transaction:permitted|sev=1       cat=9   usrName=LDAP://10.10.10.10 OU=Standard Users,OU=Users,OU=Frostbyte Falls,OU=Frostbyte - QSD,OU=CDG,OU=North America,DC=Global,DC=bullwinke,DC=com/Mr. Moose  src=10.1.10.10        srcPort=62133   srcBytes=233    dstBytes=39469  dst=165.254.42.233   dstPort=80  proxyStatus-code=200    serverStatus-code=304   duration=0 method=GET       disposition=1048  contentType=application/zip     reason=-        policy=role-8**US Frostbyte        role=8  userAgent=IPM url=http://acroipm.adobe.com/10/rdr/ENU/win/nooem/none/message.zip

Hive 列の定義: 日時 logsource ユーザー srcIP srcPort dstIP dstPort メソッド ペイロード

csv 形式の欲望:

Apr 22, 11:55:26, 10.1.1.10, Mr. Moose, 10.1.10.10, 62133, 165.254.42.233, 80, GET, url=http://acroipm.adobe.com/10/rdr/ENU/win/nooem/none/message.zip

考え?

よろしく

4

2 に答える 2

1

まず第一に、より良いシリアル化された出力を選択する必要があります。これは、この場合の文字列処理が非常に危険であり、希望するほど効果的ではないためです。

ただし、問題に対していくつかの正規表現キャッチを作成しました。これはすべてリストですが、そこから、どのように、どの文字列データにアクセスするかを決定でき','.join(<list here>)、最後にアイテムを結合するためにいつでも実行できます。カンマ付きリスト..

しかし、上で述べたように、このソリューションはお勧めしません。このデータをソースとは異なる方法でキャッチする必要があります..

import re

string = 'Apr 22 11:52:28 siem <159>Apr 22 11:55:26 10.1.1.10 LEEF:1.0|Websense|Security|7.7.3|transaction:permitted|sev=1       cat=9   usrName=LDAP://10.10.10.10 OU=Standard Users,OU=Users,OU=Frostbyte Falls,OU=Frostbyte - QSD,OU=CDG,OU=North America,DC=Global,DC=bullwinke,DC=com/Mr. Moose  src=10.1.10.10        srcPort=62133   srcBytes=233    dstBytes=39469  dst=165.254.42.233   dstPort=80  proxyStatus-code=200    serverStatus-code=304   duration=0 method=GET       disposition=1048  contentType=application/zip     reason=-        policy=role-8**US Frostbyte        role=8  userAgent=IPM url=http://acroipm.adobe.com/10/rdr/ENU/win/nooem/none/message.zip'

dates = re.findall(r'(\w+)\s(\d+)\s(\d+:\d+:\d+)\s', string)
ip = re.findall(r'\d+\.\d+\.\d+\.\d+', string)
url = re.findall(r'url=.*(?!\s)', string)
dstport = re.findall(r'dstPort=(\d+)', string)
srcport = re.findall(r'srcPort=(\d+)', string)
method = re.findall(r'method=(\w+)\s', string)
user = re.findall(r'DC=com/(.*)\ssrc=', string)

print dates, ip, url, dstport, srcport, method, user
于 2013-05-23T23:20:03.083 に答える