wownero-network-elk/main.py

52 lines
1.7 KiB
Python

import requests
import os
import arrow
import json
payload = {'jsonrpc': '2.0', 'id': '0', 'method': '', 'params': {}}
headers = {'Content-Type': 'application/json'}
daemon = 'http://crypto.int.lzahq.tech:34568'
json_rpc = daemon + '/json_rpc'
data_path = './data/logs'
def make_payload(rpc_method, params={}):
payload['method'] = rpc_method
payload['params'] = params
return payload
def make_rpc(rpc_method, http_method='get', _payload={}):
if http_method == 'get':
req = requests.get
else:
req = requests.post
r = req(
json_rpc, timeout=5, headers=headers,
json=make_payload(rpc_method, _payload)
)
r.raise_for_status()
return r.json()['result']
def run():
top_block = make_rpc('get_block_count', 'get')['count']
for block in range(top_block - 1, 0, -1):
_path = f'{data_path}/{block}.json'
if not os.path.isfile(_path):
block_data = make_rpc('get_block', 'get', {'height': block})['block_header']
ts = arrow.get(block_data['timestamp'])
if block_data['timestamp'] == 0:
ts = arrow.get('2018-04-01 04:20:00')
block_data['datetime'] = ts.format('YYYY-MM-DD HH:mm:ss')
index_date = ts.format('YYYY-MM')
index_name = f'wownero-block-data-{index_date}'
r = requests.post(
f'http://localhost:9200/{index_name}/_doc/{block_data["height"]}',
json=block_data, timeout=5, headers=headers
)
r.raise_for_status()
with open(_path, 'w') as f:
f.write(json.dumps(block_data))
print(f'Added file {_path} for index {index_name}')
if __name__ == '__main__':
run()