mirror of https://github.com/Aidaho12/haproxy-wi
parent
c79c59c775
commit
f09aafa77c
|
@ -859,7 +859,7 @@ def update_db_v_5_3_2_2(**kwargs):
|
|||
|
||||
|
||||
def update_ver():
|
||||
query = Version.update(version='5.3.4.0')
|
||||
query = Version.update(version='5.3.5.0')
|
||||
try:
|
||||
query.execute()
|
||||
except:
|
||||
|
|
|
@ -432,6 +432,8 @@ def get_config(server_ip, cfg, **kwargs):
|
|||
config_path = "/etc/keepalived/keepalived.conf"
|
||||
elif kwargs.get("nginx"):
|
||||
config_path = sql.get_setting('nginx_config_path')
|
||||
elif kwargs.get("waf"):
|
||||
config_path = sql.get_setting('haproxy_dir') + '/waf/rules/' + kwargs.get("waf_rule_file")
|
||||
else:
|
||||
config_path = sql.get_setting('haproxy_config_path')
|
||||
|
||||
|
@ -707,7 +709,7 @@ def install_haproxy(server_ip, **kwargs):
|
|||
os.system("cp scripts/%s ." % script)
|
||||
|
||||
if haproxy_ver is None:
|
||||
haproxy_ver = '2.3.0-1'
|
||||
haproxy_ver = '2.4.9-1'
|
||||
|
||||
if proxy is not None and proxy != '' and proxy != 'None':
|
||||
proxy_serv = proxy
|
||||
|
|
|
@ -669,6 +669,7 @@ if act == "overviewwaf":
|
|||
ioloop.run_until_complete(get_runner_overviewWaf())
|
||||
ioloop.close()
|
||||
|
||||
|
||||
if act == "overviewServers":
|
||||
import asyncio
|
||||
|
||||
|
@ -1372,6 +1373,8 @@ if form.getvalue('install_grafana'):
|
|||
|
||||
if form.getvalue('haproxy_exp_install'):
|
||||
serv = form.getvalue('haproxy_exp_install')
|
||||
ver = form.getvalue('exporter_v')
|
||||
ext_prom = form.getvalue('ext_prom')
|
||||
script = "install_haproxy_exporter.sh"
|
||||
stats_port = sql.get_setting('stats_port')
|
||||
server_state_file = sql.get_setting('server_state_file')
|
||||
|
@ -1398,7 +1401,7 @@ if form.getvalue('haproxy_exp_install'):
|
|||
|
||||
commands = ["chmod +x " + script + " && ./" + script + " PROXY=" + proxy_serv +
|
||||
" STAT_PORT=" + str(stats_port) + " STAT_FILE=" + server_state_file +
|
||||
" SSH_PORT=" + ssh_port + " STAT_PAGE=" + stat_page +
|
||||
" SSH_PORT=" + ssh_port + " STAT_PAGE=" + stat_page + " VER=" + ver + " EXP_PROM=" + ext_prom +
|
||||
" STATS_USER=" + stats_user + " STATS_PASS='" + stats_password + "' HOST=" + serv +
|
||||
" USER=" + ssh_user_name + " PASS='" + ssh_user_password + "' KEY=" + ssh_key_name]
|
||||
|
||||
|
@ -1411,6 +1414,7 @@ if form.getvalue('haproxy_exp_install'):
|
|||
if form.getvalue('nginx_exp_install'):
|
||||
serv = form.getvalue('nginx_exp_install')
|
||||
ver = form.getvalue('exporter_v')
|
||||
ext_prom = form.getvalue('ext_prom')
|
||||
script = "install_nginx_exporter.sh"
|
||||
stats_user = sql.get_setting('nginx_stats_user')
|
||||
stats_password = sql.get_setting('nginx_stats_password')
|
||||
|
@ -1436,8 +1440,8 @@ if form.getvalue('nginx_exp_install'):
|
|||
|
||||
commands = ["chmod +x " + script + " && ./" + script + " PROXY=" + proxy_serv +
|
||||
" STAT_PORT=" + str(stats_port) + " SSH_PORT=" + ssh_port + " STAT_PAGE=" + stats_page +
|
||||
" STATS_USER=" + stats_user + " STATS_PASS='" + stats_password + "' HOST=" + serv +
|
||||
" USER=" + ssh_user_name + " PASS='" + ssh_user_password + "' KEY=" + ssh_key_name]
|
||||
" STATS_USER=" + stats_user + " STATS_PASS='" + stats_password + "' HOST=" + serv + " VER=" + ver +
|
||||
" EXP_PROM=" + ext_prom + " USER=" + ssh_user_name + " PASS='" + ssh_user_password + "' KEY=" + ssh_key_name]
|
||||
|
||||
output, error = funct.subprocess_execute(commands[0])
|
||||
|
||||
|
@ -1447,6 +1451,8 @@ if form.getvalue('nginx_exp_install'):
|
|||
|
||||
if form.getvalue('node_exp_install'):
|
||||
serv = form.getvalue('node_exp_install')
|
||||
ver = form.getvalue('exporter_v')
|
||||
ext_prom = form.getvalue('ext_prom')
|
||||
script = "install_node_exporter.sh"
|
||||
proxy = sql.get_setting('proxy')
|
||||
ssh_port = 22
|
||||
|
@ -1466,8 +1472,8 @@ if form.getvalue('node_exp_install'):
|
|||
else:
|
||||
proxy_serv = ''
|
||||
|
||||
commands = ["chmod +x " + script + " && ./" + script + " PROXY=" + proxy_serv + " SSH_PORT=" + ssh_port +
|
||||
" HOST=" + serv + " USER=" + ssh_user_name + " PASS='" + ssh_user_password + "' KEY=" + ssh_key_name]
|
||||
commands = ["chmod +x " + script + " && ./" + script + " PROXY=" + proxy_serv + " SSH_PORT=" + ssh_port + " VER=" + ver +
|
||||
" EXP_PROM=" + ext_prom + " HOST=" + serv + " USER=" + ssh_user_name + " PASS='" + ssh_user_password + "' KEY=" + ssh_key_name]
|
||||
|
||||
output, error = funct.subprocess_execute(commands[0])
|
||||
|
||||
|
@ -1742,7 +1748,7 @@ if form.getvalue('get_nginx_v'):
|
|||
print(funct.ssh_command(serv, cmd))
|
||||
|
||||
if form.getvalue('get_exporter_v'):
|
||||
print(funct.check_service(serv, form.getvalue('get_exporter_v')))
|
||||
print(funct.get_service_version(serv, form.getvalue('get_exporter_v')))
|
||||
|
||||
if form.getvalue('bwlists'):
|
||||
list_path = os.path.dirname(os.getcwd()) + "/" + sql.get_setting('lists_path') + "/" + form.getvalue('group') + "/" + form.getvalue('color') + "/" + form.getvalue('bwlists')
|
||||
|
|
|
@ -34,6 +34,6 @@
|
|||
|
||||
|
||||
roles:
|
||||
- role: bdellegrazie.haproxy_exporter
|
||||
- role: haproxy_exporter
|
||||
vars:
|
||||
haproxy_exporter_options: ['--haproxy.scrape-uri=http://{{STATS_USER}}:{{STATS_PASS}}@{{variable_host}}:{{STAT_PORT}}/{{STAT_PAGE}};csv']
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
---
|
||||
haproxy_exporter_user: haproxy_exporter
|
||||
haproxy_exporter_user_manage: true
|
||||
haproxy_exporter_group: "{{ haproxy_exporter_user }}"
|
||||
haproxy_exporter_group_manage: true
|
||||
|
||||
haproxy_exporter_version: "0.10.0"
|
||||
haproxy_exporter_platform_suffix: "linux-amd64"
|
||||
|
||||
haproxy_exporter_options:
|
||||
- '--haproxy.scrape-uri=http://admin:admin@localhost:9101/haproxy?stats;csv'
|
||||
|
||||
haproxy_exporter_signature: "haproxy_exporter-{{ haproxy_exporter_version }}.{{ haproxy_exporter_platform_suffix }}"
|
||||
haproxy_exporter_dist_dir: "{{ prometheus_exporter_dist_dir }}/{{ haproxy_exporter_signature }}"
|
||||
haproxy_exporter_tarball_url: "https://github.com/prometheus/haproxy_exporter/releases/download/v{{ haproxy_exporter_version }}/{{ haproxy_exporter_signature }}.tar.gz"
|
||||
haproxy_exporter_program: "{{ prometheus_exporter_dir }}/haproxy_exporter"
|
||||
haproxy_exporter_home: "/var/lib/haproxy_exporter"
|
||||
haproxy_exporter_home_manage: true
|
||||
|
||||
haproxy_exporter_config_file: /etc/default/haproxy_exporter
|
||||
haproxy_exporter_pid_path: "/var/run"
|
||||
haproxy_exporter_log_path: "/var/log/haproxy_exporter"
|
||||
|
||||
haproxy_exporter_service_manage: true
|
||||
haproxy_exporter_service_enable: true
|
||||
haproxy_exporter_service_state: started
|
||||
haproxy_exporter_service_notify: true
|
|
@ -0,0 +1,11 @@
|
|||
---
|
||||
- name: restart haproxy_exporter
|
||||
become: true
|
||||
become_user: root
|
||||
service:
|
||||
name: haproxy_exporter
|
||||
state: "{{ (haproxy_exporter_service_state != 'stopped') | ternary('restarted', 'stopped') }}"
|
||||
use: "{{ prometheus_exporter_service_mgr }}"
|
||||
when: haproxy_exporter_service_notify and (
|
||||
_haproxy_exporter_service_state is not defined or
|
||||
not ( _haproxy_exporter_service_state is changed ))
|
|
@ -0,0 +1,30 @@
|
|||
---
|
||||
galaxy_info:
|
||||
author: Brett Delle Grazie
|
||||
description: Role to install Prometheus HAproxy Exporter
|
||||
|
||||
license: GPLv3
|
||||
|
||||
min_ansible_version: 2.0
|
||||
|
||||
platforms:
|
||||
- name: EL
|
||||
versions:
|
||||
- 6
|
||||
- 7
|
||||
- name: Fedora
|
||||
versions:
|
||||
- all
|
||||
- name: Ubuntu
|
||||
versions:
|
||||
- all
|
||||
- name: Debian
|
||||
versions:
|
||||
- all
|
||||
|
||||
galaxy_tags:
|
||||
- prometheus
|
||||
- exporter
|
||||
|
||||
dependencies:
|
||||
- { role: 'bdellegrazie.ansible-role-prometheus_exporter', version: 'v1.1.3' }
|
|
@ -0,0 +1,111 @@
|
|||
---
|
||||
- name: group
|
||||
become: true
|
||||
become_user: root
|
||||
group:
|
||||
name: "{{ haproxy_exporter_group }}"
|
||||
state: present
|
||||
system: true
|
||||
when: haproxy_exporter_group_manage | bool
|
||||
|
||||
- name: user
|
||||
become: true
|
||||
become_user: root
|
||||
user:
|
||||
name: "{{ haproxy_exporter_user }}"
|
||||
group: "{{ haproxy_exporter_group }}"
|
||||
home: "{{ haproxy_exporter_home }}"
|
||||
createhome: false
|
||||
shell: /sbin/nologin
|
||||
comment: haproxy_exporter
|
||||
state: present
|
||||
system: true
|
||||
when: haproxy_exporter_user_manage | bool
|
||||
|
||||
- name: home
|
||||
become: true
|
||||
become_user: root
|
||||
file:
|
||||
path: "{{ haproxy_exporter_home }}"
|
||||
owner: "{{ haproxy_exporter_user }}"
|
||||
group: "{{ haproxy_exporter_group }}"
|
||||
mode: "u=rwx,g=rx,o="
|
||||
state: directory
|
||||
when: haproxy_exporter_home_manage | bool
|
||||
|
||||
- name: logs
|
||||
become: true
|
||||
become_user: root
|
||||
file:
|
||||
path: "{{ haproxy_exporter_log_path }}"
|
||||
owner: "{{ haproxy_exporter_user }}"
|
||||
group: "{{ haproxy_exporter_group }}"
|
||||
mode: "u=rwx,g=rx,o="
|
||||
state: directory
|
||||
|
||||
- name: download tarball
|
||||
become: true
|
||||
become_user: root
|
||||
get_url:
|
||||
url: "{{ haproxy_exporter_tarball_url }}"
|
||||
dest: "{{ prometheus_exporter_dist_dir }}/{{ haproxy_exporter_signature }}.tar.gz"
|
||||
owner: root
|
||||
group: root
|
||||
mode: "u=rw,go=r"
|
||||
|
||||
- name: untar tarball
|
||||
become: true
|
||||
become_user: root
|
||||
unarchive:
|
||||
src: "{{ prometheus_exporter_dist_dir }}/{{ haproxy_exporter_signature }}.tar.gz"
|
||||
dest: "{{ prometheus_exporter_dist_dir }}"
|
||||
remote_src: true
|
||||
owner: root
|
||||
group: root
|
||||
mode: "u=rwx,go=rx"
|
||||
creates: "{{ haproxy_exporter_dist_dir }}/haproxy_exporter"
|
||||
|
||||
- name: symlink
|
||||
become: true
|
||||
become_user: root
|
||||
file:
|
||||
src: "{{ haproxy_exporter_dist_dir }}/haproxy_exporter"
|
||||
path: "{{ prometheus_exporter_dir }}/haproxy_exporter"
|
||||
owner: root
|
||||
group: root
|
||||
force: true
|
||||
state: link
|
||||
notify: restart haproxy_exporter
|
||||
|
||||
- name: config
|
||||
become: true
|
||||
become_user: root
|
||||
template:
|
||||
src: "haproxy_exporter.default.conf.j2"
|
||||
dest: "/etc/default/haproxy_exporter"
|
||||
owner: root
|
||||
group: root
|
||||
mode: "u=rw,go=r"
|
||||
notify: restart haproxy_exporter
|
||||
|
||||
- name: install service
|
||||
include: service-{{ prometheus_exporter_service_mgr }}.yml
|
||||
|
||||
- name: Service Enabled
|
||||
become: true
|
||||
become_user: root
|
||||
service:
|
||||
name: haproxy_exporter
|
||||
enabled: "{{ haproxy_exporter_service_enable }}"
|
||||
use: "{{ prometheus_exporter_service_mgr }}"
|
||||
when: haproxy_exporter_service_manage
|
||||
|
||||
- name: Service State
|
||||
become: true
|
||||
become_user: root
|
||||
service:
|
||||
name: haproxy_exporter
|
||||
state: "{{ haproxy_exporter_service_state }}"
|
||||
use: "{{ prometheus_exporter_service_mgr }}"
|
||||
register: _haproxy_exporter_service_state
|
||||
when: haproxy_exporter_service_manage
|
|
@ -0,0 +1,12 @@
|
|||
---
|
||||
- name: systemd service
|
||||
become: true
|
||||
template:
|
||||
src: "haproxy_exporter.systemd.j2"
|
||||
dest: "/lib/systemd/system/haproxy_exporter.service"
|
||||
owner: root
|
||||
group: root
|
||||
mode: "u=rw,go=r"
|
||||
notify:
|
||||
- reload systemd daemon
|
||||
- restart haproxy_exporter
|
|
@ -0,0 +1,11 @@
|
|||
---
|
||||
- name: sysvinit service
|
||||
become: true
|
||||
template:
|
||||
src: "haproxy_exporter.sysvinit.j2"
|
||||
dest: "/etc/init.d/haproxy_exporter"
|
||||
owner: root
|
||||
group: root
|
||||
mode: "u=rwx,go=rx"
|
||||
notify:
|
||||
- restart haproxy_exporter
|
|
@ -0,0 +1,11 @@
|
|||
---
|
||||
- name: upstart service
|
||||
become: true
|
||||
template:
|
||||
src: "haproxy_exporter.upstart.j2"
|
||||
dest: "/etc/init/haproxy_exporter.conf"
|
||||
owner: root
|
||||
group: root
|
||||
mode: "u=rw,go=r"
|
||||
notify:
|
||||
- restart haproxy_exporter
|
|
@ -0,0 +1 @@
|
|||
OPTIONS="{{ haproxy_exporter_options | join(' ') }}"
|
|
@ -0,0 +1,16 @@
|
|||
[Unit]
|
||||
Description=haproxy_exporter - Exporter for machine metrics.
|
||||
Documentation=https://github.com/prometheus/haproxy_exporter
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
User={{ haproxy_exporter_user }}
|
||||
Group={{ haproxy_exporter_group }}
|
||||
EnvironmentFile={{ haproxy_exporter_config_file }}
|
||||
ExecStart={{ haproxy_exporter_program }} $OPTIONS
|
||||
|
||||
SyslogIdentifier=haproxy_exporter
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
|
@ -0,0 +1,119 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# haproxy_exporter Start/Stop the haproxy_exporter daemon
|
||||
#
|
||||
# chkconfig: - 80 20
|
||||
# description: haproxy_exporter is a metrics daemon for Prometheus.
|
||||
# processname: haproxy_exporter
|
||||
|
||||
### BEGIN INIT INFO
|
||||
# Provides: haproxy_exporter
|
||||
# Required-Start: $remote_fs $syslog
|
||||
# Required-Stop: $remote_fs $syslog
|
||||
# Default-Start: 2 3 4 5
|
||||
# Default-Stop: 0 1 6
|
||||
# Short-Description: Start/Stop the haproxy_exporter daemon
|
||||
# Description: haproxy_exporter is a metrics daemon for Prometheus.
|
||||
### END INIT INFO
|
||||
|
||||
# Source function library.
|
||||
if [ -f /etc/init.d/functions ] ; then
|
||||
. /etc/init.d/functions
|
||||
fi
|
||||
|
||||
# defaults
|
||||
OPTIONS=""
|
||||
|
||||
# config
|
||||
if [ -f "{{ haproxy_exporter_config_file }}" ] ; then
|
||||
. "{{ haproxy_exporter_config_file }}"
|
||||
fi
|
||||
|
||||
RETVAL=0
|
||||
|
||||
# Set up some common variables before we launch into what might be
|
||||
# considered boilerplate by now.
|
||||
prog="{{ haproxy_exporter_program }}"
|
||||
name="$(basename $prog)"
|
||||
binary="$(readlink -f $prog)"
|
||||
lockfile="/var/lock/subsys/$name"
|
||||
logdir="{{ haproxy_exporter_log_path }}"
|
||||
pidfile="{{ haproxy_exporter_pid_path }}/$name.pid"
|
||||
user="{{ haproxy_exporter_user }}"
|
||||
group="{{ haproxy_exporter_group }}"
|
||||
|
||||
start() {
|
||||
[ -r $binary ] || exit 5
|
||||
echo -n $"Starting $name: "
|
||||
daemonize -a -c '/' -e ${logdir}/${name}.err.log -o ${logdir}/${name}.out.log \
|
||||
-p $pidfile -l $lockfile -u $user \
|
||||
$binary $OPTIONS
|
||||
RETVAL=$?
|
||||
echo
|
||||
[ $RETVAL -eq 0 ] && touch $lockfile
|
||||
return $RETVAL
|
||||
}
|
||||
|
||||
stop() {
|
||||
echo -n $"Stopping $prog: "
|
||||
killproc -p $pidfile $binary
|
||||
RETVAL=$?
|
||||
echo
|
||||
[ $RETVAL -eq 0 ] && rm -f $lockfile
|
||||
return $RETVAL
|
||||
}
|
||||
|
||||
restart() {
|
||||
stop
|
||||
start
|
||||
}
|
||||
|
||||
reload() {
|
||||
restart
|
||||
}
|
||||
|
||||
force_reload() {
|
||||
restart
|
||||
}
|
||||
|
||||
rh_status() {
|
||||
# run checks to determine if the service is running or use generic status
|
||||
status -p $pidfile -l $lockfile $binary
|
||||
}
|
||||
|
||||
rh_status_q() {
|
||||
rh_status >/dev/null 2>&1
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
rh_status_q && exit 0
|
||||
start
|
||||
;;
|
||||
stop)
|
||||
rh_status_q || exit 0
|
||||
stop
|
||||
;;
|
||||
restart)
|
||||
restart
|
||||
;;
|
||||
reload)
|
||||
rh_status_q || exit 7
|
||||
reload
|
||||
;;
|
||||
force-reload)
|
||||
force_reload
|
||||
;;
|
||||
status)
|
||||
rh_status
|
||||
;;
|
||||
condrestart|try-restart)
|
||||
rh_status_q || exit 0
|
||||
restart
|
||||
;;
|
||||
*)
|
||||
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
|
||||
exit 2
|
||||
esac
|
||||
|
||||
exit $?
|
|
@ -0,0 +1,26 @@
|
|||
description "Prometheus HAproxy Exporter"
|
||||
start on (local-filesystems and net-device-up IFACE!=lo)
|
||||
stop on runlevel [016]
|
||||
|
||||
respawn
|
||||
|
||||
setuid {{ haproxy_exporter_user }}
|
||||
setgid {{ haproxy_exporter_group }}
|
||||
|
||||
env name=haproxy_exporter
|
||||
env prog={{ haproxy_exporter_program }}
|
||||
env logdir={{ haproxy_exporter_log_path }}
|
||||
env user={{ haproxy_exporter_user }}
|
||||
env group={{ haproxy_exporter_group }}
|
||||
|
||||
script
|
||||
if [ -f "{{ haproxy_exporter_config_file }}" ] ; then
|
||||
. "{{ haproxy_exporter_config_file }}"
|
||||
fi
|
||||
|
||||
pidfile={{ haproxy_exporter_pid_path }}/$name.pid
|
||||
lockfile=/var/lock/subsys/$name
|
||||
|
||||
binary=$(readlink -f $prog)
|
||||
exec $binary $OPTIONS >> "${logdir}/${name}.out.log" 2>> "${logdir}/${name}.err.log"
|
||||
end script
|
|
@ -32,7 +32,7 @@
|
|||
|
||||
|
||||
roles:
|
||||
- role: bdellegrazie.nginx_exporter
|
||||
- role: nginx_exporter
|
||||
environment:
|
||||
http_proxy: "{{PROXY}}"
|
||||
https_proxy: "{{PROXY}}"
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
---
|
||||
nginx_exporter_user: nginx_exporter
|
||||
nginx_exporter_user_manage: true
|
||||
nginx_exporter_group: nginx_exporter
|
||||
nginx_exporter_group_manage: true
|
||||
|
||||
nginx_exporter_version: "0.5.0"
|
||||
nginx_exporter_platform_suffix: "linux_amd64"
|
||||
nginx_exporter_platform_suffix_alt: "linux-amd64"
|
||||
|
||||
nginx_exporter_signature: "nginx-prometheus-exporter_{{ nginx_exporter_version }}_{{ nginx_exporter_platform_suffix }}"
|
||||
nginx_exporter_signature_alt: "nginx-prometheus-exporter-{{ nginx_exporter_version }}-{{ nginx_exporter_platform_suffix_alt }}"
|
||||
nginx_exporter_dist_dir: "{{ prometheus_exporter_dist_dir }}/{{ nginx_exporter_signature }}"
|
||||
nginx_exporter_dist_dir_alt: "{{ prometheus_exporter_dist_dir }}/{{ nginx_exporter_signature_alt }}"
|
||||
nginx_exporter_tarball_url: "https://github.com/nginxinc/nginx-prometheus-exporter/releases/download/v{{ nginx_exporter_version }}/{{ nginx_exporter_signature }}.tar.gz"
|
||||
nginx_exporter_tarball_url_alt: "https://github.com/nginxinc/nginx-prometheus-exporter/releases/download/v{{ nginx_exporter_version }}/{{ nginx_exporter_signature_alt }}.tar.gz"
|
||||
nginx_exporter_program: "{{ prometheus_exporter_dir }}/nginx_exporter"
|
||||
nginx_exporter_home: "/var/lib/nginx_exporter"
|
||||
nginx_exporter_home_manage: true
|
||||
nginx_exporter_options:
|
||||
- '-nginx.retries 32768'
|
||||
- '-nginx.scrape-uri http://localhost/nginx_stats'
|
||||
|
||||
nginx_exporter_config_file: /etc/default/nginx_exporter
|
||||
nginx_exporter_pid_path: "/var/run"
|
||||
nginx_exporter_log_path: "/var/log/nginx_exporter"
|
||||
|
||||
nginx_exporter_service_manage: true
|
||||
nginx_exporter_service_enable: true
|
||||
nginx_exporter_service_state: started
|
||||
nginx_exporter_service_notify: true
|
|
@ -0,0 +1,11 @@
|
|||
---
|
||||
- name: restart nginx_exporter
|
||||
become: true
|
||||
become_user: root
|
||||
service:
|
||||
name: nginx_exporter
|
||||
state: "{{ (nginx_exporter_service_state != 'stopped') | ternary('restarted', 'stopped') }}"
|
||||
use: "{{ prometheus_exporter_service_mgr }}"
|
||||
when: nginx_exporter_service_notify and (
|
||||
_nginx_exporter_service_state is not defined or
|
||||
not ( _nginx_exporter_service_state is changed ))
|
|
@ -0,0 +1,31 @@
|
|||
---
|
||||
galaxy_info:
|
||||
author: Brett Delle Grazie
|
||||
description: Role to install Prometheus Nginx Exporter
|
||||
|
||||
license: GPLv3
|
||||
|
||||
min_ansible_version: 2.0
|
||||
|
||||
platforms:
|
||||
- name: EL
|
||||
versions:
|
||||
- 6
|
||||
- 7
|
||||
- name: Fedora
|
||||
versions:
|
||||
- all
|
||||
- name: Ubuntu
|
||||
versions:
|
||||
- all
|
||||
- name: Debian
|
||||
versions:
|
||||
- all
|
||||
|
||||
galaxy_tags:
|
||||
- prometheus
|
||||
- exporter
|
||||
- nginx
|
||||
|
||||
dependencies:
|
||||
- { role: 'bdellegrazie.ansible-role-prometheus_exporter', version: 'v1.1.3' }
|
|
@ -0,0 +1,161 @@
|
|||
---
|
||||
- name: group
|
||||
become: true
|
||||
become_user: root
|
||||
group:
|
||||
name: "{{ nginx_exporter_group }}"
|
||||
state: present
|
||||
system: true
|
||||
when: nginx_exporter_group_manage | bool
|
||||
|
||||
- name: user
|
||||
become: true
|
||||
become_user: root
|
||||
user:
|
||||
name: "{{ nginx_exporter_user }}"
|
||||
group: "{{ nginx_exporter_group }}"
|
||||
home: "{{ nginx_exporter_home }}"
|
||||
createhome: false
|
||||
move_home: false
|
||||
comment: nginx_exporter
|
||||
state: present
|
||||
system: true
|
||||
when: nginx_exporter_user_manage | bool
|
||||
|
||||
- name: home
|
||||
become: true
|
||||
become_user: root
|
||||
file:
|
||||
path: "{{ nginx_exporter_home }}"
|
||||
owner: "{{ nginx_exporter_user }}"
|
||||
group: "{{ nginx_exporter_group }}"
|
||||
mode: "u=rwx,g=rx,o="
|
||||
state: directory
|
||||
when: nginx_exporter_home_manage | bool
|
||||
|
||||
- name: logs
|
||||
become: true
|
||||
become_user: root
|
||||
file:
|
||||
path: "{{ nginx_exporter_log_path }}"
|
||||
owner: "{{ nginx_exporter_user }}"
|
||||
group: "{{ nginx_exporter_group }}"
|
||||
mode: "u=rwx,g=rx,o="
|
||||
state: directory
|
||||
|
||||
- name: download tarball
|
||||
become: true
|
||||
become_user: root
|
||||
ignore_errors: yes
|
||||
get_url:
|
||||
url: "{{ nginx_exporter_tarball_url }}"
|
||||
dest: "{{ prometheus_exporter_dist_dir }}/{{ nginx_exporter_signature }}.tar.gz"
|
||||
owner: root
|
||||
group: root
|
||||
mode: "u=rwx,go=rx"
|
||||
when: nginx_exporter_version is version('0.9.0', '>=')
|
||||
|
||||
- name: download tarball alt
|
||||
become: true
|
||||
become_user: root
|
||||
ignore_errors: yes
|
||||
get_url:
|
||||
url: "{{ nginx_exporter_tarball_url_alt }}"
|
||||
dest: "{{ prometheus_exporter_dist_dir }}/{{ nginx_exporter_signature }}.tar.gz"
|
||||
owner: root
|
||||
group: root
|
||||
mode: "u=rwx,go=rx"
|
||||
when: nginx_exporter_version is version('0.8.0', '<=')
|
||||
|
||||
- name: make distribution directory
|
||||
become: true
|
||||
become_user: root
|
||||
file:
|
||||
path: "{{ nginx_exporter_dist_dir }}"
|
||||
owner: root
|
||||
group: root
|
||||
mode: "u=rwx,go=rx"
|
||||
state: directory
|
||||
when: nginx_exporter_version is version('0.9.0', '>=')
|
||||
|
||||
- name: make distribution directory alt
|
||||
become: true
|
||||
become_user: root
|
||||
file:
|
||||
path: "{{ nginx_exporter_dist_dir_alt }}"
|
||||
owner: root
|
||||
group: root
|
||||
mode: "u=rwx,go=rx"
|
||||
state: directory
|
||||
when: nginx_exporter_version is version('0.9.0', '<=')
|
||||
|
||||
- name: untar tarball
|
||||
become: true
|
||||
become_user: root
|
||||
unarchive:
|
||||
src: "{{ prometheus_exporter_dist_dir }}/{{ nginx_exporter_signature }}.tar.gz"
|
||||
dest: "{{ nginx_exporter_dist_dir }}"
|
||||
remote_src: true
|
||||
owner: root
|
||||
group: root
|
||||
mode: "u=rwx,go=rx"
|
||||
creates: "{{ nginx_exporter_dist_dir }}/nginx-prometheus-exporter"
|
||||
# when: nginx_exporter_version is version('0.9.0', '>=')
|
||||
#
|
||||
#- name: untar tarball alt
|
||||
# become: true
|
||||
# become_user: root
|
||||
# unarchive:
|
||||
# src: "{{ prometheus_exporter_dist_dir }}/{{ nginx_exporter_signature_alt }}.tar.gz"
|
||||
# dest: "{{ nginx_exporter_dist_dir }}"
|
||||
# remote_src: true
|
||||
# owner: root
|
||||
# group: root
|
||||
# mode: "u=rwx,go=rx"
|
||||
# creates: "{{ nginx_exporter_dist_dir }}/nginx-prometheus-exporter"
|
||||
# when: nginx_exporter_version is version('0.8.0', '<=')
|
||||
|
||||
- name: symlink
|
||||
become: true
|
||||
become_user: root
|
||||
file:
|
||||
src: "{{ nginx_exporter_dist_dir }}/nginx-prometheus-exporter"
|
||||
path: "{{ prometheus_exporter_dir }}/nginx_exporter"
|
||||
owner: root
|
||||
group: root
|
||||
force: true
|
||||
state: link
|
||||
notify: restart nginx_exporter
|
||||
|
||||
- name: config
|
||||
become: true
|
||||
become_user: root
|
||||
template:
|
||||
src: "nginx_exporter.default.conf.j2"
|
||||
dest: "/etc/default/nginx_exporter"
|
||||
owner: root
|
||||
group: root
|
||||
mode: "u=rw,go=r"
|
||||
notify: restart nginx_exporter
|
||||
|
||||
- name: install service
|
||||
include: service-{{ prometheus_exporter_service_mgr }}.yml
|
||||
|
||||
- name: Service Enabled
|
||||
become: true
|
||||
become_user: root
|
||||
service:
|
||||
name: nginx_exporter
|
||||
enabled: "{{ nginx_exporter_service_enable }}"
|
||||
use: "{{ prometheus_exporter_service_mgr }}"
|
||||
when: nginx_exporter_service_manage
|
||||
|
||||
- name: Service State
|
||||
become: true
|
||||
become_user: root
|
||||
service:
|
||||
name: nginx_exporter
|
||||
state: "{{ nginx_exporter_service_state }}"
|
||||
use: "{{ prometheus_exporter_service_mgr }}"
|
||||
register: _nginx_exporter_service_state
|
||||
when: nginx_exporter_service_manage
|
|
@ -0,0 +1,12 @@
|
|||
---
|
||||
- name: systemd service
|
||||
become: true
|
||||
template:
|
||||
src: "nginx_exporter.systemd.j2"
|
||||
dest: "/lib/systemd/system/nginx_exporter.service"
|
||||
owner: root
|
||||
group: root
|
||||
mode: "u=rw,go=r"
|
||||
notify:
|
||||
- reload systemd daemon
|
||||
- restart nginx_exporter
|
|
@ -0,0 +1,11 @@
|
|||
---
|
||||
- name: sysvinit service
|
||||
become: true
|
||||
template:
|
||||
src: "nginx_exporter.sysvinit.j2"
|
||||
dest: "/etc/init.d/nginx_exporter"
|
||||
owner: root
|
||||
group: root
|
||||
mode: "u=rwx,go=rx"
|
||||
notify:
|
||||
- restart nginx_exporter
|
|
@ -0,0 +1,11 @@
|
|||
---
|
||||
- name: upstart service
|
||||
become: true
|
||||
template:
|
||||
src: "nginx_exporter.upstart.j2"
|
||||
dest: "/etc/init/nginx_exporter.conf"
|
||||
owner: root
|
||||
group: root
|
||||
mode: "u=rw,go=r"
|
||||
notify:
|
||||
- restart nginx_exporter
|
|
@ -0,0 +1 @@
|
|||
OPTIONS="{{ nginx_exporter_options | join(' ') }}"
|
|
@ -0,0 +1,16 @@
|
|||
[Unit]
|
||||
Description=nginx_exporter - Exporter for nginx metrics.
|
||||
Documentation=https://github.com/nginxinc/nginx-prometheus-exporter
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
User={{ nginx_exporter_user }}
|
||||
Group={{ nginx_exporter_group }}
|
||||
EnvironmentFile={{ nginx_exporter_config_file }}
|
||||
ExecStart={{ nginx_exporter_program }} $OPTIONS
|
||||
|
||||
SyslogIdentifier=nginx_exporter
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
|
@ -0,0 +1,125 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# nginx_exporter Start/Stop the nginx_exporter daemon
|
||||
#
|
||||
# chkconfig: - 80 20
|
||||
# description: nginx_exporter is a metrics daemon for Prometheus.
|
||||
# processname: nginx_exporter
|
||||
|
||||
### BEGIN INIT INFO
|
||||
# Provides: nginx_exporter
|
||||
# Required-Start: $remote_fs $syslog
|
||||
# Required-Stop: $remote_fs $syslog
|
||||
# Default-Start: 2 3 4 5
|
||||
# Default-Stop: 0 1 6
|
||||
# Short-Description: Start/Stop the nginx_exporter daemon
|
||||
# Description: nginx_exporter is a metrics daemon for Prometheus.
|
||||
### END INIT INFO
|
||||
|
||||
# Source function library.
|
||||
if [ -f /etc/init.d/functions ] ; then
|
||||
. /etc/init.d/functions
|
||||
fi
|
||||
|
||||
# defaults
|
||||
FLAGS=""
|
||||
|
||||
# config
|
||||
if [ -f "{{ nginx_exporter_config_file }}" ] ; then
|
||||
. "{{ nginx_exporter_config_file }}"
|
||||
fi
|
||||
|
||||
RETVAL=0
|
||||
|
||||
# Set up some common variables before we launch into what might be
|
||||
# considered boilerplate by now.
|
||||
prog="{{ nginx_exporter_program }}"
|
||||
name="$(basename $prog)"
|
||||
binary="$(readlink -f $prog)"
|
||||
lockfile="/var/lock/subsys/$name"
|
||||
logdir="{{ nginx_exporter_log_path }}"
|
||||
pidfile="{{ nginx_exporter_pid_path }}/$name.pid"
|
||||
user="{{ nginx_exporter_user }}"
|
||||
group="{{ nginx_exporter_group }}"
|
||||
|
||||
start() {
|
||||
[ -r $binary ] || exit 5
|
||||
[ -d $logdir ] || (
|
||||
mkdir -p $logdir
|
||||
chmod 0750 $logdir
|
||||
chown $user:$group $logdir
|
||||
)
|
||||
echo -n $"Starting $name: "
|
||||
export DATA_SOURCE_NAME
|
||||
daemonize -a -c '/' -e ${logdir}/${name}.err.log -o ${logdir}/${name}.out.log \
|
||||
-p $pidfile -l $lockfile -u $user \
|
||||
$prog $OPTIONS
|
||||
RETVAL=$?
|
||||
echo
|
||||
[ $RETVAL -eq 0 ] && touch $lockfile
|
||||
return $RETVAL
|
||||
}
|
||||
|
||||
stop() {
|
||||
echo -n $"Stopping $prog: "
|
||||
killproc -p $pidfile $binary
|
||||
RETVAL=$?
|
||||
echo
|
||||
[ $RETVAL -eq 0 ] && rm -f $lockfile
|
||||
return $RETVAL
|
||||
}
|
||||
|
||||
restart() {
|
||||
stop
|
||||
start
|
||||
}
|
||||
|
||||
reload() {
|
||||
restart
|
||||
}
|
||||
|
||||
force_reload() {
|
||||
restart
|
||||
}
|
||||
|
||||
rh_status() {
|
||||
# run checks to determine if the service is running or use generic status
|
||||
status -p $pidfile -l $lockfile $binary
|
||||
}
|
||||
|
||||
rh_status_q() {
|
||||
rh_status >/dev/null 2>&1
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
rh_status_q && exit 0
|
||||
start
|
||||
;;
|
||||
stop)
|
||||
rh_status_q || exit 0
|
||||
stop
|
||||
;;
|
||||
restart)
|
||||
restart
|
||||
;;
|
||||
reload)
|
||||
rh_status_q || exit 7
|
||||
reload
|
||||
;;
|
||||
force-reload)
|
||||
force_reload
|
||||
;;
|
||||
status)
|
||||
rh_status
|
||||
;;
|
||||
condrestart|try-restart)
|
||||
rh_status_q || exit 0
|
||||
restart
|
||||
;;
|
||||
*)
|
||||
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
|
||||
exit 2
|
||||
esac
|
||||
|
||||
exit $?
|
|
@ -0,0 +1,26 @@
|
|||
description "Prometheus NGINX Exporter"
|
||||
start on (local-filesystems and net-device-up IFACE!=lo)
|
||||
stop on runlevel [016]
|
||||
|
||||
respawn
|
||||
|
||||
setuid {{ nginx_exporter_user }}
|
||||
setgid {{ nginx_exporter_group }}
|
||||
|
||||
env name=nginx_exporter
|
||||
env prog={{ nginx_exporter_program }}
|
||||
env logdir={{ nginx_exporter_log_path }}
|
||||
env user={{ nginx_exporter_user }}
|
||||
env group={{ nginx_exporter_group }}
|
||||
|
||||
script
|
||||
if [ -f "{{ nginx_exporter_config_file }}" ] ; then
|
||||
. "{{ nginx_exporter_config_file }}"
|
||||
fi
|
||||
|
||||
pidfile={{ nginx_exporter_pid_path }}/$name.pid
|
||||
lockfile=/var/lock/subsys/$name
|
||||
|
||||
binary=$(readlink -f $prog)
|
||||
exec $binary $OPTIONS >> "${logdir}/${name}.out.log" 2>> "${logdir}/${name}.err.log"
|
||||
end script
|
|
@ -32,7 +32,7 @@
|
|||
|
||||
|
||||
roles:
|
||||
- role: cloudalchemy.node_exporter
|
||||
- role: node_exporter
|
||||
environment:
|
||||
http_proxy: "{{PROXY}}"
|
||||
https_proxy: "{{PROXY}}"
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
---
|
||||
node_exporter_version: 1.1.2
|
||||
node_exporter_binary_local_dir: ""
|
||||
node_exporter_web_listen_address: "0.0.0.0:9100"
|
||||
node_exporter_web_telemetry_path: "/metrics"
|
||||
|
||||
node_exporter_textfile_dir: "/var/lib/node_exporter"
|
||||
|
||||
node_exporter_tls_server_config: {}
|
||||
|
||||
node_exporter_http_server_config: {}
|
||||
|
||||
node_exporter_basic_auth_users: {}
|
||||
|
||||
node_exporter_enabled_collectors:
|
||||
- systemd
|
||||
- textfile:
|
||||
directory: "{{ node_exporter_textfile_dir }}"
|
||||
# - filesystem:
|
||||
# ignored-mount-points: "^/(sys|proc|dev)($|/)"
|
||||
# ignored-fs-types: "^(sys|proc|auto)fs$"
|
||||
|
||||
node_exporter_disabled_collectors: []
|
||||
|
||||
# Internal variables.
|
||||
_node_exporter_binary_install_dir: "/usr/local/bin"
|
||||
_node_exporter_system_group: "node-exp"
|
||||
_node_exporter_system_user: "{{ _node_exporter_system_group }}"
|
|
@ -0,0 +1,33 @@
|
|||
---
|
||||
galaxy_info:
|
||||
author: cloudalchemy
|
||||
role_name: node_exporter
|
||||
description: Prometheus Node Exporter
|
||||
license: MIT
|
||||
company: none
|
||||
min_ansible_version: 2.7
|
||||
platforms:
|
||||
- name: Ubuntu
|
||||
versions:
|
||||
- bionic
|
||||
- xenial
|
||||
- name: Debian
|
||||
versions:
|
||||
- stretch
|
||||
- buster
|
||||
- name: EL
|
||||
versions:
|
||||
- 7
|
||||
- 8
|
||||
- name: Fedora
|
||||
versions:
|
||||
- 30
|
||||
- 31
|
||||
galaxy_tags:
|
||||
- monitoring
|
||||
- prometheus
|
||||
- exporter
|
||||
- metrics
|
||||
- system
|
||||
|
||||
dependencies: []
|
|
@ -0,0 +1,61 @@
|
|||
---
|
||||
- name: Create the node_exporter group
|
||||
group:
|
||||
name: "{{ _node_exporter_system_group }}"
|
||||
state: present
|
||||
system: true
|
||||
when: _node_exporter_system_group != "root"
|
||||
|
||||
- name: Create the node_exporter user
|
||||
user:
|
||||
name: "{{ _node_exporter_system_user }}"
|
||||
groups: "{{ _node_exporter_system_group }}"
|
||||
append: true
|
||||
shell: /usr/sbin/nologin
|
||||
system: true
|
||||
create_home: false
|
||||
home: /
|
||||
when: _node_exporter_system_user != "root"
|
||||
|
||||
- block:
|
||||
- name: Download node_exporter binary to local folder
|
||||
get_url:
|
||||
url: "https://github.com/prometheus/node_exporter/releases/download/v{{ node_exporter_version }}/node_exporter-{{ node_exporter_version }}.linux-{{ go_arch }}.tar.gz"
|
||||
dest: "/tmp/node_exporter-{{ node_exporter_version }}.linux-{{ go_arch }}.tar.gz"
|
||||
checksum: "sha256:{{ node_exporter_checksum }}"
|
||||
mode: '0644'
|
||||
register: _download_binary
|
||||
until: _download_binary is succeeded
|
||||
retries: 5
|
||||
delay: 2
|
||||
check_mode: false
|
||||
|
||||
- name: Unpack node_exporter binary
|
||||
unarchive:
|
||||
src: "/tmp/node_exporter-{{ node_exporter_version }}.linux-{{ go_arch }}.tar.gz"
|
||||
dest: "/tmp"
|
||||
creates: "/tmp/node_exporter-{{ node_exporter_version }}.linux-{{ go_arch }}/node_exporter"
|
||||
remote_src: true
|
||||
check_mode: false
|
||||
|
||||
- name: Propagate node_exporter binaries
|
||||
copy:
|
||||
src: "/tmp/node_exporter-{{ node_exporter_version }}.linux-{{ go_arch }}/node_exporter"
|
||||
dest: "{{ _node_exporter_binary_install_dir }}/node_exporter"
|
||||
mode: 0755
|
||||
owner: root
|
||||
group: root
|
||||
remote_src: true
|
||||
notify: restart node_exporter
|
||||
when: not ansible_check_mode
|
||||
when: node_exporter_binary_local_dir | length == 0
|
||||
|
||||
- name: propagate locally distributed node_exporter binary
|
||||
copy:
|
||||
src: "{{ node_exporter_binary_local_dir }}/node_exporter"
|
||||
dest: "{{ _node_exporter_binary_install_dir }}/node_exporter"
|
||||
mode: 0755
|
||||
owner: root
|
||||
group: root
|
||||
when: node_exporter_binary_local_dir | length > 0
|
||||
notify: restart node_exporter
|
|
@ -0,0 +1,38 @@
|
|||
---
|
||||
- import_tasks: preflight.yml
|
||||
tags:
|
||||
- node_exporter_install
|
||||
- node_exporter_configure
|
||||
- node_exporter_run
|
||||
|
||||
- import_tasks: install.yml
|
||||
become: true
|
||||
# when:
|
||||
# ( not __node_exporter_is_installed.stat.exists ) or
|
||||
# ( __node_exporter_current_version_output.stderr_lines[0].split(" ")[2] != node_exporter_version ) or
|
||||
# ( node_exporter_binary_local_dir | length > 0 )
|
||||
tags:
|
||||
- node_exporter_install
|
||||
|
||||
- import_tasks: selinux.yml
|
||||
become: true
|
||||
when: ansible_selinux.status == "enabled"
|
||||
tags:
|
||||
- node_exporter_configure
|
||||
|
||||
- import_tasks: configure.yml
|
||||
become: true
|
||||
tags:
|
||||
- node_exporter_configure
|
||||
|
||||
- name: Ensure Node Exporter is enabled on boot
|
||||
become: true
|
||||
systemd:
|
||||
daemon_reload: true
|
||||
name: node_exporter
|
||||
enabled: true
|
||||
state: started
|
||||
when:
|
||||
- not ansible_check_mode
|
||||
tags:
|
||||
- node_exporter_run
|
|
@ -0,0 +1,86 @@
|
|||
---
|
||||
- name: Assert usage of systemd as an init system
|
||||
assert:
|
||||
that: ansible_service_mgr == 'systemd'
|
||||
msg: "This role only works with systemd"
|
||||
|
||||
- name: Get systemd version
|
||||
command: systemctl --version
|
||||
changed_when: false
|
||||
check_mode: false
|
||||
register: __systemd_version
|
||||
tags:
|
||||
- skip_ansible_lint
|
||||
|
||||
- name: Set systemd version fact
|
||||
set_fact:
|
||||
node_exporter_systemd_version: "{{ __systemd_version.stdout_lines[0] | regex_replace('^systemd\\s(\\d+).*$', '\\1') }}"
|
||||
|
||||
- name: Naive assertion of proper listen address
|
||||
assert:
|
||||
that:
|
||||
- "':' in node_exporter_web_listen_address"
|
||||
|
||||
- name: Assert collectors are not both disabled and enabled at the same time
|
||||
assert:
|
||||
that:
|
||||
- "item not in node_exporter_enabled_collectors"
|
||||
with_items: "{{ node_exporter_disabled_collectors }}"
|
||||
|
||||
- block:
|
||||
- name: Assert that TLS key and cert path are set
|
||||
assert:
|
||||
that:
|
||||
- "node_exporter_tls_server_config.cert_file is defined"
|
||||
- "node_exporter_tls_server_config.key_file is defined"
|
||||
|
||||
- name: Check existence of TLS cert file
|
||||
stat:
|
||||
path: "{{ node_exporter_tls_server_config.cert_file }}"
|
||||
register: __node_exporter_cert_file
|
||||
|
||||
- name: Check existence of TLS key file
|
||||
stat:
|
||||
path: "{{ node_exporter_tls_server_config.key_file }}"
|
||||
register: __node_exporter_key_file
|
||||
|
||||
- name: Assert that TLS key and cert are present
|
||||
assert:
|
||||
that:
|
||||
- "{{ __node_exporter_cert_file.stat.exists }}"
|
||||
- "{{ __node_exporter_key_file.stat.exists }}"
|
||||
when: node_exporter_tls_server_config | length > 0
|
||||
|
||||
- name: Check if node_exporter is installed
|
||||
stat:
|
||||
path: "{{ _node_exporter_binary_install_dir }}/node_exporter"
|
||||
register: __node_exporter_is_installed
|
||||
check_mode: false
|
||||
tags:
|
||||
- node_exporter_install
|
||||
|
||||
- name: Gather currently installed node_exporter version (if any)
|
||||
command: "{{ _node_exporter_binary_install_dir }}/node_exporter --version"
|
||||
args:
|
||||
warn: false
|
||||
changed_when: false
|
||||
register: __node_exporter_current_version_output
|
||||
check_mode: false
|
||||
when: __node_exporter_is_installed.stat.exists
|
||||
tags:
|
||||
- node_exporter_install
|
||||
- skip_ansible_lint
|
||||
|
||||
- block:
|
||||
- name: Get checksum list from github
|
||||
set_fact:
|
||||
_checksums: "{{ lookup('url', 'https://github.com/prometheus/node_exporter/releases/download/v' + node_exporter_version + '/sha256sums.txt', wantlist=True) | list }}"
|
||||
run_once: true
|
||||
|
||||
- name: "Get checksum for {{ go_arch }} architecture"
|
||||
set_fact:
|
||||
node_exporter_checksum: "{{ item.split(' ')[0] }}"
|
||||
with_items: "{{ _checksums }}"
|
||||
when:
|
||||
- "('linux-' + go_arch + '.tar.gz') in item"
|
||||
when: node_exporter_binary_local_dir | length == 0
|
|
@ -0,0 +1,39 @@
|
|||
---
|
||||
- name: Install selinux python packages [RHEL]
|
||||
package:
|
||||
name:
|
||||
- "{{ ( (ansible_facts.distribution_major_version | int) < 8) | ternary('libselinux-python','python3-libselinux') }}"
|
||||
- "{{ ( (ansible_facts.distribution_major_version | int) < 8) | ternary('policycoreutils-python','python3-policycoreutils') }}"
|
||||
state: present
|
||||
register: _install_selinux_packages
|
||||
until: _install_selinux_packages is success
|
||||
retries: 5
|
||||
delay: 2
|
||||
when:
|
||||
- (ansible_distribution | lower == "redhat") or
|
||||
(ansible_distribution | lower == "centos")
|
||||
|
||||
- name: Install selinux python packages [Fedora]
|
||||
package:
|
||||
name:
|
||||
- "{{ ( (ansible_facts.distribution_major_version | int) < 29) | ternary('libselinux-python','python3-libselinux') }}"
|
||||
- "{{ ( (ansible_facts.distribution_major_version | int) < 29) | ternary('policycoreutils-python','python3-policycoreutils') }}"
|
||||
state: present
|
||||
register: _install_selinux_packages
|
||||
until: _install_selinux_packages is success
|
||||
retries: 5
|
||||
delay: 2
|
||||
|
||||
when:
|
||||
- ansible_distribution | lower == "fedora"
|
||||
|
||||
- name: Install selinux python packages [clearlinux]
|
||||
package:
|
||||
name: sysadmin-basic
|
||||
state: present
|
||||
register: _install_selinux_packages
|
||||
until: _install_selinux_packages is success
|
||||
retries: 5
|
||||
delay: 2
|
||||
when:
|
||||
- ansible_distribution | lower == "clearlinux"
|
|
@ -0,0 +1,18 @@
|
|||
---
|
||||
{{ ansible_managed | comment }}
|
||||
{% if node_exporter_tls_server_config | length > 0 %}
|
||||
tls_server_config:
|
||||
{{ node_exporter_tls_server_config | to_nice_yaml | indent(2, true) }}
|
||||
{% endif %}
|
||||
|
||||
{% if node_exporter_http_server_config | length > 0 %}
|
||||
http_server_config:
|
||||
{{ node_exporter_http_server_config | to_nice_yaml | indent(2, true) }}
|
||||
{% endif %}
|
||||
|
||||
{% if node_exporter_basic_auth_users | length > 0 %}
|
||||
basic_auth_users:
|
||||
{% for k, v in node_exporter_basic_auth_users.items() %}
|
||||
{{ k }}: {{ v | password_hash('bcrypt', ('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890' | shuffle(seed=inventory_hostname) | join)[:22], rounds=9) }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
|
@ -0,0 +1,54 @@
|
|||
{{ ansible_managed | comment }}
|
||||
|
||||
[Unit]
|
||||
Description=Prometheus Node Exporter
|
||||
After=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User={{ _node_exporter_system_user }}
|
||||
Group={{ _node_exporter_system_group }}
|
||||
ExecStart={{ _node_exporter_binary_install_dir }}/node_exporter \
|
||||
{% for collector in node_exporter_enabled_collectors -%}
|
||||
{% if not collector is mapping %}
|
||||
--collector.{{ collector }} \
|
||||
{% else -%}
|
||||
{% set name, options = (collector.items()|list)[0] -%}
|
||||
--collector.{{ name }} \
|
||||
{% for k,v in options|dictsort %}
|
||||
--collector.{{ name }}.{{ k }}={{ v | quote }} \
|
||||
{% endfor -%}
|
||||
{% endif -%}
|
||||
{% endfor -%}
|
||||
{% for collector in node_exporter_disabled_collectors %}
|
||||
--no-collector.{{ collector }} \
|
||||
{% endfor %}
|
||||
{% if node_exporter_tls_server_config | length > 0 or node_exporter_http_server_config | length > 0 or node_exporter_basic_auth_users | length > 0 %}
|
||||
--web.config=/etc/node_exporter/config.yaml \
|
||||
{% endif %}
|
||||
--web.listen-address={{ node_exporter_web_listen_address }} \
|
||||
--web.telemetry-path={{ node_exporter_web_telemetry_path }}
|
||||
|
||||
SyslogIdentifier=node_exporter
|
||||
Restart=always
|
||||
RestartSec=1
|
||||
StartLimitInterval=0
|
||||
|
||||
{% for m in ansible_mounts if m.mount == '/home' %}
|
||||
ProtectHome=read-only
|
||||
{% else %}
|
||||
ProtectHome=yes
|
||||
{% endfor %}
|
||||
NoNewPrivileges=yes
|
||||
|
||||
{% if node_exporter_systemd_version | int >= 232 %}
|
||||
ProtectSystem=strict
|
||||
ProtectControlGroups=true
|
||||
ProtectKernelModules=true
|
||||
ProtectKernelTunables=yes
|
||||
{% else %}
|
||||
ProtectSystem=full
|
||||
{% endif %}
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
|
@ -0,0 +1,9 @@
|
|||
---
|
||||
go_arch_map:
|
||||
i386: '386'
|
||||
x86_64: 'amd64'
|
||||
aarch64: 'arm64'
|
||||
armv7l: 'armv7'
|
||||
armv6l: 'armv6'
|
||||
|
||||
go_arch: "{{ go_arch_map[ansible_architecture] | default(ansible_architecture) }}"
|
|
@ -34,7 +34,7 @@ if [[ $maxmind_key == "" ]]; then
|
|||
fi
|
||||
|
||||
if [[ $KEY == "" ]]; then
|
||||
ansible-playbook $PWD/roles/geoip.yml -e "ansible_user=$USER ansible_ssh_pass=$PASS variable_host=$HOST PROXY=$PROXY UPDATE=$UPDATE haproxy_dir=$haproxy_dir maxmind_key=$maxmind_key SSH_PORT=$SSH_PORT" -i $PWD/$HOST
|
||||
ansible-playbook $PWD/roles/geoip.yml -e "ansible_user=$USER ansible_ssh_pass='$PASS' variable_host=$HOST PROXY=$PROXY UPDATE=$UPDATE haproxy_dir=$haproxy_dir maxmind_key=$maxmind_key SSH_PORT=$SSH_PORT" -i $PWD/$HOST
|
||||
else
|
||||
ansible-playbook $PWD/roles/geoip.yml --key-file $KEY -e "ansible_user=$USER variable_host=$HOST PROXY=$PROXY UPDATE=$UPDATE haproxy_dir=$haproxy_dir maxmind_key=$maxmind_key SSH_PORT=$SSH_PORT" -i $PWD/$HOST
|
||||
fi
|
||||
|
|
|
@ -10,21 +10,23 @@ do
|
|||
USER) USER=${VALUE} ;;
|
||||
PASS) PASS=${VALUE} ;;
|
||||
KEY) KEY=${VALUE} ;;
|
||||
VER) VER=${VALUE} ;;
|
||||
STAT_PORT) STAT_PORT=${VALUE} ;;
|
||||
STAT_PAGE) STAT_PAGE=${VALUE} ;;
|
||||
STATS_USER) STATS_USER=${VALUE} ;;
|
||||
STATS_PASS) STATS_PASS=${VALUE} ;;
|
||||
EXP_PROM) EXP_PROM=${VALUE} ;;
|
||||
SSH_PORT) SSH_PORT=${VALUE} ;;
|
||||
*)
|
||||
esac
|
||||
done
|
||||
|
||||
if [ ! -d "/var/www/haproxy-wi/app/scripts/ansible/roles/bdellegrazie.haproxy_exporter" ]; then
|
||||
if [ ! -d "/var/www/haproxy-wi/app/scripts/ansible/roles/bdellegrazie.ansible-role-prometheus_exporter" ]; then
|
||||
if [[ -n $PROXY ]];then
|
||||
export https_proxy="$PROXY"
|
||||
export http_proxy="$PROXY"
|
||||
fi
|
||||
ansible-galaxy install bdellegrazie.haproxy_exporter --roles-path /var/www/haproxy-wi/app/scripts/ansible/roles/
|
||||
ansible-galaxy install bdellegrazie.ansible-role-prometheus_exporter --roles-path /var/www/haproxy-wi/app/scripts/ansible/roles/
|
||||
bash -c cat << EOF >> /var/www/haproxy-wi/app/scripts/ansible/roles/bdellegrazie.ansible-role-prometheus_exporter/vars/vars-family-redhat-8.yml
|
||||
---
|
||||
prometheus_exporter_ansible_packages:
|
||||
|
@ -41,9 +43,9 @@ PWD=$PWD/scripts/ansible/
|
|||
echo "$HOST ansible_port=$SSH_PORT" > "$PWD"/"$HOST"
|
||||
|
||||
if [[ $KEY == "" ]]; then
|
||||
ansible-playbook "$PWD"/roles/haproxy_exporter.yml -e "ansible_user=$USER ansible_ssh_pass=$PASS variable_host=$HOST PROXY=$PROXY STAT_PAGE=$STAT_PAGE STAT_PORT=$STAT_PORT STATS_USER=$STATS_USER STATS_PASS=$STATS_PASS SSH_PORT=$SSH_PORT" -i "$PWD"/"$HOST"
|
||||
ansible-playbook "$PWD"/roles/haproxy_exporter.yml -e "ansible_user=$USER ansible_ssh_pass='$PASS' variable_host=$HOST PROXY=$PROXY STAT_PAGE=$STAT_PAGE STAT_PORT=$STAT_PORT STATS_USER=$STATS_USER STATS_PASS=$STATS_PASS SSH_PORT=$SSH_PORT haproxy_exporter_version=$VER" -i "$PWD"/"$HOST"
|
||||
else
|
||||
ansible-playbook "$PWD"/roles/haproxy_exporter.yml --key-file "$KEY" -e "ansible_user=$USER variable_host=$HOST PROXY=$PROXY STAT_PAGE=$STAT_PAGE STAT_PORT=$STAT_PORT STATS_USER=$STATS_USER STATS_PASS=$STATS_PASS SSH_PORT=$SSH_PORT" -i "$PWD"/"$HOST"
|
||||
ansible-playbook "$PWD"/roles/haproxy_exporter.yml --key-file "$KEY" -e "ansible_user=$USER variable_host=$HOST PROXY=$PROXY STAT_PAGE=$STAT_PAGE STAT_PORT=$STAT_PORT STATS_USER=$STATS_USER STATS_PASS=$STATS_PASS SSH_PORT=$SSH_PORT haproxy_exporter_version=$VER" -i "$PWD"/"$HOST"
|
||||
fi
|
||||
|
||||
if [ $? -gt 0 ]
|
||||
|
@ -52,9 +54,12 @@ then
|
|||
exit 1
|
||||
fi
|
||||
|
||||
if ! sudo grep -Fxq " - $HOST:9101" /etc/prometheus/prometheus.yml; then
|
||||
sudo echo " - $HOST:9101" | sudo tee -a /etc/prometheus/prometheus.yml > /dev/null
|
||||
if [ "$EXP_PROM" == 0 ]
|
||||
then
|
||||
if ! sudo grep -Fxq " - $HOST:9101" /etc/prometheus/prometheus.yml; then
|
||||
sudo echo " - $HOST:9101" | sudo tee -a /etc/prometheus/prometheus.yml > /dev/null
|
||||
sudo systemctl reload prometheus 2>> /dev/null
|
||||
fi
|
||||
fi
|
||||
|
||||
sudo systemctl reload prometheus
|
||||
rm -f "$PWD"/"$HOST"
|
||||
|
|
|
@ -32,7 +32,7 @@ PWD=$PWD/scripts/ansible/
|
|||
echo "$HOST ansible_port=$SSH_PORT" > $PWD/$HOST
|
||||
|
||||
if [[ $KEY == "" ]]; then
|
||||
ansible-playbook $PWD/roles/keepalived.yml -e "ansible_user=$USER ansible_ssh_pass=$PASS variable_host=$HOST SYN_FLOOD=$SYN_FLOOD PROXY=$PROXY MASTER=$MASTER ETH=$ETH IP=$IP RESTART=$RESTART ADD_VRRP=$ADD_VRRP SSH_PORT=$SSH_PORT" -i $PWD/$HOST
|
||||
ansible-playbook $PWD/roles/keepalived.yml -e "ansible_user=$USER ansible_ssh_pass='$PASS' variable_host=$HOST SYN_FLOOD=$SYN_FLOOD PROXY=$PROXY MASTER=$MASTER ETH=$ETH IP=$IP RESTART=$RESTART ADD_VRRP=$ADD_VRRP SSH_PORT=$SSH_PORT" -i $PWD/$HOST
|
||||
else
|
||||
ansible-playbook $PWD/roles/keepalived.yml --key-file $KEY -e "ansible_user=$USER variable_host=$HOST SYN_FLOOD=$SYN_FLOOD PROXY=$PROXY MASTER=$MASTER ETH=$ETH IP=$IP RESTART=$RESTART ADD_VRRP=$ADD_VRRP SSH_PORT=$SSH_PORT" -i $PWD/$HOST
|
||||
fi
|
||||
|
|
|
@ -48,7 +48,7 @@ PWD=$PWD/scripts/ansible/
|
|||
echo "$HOST ansible_port=$SSH_PORT" > $PWD/$HOST
|
||||
|
||||
if [[ $KEY == "" ]]; then
|
||||
ansible-playbook $PWD/roles/nginx.yml -e "ansible_user=$USER ansible_ssh_pass=$PASS variable_host=$HOST PROXY=$PROXY CONT_NAME=$CONT_NAME SYN_FLOOD=$SYN_FLOOD STAT_PAGE=$STAT_PAGE STAT_PORT=$STAT_PORT STATS_USER=$STATS_USER STATS_PASS=$STATS_PASS CONFIG_PATH=$CONFIG_PATH SSH_PORT=$SSH_PORT" -i $PWD/$HOST -t $tags
|
||||
ansible-playbook $PWD/roles/nginx.yml -e "ansible_user=$USER ansible_ssh_pass='$PASS' variable_host=$HOST PROXY=$PROXY CONT_NAME=$CONT_NAME SYN_FLOOD=$SYN_FLOOD STAT_PAGE=$STAT_PAGE STAT_PORT=$STAT_PORT STATS_USER=$STATS_USER STATS_PASS=$STATS_PASS CONFIG_PATH=$CONFIG_PATH SSH_PORT=$SSH_PORT" -i $PWD/$HOST -t $tags
|
||||
else
|
||||
ansible-playbook $PWD/roles/nginx.yml --key-file $KEY -e "ansible_user=$USER variable_host=$HOST PROXY=$PROXY CONT_NAME=$CONT_NAME SYN_FLOOD=$SYN_FLOOD STAT_PAGE=$STAT_PAGE STAT_PORT=$STAT_PORT STATS_USER=$STATS_USER STATS_PASS=$STATS_PASS CONFIG_PATH=$CONFIG_PATH SSH_PORT=$SSH_PORT" -i $PWD/$HOST -t $tags
|
||||
fi
|
||||
|
|
|
@ -9,22 +9,29 @@ do
|
|||
HOST) HOST=${VALUE} ;;
|
||||
USER) USER=${VALUE} ;;
|
||||
PASS) PASS=${VALUE} ;;
|
||||
KEY) KEY=${VALUE} ;;
|
||||
STAT_PORT) STAT_PORT=${VALUE} ;;
|
||||
STAT_PAGE) STAT_PAGE=${VALUE} ;;
|
||||
STATS_USER) STATS_USER=${VALUE} ;;
|
||||
KEY) KEY=${VALUE} ;;
|
||||
VER) VER=${VALUE} ;;
|
||||
EXP_PROM) EXP_PROM=${VALUE} ;;
|
||||
STAT_PORT) STAT_PORT=${VALUE} ;;
|
||||
STAT_PAGE) STAT_PAGE=${VALUE} ;;
|
||||
STATS_USER) STATS_USER=${VALUE} ;;
|
||||
STATS_PASS) STATS_PASS=${VALUE} ;;
|
||||
SSH_PORT) SSH_PORT=${VALUE} ;;
|
||||
SSH_PORT) SSH_PORT=${VALUE} ;;
|
||||
*)
|
||||
esac
|
||||
done
|
||||
|
||||
if [ ! -d "/var/www/haproxy-wi/app/scripts/ansible/roles/bdellegrazie.nginx_exporter" ]; then
|
||||
if [ ! -d "/var/www/haproxy-wi/app/scripts/ansible/roles/bdellegrazie.ansible-role-prometheus_exporter" ]; then
|
||||
if [ ! -z $PROXY ];then
|
||||
export https_proxy="$PROXY"
|
||||
export http_proxy="$PROXY"
|
||||
fi
|
||||
ansible-galaxy install bdellegrazie.nginx_exporter --roles-path /var/www/haproxy-wi/app/scripts/ansible/roles/
|
||||
ansible-galaxy install bdellegrazie.ansible-role-prometheus_exporter --roles-path /var/www/haproxy-wi/app/scripts/ansible/roles/
|
||||
bash -c cat << EOF >> /var/www/haproxy-wi/app/scripts/ansible/roles/bdellegrazie.ansible-role-prometheus_exporter/vars/vars-family-redhat-8.yml
|
||||
---
|
||||
prometheus_exporter_ansible_packages:
|
||||
- libselinux-python3
|
||||
EOF
|
||||
fi
|
||||
|
||||
export ANSIBLE_HOST_KEY_CHECKING=False
|
||||
|
@ -38,9 +45,9 @@ PWD=$PWD/scripts/ansible/
|
|||
echo "$HOST ansible_port=$SSH_PORT" > $PWD/$HOST
|
||||
|
||||
if [[ $KEY == "" ]]; then
|
||||
ansible-playbook $PWD/roles/nginx_exporter.yml -e "ansible_user=$USER ansible_ssh_pass=$PASS variable_host=$HOST PROXY=$PROXY STAT_PAGE=$STAT_PAGE STAT_PORT=$STAT_PORT STATS_USER=$STATS_USER STATS_PASS=$STATS_PASS SSH_PORT=$SSH_PORT" -i $PWD/$HOST
|
||||
ansible-playbook $PWD/roles/nginx_exporter.yml -e "ansible_user=$USER ansible_ssh_pass='$PASS' variable_host=$HOST PROXY=$PROXY STAT_PAGE=$STAT_PAGE STAT_PORT=$STAT_PORT STATS_USER=$STATS_USER STATS_PASS=$STATS_PASS SSH_PORT=$SSH_PORT nginx_exporter_version=$VER" -i $PWD/$HOST
|
||||
else
|
||||
ansible-playbook $PWD/roles/nginx_exporter.yml --key-file $KEY -e "ansible_user=$USER variable_host=$HOST PROXY=$PROXY STAT_PAGE=$STAT_PAGE STAT_PORT=$STAT_PORT STATS_USER=$STATS_USER STATS_PASS=$STATS_PASS SSH_PORT=$SSH_PORT" -i $PWD/$HOST
|
||||
ansible-playbook $PWD/roles/nginx_exporter.yml --key-file $KEY -e "ansible_user=$USER variable_host=$HOST PROXY=$PROXY STAT_PAGE=$STAT_PAGE STAT_PORT=$STAT_PORT STATS_USER=$STATS_USER STATS_PASS=$STATS_PASS SSH_PORT=$SSH_PORT nginx_exporter_version=$VER" -i $PWD/$HOST
|
||||
fi
|
||||
|
||||
if [ $? -gt 0 ]
|
||||
|
@ -49,9 +56,12 @@ then
|
|||
exit 1
|
||||
fi
|
||||
|
||||
if ! sudo grep -Fxq " - $HOST:9113" /etc/prometheus/prometheus.yml; then
|
||||
sudo echo " - $HOST:9113" | sudo tee -a /etc/prometheus/prometheus.yml > /dev/null
|
||||
if [ "$EXP_PROM" == 0 ]
|
||||
then
|
||||
if ! sudo grep -Fxq " - $HOST:9113" /etc/prometheus/prometheus.yml; then
|
||||
sudo echo " - $HOST:9113" | sudo tee -a /etc/prometheus/prometheus.yml > /dev/null
|
||||
sudo systemctl reload prometheus 2>> /dev/null
|
||||
fi
|
||||
fi
|
||||
|
||||
sudo systemctl reload prometheus
|
||||
rm -f $PWD/$HOST
|
||||
|
|
|
@ -9,20 +9,14 @@ do
|
|||
HOST) HOST=${VALUE} ;;
|
||||
USER) USER=${VALUE} ;;
|
||||
PASS) PASS=${VALUE} ;;
|
||||
KEY) KEY=${VALUE} ;;
|
||||
KEY) KEY=${VALUE} ;;
|
||||
VER) VER=${VALUE} ;;
|
||||
EXP_PROM) EXP_PROM=${VALUE} ;;
|
||||
SSH_PORT) SSH_PORT=${VALUE} ;;
|
||||
*)
|
||||
esac
|
||||
done
|
||||
|
||||
if [ ! -d "/var/www/haproxy-wi/app/scripts/ansible/roles/cloudalchemy.node_exporterr" ]; then
|
||||
if [ ! -z $PROXY ];then
|
||||
export https_proxy="$PROXY"
|
||||
export http_proxy="$PROXY"
|
||||
fi
|
||||
ansible-galaxy install cloudalchemy.node_exporter --roles-path /var/www/haproxy-wi/app/scripts/ansible/roles/
|
||||
fi
|
||||
|
||||
export ANSIBLE_HOST_KEY_CHECKING=False
|
||||
export ANSIBLE_DISPLAY_SKIPPED_HOSTS=False
|
||||
export ACTION_WARNINGS=False
|
||||
|
@ -34,9 +28,9 @@ PWD=$PWD/scripts/ansible/
|
|||
echo "$HOST ansible_port=$SSH_PORT" > $PWD/$HOST
|
||||
|
||||
if [[ $KEY == "" ]]; then
|
||||
ansible-playbook $PWD/roles/node_exporter.yml -e "ansible_user=$USER ansible_ssh_pass=$PASS variable_host=$HOST PROXY=$PROXY SSH_PORT=$SSH_PORT" -i $PWD/$HOST
|
||||
ansible-playbook $PWD/roles/node_exporter.yml -e "ansible_user=$USER ansible_ssh_pass='$PASS' variable_host=$HOST PROXY=$PROXY SSH_PORT=$SSH_PORT node_exporter_version=$VER" -i $PWD/$HOST
|
||||
else
|
||||
ansible-playbook $PWD/roles/node_exporter.yml --key-file $KEY -e "ansible_user=$USER variable_host=$HOST PROXY=$PROXY SSH_PORT=$SSH_PORT" -i $PWD/$HOST
|
||||
ansible-playbook $PWD/roles/node_exporter.yml --key-file $KEY -e "ansible_user=$USER variable_host=$HOST PROXY=$PROXY SSH_PORT=$SSH_PORT node_exporter_version=$VER" -i $PWD/$HOST
|
||||
fi
|
||||
|
||||
if [ $? -gt 0 ]
|
||||
|
@ -44,10 +38,12 @@ then
|
|||
echo "error: Can't install Node exporter <br /><br />"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! sudo grep -Fxq " - $HOST:9100" /etc/prometheus/prometheus.yml; then
|
||||
sudo echo " - $HOST:9100" | sudo tee -a /etc/prometheus/prometheus.yml > /dev/null
|
||||
if [ "$EXP_PROM" == 0 ]
|
||||
then
|
||||
if ! sudo grep -Fxq " - $HOST:9100" /etc/prometheus/prometheus.yml; then
|
||||
sudo echo " - $HOST:9100" | sudo tee -a /etc/prometheus/prometheus.yml > /dev/null
|
||||
sudo systemctl reload prometheus 2>> /dev/null
|
||||
fi
|
||||
fi
|
||||
|
||||
sudo systemctl reload prometheus
|
||||
rm -f $PWD/$HOST
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
<tr>
|
||||
<td id="cur_grafana_ver" class="padding10 first-collumn">
|
||||
{% if grafana == "active" %}
|
||||
Grafana and Prometheus servers have already installed
|
||||
Grafana and Prometheus servers have benn installed
|
||||
{% else %}
|
||||
There are no Grafana and Prometheus servers
|
||||
{% endif %}
|
||||
|
@ -35,17 +35,20 @@
|
|||
<caption><h3>Install HAProxy Exporter</h3></caption>
|
||||
<tr class="overviewHead">
|
||||
<td class="padding10 first-collumn">Current installation</td>
|
||||
<td class="padding10 first-collumn" style="width: 40%;">Available Versions</td>
|
||||
<td class="padding10 first-collumn" style="width: 30%;">Available Versions</td>
|
||||
<td class="help_cursor" style="width: 20%;" title="This exporter will be used by an external Prometheus. Also use this checkbox if you update the Exporter">External Prometheus</td>
|
||||
<td class="padding10 first-collumn" style="width: 30%;">Server</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="cur_haproxy_exp_ver" class="padding10 first-collumn">
|
||||
</td>
|
||||
<td id="cur_haproxy_exp_ver" class="padding10 first-collumn"></td>
|
||||
<td class="padding10 first-collumn" style="width: 20%;">
|
||||
Roxy-WI will try to install the latest HAProxy Exporter version
|
||||
{% set values = dict() %}
|
||||
{% set values = {'0.7.0':'0.7.0','0.7.1':'0.7.1', '0.8.0':'0.8.0', '0.9.0':'0.9.0', '0.10.0':'0.10.0',
|
||||
'0.11.0':'0.11.0', '0.12.0':'0.12.0', '0.13.0':'0.13.0'} %}
|
||||
{{ select('hapexpver', values=values, selected='0.13.0') }}
|
||||
</td>
|
||||
<td style="padding-left: 50px;">{{ checkbox('haproxy_ext_prom', title="This exporter will be used by an external Prometheus. Also use this checkbox if you update the Exporter") }}</td>
|
||||
<td class="padding10 first-collumn">
|
||||
<select autofocus required name="haproxy_exp_addserv" id="haproxy_exp_addserv">
|
||||
<option disabled selected>------</option>
|
||||
|
@ -54,8 +57,6 @@
|
|||
{% endfor %}
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
<span class="ui-button ui-widget ui-corner-all" id="haproxy_exp_install" title="Install HAProxy Exporter">Install</span>
|
||||
</td>
|
||||
|
@ -65,17 +66,20 @@
|
|||
<caption><h3>Install Nginx Exporter</h3></caption>
|
||||
<tr class="overviewHead">
|
||||
<td class="padding10 first-collumn">Current installation</td>
|
||||
<td class="padding10 first-collumn" style="width: 40%;">Available Versions</td>
|
||||
<td class="padding10 first-collumn" style="width: 30%;">Available Versions</td>
|
||||
<td class="help_cursor" style="width: 20%;" title="This exporter will be used by an external Prometheus. Also use this checkbox if you update the Exporter">External Prometheus</td>
|
||||
<td class="padding10 first-collumn" style="width: 30%;">Server</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="cur_nginx_exp_ver" class="padding10 first-collumn">
|
||||
</td>
|
||||
<td id="cur_nginx_exp_ver" class="padding10 first-collumn"></td>
|
||||
<td class="padding10 first-collumn" style="width: 20%;">
|
||||
Roxy-WI will try to install the latest Nginx Exporter version
|
||||
{% set values = dict() %}
|
||||
{% set values = {'0.5.0':'0.5.0', '0.6.0':'0.6.0', '0.7.0':'0.7.0', '0.9.0':'0.9.0'} %}
|
||||
{{ select('nginxexpver', values=values, selected='0.9.0') }}
|
||||
</td>
|
||||
<td style="padding-left: 53px;">{{ checkbox('nginx_ext_prom', title="This exporter will be used by an external Prometheus. Also use this checkbox if you update the Exporter") }}</td>
|
||||
<td class="padding10 first-collumn">
|
||||
<select autofocus required name="nginx_exp_addserv" id="nginx_exp_addserv">
|
||||
<option disabled selected>------</option>
|
||||
|
@ -84,8 +88,6 @@
|
|||
{% endfor %}
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
<span class="ui-button ui-widget ui-corner-all" id="nginx_exp_install" title="Install Nginx Exporter">Install</span>
|
||||
</td>
|
||||
|
@ -95,17 +97,21 @@
|
|||
<caption><h3>Install Node Exporter</h3></caption>
|
||||
<tr class="overviewHead">
|
||||
<td class="padding10 first-collumn">Current installation</td>
|
||||
<td class="padding10 first-collumn" style="width: 40%;">Available Versions</td>
|
||||
<td class="padding10 first-collumn" style="width: 30%;">Available Versions</td>
|
||||
<td class="help_cursor" style="width: 20%;" title="This exporter will be used by an external Prometheus. Also use this checkbox if you update the Exporter">External Prometheus</td>
|
||||
<td class="padding10 first-collumn" style="width: 30%;">Server</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="cur_node_exp_ver" class="padding10 first-collumn">
|
||||
</td>
|
||||
<td id="cur_node_exp_ver" class="padding10 first-collumn"></td>
|
||||
<td class="padding10 first-collumn" style="width: 20%;">
|
||||
Roxy-WI will try to install the latest Node Exporter version
|
||||
{% set values = dict() %}
|
||||
{% set values = {'1.0.0':'1.0.0','1.1.0':'1.1.0', '1.1.1':'1.1.1', '1.1.2':'1.1.2', '1.2.0':'1.2.0',
|
||||
'1.2.2':'1.2.2', '1.3.0':'1.3.0'} %}
|
||||
{{ select('nodeexpver', values=values, selected='1.3.0') }}
|
||||
</td>
|
||||
<td style="padding-left: 53px;">{{ checkbox('node_ext_prom', title="This exporter will be used by an external Prometheus. Also use this checkbox if you update the Exporter") }}</td>
|
||||
<td class="padding10 first-collumn">
|
||||
<select autofocus required name="node_exp_addserv" id="node_exp_addserv">
|
||||
<option disabled selected>------</option>
|
||||
|
@ -114,11 +120,13 @@
|
|||
{% endfor %}
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
<span class="ui-button ui-widget ui-corner-all" id="node_exp_install" title="Install Node Exporter">Install</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div id="ajaxmon"></div>
|
||||
<div class="add-note alert addName alert-info" style="width: inherit; margin-right: 15px;">
|
||||
Read <a href="https://roxy-wi.org/services.py?service=grafana" title="About Grafana and Prometheus servers" target="_blank">About Grafana and Prometheus servers</a>
|
||||
and <a href="https://roxy-wi.org/howto.py?howto=exporters" title="About Exporters" target="_blank">About Exporters</a>
|
||||
</div>
|
|
@ -59,8 +59,8 @@
|
|||
{% set values = {'2.0.5-1':'2.0.5-1','2.0.6-1':'2.0.6-1', '2.0.7-1':'2.0.7-1', '2.0.9-1':'2.0.9-1',
|
||||
'2.0.11-1':'2.0.11-1', '2.0.12-1':'2.0.12-1', '2.0.13-1':'2.0.13-1', '2.0.14-1':'2.0.14-1',
|
||||
'2.0.17-1':'2.0.17-1','2.0.18-1':'2.0.18-1','2.2.4-1':'2.2.4-1','2.3.0-1':'2.3.0-1','2.3.10-1':'2.3.10-1',
|
||||
'2.4.0-1':'2.4.0-1'} %}
|
||||
{{ select('hapver', values=values, selected='2.4.0-1', required='required') }}
|
||||
'2.4.0-1':'2.4.0-1','2.4.9-1':'2.4.9-1'} %}
|
||||
{{ select('hapver', values=values, selected='2.4.9-1', required='required') }}
|
||||
</td>
|
||||
<td class="padding10 first-collumn">
|
||||
<select autofocus required name="haproxyaddserv" id="haproxyaddserv">
|
||||
|
|
|
@ -146,7 +146,7 @@ pre {
|
|||
}
|
||||
#logo_footer {
|
||||
float: left;
|
||||
margin-left: 37%;
|
||||
margin-left: 41%;
|
||||
}
|
||||
#logo_footer_img {
|
||||
width: 35px;
|
||||
|
|
60
inc/users.js
60
inc/users.js
|
@ -165,10 +165,16 @@ $( function() {
|
|||
$('#haproxy_exp_install').click(function() {
|
||||
$("#ajaxmon").html('')
|
||||
$("#ajaxmon").html(wait_mess);
|
||||
var ext_prom = 0;
|
||||
if ($('#haproxy_ext_prom').is(':checked')) {
|
||||
ext_prom = '1';
|
||||
}
|
||||
$.ajax( {
|
||||
url: "options.py",
|
||||
data: {
|
||||
haproxy_exp_install: $('#haproxy_exp_addserv').val(),
|
||||
exporter_v: $('#hapexpver').val(),
|
||||
ext_prom: ext_prom,
|
||||
token: $('#token').val()
|
||||
},
|
||||
type: "POST",
|
||||
|
@ -196,10 +202,16 @@ $( function() {
|
|||
$('#nginx_exp_install').click(function() {
|
||||
$("#ajaxmon").html('')
|
||||
$("#ajaxmon").html(wait_mess);
|
||||
var ext_prom = 0;
|
||||
if ($('#haproxy_ext_prom').is(':checked')) {
|
||||
ext_prom = '1';
|
||||
}
|
||||
$.ajax( {
|
||||
url: "options.py",
|
||||
data: {
|
||||
nginx_exp_install: $('#nginx_exp_addserv').val(),
|
||||
exporter_v: $('#nginxexpver').val(),
|
||||
ext_prom: ext_prom,
|
||||
token: $('#token').val()
|
||||
},
|
||||
type: "POST",
|
||||
|
@ -226,10 +238,16 @@ $( function() {
|
|||
$('#node_exp_install').click(function() {
|
||||
$("#ajaxmon").html('')
|
||||
$("#ajaxmon").html(wait_mess);
|
||||
var ext_prom = 0;
|
||||
if ($('#haproxy_ext_prom').is(':checked')) {
|
||||
ext_prom = '1';
|
||||
}
|
||||
$.ajax( {
|
||||
url: "options.py",
|
||||
data: {
|
||||
node_exp_install: $('#node_exp_addserv').val(),
|
||||
exporter_v: $('#nodeexpver').val(),
|
||||
ext_prom: ext_prom,
|
||||
token: $('#token').val()
|
||||
},
|
||||
type: "POST",
|
||||
|
@ -313,14 +331,14 @@ $( function() {
|
|||
type: "POST",
|
||||
success: function( data ) {
|
||||
data = data.replace(/^\s+|\s+$/g,'');
|
||||
if(data == 'active') {
|
||||
$('#cur_haproxy_exp_ver').text('HAProxy exporter is installed');
|
||||
$('#haproxy_exp_install').text('Update');
|
||||
$('#haproxy_exp_install').attr('title', 'Update HAProxy exporter');
|
||||
if (data.indexOf('error:') != '-1') {
|
||||
toastr.clear();
|
||||
toastr.error(data);
|
||||
} else if(data == 'no') {
|
||||
$('#cur_haproxy_exp_ver').text('HAProxy exporter has been not installed');
|
||||
} else {
|
||||
$('#cur_haproxy_exp_ver').text('HAProxy exporter has not installed');
|
||||
$('#haproxy_exp_install').text('Install');
|
||||
$('#haproxy_exp_install').attr('title', 'Install HAProxy exporter');
|
||||
$('#cur_haproxy_exp_ver').text(data);
|
||||
$('#cur_haproxy_exp_ver').css('font-weight', 'bold');
|
||||
}
|
||||
}
|
||||
} );
|
||||
|
@ -336,14 +354,14 @@ $( function() {
|
|||
type: "POST",
|
||||
success: function( data ) {
|
||||
data = data.replace(/^\s+|\s+$/g,'');
|
||||
if(data == 'active') {
|
||||
$('#cur_nginx_exp_ver').text('Nginx exporter is installed');
|
||||
$('#nginx_exp_install').text('Update');
|
||||
$('#nginx_exp_install').attr('title', 'Update Nginx exporter');
|
||||
if (data.indexOf('error:') != '-1') {
|
||||
toastr.clear();
|
||||
toastr.error(data);
|
||||
} else if(data == 'no') {
|
||||
$('#cur_nginx_exp_ver').text('Nginx exporter has not been installed');
|
||||
} else {
|
||||
$('#cur_nginx_exp_ver').text('Nginx exporter has not installed');
|
||||
$('#nginx_exp_install').text('Install');
|
||||
$('#nginx_exp_install').attr('title', 'Install Nginx exporter');
|
||||
$('#cur_nginx_exp_ver').text(data);
|
||||
$('#cur_nginx_exp_ver').css('font-weight', 'bold');
|
||||
}
|
||||
}
|
||||
} );
|
||||
|
@ -359,14 +377,14 @@ $( function() {
|
|||
type: "POST",
|
||||
success: function( data ) {
|
||||
data = data.replace(/^\s+|\s+$/g,'');
|
||||
if(data == 'active') {
|
||||
$('#cur_node_exp_ver').text('Node exporter is installed');
|
||||
$('#node_exp_install').text('Update');
|
||||
$('#node_exp_install').attr('title', 'Update Node exporter');
|
||||
if (data.indexOf('error:') != '-1') {
|
||||
toastr.clear();
|
||||
toastr.error(data);
|
||||
} else if(data == 'no') {
|
||||
$('#cur_node_exp_ver').text('Node exporter has not been installed');
|
||||
} else {
|
||||
$('#cur_node_exp_ver').text('Node exporter has not installed');
|
||||
$('#node_exp_install').text('Install');
|
||||
$('#node_exp_install').attr('title', 'Install Node exporter');
|
||||
$('#cur_node_exp_ver').text(data);
|
||||
$('#cur_node_exp_ver').css('font-weight', 'bold');
|
||||
}
|
||||
}
|
||||
} );
|
||||
|
|
Loading…
Reference in New Issue