#!/bin/env python
import requests
import json
import hashlib
import base64
import time
import hmac
import pandas as pd
# Account Info
AccessId =
AccessKey =
Company =
# Define start time
start_timestamp = int(time.mktime(time.strptime("2024-01-01", "%Y-%m-%d"))) * 1000
# Get the current time in milliseconds
current_timestamp = int(time.time() * 1000)
# Request Info
httpVerb = 'GET'
resourcePath = '/device/devices/659/devicedatasources/77499/instances/64341678/data'
queryParams = f'?start={start_timestamp}&end={current_timestamp}'
data = ''
# Construct URL
url = 'https://' + Company + '.logicmonitor.com/santaba/rest' + resourcePath + queryParams
# Get current time in milliseconds
epoch = str(int(time.time() * 1000))
# Concatenate Request details
requestVars = httpVerb + epoch + data + resourcePath
# Construct signature
hmac1 = hmac.new(AccessKey.encode(), msg=requestVars.encode(), digestmod=hashlib.sha256).hexdigest()
signature = base64.b64encode(hmac1.encode())
# Construct headers
auth = 'LMv1 ' + AccessId + ':' + signature.decode() + ':' + epoch
headers = {'Content-Type': 'application/json', 'Authorization': auth}
# Make request
response = requests.get(url, data=data, headers=headers)
# Print status and body of response
print('Response Status:', response.status_code)
print('Response Body:', response.content)
# Convert response content to JSON
json_response = json.loads(response.content)
# Check if "data" field exists in the JSON response
if "data" in json_response:
data_field = json_response["data"]
# Check if "values" field exists
if data_field and "values" in data_field:
# Extract the "values" field and create a Pandas DataFrame
df = pd.DataFrame(data_field["values"], columns=data_field["dataPoints"])
# Access the "time" field and add it as a new column
df["time"] = pd.to_datetime(data_field["time"], unit="ms")
# Print the Pandas DataFrame
print(df)
else:
print("No 'values' field found in the 'data' section of the JSON response.")
else:
print("No 'data' field found in the JSON response. Error message:", json_response.get("errmsg", "N/A"))
i want to capture Data from 1st January 2024 to till date. Any one Please look into this