Skip to content

Commit a656d4f

Browse files
committed
include current datetime in log files for memmon
1 parent 22e2f12 commit a656d4f

File tree

2 files changed

+56
-43
lines changed

2 files changed

+56
-43
lines changed

superlance/memmon.py

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@
8484
import os
8585
import sys
8686
import time
87+
import datetime
8788
from collections import namedtuple
8889
from superlance.compat import maxint
8990
from superlance.compat import xmlrpclib
@@ -147,7 +148,8 @@ def runforever(self, test=False):
147148
if self.any is not None:
148149
status.append('Checking any=%s' % self.any)
149150

150-
self.stderr.write('\n'.join(status) + '\n')
151+
self.stderr.write(datetime.datetime.now().isoformat() + ' ' +
152+
'\n'.join(status) + '\n')
151153

152154
infos = self.rpc.supervisor.getAllProcessInfo()
153155

@@ -170,19 +172,28 @@ def runforever(self, test=False):
170172

171173
for n in name, pname:
172174
if n in self.programs:
173-
self.stderr.write('RSS of %s is %s\n' % (pname, rss))
174-
if rss > self.programs[name]:
175+
self.stderr.write('%s RSS of %s is %s\n' %
176+
(datetime.datetime.now().isoformat(),
177+
pname,
178+
rss))
179+
if rss > self.programs[name]:
175180
self.restart(pname, rss)
176181
continue
177182

178183
if group in self.groups:
179-
self.stderr.write('RSS of %s is %s\n' % (pname, rss))
184+
self.stderr.write('%s RSS of %s is %s\n' %
185+
(datetime.datetime.now().isoformat(),
186+
pname,
187+
rss))
180188
if rss > self.groups[group]:
181189
self.restart(pname, rss)
182190
continue
183191

