From 0b222791b121afb711d561dfec2446103bb429c5 Mon Sep 17 00:00:00 2001 From: shenlan Date: Fri, 29 Aug 2025 20:50:22 +0800 Subject: [PATCH] feat: update node exporter service --- .../roles/vhosts/node_exporter/tasks/main.yml | 40 +++++++++++++------ .../templates/node-exporter.service | 26 ++++++++++++ .../templates/node_exporter.service | 18 --------- 3 files changed, 54 insertions(+), 30 deletions(-) create mode 100644 playbooks/roles/vhosts/node_exporter/templates/node-exporter.service delete mode 100644 playbooks/roles/vhosts/node_exporter/templates/node_exporter.service diff --git a/playbooks/roles/vhosts/node_exporter/tasks/main.yml b/playbooks/roles/vhosts/node_exporter/tasks/main.yml index 44155af..14b1e62 100644 --- a/playbooks/roles/vhosts/node_exporter/tasks/main.yml +++ b/playbooks/roles/vhosts/node_exporter/tasks/main.yml @@ -1,11 +1,3 @@ -- name: Ensure node_exporter user exists - ansible.builtin.user: - name: node_exporter - system: true - shell: /usr/sbin/nologin - create_home: false - when: inventory_hostname in groups[group] - - name: Download node_exporter archive ansible.builtin.get_url: url: >- @@ -24,10 +16,19 @@ creates: "/tmp/node_exporter-{{ node_exporter_version | default('1.8.2') }}.linux-amd64" when: inventory_hostname in groups[group] +- name: Ensure metrics-agent directory exists + ansible.builtin.file: + path: /opt/metrics-agent + state: directory + owner: root + group: root + mode: '0755' + when: inventory_hostname in groups[group] + - name: Install node_exporter binary ansible.builtin.copy: src: "/tmp/node_exporter-{{ node_exporter_version | default('1.8.2') }}.linux-amd64/node_exporter" - dest: /usr/local/bin/node_exporter + dest: /opt/metrics-agent/node_exporter mode: '0755' remote_src: true when: inventory_hostname in groups[group] @@ -44,10 +45,25 @@ state: absent when: inventory_hostname in groups[group] +- name: Ensure textfile collector directory exists + ansible.builtin.file: + path: /var/lib/node_exporter + state: directory + owner: nobody + group: nogroup + mode: '0755' + when: inventory_hostname in groups[group] + +- name: Remove old node_exporter service file + ansible.builtin.file: + path: /etc/systemd/system/node_exporter.service + state: absent + when: inventory_hostname in groups[group] + - name: Create node_exporter service ansible.builtin.template: - src: node_exporter.service - dest: /etc/systemd/system/node_exporter.service + src: node-exporter.service + dest: /etc/systemd/system/node-exporter.service owner: root group: root mode: '0644' @@ -55,7 +71,7 @@ - name: Enable and start node_exporter ansible.builtin.systemd: - name: node_exporter + name: node-exporter enabled: true state: restarted daemon_reload: true diff --git a/playbooks/roles/vhosts/node_exporter/templates/node-exporter.service b/playbooks/roles/vhosts/node_exporter/templates/node-exporter.service new file mode 100644 index 0000000..d6001ee --- /dev/null +++ b/playbooks/roles/vhosts/node_exporter/templates/node-exporter.service @@ -0,0 +1,26 @@ +[#] template for node-exporter systemd service +[Unit] +Description=Prometheus Node Exporter (tiny, LAN) +After=network.target + +[Service] +User=nobody +Group=nogroup +ExecStart=/opt/metrics-agent/node_exporter \ + --web.listen-address=0.0.0.0:9100 \ + --collector.disable-defaults \ + --collector.cpu \ + --collector.meminfo \ + --collector.loadavg \ + --collector.filesystem \ + --collector.diskstats \ + --collector.netdev \ + --collector.netclass \ + --collector.uname \ + --collector.textfile \ + --collector.textfile.directory=/var/lib/node_exporter +Restart=always +RestartSec=2 + +[Install] +WantedBy=multi-user.target diff --git a/playbooks/roles/vhosts/node_exporter/templates/node_exporter.service b/playbooks/roles/vhosts/node_exporter/templates/node_exporter.service deleted file mode 100644 index 976d57d..0000000 --- a/playbooks/roles/vhosts/node_exporter/templates/node_exporter.service +++ /dev/null @@ -1,18 +0,0 @@ -[Unit] -Description=Prometheus Node Exporter -Wants=network-online.target -After=network-online.target - -[Service] -User=node_exporter -Group=node_exporter -ExecStart=/usr/local/bin/node_exporter --web.listen-address={{ node_exporter_bind_addr | default('0.0.0.0') }}:{{ node_exporter_port | default('9100') }} --collector.tcpstat --collector.processes -Restart=always - -NoNewPrivileges=yes -PrivateTmp=yes -ProtectSystem=full -ProtectHome=yes - -[Install] -WantedBy=multi-user.target