Skip to content

Instantly share code, notes, and snippets.

@gowatana
Created December 6, 2020 14:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gowatana/a86db46a7b37f316edebf0402edbd6c5 to your computer and use it in GitHub Desktop.
Save gowatana/a86db46a7b37f316edebf0402edbd6c5 to your computer and use it in GitHub Desktop.
#!/bin/env python
# -*- coding: utf-8 -*-
import sys
import json
import requests
import datetime
args = sys.argv
conf_file = args[1]
with open(conf_file, "r") as file:
conf = file.read()
conf = json.loads(conf)
prism_addr = conf["prism_address"]
prism_user = conf["user_name"]
prism_pass = conf["password"]
def get_simple_timestamp(time_stamp_in_usecs):
simple_timestamp = datetime.datetime.fromtimestamp(int(time_stamp_in_usecs) / 1000000)
return simple_timestamp
def get_ntnx_v2_events():
api_url = 'https://' + prism_addr + ':9440/PrismGateway/services/rest/v2.0/events'
requests.packages.urllib3.disable_warnings()
s = requests.Session()
s.auth = (prism_user, prism_pass)
s.headers.update({'Content-Type': 'application/json; charset=utf-8'})
events = s.get(api_url, verify=False).json()
return events
def main():
events = get_ntnx_v2_events()
# 列名を出力。
print 'event_time_stamp, severity, alert_type, audit_user, acknowledged, message'
# イベント情報を出力。
for event in events['entities']:
if event['alert_type_uuid'] in ['LoginInfoAudit', 'PasswordAudit', 'UserAudit']:
created_time_stamp_in_usecs = event['created_time_stamp_in_usecs']
event_time_stamp = get_simple_timestamp(created_time_stamp_in_usecs)
severity = event['severity']
alert_type_uuid = event['alert_type_uuid']
acknowledged = event['acknowledged']
message = event['message']
# context_type / context_value をディクショナリに変換。
context_types = event['context_types']
context_values = event['context_values']
event_contexts = zip(context_types, context_values)
event_context = {}
for (con_type, con_value) in event_contexts:
c_type = str(con_type)
c_value = str(con_value)
event_context[c_type] = c_value
# message を成形。
event_message = message.format(**event_context)
audit_user = event_context['audit_user']
event_time_stamp_str = event_time_stamp.strftime('%Y-%m-%d %H:%M:%S')
acknowledged_str = str(acknowledged)
event_data = [event_time_stamp_str, severity, alert_type_uuid, audit_user, acknowledged_str, event_message]
print(','.join(event_data))
if __name__ == '__main__':
main()
@gowatana
Copy link
Author

gowatana commented Dec 6, 2020

下記の投稿むけ。これは Python2 専用。

Nutanix CE の Event 情報を取得してみる。(Python 編)
http://blog.ntnx.jp/entry/2017/12/05/234502

@gowatana
Copy link
Author

gowatana commented Dec 6, 2020

ログイン情報は下記のJSONで指定する。
https://gist.github.com/gowatana/d5a95a0507804bb9d3ac68dd03249b6f

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment