Skip to content
This repository was archived by the owner on Nov 12, 2023. It is now read-only.

Commit 8908926

Browse files
committed
base implementation
1 parent fa83bb1 commit 8908926

File tree

8 files changed

+52
-55
lines changed

8 files changed

+52
-55
lines changed

defaults/main.yml

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,9 @@ systemd_exporter_version: 0.4.0
33
systemd_exporter_binary_local_dir: ""
44
systemd_exporter_web_listen_address: "0.0.0.0:9558"
55

6-
systemd_exporter_enabled_collectors:
7-
- systemd
8-
- textfile:
9-
directory: "{{ systemd_exporter_textfile_dir }}"
10-
# - filesystem:
11-
# ignored-mount-points: "^/(sys|proc|dev)($|/)"
12-
# ignored-fs-types: "^(sys|proc|auto)fs$"
6+
systemd_exporter_enable_restart_count: true
7+
systemd_exporter_enable_ip_accounting: true
8+
systemd_exporter_enable_file_descriptor_size: false
9+
10+
systemd_exporter_unit_allowlist: ""
11+
systemd_exporter_unit_denylist: ""

molecule/alternative/playbook.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@
66
- ansible-systemd-exporter
77
vars:
88
systemd_exporter_binary_local_dir: "/tmp/systemd_exporter-linux-amd64"
9-
systemd_exporter_web_listen_address: "127.0.0.1:8080"
9+
systemd_exporter_web_listen_address: "127.0.0.1:9000"

molecule/alternative/tests/test_alternative.py

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,15 @@
55
os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all')
66

77

8-
def test_directories(host):
9-
dirs = [
10-
"/var/lib/node_exporter"
11-
]
12-
for dir in dirs:
13-
d = host.file(dir)
14-
assert not d.exists
15-
16-
178
def test_service(host):
18-
s = host.service("node_exporter")
9+
s = host.service("systemd_exporter")
1910
# assert s.is_enabled
2011
assert s.is_running
2112

2213

2314
def test_socket(host):
2415
sockets = [
25-
"tcp://127.0.0.1:8080"
16+
"tcp://127.0.0.1:9000"
2617
]
2718
for socket in sockets:
2819
s = host.socket(socket)

molecule/default/tests/test_default.py

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,10 @@
55
os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all')
66

77

8-
def test_directories(host):
9-
dirs = [
10-
"/var/lib/node_exporter"
11-
]
12-
for dir in dirs:
13-
d = host.file(dir)
14-
assert d.is_directory
15-
assert d.exists
16-
17-
188
def test_files(host):
199
files = [
20-
"/etc/systemd/system/node_exporter.service",
21-
"/usr/local/bin/node_exporter"
10+
"/etc/systemd/system/systemd_exporter.service",
11+
"/usr/local/bin/systemd_exporter"
2212
]
2313
for file in files:
2414
f = host.file(file)
@@ -42,21 +32,21 @@ def test_permissions_didnt_change(host):
4232

4333

4434
def test_user(host):
45-
assert host.group("node-exp").exists
46-
assert "node-exp" in host.user("node-exp").groups
47-
assert host.user("node-exp").shell == "/usr/sbin/nologin"
48-
assert host.user("node-exp").home == "/"
35+
assert host.group("systemd-exporter").exists
36+
assert "systemd-exporter" in host.user("systemd-exporter").groups
37+
assert host.user("systemd-exporter").shell == "/usr/sbin/nologin"
38+
assert host.user("systemd-exporter").home == "/"
4939

5040

5141
def test_service(host):
52-
s = host.service("node_exporter")
42+
s = host.service("systemd_exporter")
5343
# assert s.is_enabled
5444
assert s.is_running
5545

5646

5747
def test_socket(host):
5848
sockets = [
59-
"tcp://127.0.0.1:9100"
49+
"tcp://127.0.0.1:9558"
6050
]
6151
for socket in sockets:
6252
s = host.socket(socket)

molecule/latest/tests/test_alternative.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77

88

99
@pytest.mark.parametrize("files", [
10-
"/etc/systemd/system/node_exporter.service",
11-
"/usr/local/bin/node_exporter"
10+
"/etc/systemd/system/systemd_exporter.service",
11+
"/usr/local/bin/systemd_exporter"
1212
])
1313
def test_files(host, files):
1414
f = host.file(files)
@@ -17,11 +17,11 @@ def test_files(host, files):
1717

