forked from HPC/HPCplaybooks
Added a node_exporter role initially built for...
peregrine.
This commit is contained in:
parent
e6cb2834c0
commit
2ec22760af
5
node_exporter.yml
Normal file
5
node_exporter.yml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
- hosts: all
|
||||||
|
become: True
|
||||||
|
roles:
|
||||||
|
- node_exporter
|
22
promtools/Dockerfile
Normal file
22
promtools/Dockerfile
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
FROM golang:1.9-stretch
|
||||||
|
|
||||||
|
MAINTAINER Egon Rijpkema <e.m.a.rijpkema@rug.nl>
|
||||||
|
|
||||||
|
RUN mkdir /results
|
||||||
|
|
||||||
|
RUN go get github.com/prometheus/node_exporter && \
|
||||||
|
cd ${GOPATH-$HOME/go}/src/github.com/prometheus/node_exporter && \
|
||||||
|
make && \
|
||||||
|
cp node_exporter /results
|
||||||
|
|
||||||
|
RUN go get github.com/robustperception/pushprox/proxy && \
|
||||||
|
cd ${GOPATH-$HOME/go}/src/github.com/robustperception/pushprox/proxy && \
|
||||||
|
go build && \
|
||||||
|
cp /go/bin/proxy /results
|
||||||
|
|
||||||
|
RUN go get github.com/robustperception/pushprox/client && \
|
||||||
|
cd ${GOPATH-$HOME/go}/src/github.com/robustperception/pushprox/client && \
|
||||||
|
go build && \
|
||||||
|
cp /go/bin/client /results
|
||||||
|
|
||||||
|
CMD /go/bin/proxy
|
34
promtools/addport.py
Executable file
34
promtools/addport.py
Executable file
@ -0,0 +1,34 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
'''
|
||||||
|
Pushprox: does not include the port number in its targets json
|
||||||
|
on the /clients endpoint. while Prometheus does seem to need it.
|
||||||
|
|
||||||
|
for more info see: https://github.com/RobustPerception/PushProx
|
||||||
|
'''
|
||||||
|
|
||||||
|
import json
|
||||||
|
from urllib import request
|
||||||
|
|
||||||
|
url = 'http://knyft.hpc.rug.nl:6060/clients'
|
||||||
|
outfile = 'targets.json'
|
||||||
|
|
||||||
|
data = json.loads(request.urlopen(url).read().decode('utf-8'))
|
||||||
|
|
||||||
|
targets = []
|
||||||
|
|
||||||
|
for node in data:
|
||||||
|
for target in node['targets']:
|
||||||
|
if target[-5:] != '9100':
|
||||||
|
target = '{}:9100'.format(target)
|
||||||
|
targets.append(target)
|
||||||
|
|
||||||
|
with open(outfile, 'w') as handle:
|
||||||
|
handle.write(json.dumps(
|
||||||
|
[{
|
||||||
|
"targets" : targets,
|
||||||
|
"labels": {
|
||||||
|
"env": "peregrine",
|
||||||
|
"job": "node"
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
,indent=4 ))
|
6
promtools/build.sh
Executable file
6
promtools/build.sh
Executable file
@ -0,0 +1,6 @@
|
|||||||
|
#!/bin/bash -ex
|
||||||
|
|
||||||
|
mkdir -p results
|
||||||
|
docker build . -t promtools
|
||||||
|
docker run -d --name promtools --rm promtools sleep 3
|
||||||
|
docker cp promtools:/results .
|
BIN
promtools/client
Executable file
BIN
promtools/client
Executable file
Binary file not shown.
BIN
promtools/proxy
Executable file
BIN
promtools/proxy
Executable file
Binary file not shown.
36
roles/node_exporter/tasks/main.yml
Normal file
36
roles/node_exporter/tasks/main.yml
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
---
|
||||||
|
- file:
|
||||||
|
path: /usr/local/prometheus
|
||||||
|
state: directory
|
||||||
|
mode: 0755
|
||||||
|
|
||||||
|
- name: Install node exporter
|
||||||
|
copy:
|
||||||
|
src: "{{ playbook_dir }}/promtools/results/node_exporter"
|
||||||
|
dest: /usr/local/prometheus/node_exporter
|
||||||
|
mode: 0755
|
||||||
|
|
||||||
|
- name: Install service files.
|
||||||
|
template:
|
||||||
|
src: templates/node-exporter.service
|
||||||
|
dest: /etc/systemd/system/node-exporter.service
|
||||||
|
mode: 644
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
tags:
|
||||||
|
- service-files
|
||||||
|
|
||||||
|
- name: install service files
|
||||||
|
command: systemctl daemon-reload
|
||||||
|
|
||||||
|
- name: enable service at boot
|
||||||
|
systemd:
|
||||||
|
name: node-exporter
|
||||||
|
enabled: yes
|
||||||
|
|
||||||
|
- name: make sure servcies are started.
|
||||||
|
systemd:
|
||||||
|
name: node-exporter.service
|
||||||
|
state: restarted
|
||||||
|
tags:
|
||||||
|
- start-service
|
16
roles/node_exporter/templates/node-exporter.service
Normal file
16
roles/node_exporter/templates/node-exporter.service
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=prometheus node exporter
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
TimeoutStartSec=0
|
||||||
|
Restart=always
|
||||||
|
ExecStart=/usr/local/prometheus/node_exporter \
|
||||||
|
--collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($|/)" \
|
||||||
|
{% if 'login' in role_names %}
|
||||||
|
--collector.filesystem.ignored-fs-types="^(sys|proc|auto|cgroup|devpts|ns|au|fuse\.lxc|mqueue|overlay)(fs|)$$"
|
||||||
|
{% else %}
|
||||||
|
--collector.filesystem.ignored-fs-types="^(sys|proc|auto|cgroup|devpts|ns|au|fuse\.lxc|mqueue|overlay|lustre)(fs|)$$"
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
Loading…
Reference in New Issue
Block a user