使用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のベストプラクティスに則っていない

可以列举出诸如此类的事项。未来,我认为应该以此为重点来改善指定学校。

请参考