部署需求分析
使用ansible批量部署node-exporter监控客户端
node-exporter解压安装目录为home
添加至Linux服务重新加载,启动模块并设置开机启动
测试环境(centos 7——3.10.0-1160.el7.x86_64)运行成功
因为部署步骤较少,单个playbook即可,未使用到roles
部署准备
下载node_exporter-0.14.0.linux-amd64.tar.gz 压缩包到主控端
配置node_exporter.service 服务文件并放到指定目录
部署配置文件
node_exporter.service
[Unit]
Description=node_exporter
Requires=network.target remote-fs.target
After=network.target remote-fs.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/home/node_exporter-0.14.0.linux-amd64/node_exporter --web.listen-address=:0.0.0.0:9100
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.target
ansible-playbook
---
#node_exporter install
hosts: all
remote_user: root
gather_facts: false
tasks:
name: install node_exporter
unarchive: src=/etc/ansible/files/node_exporter-0.14.0.linux-amd64.tar.gz dest=/home
name: add service
copy: src=/etc/ansible/files/node_exporter.service dest=/usr/lib/systemd/system/
name: reload service
shell: systemctl daemon-reload
name: enabled and start node_exporter
service: name=node_exporter state=started enabled=yes
部署遇到的问题与解决
问题描述
运行ansible-playbook后出现服务启动报错,
原因分析与解决
使用journalctl -u node_exporter.service 查看被控端启动日子发现:
查看发现报错与node_exporter.service中定义的network.target有关,无法添加依赖性后续发现为原版本书写错误导致识别不到修正后正常启动,ansible运行成功
Playbook运行成功
被控端端口成功启动:
扩展
Templates的使用
一些配置文件涉及到有变量参数,判断以及循环时,我们可以使用templates来更方便的帮我们完成工作,node_exporter部署中我们也可以把配置文件以.j2结尾放在templates目录中来预防以后复杂的情况
文件目录格式必须为以下形式:
Playbook内容:
Templates成功运行:
Handlers和Notify的使用
因为时常会遇到配置文件修改的情况,我们可以使用Handlers 触发器的这种形式来仅针对修改的内容做出相应的改变
Playbook内容:
测试:当node_exporter由9100改为9111
Handler触发:
被控端端口改变: