在旧 linux 系统 (RHL6) 中为 Prometheus 节点导出器创建 SysV Init 脚本

Create a SysV Init script for Prometheus node exporter in old linux system (RHL6)

我有一台装有 RHL6 (Red Hat Linux 6) 并基于 SysV 初始化(没有 systemd 包)的服务器机器,我想让我的 prometheus 节点导出器从中收集指标机.

我在网上能找到的是如何使用 systemctl (systemd) 创建一个节点导出器服务:基本上你在 /etc/systemd/system 下创建一个 .service 文件,然后在里面写这样的东西:

[Unit]
Description=Node Exporter

After=network.target

[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=multi-user.target

然后你启动服务,在启动时启用它,等等,用这样的 systemctl 命令

sudo systemctl start node_exporter
sudo systemctl status node_exporter
sudo systemctl enable node_exporter

但问题是我没有安装 systemd 并且我无权更新服务器机器系统所以我试图找到一种方法如何为节点导出器编写初始化脚本在我的例子中放在 /etc/rd.d/init.d 下。

似乎init.d下的所有脚本都是shell脚本,声明了很多方法,如start()、stop()、restart()、reload()、force_reload( ), ...

所以不像基于systemd写服务那么简单

有人知道如何使用 SysV init 做到这一点吗???

谢谢,

我设法找到了解决问题的办法。

脚本如下所示:

#!/bin/bash
#
# chkconfig: 2345 90 12
# description: node-exporter server
#

# Get function from functions library
. /etc/init.d/functions

# Start the service node-exporter
start() {
        echo -n "Starting node-exporter service: "
        /usr/sbin/node_exporter_service &
        ### Create the lock file ###
        touch /var/lock/subsys/node-exporter
        success $"node-exporter service startup"
        echo
}

# Restart the service node-exporter
stop() {
        echo -n "Shutting down node-exporter service: "
        killproc node_exporter_service
        ### Now, delete the lock file ###
        rm -f /var/lock/subsys/node-exporter
        echo
}

### main logic ###
case "" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  status)
        status node_exporter_service
        ;;
  restart|reload)
        stop
        start
        ;;
  *)
        echo $"Usage: [=10=] {start|stop|restart|reload|status}"
        exit 1
esac

exit 0

我们将上面的脚本放在 /etc/init.d 下,名为“node-exporter”(没有 .sh),我们将节点导出器的二进制文件放在 /usr/sbin 下(对于 systemd,我们将二进制文件放在/usr/local/bin).

您可以从此处下载节点导出器的二进制文件https://github.com/prometheus/node_exporter/releases

然后我们使用命令chkconfig --add node-exporter将脚本文件添加到服务列表(检查它是否已经存在使用命令chkconfig --list node-exporter)。

使用命令 chkconfig node-exporter on 启用服务。 然后到 start/stop/restart ...我们使用命令 /etc/init.d/node-exporter start/stop/restart ....

在启动脚本中,我们基本上 运行 二进制文件,在停止脚本中,我们通过名称终止进程。

希望对您有所帮助。