使用 Ansible 运行 node_exporter

İlk*_*rci 1 ansible prometheus prometheus-node-exporter

我是node_exporter这样开始的

cd /exporter
Run Code Online (Sandbox Code Playgroud)

然后

./node_exporter &
Run Code Online (Sandbox Code Playgroud)

我尝试node_exporter使用模块运行 Ansibleshell但没有成功

- name: Run Exporter
  become: yes
  ansible.builtin.shell: " ./node_exporter & "
  args:
    chdir: /home/netmera/exporter/
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激。

U88*_*80D 6

根据您的描述,您可能会引入自动安装,例如

- name: Download and unpack node exporter binary to /usr/local/bin
  unarchive:
    src: "https://{{ URL}}/node_exporter-{{ NODE_EXPORTER_VERSION }}.linux-amd64.tar.gz"
    dest: "/usr/local/bin/"
    remote_src: yes
    extra_opts: [--strip-components=1]
    owner: "root"
    group: "root" 
Run Code Online (Sandbox Code Playgroud)

创建一个group并将其作为服务user运行,例如node_exporter

- name: Create group 'node_exporter' to run the node exporter service
  group:
    name: "node_exporter"
    state: present

- name: Create user 'node_exporter' to run the node exporter service
  user:
    name: "node_exporter"
    group: "node_exporter"
    state: present
    ...
Run Code Online (Sandbox Code Playgroud)

一个systemd node_exporter.service文件,例如

[Unit]
Description=Node Exporter
After=network.target
    
[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter
     
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

并根据您的基础设施、环境和需求通过copy或_module推出它。template

之后您可以使用systemd_module 来管理服务。

[Unit]
Description=Node Exporter
After=network.target
    
[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter
     
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

此外,可能需要管理本地firewalld和开放端口,例如

- name: Make sure 'node_exporter' service is started and enabled
  systemd:
    name: node_exporter
    state: started
    enabled: yes
    daemon_reload: yes
Run Code Online (Sandbox Code Playgroud)