Skip to content

Commit 719f4af

Browse files
committed
include current datetime in log files for memmon
1 parent cc0bb4b commit 719f4af

File tree

2 files changed

+55
-43
lines changed

2 files changed

+55
-43
lines changed

superlance/memmon.py

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

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

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

@@ -169,19 +171,28 @@ def runforever(self, test=False):
169171

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

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

183191
if self.any is not None:
184-
self.stderr.write('RSS of %s is %s\n' % (pname, rss))
192+
self.stderr.write('%s RSS of %s is %s\n' %
193+
(datetime.datetime.now().isoformat(),
194+
pname,
195+
rss))
185196
if rss > self.any:
186197
self.restart(pname, rss)
187198
continue
@@ -194,13 +205,14 @@ def runforever(self, test=False):
194205
def restart(self, name, rss):
195206
info = self.rpc.supervisor.getProcessInfo(name)
196207
uptime = info['now'] - info['start'] #uptime in seconds
197-
self.stderr.write('Restarting %s\n' % name)
208+
self.stderr.write('%s Restarting %s\n' %
209+
(datetime.datetime.now().isoformat(), name))
198210
memmonId = self.memmonName and " [%s]" % self.memmonName or ""
199211
try:
200212
self.rpc.supervisor.stopProcess(name)
201213
except xmlrpclib.Fault as e:
202-
msg = ('Failed to stop process %s (RSS %s), exiting: %s' %
203-
(name, rss, e))
214+
msg = ('%s Failed to stop process %s (RSS %s), exiting: %s' %
215+
(datetime.datetime.now().isoformat(), name, rss, e))
204216
self.stderr.write(str(msg))
205217
if self.email:
206218
subject = 'memmon%s: failed to stop process %s, exiting' % (memmonId, name)
@@ -210,8 +222,9 @@ def restart(self, name, rss):
210222
try:
211223
self.rpc.supervisor.startProcess(name)
212224
except xmlrpclib.Fault as e:
213-
msg = ('Failed to start process %s after stopping it, '
214-
'exiting: %s' % (name, e))
225+
msg = ('%s Failed to start process %s after stopping it, '
226+
'exiting: %s' %
227+
(datetime.datetime.now().isoformat(), name, e))
215228
self.stderr.write(str(msg))
216229
if self.email:
217230
subject = 'memmon%s: failed to start process %s, exiting' % (memmonId, name)

superlance/tests/memmon_test.py

Lines changed: 32 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,13 @@ def test_runforever_tick_programs(self):
4747
memmon.runforever(test=True)
4848
lines = memmon.stderr.getvalue().split('\n')
4949
self.assertEqual(len(lines), 8)
50-
self.assertEqual(lines[0], 'Checking programs bar=0, baz_01=0, foo=0')
51-
self.assertEqual(lines[1], 'RSS of foo:foo is 2264064')
52-
self.assertEqual(lines[2], 'Restarting foo:foo')
53-
self.assertEqual(lines[3], 'RSS of bar:bar is 2265088')
54-
self.assertEqual(lines[4], 'Restarting bar:bar')
55-
self.assertEqual(lines[5], 'RSS of baz:baz_01 is 2265088')
56-
self.assertEqual(lines[6], 'Restarting baz:baz_01')
50+
self.assertIn('Checking programs bar=0, baz_01=0, foo=0', lines[0])
51+
self.assertIn('RSS of foo:foo is 2264064', lines[1])
52+
self.assertIn('Restarting foo:foo', lines[2])
53+
self.assertIn('RSS of bar:bar is 2265088', lines[3])
54+
self.assertIn('Restarting bar:bar', lines[4])
55+
self.assertIn('RSS of baz:baz_01 is 2265088', lines[5])
56+
self.assertIn('Restarting baz:baz_01', lines[6])
5757
self.assertEqual(lines[7], '')
5858
mailed = memmon.mailed.split('\n')
5959
self.assertEqual(len(mailed), 4)
@@ -73,9 +73,9 @@ def test_runforever_tick_groups(self):
7373
memmon.runforever(test=True)
7474
lines = memmon.stderr.getvalue().split('\n')
7575
self.assertEqual(len(lines), 4)
76-
self.assertEqual(lines[0], 'Checking groups foo=0')
77-
self.assertEqual(lines[1], 'RSS of foo:foo is 2264064')
78-
self.assertEqual(lines[2], 'Restarting foo:foo')
76+
self.assertIn('Checking groups foo=0', lines[0])
77+
self.assertIn('RSS of foo:foo is 2264064', lines[1])
78+
self.assertIn('Restarting foo:foo', lines[2])
7979
self.assertEqual(lines[3], '')
8080
mailed = memmon.mailed.split('\n')
8181
self.assertEqual(len(mailed), 4)
@@ -95,13 +95,13 @@ def test_runforever_tick_any(self):
9595
memmon.runforever(test=True)
9696
lines = memmon.stderr.getvalue().split('\n')
9797
self.assertEqual(len(lines), 8)
98-
self.assertEqual(lines[0], 'Checking any=0')
99-
self.assertEqual(lines[1], 'RSS of foo:foo is 2264064')
100-
self.assertEqual(lines[2], 'Restarting foo:foo')
101-
self.assertEqual(lines[3], 'RSS of bar:bar is 2265088')
102-
self.assertEqual(lines[4], 'Restarting bar:bar')
103-
self.assertEqual(lines[5], 'RSS of baz:baz_01 is 2265088')
104-
self.assertEqual(lines[6], 'Restarting baz:baz_01')
98+
self.assertIn('Checking any=0', lines[0])
99+
self.assertIn('RSS of foo:foo is 2264064', lines[1])
100+
self.assertIn('Restarting foo:foo', lines[2])
101+
self.assertIn('RSS of bar:bar is 2265088', lines[3])
102+
self.assertIn('Restarting bar:bar', lines[4])
103+
self.assertIn('RSS of baz:baz_01 is 2265088', lines[5])
104+
self.assertIn('Restarting baz:baz_01', lines[6])
105105
self.assertEqual(lines[7], '')
106106
mailed = memmon.mailed.split('\n')
107107
self.assertEqual(len(mailed), 4)
@@ -116,12 +116,12 @@ def test_runforever_tick_programs_and_groups(self):
116116
memmon.runforever(test=True)
117117
lines = memmon.stderr.getvalue().split('\n')
118118
self.assertEqual(len(lines), 7)
119-
self.assertEqual(lines[0], 'Checking programs baz_01=0')
120-
self.assertEqual(lines[1], 'Checking groups foo=0')
121-
self.assertEqual(lines[2], 'RSS of foo:foo is 2264064')
122-
self.assertEqual(lines[3], 'Restarting foo:foo')
123-
self.assertEqual(lines[4], 'RSS of baz:baz_01 is 2265088')
124-
self.assertEqual(lines[5], 'Restarting baz:baz_01')
119+
self.assertIn('Checking programs baz_01=0', lines[0])
120+
self.assertIn('Checking groups foo=0', lines[1])
121+
self.assertIn('RSS of foo:foo is 2264064', lines[2])
122+
self.assertIn('Restarting foo:foo', lines[3])
123+
self.assertIn('RSS of baz:baz_01 is 2265088', lines[4])
124+
self.assertIn('Restarting baz:baz_01', lines[5])
125125
self.assertEqual(lines[6], '')
126126
mailed = memmon.mailed.split('\n')
127127
self.assertEqual(len(mailed), 4)
@@ -141,8 +141,8 @@ def test_runforever_tick_programs_norestart(self):
141141
memmon.runforever(test=True)
142142
lines = memmon.stderr.getvalue().split('\n')
143143
self.assertEqual(len(lines), 3)
144-
self.assertEqual(lines[0], 'Checking programs foo=%s' % maxint)
145-
self.assertEqual(lines[1], 'RSS of foo:foo is 2264064')
144+
self.assertIn('Checking programs foo=%s' % maxint, lines[0])
145+
self.assertIn('RSS of foo:foo is 2264064', lines[1])
146146
self.assertEqual(lines[2], '')
147147
self.assertEqual(memmon.mailed, False)
148148

