From 9e506f397616f161a0afb2cd95156692418b6af0 Mon Sep 17 00:00:00 2001
From: Tim Steiner <tim.steiner@nebraska.edu>
Date: Tue, 19 Dec 2023 17:25:51 -0600
Subject: [PATCH] Fix varnish cloudwatch, add IMDSv2 tokens.

---
 varnishstat-to-cloudwatch.py | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/varnishstat-to-cloudwatch.py b/varnishstat-to-cloudwatch.py
index 3835997..5d12ecd 100755
--- a/varnishstat-to-cloudwatch.py
+++ b/varnishstat-to-cloudwatch.py
@@ -1,8 +1,9 @@
 #!/usr/bin/python
 
 import boto3
-import urllib2
+#import urllib2
 import json
+import requests
 import sys
 #import re
 #import tempfile
@@ -25,7 +26,7 @@ def main():
   previous_data = None
   metrics = {}
   while True:
-    current_data = json.loads(subprocess.check_output(['varnishstat', '-j', '-1', '-f', 'MAIN.client_req', '-f', 'MAIN.cache_hit']))
+    current_data = json.loads(subprocess.check_output(['varnishstat', '-j', '-1', '-f', 'MAIN.client_req', '-f', 'MAIN.cache_hit']))['counters']
     if previous_data:
       metric_data = []
       for key in current_data:
@@ -56,8 +57,10 @@ def main():
 
 # Returns the region the instance is currently running in (eg: 'us-east')
 def get_region():
-  instance_info = urllib2.urlopen('http://169.254.169.254/2018-09-24/dynamic/instance-identity/document/').read()
-  instance_info = json.loads(instance_info)
+  session_token = requests.put('http://169.254.169.254/latest/api/token', headers={'X-aws-ec2-metadata-token-ttl-seconds': 60}).text
+  instance_info = requests.get('http://169.254.169.254/2018-09-24/dynamic/instance-identity/document/', headers={'X-aws-ec2-metadata-token': session_token}).json()
+  #instance_info = urllib2.urlopen('http://169.254.169.254/2018-09-24/dynamic/instance-identity/document/').read()
+  #instance_info = json.loads(instance_info)
   return instance_info['region']
 
 # Returns the instance_id of this VM.
-- 
GitLab