Add plugin support to install prometheus-podman-exporter
It will help us to enable multiple exporters on single node. Change-Id: I2509367e4d92af4f63e461390d8de822a4598d32 Signed-off-by: Chandan Kumar (raukadah) <chkumar@redhat.com>
This commit is contained in:
parent
0edb82cbae
commit
7ce50b7136
@ -26,6 +26,7 @@
|
||||
devstack_services:
|
||||
prometheus: true
|
||||
node_exporter: true
|
||||
podman_exporter: true
|
||||
zuul_copy_output:
|
||||
/etc/prometheus/prometheus.yml: logs
|
||||
|
||||
|
@ -4,6 +4,7 @@ global:
|
||||
scrape_configs:
|
||||
- job_name: "node"
|
||||
static_configs:
|
||||
- targets: ["localhost:9882"]
|
||||
- targets: ["localhost:9100"] # node_exporter target
|
||||
# labels:
|
||||
# fqdn: "controller" # node_exporter fqdn
|
||||
|
82
devstack/lib/podman_exporter
Normal file
82
devstack/lib/podman_exporter
Normal file
@ -0,0 +1,82 @@
|
||||
# lib/podman_exporter
|
||||
# Functions to control the installation and configuration of podman_exporter
|
||||
|
||||
# Save trace setting
|
||||
_XTRACE_PODMAN_EXPORTER=$(set +o | grep xtrace)
|
||||
set +o xtrace
|
||||
|
||||
PODMAN_EXPORTER_BINARY="/usr/local/bin/prometheus-podman-exporter"
|
||||
PODMAN_EXPORTER_SYSTEMD_SERVICE="devstack@podman-exporter.service"
|
||||
PODMAN_EXPORTER_PORT=${PODMAN_EXPORTER_PORT:-9882}
|
||||
PE_REPO=${PE_REPO:-https://github.com/containers/prometheus-podman-exporter.git}
|
||||
PE_REPO_NAME=${PE_REPO_NAME:-prometheus-podman-exporter}
|
||||
|
||||
function pre_install_podman_exporter {
|
||||
# Install OS packages
|
||||
install_package libgpgme-dev libassuan-dev libbtrfs-dev libdevmapper-dev pkg-config build-essential golang podman uidmap netavark
|
||||
}
|
||||
|
||||
function install_podman_exporter {
|
||||
|
||||
# Clone prometheus-podman-exporter
|
||||
PE_DIR=$DEST/$PE_REPO_NAME
|
||||
git_timed clone $PE_REPO $PE_DIR
|
||||
|
||||
# Generate Binary
|
||||
cd $PE_DIR
|
||||
make binary
|
||||
|
||||
# Move binaries to /usr/local/bin
|
||||
sudo mv $PE_DIR/bin/prometheus-podman-exporter /usr/local/bin/
|
||||
|
||||
# Set ownership
|
||||
sudo chown $(whoami):$(whoami) ${NODE_EXPORTER_BINARY}
|
||||
}
|
||||
|
||||
function init_podman_exporter {
|
||||
|
||||
podman_exporter_cmd=${PODMAN_EXPORTER_BINARY}
|
||||
podman_exporter_cmd+=" --collector.enable-all"
|
||||
|
||||
write_user_unit_file $PODMAN_EXPORTER_SYSTEMD_SERVICE "$podman_exporter_cmd" "" "$STACK_USER"
|
||||
|
||||
enable_service $PODMAN_EXPORTER_SYSTEMD_SERVICE
|
||||
}
|
||||
|
||||
function start_podman_exporter {
|
||||
start_service $PODMAN_EXPORTER_SYSTEMD_SERVICE
|
||||
}
|
||||
|
||||
function stop_podman_exporter {
|
||||
stop_service $PODMAN_EXPORTER_SYSTEMD_SERVICE
|
||||
}
|
||||
|
||||
function cleanup_podman_exporter {
|
||||
stop_podman_exporter
|
||||
disable_service $PODMAN_EXPORTER_SYSTEMD_SERVICE
|
||||
|
||||
# Remove systemd unit files
|
||||
local unitfile="$SYSTEMD_DIR/$PODMAN_EXPORTER_SYSTEMD_SERVICE"
|
||||
sudo rm -f $unitfile
|
||||
$SYSTEMCTL daemon-reload
|
||||
|
||||
# Remove Node Exporter binaries
|
||||
sudo rm -rf $PODMAN_EXPORTER_BINARY
|
||||
}
|
||||
|
||||
function wait_for_podman_data {
|
||||
# Adding sleep time so that metrics is pushed by podman exporter
|
||||
sleep 60
|
||||
}
|
||||
|
||||
function check_data_podman_exporter {
|
||||
if curl -s --head --request GET "http://$HOST_IP:$PODMAN_EXPORTER_PORT/metrics" | grep "200 OK" > /dev/null; then
|
||||
echo "#### Metrics data ####"
|
||||
curl "http://$HOST_IP:$PODMAN_EXPORTER_PORT/metrics"
|
||||
else
|
||||
die $LINENO "Couldn't get data from podman_exporter"
|
||||
fi
|
||||
}
|
||||
|
||||
# Restore xtrace
|
||||
$_XTRACE_PODMAN_EXPORTER
|
@ -7,6 +7,7 @@ set -o xtrace
|
||||
echo_summary "devstack-plugin-prometheus's plugin.sh was called..."
|
||||
. $DEST/devstack-plugin-prometheus/devstack/lib/prometheus
|
||||
. $DEST/devstack-plugin-prometheus/devstack/lib/node_exporter
|
||||
. $DEST/devstack-plugin-prometheus/devstack/lib/podman_exporter
|
||||
|
||||
# Show all of defined environment variables
|
||||
(set -o posix; set)
|
||||
@ -98,3 +99,48 @@ if is_service_enabled node_exporter; then
|
||||
cleanup_node_exporter
|
||||
fi
|
||||
fi
|
||||
|
||||
## Podman Exporter
|
||||
if is_service_enabled podman_exporter; then
|
||||
if [[ "$1" == "source" ]]; then
|
||||
# Initial source of lib script
|
||||
source $(dirname "$0")/lib/podman_exporter
|
||||
fi
|
||||
|
||||
if [[ "$1" == "stack" && "$2" == "pre-install" ]]; then
|
||||
# Set up system services
|
||||
echo_summary "Configuring system services podman exporter"
|
||||
pre_install_podman_exporter
|
||||
|
||||
elif [[ "$1" == "stack" && "$2" == "install" ]]; then
|
||||
# Perform installation of service source
|
||||
echo_summary "Installing podman exporter"
|
||||
install_podman_exporter
|
||||
|
||||
elif [[ "$1" == "stack" && "$2" == "post-config" ]]; then
|
||||
# Configure after the other layer 1 and 2 services have been configured
|
||||
echo_summary "Configuring podman_exporter"
|
||||
init_podman_exporter
|
||||
echo_summary "Starting podman exporter service"
|
||||
start_podman_exporter
|
||||
echo_summary "Give time to podman_exporter to push metrics"
|
||||
wait_for_podman_data
|
||||
check_data_podman_exporter
|
||||
fi
|
||||
|
||||
if [[ "$1" == "unstack" ]]; then
|
||||
# Shut down podman exporter services
|
||||
# no-op
|
||||
echo_summary "Stoping podman_exporter service"
|
||||
stop_podman_exporter
|
||||
|
||||
fi
|
||||
|
||||
if [[ "$1" == "clean" ]]; then
|
||||
# Remove state and transient data
|
||||
# Remember clean.sh first calls unstack.sh
|
||||
# no-op
|
||||
echo_summary "Cleaning podman exporter service"
|
||||
cleanup_podman_exporter
|
||||
fi
|
||||
fi
|
||||
|
@ -1,5 +1,5 @@
|
||||
# DevStack settings
|
||||
define_plugin prometheus node_exporter
|
||||
define_plugin prometheus node_exporter podman_exporter
|
||||
enable_service prometheus
|
||||
enable_service node_exporter
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user