11import subprocess
22import json
3- import datetime
43import os
4+ import logging
55from prometheus_client import make_wsgi_app , Gauge
66from flask import Flask
77from waitress import serve
88
99app = Flask ("Speedtest-Exporter" ) # Create flask app
1010
11+
12+ # Setup logging values
13+ format_string = 'level=%(levelname)s datetime=%(asctime)s %(message)s'
14+ logging .basicConfig (encoding = 'utf-8' , level = logging .DEBUG ,
15+ format = format_string )
16+
17+ # Disable Waitress Logs
18+ log = logging .getLogger ('waitress' )
19+ log .disabled = True
20+
21+
1122# Create Metrics
1223server = Gauge ('speedtest_server_id' , 'Speedtest server ID used to test' )
1324jitter = Gauge ('speedtest_jitter_latency_milliseconds' ,
@@ -27,7 +38,7 @@ def bytes_to_bits(bytes_per_sec):
2738
2839def bits_to_megabits (bits_per_sec ):
2940 megabits = round (bits_per_sec * (10 ** - 6 ), 2 )
30- return str (megabits ) + " Mb/s "
41+ return str (megabits ) + "Mbps "
3142
3243
3344def is_json (myjson ):
@@ -52,13 +63,12 @@ def runTest():
5263 output = e .output
5364 if not is_json (output ):
5465 if len (output ) > 0 :
55- print ('Speedtest CLI Error occurred that' +
56- 'was not in JSON format' )
57- print (output )
66+ logging .error ('Speedtest CLI Error occurred that' +
67+ 'was not in JSON format' )
5868 return (0 , 0 , 0 , 0 , 0 , 0 )
5969 except subprocess .TimeoutExpired :
60- print ('Speedtest CLI process took too long to complete ' +
61- 'and was killed.' )
70+ logging . error ('Speedtest CLI process took too long to complete ' +
71+ 'and was killed.' )
6272 return (0 , 0 , 0 , 0 , 0 , 0 )
6373
6474 if is_json (output ):
@@ -90,11 +100,13 @@ def updateResults():
90100 download_speed .set (r_download )
91101 upload_speed .set (r_upload )
92102 up .set (r_status )
93- current_dt = datetime .datetime .now ()
94- print (current_dt .strftime ("%d/%m/%Y %H:%M:%S - " ) + "Server: "
95- + str (r_server ) + " | Jitter: " + str (r_jitter ) + " ms | Ping: "
96- + str (r_ping ) + " ms | Download: " + bits_to_megabits (r_download )
97- + " | Upload:" + bits_to_megabits (r_upload ))
103+ logging .info (
104+ "Server=" + str (r_server )
105+ + " Jitter=" + str (r_jitter ) + "ms"
106+ + " Ping=" + str (r_ping ) + "ms"
107+ + " Download=" + bits_to_megabits (r_download )
108+ + " Upload=" + bits_to_megabits (r_upload )
109+ )
98110 return make_wsgi_app ()
99111
100112
@@ -106,5 +118,5 @@ def mainPage():
106118
107119if __name__ == '__main__' :
108120 PORT = os .getenv ('SPEEDTEST_PORT' , 9798 )
109- print ("Starting Speedtest-Exporter on http://localhost:" + str (PORT ))
121+ logging . info ("Starting Speedtest-Exporter on http://localhost:" + str (PORT ))
110122 serve (app , host = '0.0.0.0' , port = PORT )
0 commit comments