Add node_exporter_install_v2
This commit is contained in:
parent
c2b8843435
commit
01cc1d6855
126
node_exporter_install_v2
Normal file
126
node_exporter_install_v2
Normal file
@ -0,0 +1,126 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Function to install node_exporter
|
||||||
|
install_node_exporter() {
|
||||||
|
# Create a user for node_exporter
|
||||||
|
sudo useradd -rs /bin/false node_exporter
|
||||||
|
echo "User 'node_exporter' created."
|
||||||
|
|
||||||
|
# Create a directory for node_exporter
|
||||||
|
sudo mkdir -p /opt/node_exporter
|
||||||
|
echo "Directory '/opt/node_exporter' created."
|
||||||
|
|
||||||
|
# Move the downloaded binary to the appropriate directory
|
||||||
|
EXTRACTED_DIR="node_exporter-${LATEST_VERSION#v}.linux-amd64"
|
||||||
|
if [ -f "${EXTRACTED_DIR}/node_exporter" ]; then
|
||||||
|
sudo mv "${EXTRACTED_DIR}/node_exporter" /usr/local/bin/
|
||||||
|
echo "Node Exporter binary moved to /usr/local/bin."
|
||||||
|
else
|
||||||
|
echo "Node Exporter binary not found in the extracted directory."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Set ownership and permissions
|
||||||
|
sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter
|
||||||
|
echo "Ownership set for /usr/local/bin/node_exporter."
|
||||||
|
|
||||||
|
sudo chmod 755 /usr/local/bin/node_exporter
|
||||||
|
echo "Permissions set for /usr/local/bin/node_exporter."
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to create a systemd service for node_exporter
|
||||||
|
create_service() {
|
||||||
|
# Create a systemd service file
|
||||||
|
cat <<EOF | sudo tee /etc/systemd/system/node_exporter.service
|
||||||
|
[Unit]
|
||||||
|
Description=Node Exporter
|
||||||
|
Wants=network-online.target
|
||||||
|
After=network-online.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
User=node_exporter
|
||||||
|
ExecStart=/usr/local/bin/node_exporter
|
||||||
|
Restart=on-failure
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=default.target
|
||||||
|
EOF
|
||||||
|
echo "Systemd service file created at /etc/systemd/system/node_exporter.service."
|
||||||
|
|
||||||
|
# Reload systemd to recognize the new service
|
||||||
|
sudo systemctl daemon-reload
|
||||||
|
echo "Systemd daemon reloaded."
|
||||||
|
|
||||||
|
# Start and enable the node_exporter service
|
||||||
|
sudo systemctl start node_exporter
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "Node Exporter service started."
|
||||||
|
else
|
||||||
|
echo "Failed to start Node Exporter service."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
sudo systemctl enable node_exporter
|
||||||
|
echo "Node Exporter service enabled to start on boot."
|
||||||
|
|
||||||
|
echo "Node Exporter service created and running."
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to check the status of node_exporter service
|
||||||
|
check_service_status() {
|
||||||
|
if systemctl is-active --quiet node_exporter; then
|
||||||
|
echo "Node Exporter service is active and running."
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
echo "Node Exporter service is not running."
|
||||||
|
echo "You can check the logs with: sudo journalctl -u node_exporter.service"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to clean up downloaded files
|
||||||
|
cleanup_files() {
|
||||||
|
if [[ -f "node_exporter-${LATEST_VERSION#v}.linux-amd64.tar.gz" ]]; then
|
||||||
|
rm -rf node_exporter-${LATEST_VERSION#v}.linux-amd64.tar.gz
|
||||||
|
echo "Cleaned up downloaded files."
|
||||||
|
fi
|
||||||
|
if [[ -d "node_exporter-${LATEST_VERSION#v}.linux-amd64" ]]; then
|
||||||
|
rm -rf node_exporter-${LATEST_VERSION#v}.linux-amd64
|
||||||
|
echo "Cleaned up extracted files."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to display the menu
|
||||||
|
display_menu() {
|
||||||
|
echo "=============================="
|
||||||
|
echo " Node Exporter Management Menu "
|
||||||
|
echo "=============================="
|
||||||
|
echo "1. Install Node Exporter"
|
||||||
|
echo "2. Create Node Exporter Service"
|
||||||
|
echo "3. Check Node Exporter Service Status"
|
||||||
|
echo "4. Clean Up Downloaded Files"
|
||||||
|
echo "5. Run All Options"
|
||||||
|
echo "6. Exit"
|
||||||
|
echo "=============================="
|
||||||
|
}
|
||||||
|
|
||||||
|
# Identify the Linux distribution
|
||||||
|
if [ -f /etc/os-release ]; then
|
||||||
|
. /etc/os-release
|
||||||
|
OS=$ID
|
||||||
|
else
|
||||||
|
echo "Unsupported OS"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Download the latest version of node_exporter
|
||||||
|
LATEST_VERSION=$(curl -s https://api.github.com/repos/prometheus/node_exporter/releases/latest | grep -oP '"tag_name": "\K(.*)(?=")')
|
||||||
|
DOWNLOAD_URL="https://github.com/prometheus/node_exporter/releases/download/${LATEST_VERSION}/node_exporter-${LATEST_VERSION#v}.linux-amd64.tar.gz"
|
||||||
|
|
||||||
|
# Download node_exporter
|
||||||
|
echo "Downloading Node Exporter version ${LATEST_VERSION}..."
|
||||||
|
curl -LO ${DOWNLOAD_URL}
|
||||||
|
|
||||||
|
# Check if the download was successful
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "
|
||||||
Loading…
x
Reference in New Issue
Block a user