1818

1919
def test_service(host):
20-
s = host.service("node_exporter")
20+
s = host.service("systemd_exporter")
2121
# assert s.is_enabled
2222
assert s.is_running
2323

2424

2525
def test_socket(host):
26-
s = host.socket("tcp://0.0.0.0:9100")
26+
s = host.socket("tcp://0.0.0.0:9558")
2727
assert s.is_listening

tasks/preflight.yml

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,25 @@
1414

1515
- name: Set systemd version fact
1616
set_fact:
17-
systemd_exporter_systemd_version: "{{ __systemd_version.stdout_lines[0] | regex_replace('^systemd\\s(\\d+).*$', '\\1') }}"
17+
_systemd_exporter_systemd_version: "{{ __systemd_version.stdout_lines[0] | regex_replace('^systemd\\s(\\d+).*$', '\\1') }}"
1818

1919
- name: Naive assertion of proper listen address
2020
assert:
2121
that:
2222
- "':' in systemd_exporter_web_listen_address"
2323

24+
- name: Assert that systemd version is >= 235 when enabling ip accounting or measuring restart count
25+
assert:
26+
that:
27+
- _systemd_exporter_systemd_version | int >= 232
28+
when: systemd_exporter_enable_ip_accounting or systemd_exporter_enable_restart_count
29+
30+
- name: Set user and group to root to allow access to /proc/X/fd
31+
set_fact:
32+
_systemd_exporter_system_group: "root"
33+
_systemd_exporter_system_user: "root"
34+
when: systemd_exporter_enable_file_descriptor_size
35+
2436
- name: Check if systemd_exporter is installed
2537
stat:
2638
path: "{{ _systemd_exporter_binary_install_dir }}/systemd_exporter"

templates/systemd_exporter.service.j2

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,21 @@ Type=simple
99
User={{ _systemd_exporter_system_user }}
1010
Group={{ _systemd_exporter_system_group }}
1111
ExecStart={{ _systemd_exporter_binary_install_dir }}/systemd_exporter \
12-
{% for collector in systemd_exporter_enabled_collectors -%}
13-
{% if not collector is mapping %}
14-
--collector.{{ collector }} \
15-
{% else -%}
16-
{% set name, options = (collector.items()|list)[0] -%}
17-
--collector.{{ name }} \
18-
{% for k,v in options|dictsort %}
19-
--collector.{{ name }}.{{ k }}={{ v | quote }} \
20-
{% endfor -%}
21-
{% endif -%}
22-
{% endfor -%}
12+
{% if systemd_exporter_enable_restart_count %}
13+
--collector.enable-restart-count \
14+
{% endif %}
15+
{% if systemd_exporter_enable_file_descriptor_size %}
16+
--collector.enable-file-descriptor-size \
17+
{% endif %}
18+
{% if systemd_exporter_enable_ip_accounting %}
19+
--collector.enable-ip-accounting \
20+
{% endif %}
21+
{% if systemd_exporter_unit_allowlist != "" %}
22+
--collector.unit-whitelist={{ systemd_exporter_unit_allowlist }} \
23+
{% endif %}
24+
{% if systemd_exporter_unit_denylist != "" %}
25+
--collector.unit-blacklist={{ systemd_exporter_unit_denylist }} \
26+
{% endif %}
2327
--web.listen-address={{ systemd_exporter_web_listen_address }}
2428

2529
SyslogIdentifier=systemd_exporter
@@ -30,7 +34,7 @@ StartLimitInterval=0
3034
ProtectHome=yes
3135
NoNewPrivileges=yes
3236

33-
{% if systemd_exporter_systemd_version | int >= 232 %}
37+
{% if _systemd_exporter_systemd_version | int >= 232 %}
3438
ProtectSystem=strict
3539
ProtectControlGroups=true
3640
ProtectKernelModules=true

vars/main.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,6 @@ go_arch_map:
99
go_arch: "{{ go_arch_map[ansible_architecture] | default(ansible_architecture) }}"
1010

1111
_systemd_exporter_binary_install_dir: "/usr/local/bin"
12-
_systemd_exporter_system_group: "systemd-exp"
12+
13+
_systemd_exporter_system_group: "systemd-exporter"
1314
_systemd_exporter_system_user: "{{ _systemd_exporter_system_group }}"

0 commit comments

Comments
 (0)