@@ -156,8 +156,8 @@ def test_stopprocess_fault_tick_programs_norestart(self):
156156
memmon.runforever(test=True)
157157
lines = memmon.stderr.getvalue().split('\n')
158158
self.assertEqual(len(lines), 3)
159-
self.assertEqual(lines[0], 'Checking programs foo=%s' % maxint)
160-
self.assertEqual(lines[1], 'RSS of foo:foo is 2264064')
159+
self.assertIn('Checking programs foo=%s' % maxint, lines[0])
160+
self.assertIn('RSS of foo:foo is 2264064', lines[1])
161161
self.assertEqual(lines[2], '')
162162
self.assertEqual(memmon.mailed, False)
163163

@@ -185,17 +185,17 @@ def test_stopprocess_fails_to_stop(self):
185185
self.assertRaises(xmlrpclib.Fault, memmon.runforever, True)
186186
lines = memmon.stderr.getvalue().split('\n')
187187
self.assertEqual(len(lines), 4)
188-
self.assertEqual(lines[0], 'Checking programs BAD_NAME=%s' % 0)
189-
self.assertEqual(lines[1], 'RSS of BAD_NAME:BAD_NAME is 2264064')
190-
self.assertEqual(lines[2], 'Restarting BAD_NAME:BAD_NAME')
191-
self.assertTrue(lines[3].startswith('Failed'))
188+
self.assertIn('Checking programs BAD_NAME=%s' % 0, lines[0])
189+
self.assertIn('RSS of BAD_NAME:BAD_NAME is 2264064', lines[1])
190+
self.assertIn('Restarting BAD_NAME:BAD_NAME', lines[2])
191+
self.assertIn('Failed', lines[3])
192192
mailed = memmon.mailed.split('\n')
193193
self.assertEqual(len(mailed), 4)
194194
self.assertEqual(mailed[0], 'To: chrism@plope.com')
195195
self.assertEqual(mailed[1],
196196
'Subject: memmon [test]: failed to stop process BAD_NAME:BAD_NAME, exiting')
197197
self.assertEqual(mailed[2], '')
198-
self.assertTrue(mailed[3].startswith('Failed'))
198+
self.assertIn('Failed', mailed[3])
199199

200200
def test_subject_no_name(self):
201201
"""set the name to None to check if subject
@@ -365,4 +365,3 @@ def test_argparser(self):
365365

366366
if __name__ == '__main__':
367367
unittest.main()
368-

0 commit comments

Comments
 (0)