Add more commandline arguments, update Gentoo files

This commit is contained in:
James Campbell 2024-06-06 00:23:46 -04:00
parent b0a5abc05d
commit 467e97f4e7
Signed by: james
GPG Key ID: 2287C33A40DC906A
4 changed files with 41 additions and 16 deletions

View File

@ -38,10 +38,10 @@ ipc_socket=/run/pgmon/pgmon.sock
##
# Log level for stderr logging (or 'off')
stderr_log_level=info
stderr_log_level=off
# Log level for file logging (od 'off')
file_log_level=notice
file_log_level=info
# Log file
#log_file=pgmon.log
@ -67,4 +67,4 @@ file_log_level=notice
# Metrics
#metrics={}
include=pgmon-metrics.cfg
include=/etc/pgmon/pgmon-metrics.cfg

View File

@ -2,14 +2,19 @@
extra_started_commands="reload"
agent_name=${RC_SERVICE#pgmon.}
agent_name=${SVCNAME#pgmon.}
agent_name=${agent_name:-pgmon}
command="/usr/local/bin/pgmon"
command_args="--server --config /etc/pgmon/${agent_name}.cfg"
CONFIG_FILE="/etc/pgmon/${agent_name}.cfg"
PID_FILE="/run/pgmon/${agent_name}.pid"
LOG_FILE="/var/log/${agent_name}.log"
SOCKET="/var/run/${agent_name}.socket"
command="/usr/bin/pgmon"
command_args="--server -c '$CONFIG_FILE' -l '$LOG_FILE' -p '$PID_FILE' -s '$SOCKET'"
command_user="zabbix:zabbix"
pidfile="/run/pgmon/${agent_name}.pid"
pidfile="$PID_FILE"
start_pre() {
checkpath -d -m 0755 -o "${command_user}" "/run/pgmon"

View File

@ -14,7 +14,7 @@ LICENSE="BSD"
SLOT="0"
KEYWORDS="amd64"
EGIT_REPO_URI="https://code2.shh-dot-com.org/pgmon.git"
EGIT_REPO_URI="https://code2.shh-dot-com.org/james/pgmon.git"
#EGIT_COMMIT=""
IUSE="+agent agent2"
@ -35,7 +35,11 @@ src_install() {
default
# Install init script
newinitd files/pgmon.openrc pgmon
newinitd "${FILESDIR}/pgmon.openrc" pgmon
# Install script
exeinto /usr/bin
newexe "${S}/pgmon.py" pgmon
# Install default config
diropts -o root -g zabbix -m 0755

View File

@ -84,7 +84,7 @@ def init_logging(config):
old_file_logger = file_log_handler
file_log_handler = None
else:
olf_file_logger = None
old_file_logger = None
# Create and add the handler if it doesn't exist
if file_log_handler is None:
@ -187,7 +187,7 @@ class Config:
mindful about logging anything in this class.
Params:
config_file: (str) Path to the config file
args: (argparse.Namespace) Command line arguments
read_metrics: (bool) Indicate if metrics should be parsed
read_clusters: (bool) Indicate if cluster information should be parsed
@ -196,7 +196,7 @@ class Config:
OSError: Thrown if there's an issue opening a config file
ValueError: Thrown if there is an encoding error
"""
def __init__(self, config_file, read_metrics = True, read_clusters = True):
def __init__(self, args, read_metrics = True, read_clusters = True):
# Set defaults
self.pid_file = 'pgmon.pid' # PID file
@ -214,8 +214,20 @@ class Config:
self.metrics = {} # Metrics
self.clusters = {} # Known clusters
# Check if we have a config file
self.config_file = args.config
# Read config
self.read_file(config_file, read_metrics, read_clusters)
if self.config_file is not None:
self.read_file(self.config_file, read_metrics, read_clusters)
# Override anything that was specified on the command line
if args.pidfile is not None:
self.pid_file = args.pidfile
if args.logfile is not None:
self.log_file = args.logfile
if args.socket is not None:
self.ipc_socket = args.socket
def read_file(self, config_file, read_metrics, read_clusters):
"""
@ -1261,8 +1273,12 @@ def main():
parser.add_argument('-c', '--config', default='pgmon.cfg')
parser.add_argument('-v', '--verbose', action='store_true')
parser.add_argument('-s', '--socket', default=None)
parser.add_argument('-l', '--logfile', default=None)
parser.add_argument('-p', '--pidfile', default=None)
# Operational mode
parser.add_argument('-s', '--server', action='store_true')
parser.add_argument('-S', '--server', action='store_true')
parser.add_argument('-r', '--reload', action='store_true')
# Agent options
@ -1274,7 +1290,7 @@ def main():
if args.server:
# Try to start running in server mode
try:
server = Server(args.config)
server = Server(args)
except Exception as e:
sys.exit("Failed to start server: {}".format(e))
@ -1286,7 +1302,7 @@ def main():
elif args.reload:
# Try to signal a running server to reload its config
try:
config = Config(args.config, read_metrics = False)
config = Config(args, read_metrics = False)
except Exception as e:
sys.exit("Failed to read config file: {}".format(e))