prometheus是一套监控工具
    exporter是像服务发送监控数据的客户端服务,node-exporter是对主机的常规监控
    可以编译启动或docker启动node-exporter
    https://github.com/prometheus/node_exporter
    但是怎么把这个node-exporter做到系统服务里?

    1)编写一个启动脚本:

    1. [root@xxx ~]# cat /usr/local/node_exporter/node-exporter.sh
    2. #!/bin/sh
    3. [ "$1" == "start" ] || [ "$1" == "stop" ] || ( echo "$0 need parameter:[start] or [stop]?" && exit -1 )
    4. pidfile=/var/run/docker/node-exporter.pid
    5. cid=`docker ps |grep node-exporter |awk '{print $1}'`
    6. cida=`docker ps -a|grep node-exporter|awk '{print $1}'`
    7. if [ "$1" == "start" ];then
    8. if [ "$cid" != "" ];then
    9. echo node-exporter is running.Need not start.
    10. elif [ "$cida" != "" ];then
    11. docker start $cida
    12. pid=`pgrep node-exporter`
    13. echo pid=$pid
    14. echo $pid > $pidfile
    15. else
    16. docker run -d --net="host" --pid="host" --name=node-exporter -v "/:/host:ro,rslave" quay.io/prometheus/node-exporter --path.rootfs=/host
    17. pid=`pgrep node_exporter`
    18. echo pid=$pid
    19. echo $pid > $pidfile
    20. fi
    21. elif [ "$1" == "stop" ];then
    22. if [ "$cid" != "" ];then
    23. docker stop $cid
    24. docker rm $cid
    25. elif [ "$cida" != "" ];then
    26. docker rm $cida
    27. else
    28. echo node-exporter is not running.Need not stop.
    29. fi
    30. fi

    2)编写系统服务配置文件:

    1. [root@xxx ~]# cat /etc/systemd/system/multi-user.target.wants/node-exporter.service
    2. [Unit]
    3. Description=prometheus/node-exporter
    4. After=docker.service
    5. [Service]
    6. Type=forking
    7. PIDFile=/var/run/docker/node-exporter.pid
    8. ExecStart=/usr/bin/sh /usr/local/node_exporter/node-exporter.sh start
    9. ExecStop=/usr/bin/sh /usr/local/node_exporter/node-exporter.sh stop
    10. [Install]
    11. WantedBy=multi-user.target

    3)systemctl daemon-reload后可以使用systemctl start/stop 服务