prometheus是一套监控工具
exporter是像服务发送监控数据的客户端服务,node-exporter是对主机的常规监控
可以编译启动或docker启动node-exporter
https://github.com/prometheus/node_exporter
但是怎么把这个node-exporter做到系统服务里?
1)编写一个启动脚本:
[root@xxx ~]# cat /usr/local/node_exporter/node-exporter.sh
#!/bin/sh
[ "$1" == "start" ] || [ "$1" == "stop" ] || ( echo "$0 need parameter:[start] or [stop]?" && exit -1 )
pidfile=/var/run/docker/node-exporter.pid
cid=`docker ps |grep node-exporter |awk '{print $1}'`
cida=`docker ps -a|grep node-exporter|awk '{print $1}'`
if [ "$1" == "start" ];then
if [ "$cid" != "" ];then
echo node-exporter is running.Need not start.
elif [ "$cida" != "" ];then
docker start $cida
pid=`pgrep node-exporter`
echo pid=$pid
echo $pid > $pidfile
else
docker run -d --net="host" --pid="host" --name=node-exporter -v "/:/host:ro,rslave" quay.io/prometheus/node-exporter --path.rootfs=/host
pid=`pgrep node_exporter`
echo pid=$pid
echo $pid > $pidfile
fi
elif [ "$1" == "stop" ];then
if [ "$cid" != "" ];then
docker stop $cid
docker rm $cid
elif [ "$cida" != "" ];then
docker rm $cida
else
echo node-exporter is not running.Need not stop.
fi
fi
2)编写系统服务配置文件:
[root@xxx ~]# cat /etc/systemd/system/multi-user.target.wants/node-exporter.service
[Unit]
Description=prometheus/node-exporter
After=docker.service
[Service]
Type=forking
PIDFile=/var/run/docker/node-exporter.pid
ExecStart=/usr/bin/sh /usr/local/node_exporter/node-exporter.sh start
ExecStop=/usr/bin/sh /usr/local/node_exporter/node-exporter.sh stop
[Install]
WantedBy=multi-user.target
3)systemctl daemon-reload后可以使用systemctl start/stop 服务