使用Ansible部署node_exporter的方法
我想使用Ansible来管理出口商!
首先
我整理了在Ansible中安装、启动和启用Prometheus的node_exporter的方法。
尽管手动操作也没有问题,但我选择使用Ansible,因为可以避免以后忘记所做的一切。
操作环境
-
- centos 7(wsl2)
-
- ansible 2.9.27
-
- Prometheus node_exporter 1.5.0
- ※ansibleはインストール済みかつsshの疎通も通ってる前提で進めます
文件结构
/
├root
├playbook.yml
└node_exporter.servce
└etc/ansible
└hosts
目的只是部署,因此配置相当随意。请参考这里的Ansible最佳实践。
localhost ansible_host=127.0.0.1 ansible_connection=local
---
- hosts: all
become: true
tasks:
- name: node-exporterをダウンロードして解凍
# ansible 2.0からリモートから取得したファイルを直接解凍できるようになったみたいです
# 参考:https://docs.ansible.com/ansible/latest/collections/ansible/builtin/unarchive_module.html#examples
unarchive:
src: https://github.com/prometheus/node_exporter/releases/download/v1.5.0/node_exporter-1.5.0.linux-amd64.tar.gz
dest: ~/
remote_src: yes
- name: 実行ファイルをコピー
copy:
src: ~/node_exporter-1.5.0.linux-amd64/node_exporter
dest: /sbin/
owner: root
group: root
mode: '0755'
- name: unit-fileを作成
copy:
src: ~/node_exporter.service
dest: /etc/systemd/system/node_exporter.service
- name: daemonを再起動
systemd:
daemon_reload: yes
- name: node_exporterを起動
systemd:
state: started
name: node_exporter.service
- name: node_exporterを有効化
systemd:
name: node_exporter.service
enabled: true
masked: no
[Unit]
Description=Node Exporter
Requires=node_exporter.socket
[Service]
User=root
ExecStart=/sbin/node_exporter
[Install]
WantedBy=multi-user.target
执行
cd /root
ansible-playbook playbook.yml
执行结果 (shí jié guǒ)
# ansible-playbook playbook.yml
PLAY [all] *************************************************************************************************************
TASK [Gathering Facts] *************************************************************************************************
ok: [localhost]
TASK [node-exporterをダウンロードして解凍] ****************************************************************************************
ok: [localhost]
TASK [実行ファイルをコピー] ******************************************************************************************************
ok: [localhost]
TASK [unit-fileを作成] ****************************************************************************************************
ok: [localhost]
TASK [daemonを再起動] ******************************************************************************************************
ok: [localhost]
TASK [node_exporterを起動] ************************************************************************************************
ok: [localhost]
TASK [node_exporterを有効化] ***********************************************************************************************
ok: [localhost]
PLAY RECAP *************************************************************************************************************
localhost : ok=7 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
# curl localhot:9100/metrics
(レスポンスが帰ってくればOK)
总结
我整理了用Ansible部署Node_exporter的方法。
目前存在的问题是
-
- node_exporterしかインストールできていない
-
- Prometheus側の制御を全く書いていない
- Ansibleのベストプラクティスに則っていない
可以列举出诸如此类的事项。未来,我认为应该以此为重点来改善指定学校。
请参考