AzureMonitorAgent/ama_tst/modules/syslog_tst/check_rsysng.py (39 lines of code) (raw):
import subprocess
from error_codes import *
from errors import error_info
from helpers import general_info
RSYSLOG_CONF = "/etc/rsyslog.d/10-azuremonitoragent-omfwd.conf"
SYSLOG_NG_CONF = "/etc/syslog-ng/conf.d/azuremonitoragent-tcp.conf"
# check syslog with systemctl
def check_sys_systemctl(service):
try:
sys_status = subprocess.check_output(['systemctl', 'status', service], \
universal_newlines=True, stderr=subprocess.STDOUT)
sys_lines = sys_status.split('\n')
for line in sys_lines:
line = line.strip()
if line.startswith('Active: '):
stripped_line = line.lstrip('Active: ')
# exists and running correctly
if stripped_line.startswith('active (running) since '):
return NO_ERROR
# exists but not running correctly
else:
error_info.append((service, stripped_line, 'systemctl'))
return ERR_SERVICE_STATUS
except subprocess.CalledProcessError as e:
# service not on machine
if (e.returncode == 4):
return ERR_SYSLOG
else:
error_info.append((service, e.output, 'systemctl'))
return ERR_SERVICE_STATUS
def check_services():
global general_info
checked_rsyslog = check_sys_systemctl('rsyslog')
# rsyslog successful
if (checked_rsyslog == NO_ERROR):
general_info['SYSLOG_DEST'] = RSYSLOG_CONF
return NO_ERROR
checked_syslog_ng = check_sys_systemctl('syslog-ng')
# syslog-ng successful
if (checked_syslog_ng == NO_ERROR):
general_info['SYSLOG_DEST'] = SYSLOG_NG_CONF
return NO_ERROR
# ran into error trying to get syslog
if ((checked_rsyslog==ERR_SERVICE_STATUS) or (checked_syslog_ng==ERR_SERVICE_STATUS)):
return ERR_SERVICE_STATUS
return ERR_SYSLOG