简介
在部署监控的时候,我们可以使用ansible批量自动化部署,只要写好ploybook即可。
在prometheus监控系统中,node_exporter 是用于获取主机指标的服务,我们可以利用ansible批量部署的优势,来部署node_exporter服务到主机上。
playbook
node_exporter是Go写的,直接使用二进制文件就可以执行,这里直接从github上下载安装,也可以替换成自己内网的地址,针对Centos6和CentOS7/8设置不同的启动服务。
vim install_node_exporter.yml
直接使用vim,就可以开始写yml文件了。
- name: 安装node_exporter
hosts: "{{ hosts }}"
remote_user: root
vars:
- node_exporter_package: "https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz"
tasks:
- name: 解压安装包
unarchive:
src: "{{ node_exporter_package }}"
dest: /usr/local/
mode: '0755'
remote_src: yes
- name: 创建软链接
file:
src: /usr/local/node_exporter-1.0.1.linux-amd64
dest: /usr/local/node_exporter
state: link
- name: 安装系统服务(sysv)
blockinfile:
path: /etc/init.d/node_exporter
create: yes
mode: '0755'
block: |
#!/bin/bash
RETVAL=0
PROG="node_exporter"
EXEC="/usr/local/node_exporter/node_exporter"
LOCKFILE="/var/lock/subsys/$PROG"
OPTIONS=""
# Source function library.
if [ -f /etc/rc.d/init.d/functions ]; then
. /etc/rc.d/init.d/functions
else
echo "/etc/rc.d/init.d/functions does not exist"
exit 0
fi
?
start() {
if [ -f $LOCKFILE ]
then
echo "$PROG is already running!"
else
echo -n "Starting $PROG: "
nohup $EXEC $OPTIONS >/dev/null 2>&1 &
RETVAL=$?
[ $RETVAL -eq 0 ] && touch $LOCKFILE && success || failure
echo
return $RETVAL
fi
}
?
stop() {
echo -n "Stopping $PROG: "
killproc $EXEC
RETVAL=$?
[ $RETVAL -eq 0 ] && rm -r $LOCKFILE && success || failure
echo
}
?
restart ()
{
stop
sleep 1
start
}
?
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status $PROG
;;
restart)
restart
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac
exit $RETVAL
when: ansible_distribution_major_version == "6"
- name: 安装系统服务(systemd)
blockinfile:
path: /usr/lib/systemd/system/node_exporter.service
create: yes
mode: '0755'
block: |
[Unit]
Description=Node Exporter
?
[Service]
WorkingDirectory=/usr/local/node_exporter/
ExecStart=/usr/local/node_exporter/node_exporter --web.config=/usr/local/node_exporter/node_exporter.yml
?
[Install]
WantedBy=multi-user.target
when: ansible_distribution_major_version == "7" or ansible_distribution_major_version == "8"
- name: 启动服务
service:
name: node_exporter
state: restarted
enabled: yes
总结
让运维更高效!