184192
if self.any is not None:
185-
self.stderr.write('RSS of %s is %s\n' % (pname, rss))
193+
self.stderr.write('%s RSS of %s is %s\n' %
194+
(datetime.datetime.now().isoformat(),
195+
pname,
196+
rss))
186197
if rss > self.any:
187198
self.restart(pname, rss)
188199
continue
@@ -195,12 +206,14 @@ def runforever(self, test=False):
195206
def restart(self, name, rss):
196207
info = self.rpc.supervisor.getProcessInfo(name)
197208
uptime = info['now'] - info['start'] #uptime in seconds
198-
self.stderr.write('Restarting %s\n' % name)
209+
self.stderr.write('%s Restarting %s\n' %
210+
(datetime.datetime.now().isoformat(), name))
211+
memmonId = self.memmonName and " [%s]" % self.memmonName or ""
199212
try:
200213
self.rpc.supervisor.stopProcess(name)
201214
except xmlrpclib.Fault as e:
202-
msg = ('Failed to stop process %s (RSS %s), exiting: %s' %
203-
(name, rss, e))
215+
msg = ('%s Failed to stop process %s (RSS %s), exiting: %s' %
216+
(datetime.datetime.now().isoformat(), name, rss, e))
204217
self.stderr.write(str(msg))
205218
if self.email:
206219
subject = self.format_subject(
@@ -212,8 +225,9 @@ def restart(self, name, rss):
212225
try:
213226
self.rpc.supervisor.startProcess(name)
214227
except xmlrpclib.Fault as e:
215-
msg = ('Failed to start process %s after stopping it, '
216-
'exiting: %s' % (name, e))
228+
msg = ('%s Failed to start process %s after stopping it, '
229+
'exiting: %s' %
230+
(datetime.datetime.now().isoformat(), name, e))
217231
self.stderr.write(str(msg))
218232
if self.email:
219233
subject = self.format_subject(

superlance/tests/memmon_test.py

Lines changed: 32 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,13 @@ def test_runforever_tick_programs(self):
5454
memmon.runforever(test=True)
5555
lines = memmon.stderr.getvalue().split('\n')
5656
self.assertEqual(len(lines), 8)
57-
self.assertEqual(lines[0], 'Checking programs bar=0, baz_01=0, foo=0')
58-
self.assertEqual(lines[1], 'RSS of foo:foo is 2264064')
59-
self.assertEqual(lines[2], 'Restarting foo:foo')
60-
self.assertEqual(lines[3], 'RSS of bar:bar is 2265088')
61-
self.assertEqual(lines[4], 'Restarting bar:bar')
62-
self.assertEqual(lines[5], 'RSS of baz:baz_01 is 2265088')
63-
self.assertEqual(lines[6], 'Restarting baz:baz_01')
57+
self.assertIn('Checking programs bar=0, baz_01=0, foo=0', lines[0])
58+
self.assertIn('RSS of foo:foo is 2264064', lines[1])
59+
self.assertIn('Restarting foo:foo', lines[2])
60+
self.assertIn('RSS of bar:bar is 2265088', lines[3])
61+
self.assertIn('Restarting bar:bar', lines[4])
62+
self.assertIn('RSS of baz:baz_01 is 2265088', lines[5])
63+
self.assertIn('Restarting baz:baz_01', lines[6])
6464
self.assertEqual(lines[7], '')
6565
mailed = memmon.mailed.split('\n')
6666
self.assertEqual(len(mailed), 4)
@@ -80,9 +80,9 @@ def test_runforever_tick_groups(self):
8080
memmon.runforever(test=True)
8181
lines = memmon.stderr.getvalue().split('\n')
8282
self.assertEqual(len(lines), 4)
83-
self.assertEqual(lines[0], 'Checking groups foo=0')
84-
self.assertEqual(lines[1], 'RSS of foo:foo is 2264064')
85-
self.assertEqual(lines[2], 'Restarting foo:foo')
83+
self.assertIn('Checking groups foo=0', lines[0])
84+
self.assertIn('RSS of foo:foo is 2264064', lines[1])
85+
self.assertIn('Restarting foo:foo', lines[2])
8686
self.assertEqual(lines[3], '')
8787
mailed = memmon.mailed.split('\n')
8888
self.assertEqual(len(mailed), 4)
@@ -102,13 +102,13 @@ def test_runforever_tick_any(self):
102102
memmon.runforever(test=True)
103103
lines = memmon.stderr.getvalue().split('\n')
104104
self.assertEqual(len(lines), 8)
105-
self.assertEqual(lines[0], 'Checking any=0')
106-
self.assertEqual(lines[1], 'RSS of foo:foo is 2264064')
107-
self.assertEqual(lines[2], 'Restarting foo:foo')
108-
self.assertEqual(lines[3], 'RSS of bar:bar is 2265088')
109-
self.assertEqual(lines[4], 'Restarting bar:bar')
110-
self.assertEqual(lines[5], 'RSS of baz:baz_01 is 2265088')
111-
self.assertEqual(lines[6], 'Restarting baz:baz_01')
105+
self.assertIn('Checking any=0', lines[0])
106+
self.assertIn('RSS of foo:foo is 2264064', lines[1])
107+
self.assertIn('Restarting foo:foo', lines[2])
108+
self.assertIn('RSS of bar:bar is 2265088', lines[3])
109+
self.assertIn('Restarting bar:bar', lines[4])
110+
self.assertIn('RSS of baz:baz_01 is 2265088', lines[5])
111+
self.assertIn('Restarting baz:baz_01', lines[6])
112112
self.assertEqual(lines[7], '')
113113
mailed = memmon.mailed.split('\n')
114114
self.assertEqual(len(mailed), 4)
@@ -123,12 +123,12 @@ def test_runforever_tick_programs_and_groups(self):
123123
memmon.runforever(test=True)
124124
lines = memmon.stderr.getvalue().split('\n')
125125
self.assertEqual(len(lines), 7)
126-
self.assertEqual(lines[0], 'Checking programs baz_01=0')
127-
self.assertEqual(lines[1], 'Checking groups foo=0')
128-
self.assertEqual(lines[2], 'RSS of foo:foo is 2264064')
129-
self.assertEqual(lines[3], 'Restarting foo:foo')
130-
self.assertEqual(lines[4], 'RSS of baz:baz_01 is 2265088')
131-
self.assertEqual(lines[5], 'Restarting baz:baz_01')
126+
self.assertIn('Checking programs baz_01=0', lines[0])
127+
self.assertIn('Checking groups foo=0', lines[1])
128+
self.assertIn('RSS of foo:foo is 2264064', lines[2])
129+
self.assertIn('Restarting foo:foo', lines[3])
130+
self.assertIn('RSS of baz:baz_01 is 2265088', lines[4])
131+
self.assertIn('Restarting baz:baz_01', lines[5])
132132
self.assertEqual(lines[6], '')
133133
mailed = memmon.mailed.split('\n')
134134
self.assertEqual(len(mailed), 4)
@@ -148,8 +148,8 @@ def test_runforever_tick_programs_norestart(self):
148148
memmon.runforever(test=True)
149149
lines = memmon.stderr.getvalue().split('\n')
150150
self.assertEqual(len(lines), 3)
151-
self.assertEqual(lines[0], 'Checking programs foo=%s' % maxint)
152-
self.assertEqual(lines[1], 'RSS of foo:foo is 2264064')
151+
self.assertIn('Checking programs foo=%s' % maxint, lines[0])
152+
self.assertIn('RSS of foo:foo is 2264064', lines[1])
153153
self.assertEqual(lines[2], '')
154154
self.assertEqual(memmon.mailed, False)
155155

@@ -163,8 +163,8 @@ def test_stopprocess_fault_tick_programs_norestart(self):
163163
memmon.runforever(test=True)
164164
lines = memmon.stderr.getvalue().split('\n')
165165
self.assertEqual(len(lines), 3)
166-
self.assertEqual(lines[0], 'Checking programs foo=%s' % maxint)
167-
self.assertEqual(lines[1], 'RSS of foo:foo is 2264064')
166+
self.assertIn('Checking programs foo=%s' % maxint, lines[0])
167+
self.assertIn('RSS of foo:foo is 2264064', lines[1])
168168
self.assertEqual(lines[2], '')
169169
self.assertEqual(memmon.mailed, False)
170170

@@ -192,17 +192,17 @@ def test_stopprocess_fails_to_stop(self):
192192
self.assertRaises(xmlrpclib.Fault, memmon.runforever, True)
193193
lines = memmon.stderr.getvalue().split('\n')
194194
self.assertEqual(len(lines), 4)
195-
self.assertEqual(lines[0], 'Checking programs BAD_NAME=%s' % 0)
196-
self.assertEqual(lines[1], 'RSS of BAD_NAME:BAD_NAME is 2264064')
197-
self.assertEqual(lines[2], 'Restarting BAD_NAME:BAD_NAME')
198-
self.assertTrue(lines[3].startswith('Failed'))
195+
self.assertIn('Checking programs BAD_NAME=%s' % 0, lines[0])
196+
self.assertIn('RSS of BAD_NAME:BAD_NAME is 2264064', lines[1])
197+
self.assertIn('Restarting BAD_NAME:BAD_NAME', lines[2])
198+
self.assertIn('Failed', lines[3])
199199
mailed = memmon.mailed.split('\n')
200200
self.assertEqual(len(mailed), 4)
201201
self.assertEqual(mailed[0], 'To: [email protected]')
202202
self.assertEqual(mailed[1],
203203
'Subject: memmon: failed to stop process BAD_NAME:BAD_NAME, exiting')
204204
self.assertEqual(mailed[2], '')
205-
self.assertTrue(mailed[3].startswith('Failed'))
205+
self.assertIn('Failed', mailed[3])
206206

207207
def test_subject_no_name(self):
208208
"""set the name to None to check if subject formats to:
@@ -392,4 +392,3 @@ def test_argparser(self):
392392

393393
if __name__ == '__main__':
394394
unittest.main()
395-

0 commit comments

Comments
 (0)