summaryrefslogtreecommitdiff
path: root/client/collectors/linux.py
blob: 3461aecc166c1f0db85b1171d5a1749065bf8f1f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import os.path

from datetime import datetime, timedelta, time
from utils.logging import log
from utils.misc import run_cmd


class LinuxCollector(object):
    'Collect various Linux-specific statistics (cpuinfo, mounts)'

    def __init__(self, outdir):
        self._outdir = outdir

        # Hard code all possible places a packager might install sysctl.
        self._env = os.environ
        self._env['PATH'] = ':'.join(['/usr/sbin/', '/sbin/', self._env['PATH']])

    def start(self):
        pass

    def stop(self):
        pass

    def result(self):
        'build the results'

        r = {'sysctl': self._collect_sysctl()}

        r.update(self._collect_system_info())

        return r

    def _collect_sysctl(self):
        'collect kernel configuration'

        log("collecting sysctl")
        r = run_cmd(['sysctl', '-a'], env=self._env)

        return r[1]

    def _collect_system_info(self):
        'collect cpuinfo, meminfo, mounts'

        system = {}

        with open('/proc/cpuinfo', 'r') as f:
            system['cpuinfo'] = f.read()

        with open('/proc/meminfo', 'r') as f:
            system['meminfo'] = f.read()

        with open('/proc/mounts', 'r') as f:
            system['mounts'] = f.read()

        return system