在旧 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 ...
.
在启动脚本中,我们基本上 运行 二进制文件,在停止脚本中,我们通过名称终止进程。
希望对您有所帮助。
我有一台装有 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 ...
.
在启动脚本中,我们基本上 运行 二进制文件,在停止脚本中,我们通过名称终止进程。
希望对您有所帮助。