Now, this is for kafka exporter. Nothing's new, it is just for kafka.
#!/bin/bash
# Installing Kafka Exporter
# tput commands
CLEAR="tput clear"
DOWN="tput cud1"
BOLD="tput bold"
NORMAL="tput sgr0"
BLACK="tput setaf 0"
RED="tput setaf 1"
GREEN="tput setaf 2"
YELLOW="tput setaf 3"
BLUE="tput setaf 4"
$CLEAR
$NORMAL
$DOWN
# Installation confirmation
printf "You have selected to install kafka_exporter.\n\n"
read -p "Do you want to continue? [ yes / no ] : " USER_INPUT
USER_INPUT=${USER_INPUT:-yes}
$DOWN
# Convert user's choice to lowercase for case-sensitive comparison
USER_INPUT_LOWER=$(echo "$USER_INPUT" | tr '[:upper:]' '[:lower:]')
# Check the user's input
if [ "$USER_INPUT_LOWER" == "yes" ]; then
$YELLOW
printf "Kafka exporter installation confirmed.\n\n"
$NORMAL
else
printf "Kafka exporter installation cancelled.\n\n"
exit
fi
# Specify the name of the systemd service
SERVICE_NAME="kafka_exporter"
# Check if the service file exists
if [ -e "/usr/lib/systemd/system/$SERVICE_NAME.service" ]; then
# Check if the service is active
if sudo systemctl is-active --quiet "$SERVICE_NAME"; then
$BOLD
printf "There is an active $SERVICE_NAME. \n\n"
$NORMAL
# Check the version of the active kafka_exporter
KAFKA_EXPORTER_PATH="/usr/local/$SERVICE_NAME/$SERVICE_NAME"
VERSION_INFO="$($KAFKA_EXPORTER_PATH --version 2>&1 | awk '/kafka_exporter/ {print $3}')"
$GREEN
printf "Active Kafka Exporter Version: $VERSION_INFO \n\n"
$NORMAL
printf "Do you want to remove it and replace with a new one? [ 1 / 2 ]\n\n"
printf " 1: Remove the active kafka_exporter and replace it with a new one. \n\n"
printf " 2: Don't do anything and exit.\n\n"
read -rp "> " ACTION
# Check the action to do
if [ -z "$ACTION" ]; then
printf "Removing all kafka_exporter files... \n\n"
# Remove kafka_exporter related files
sudo systemctl stop $SERVICE_NAME
sudo systemctl disable $SERVICE_NAME
sudo rm /usr/lib/systemd/system/$SERVICE_NAME.service
$DOWN
sudo rm -rf /usr/local/kafka_exporter*
$YELLOW
printf "Related files removed.\n\n"
$NORMAL
printf "Installation will continue...\n\n"
elif [ "$ACTION" -eq 1 ]; then
printf "Removing all kafka_exporter files... \n\n"
# Remove kafka_exporter related files
sudo systemctl stop $SERVICE_NAME
sudo systemctl disable $SERVICE_NAME
sudo rm /usr/lib/systemd/system/$SERVICE_NAME.service
$DOWN
sudo rm -rf /usr/local/kafka_exporter*
$YELLOW
printf "Related files removed.\n\n"
$NORMAL
printf "Installation will continue...\n\n"
elif [ "$ACTION" -eq 2 ]; then
$DOWN
printf "No action done.\n\n"
exit
else
printf "Invalid input. Please enter 1 or 2.\n\n"
exit 1
fi
else
printf "There's a $SERVICE_NAME service that is not active. Removing related files...\n\n"
sudo systemctl stop $SERVICE_NAME
sudo systemctl disable $SERVICE_NAME
sudo rm /usr/lib/systemd/system/$SERVICE_NAME.service
sudo rm -rf /usr/local/kafka_exporter*
$YELLOW
printf "Related files removed.\n\n"
$NORMAL
printf "Installation will continue...\n\n"
fi
else
printf "No $SERVICE_NAME service file found.\n\n"
fi
# Curling Google to check if connected to a network
printf "Looking for a network...\n\n"
if curl google.com > /dev/null; then
$DOWN
$YELLOW
printf "Network connected.\n\n"
$NORMAL
else
$DOWN
printf "The server is not connected to the network. Please connect and try again.\n\n";
exit 1
fi
echo -n "Insert the version you would like to be installed, default is [ 1.7.0 ] : "
$BOLD
$BLUE
read VERSION
$NORMAL
VERSION=${VERSION:-1.7.0}
$DOWN
$NORMAL
# Download the file
wget https://github.com/danielqsj/kafka_exporter/releases/download/v$VERSION/kafka_exporter-$VERSION.linux-amd64.tar.gz -P /opt
# Extract the downloaded tarball in user directory with a new name
tar -xzvf /opt/kafka_exporter-$VERSION.linux-amd64.tar.gz -C /usr/local && mv /usr/local/kafka_exporter-$VERSION.linux-amd64 /usr/local/kafka_exporter
# IP
IP=$(hostname -I | awk '{print $1}')
# Create a systemd service file for Kafka Exporter
cat >/usr/lib/systemd/system/kafka_exporter.service<<EOF
[Unit]
Description=Kafka_Exporter
Documentation=https://prometheus.io/
After=network.target
[Service]
Type=simple
PIDFile=/usr/local/kafka_exporter/kafka_exporter.pid
ExecStart=/usr/local/kafka_exporter/kafka_exporter --kafka.server=xxIPxx:9092 --log.level=info
ExecReload=/bin/kill -s HUP
ExecStop=/bin/kill -s QUIT
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
# Edit the service file in-place
sed -i "s#xxIPxx#$IP#g" /usr/lib/systemd/system/kafka_exporter.service
# Reload systemd and start Kafka Exporter
sudo systemctl daemon-reload
sudo systemctl start kafka_exporter.service
sudo systemctl enable kafka_exporter.service
sudo systemctl status kafka_exporter.service
# Cleanup downloaded file
rm -f /opt/kafka_exporter-$VERSION.linux-amd64.tar.gz*
$DOWN
if sudo systemctl is-active --quiet "$SERVICE_NAME"; then
$DOWN
$BOLD
$YELLOW
printf "======================================\n"
$GREEN
printf "Kafka Exporter installed successfully!\n"
$NORMAL
$BOLD
printf "Version: $VERSION\n"
$YELLOW
printf "======================================\n"
$NORMAL
$DOWN
else
$DOWN
$RED
printf "Kafka Exporter installation failed.\n\n"
$NORMAL
$DOWN
fi
Top comments (0)