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():
|
def update_ver():
|
||||||
query = Version.update(version='5.3.4.0')
|
query = Version.update(version='5.3.5.0')
|
||||||
try:
|
try:
|
||||||
query.execute()
|
query.execute()
|
||||||
except:
|
except:
|
||||||
|
|
|
@ -432,6 +432,8 @@ def get_config(server_ip, cfg, **kwargs):
|
||||||
config_path = "/etc/keepalived/keepalived.conf"
|
config_path = "/etc/keepalived/keepalived.conf"
|
||||||
elif kwargs.get("nginx"):
|
elif kwargs.get("nginx"):
|
||||||
config_path = sql.get_setting('nginx_config_path')
|
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:
|
else:
|
||||||
config_path = sql.get_setting('haproxy_config_path')
|
config_path = sql.get_setting('haproxy_config_path')
|
||||||
|
|
||||||
|
@ -707,7 +709,7 @@ def install_haproxy(server_ip, **kwargs):
|
||||||
os.system("cp scripts/%s ." % script)
|
os.system("cp scripts/%s ." % script)
|
||||||
|
|
||||||
if haproxy_ver is None:
|
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':
|
if proxy is not None and proxy != '' and proxy != 'None':
|
||||||
proxy_serv = proxy
|
proxy_serv = proxy
|
||||||
|
|
|
@ -669,6 +669,7 @@ if act == "overviewwaf":
|
||||||
ioloop.run_until_complete(get_runner_overviewWaf())
|
ioloop.run_until_complete(get_runner_overviewWaf())
|
||||||
ioloop.close()
|
ioloop.close()
|
||||||
|
|
||||||
|
|
||||||
if act == "overviewServers":
|
if act == "overviewServers":
|
||||||
import asyncio
|
import asyncio
|
||||||
|
|
||||||
|
@ -1372,6 +1373,8 @@ if form.getvalue('install_grafana'):
|
||||||
|
|
||||||
if form.getvalue('haproxy_exp_install'):
|
if form.getvalue('haproxy_exp_install'):
|
||||||
serv = 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"
|
script = "install_haproxy_exporter.sh"
|
||||||
stats_port = sql.get_setting('stats_port')
|
stats_port = sql.get_setting('stats_port')
|
||||||
server_state_file = sql.get_setting('server_state_file')
|
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 +
|
commands = ["chmod +x " + script + " && ./" + script + " PROXY=" + proxy_serv +
|
||||||
" STAT_PORT=" + str(stats_port) + " STAT_FILE=" + server_state_file +
|
" 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 +
|
" STATS_USER=" + stats_user + " STATS_PASS='" + stats_password + "' HOST=" + serv +
|
||||||
" USER=" + ssh_user_name + " PASS='" + ssh_user_password + "' KEY=" + ssh_key_name]
|
" 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'):
|
if form.getvalue('nginx_exp_install'):
|
||||||
serv = form.getvalue('nginx_exp_install')
|
serv = form.getvalue('nginx_exp_install')
|
||||||
ver = form.getvalue('exporter_v')
|
ver = form.getvalue('exporter_v')
|
||||||
|
ext_prom = form.getvalue('ext_prom')
|
||||||
script = "install_nginx_exporter.sh"
|
script = "install_nginx_exporter.sh"
|
||||||
stats_user = sql.get_setting('nginx_stats_user')
|
stats_user = sql.get_setting('nginx_stats_user')
|
||||||
stats_password = sql.get_setting('nginx_stats_password')
|
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 +
|
commands = ["chmod +x " + script + " && ./" + script + " PROXY=" + proxy_serv +
|
||||||
" STAT_PORT=" + str(stats_port) + " SSH_PORT=" + ssh_port + " STAT_PAGE=" + stats_page +
|
" STAT_PORT=" + str(stats_port) + " SSH_PORT=" + ssh_port + " STAT_PAGE=" + stats_page +
|
||||||
" STATS_USER=" + stats_user + " STATS_PASS='" + stats_password + "' HOST=" + serv +
|
" STATS_USER=" + stats_user + " STATS_PASS='" + stats_password + "' HOST=" + serv + " VER=" + ver +
|
||||||
" USER=" + ssh_user_name + " PASS='" + ssh_user_password + "' KEY=" + ssh_key_name]
|
" EXP_PROM=" + ext_prom + " USER=" + ssh_user_name + " PASS='" + ssh_user_password + "' KEY=" + ssh_key_name]
|
||||||
|
|
||||||
output, error = funct.subprocess_execute(commands[0])
|
output, error = funct.subprocess_execute(commands[0])
|
||||||
|
|
||||||
|
@ -1447,6 +1451,8 @@ if form.getvalue('nginx_exp_install'):
|
||||||
|
|
||||||
if form.getvalue('node_exp_install'):
|
if form.getvalue('node_exp_install'):
|
||||||
serv = 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"
|
script = "install_node_exporter.sh"
|
||||||
proxy = sql.get_setting('proxy')
|
proxy = sql.get_setting('proxy')
|
||||||
ssh_port = 22
|
ssh_port = 22
|
||||||
|
@ -1466,8 +1472,8 @@ if form.getvalue('node_exp_install'):
|
||||||
else:
|
else:
|
||||||
proxy_serv = ''
|
proxy_serv = ''
|
||||||
|
|
||||||
commands = ["chmod +x " + script + " && ./" + script + " PROXY=" + proxy_serv + " SSH_PORT=" + ssh_port +
|
commands = ["chmod +x " + script + " && ./" + script + " PROXY=" + proxy_serv + " SSH_PORT=" + ssh_port + " VER=" + ver +
|
||||||
" HOST=" + serv + " USER=" + ssh_user_name + " PASS='" + ssh_user_password + "' KEY=" + ssh_key_name]
|
" 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])
|
output, error = funct.subprocess_execute(commands[0])
|
||||||
|
|
||||||
|
@ -1742,7 +1748,7 @@ if form.getvalue('get_nginx_v'):
|
||||||
print(funct.ssh_command(serv, cmd))
|
print(funct.ssh_command(serv, cmd))
|
||||||
|
|
||||||
if form.getvalue('get_exporter_v'):
|
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'):
|
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')
|
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:
|
roles:
|
||||||
- role: bdellegrazie.haproxy_exporter
|
- role: haproxy_exporter
|
||||||
vars:
|
vars:
|
||||||
haproxy_exporter_options: ['--haproxy.scrape-uri=http://{{STATS_USER}}:{{STATS_PASS}}@{{variable_host}}:{{STAT_PORT}}/{{STAT_PAGE}};csv']
|
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:
|
roles:
|
||||||
- role: bdellegrazie.nginx_exporter
|
- role: nginx_exporter
|
||||||
environment:
|
environment:
|
||||||
http_proxy: "{{PROXY}}"
|
http_proxy: "{{PROXY}}"
|
||||||
https_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:
|
roles:
|
||||||
- role: cloudalchemy.node_exporter
|
- role: node_exporter
|
||||||
environment:
|
environment:
|
||||||
http_proxy: "{{PROXY}}"
|
http_proxy: "{{PROXY}}"
|
||||||
https_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
|
fi
|
||||||
|
|
||||||
if [[ $KEY == "" ]]; then
|
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
|
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
|
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
|
fi
|
||||||
|
|
|
@ -10,21 +10,23 @@ do
|
||||||
USER) USER=${VALUE} ;;
|
USER) USER=${VALUE} ;;
|
||||||
PASS) PASS=${VALUE} ;;
|
PASS) PASS=${VALUE} ;;
|
||||||
KEY) KEY=${VALUE} ;;
|
KEY) KEY=${VALUE} ;;
|
||||||
|
VER) VER=${VALUE} ;;
|
||||||
STAT_PORT) STAT_PORT=${VALUE} ;;
|
STAT_PORT) STAT_PORT=${VALUE} ;;
|
||||||
STAT_PAGE) STAT_PAGE=${VALUE} ;;
|
STAT_PAGE) STAT_PAGE=${VALUE} ;;
|
||||||
STATS_USER) STATS_USER=${VALUE} ;;
|
STATS_USER) STATS_USER=${VALUE} ;;
|
||||||
STATS_PASS) STATS_PASS=${VALUE} ;;
|
STATS_PASS) STATS_PASS=${VALUE} ;;
|
||||||
|
EXP_PROM) EXP_PROM=${VALUE} ;;
|
||||||
SSH_PORT) SSH_PORT=${VALUE} ;;
|
SSH_PORT) SSH_PORT=${VALUE} ;;
|
||||||
*)
|
*)
|
||||||
esac
|
esac
|
||||||
done
|
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
|
if [[ -n $PROXY ]];then
|
||||||
export https_proxy="$PROXY"
|
export https_proxy="$PROXY"
|
||||||
export http_proxy="$PROXY"
|
export http_proxy="$PROXY"
|
||||||
fi
|
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
|
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:
|
prometheus_exporter_ansible_packages:
|
||||||
|
@ -41,9 +43,9 @@ PWD=$PWD/scripts/ansible/
|
||||||
echo "$HOST ansible_port=$SSH_PORT" > "$PWD"/"$HOST"
|
echo "$HOST ansible_port=$SSH_PORT" > "$PWD"/"$HOST"
|
||||||
|
|
||||||
if [[ $KEY == "" ]]; then
|
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
|
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
|
fi
|
||||||
|
|
||||||
if [ $? -gt 0 ]
|
if [ $? -gt 0 ]
|
||||||
|
@ -52,9 +54,12 @@ then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! sudo grep -Fxq " - $HOST:9101" /etc/prometheus/prometheus.yml; then
|
if [ "$EXP_PROM" == 0 ]
|
||||||
sudo echo " - $HOST:9101" | sudo tee -a /etc/prometheus/prometheus.yml > /dev/null
|
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
|
fi
|
||||||
|
|
||||||
sudo systemctl reload prometheus
|
|
||||||
rm -f "$PWD"/"$HOST"
|
rm -f "$PWD"/"$HOST"
|
||||||
|
|
|
@ -32,7 +32,7 @@ PWD=$PWD/scripts/ansible/
|
||||||
echo "$HOST ansible_port=$SSH_PORT" > $PWD/$HOST
|
echo "$HOST ansible_port=$SSH_PORT" > $PWD/$HOST
|
||||||
|
|
||||||
if [[ $KEY == "" ]]; then
|
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
|
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
|
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
|
fi
|
||||||
|
|
|
@ -48,7 +48,7 @@ PWD=$PWD/scripts/ansible/
|
||||||
echo "$HOST ansible_port=$SSH_PORT" > $PWD/$HOST
|
echo "$HOST ansible_port=$SSH_PORT" > $PWD/$HOST
|
||||||
|
|
||||||
if [[ $KEY == "" ]]; then
|
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
|
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
|
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
|
fi
|
||||||
|
|
|
@ -9,22 +9,29 @@ do
|
||||||
HOST) HOST=${VALUE} ;;
|
HOST) HOST=${VALUE} ;;
|
||||||
USER) USER=${VALUE} ;;
|
USER) USER=${VALUE} ;;
|
||||||
PASS) PASS=${VALUE} ;;
|
PASS) PASS=${VALUE} ;;
|
||||||
KEY) KEY=${VALUE} ;;
|
KEY) KEY=${VALUE} ;;
|
||||||
STAT_PORT) STAT_PORT=${VALUE} ;;
|
VER) VER=${VALUE} ;;
|
||||||
STAT_PAGE) STAT_PAGE=${VALUE} ;;
|
EXP_PROM) EXP_PROM=${VALUE} ;;
|
||||||
STATS_USER) STATS_USER=${VALUE} ;;
|
STAT_PORT) STAT_PORT=${VALUE} ;;
|
||||||
|
STAT_PAGE) STAT_PAGE=${VALUE} ;;
|
||||||
|
STATS_USER) STATS_USER=${VALUE} ;;
|
||||||
STATS_PASS) STATS_PASS=${VALUE} ;;
|
STATS_PASS) STATS_PASS=${VALUE} ;;
|
||||||
SSH_PORT) SSH_PORT=${VALUE} ;;
|
SSH_PORT) SSH_PORT=${VALUE} ;;
|
||||||
*)
|
*)
|
||||||
esac
|
esac
|
||||||
done
|
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
|
if [ ! -z $PROXY ];then
|
||||||
export https_proxy="$PROXY"
|
export https_proxy="$PROXY"
|
||||||
export http_proxy="$PROXY"
|
export http_proxy="$PROXY"
|
||||||
fi
|
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
|
fi
|
||||||
|
|
||||||
export ANSIBLE_HOST_KEY_CHECKING=False
|
export ANSIBLE_HOST_KEY_CHECKING=False
|
||||||
|
@ -38,9 +45,9 @@ PWD=$PWD/scripts/ansible/
|
||||||
echo "$HOST ansible_port=$SSH_PORT" > $PWD/$HOST
|
echo "$HOST ansible_port=$SSH_PORT" > $PWD/$HOST
|
||||||
|
|
||||||
if [[ $KEY == "" ]]; then
|
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
|
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
|
fi
|
||||||
|
|
||||||
if [ $? -gt 0 ]
|
if [ $? -gt 0 ]
|
||||||
|
@ -49,9 +56,12 @@ then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! sudo grep -Fxq " - $HOST:9113" /etc/prometheus/prometheus.yml; then
|
if [ "$EXP_PROM" == 0 ]
|
||||||
sudo echo " - $HOST:9113" | sudo tee -a /etc/prometheus/prometheus.yml > /dev/null
|
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
|
fi
|
||||||
|
|
||||||
sudo systemctl reload prometheus
|
|
||||||
rm -f $PWD/$HOST
|
rm -f $PWD/$HOST
|
||||||
|
|
|
@ -9,20 +9,14 @@ do
|
||||||
HOST) HOST=${VALUE} ;;
|
HOST) HOST=${VALUE} ;;
|
||||||
USER) USER=${VALUE} ;;
|
USER) USER=${VALUE} ;;
|
||||||
PASS) PASS=${VALUE} ;;
|
PASS) PASS=${VALUE} ;;
|
||||||
KEY) KEY=${VALUE} ;;
|
KEY) KEY=${VALUE} ;;
|
||||||
|
VER) VER=${VALUE} ;;
|
||||||
|
EXP_PROM) EXP_PROM=${VALUE} ;;
|
||||||
SSH_PORT) SSH_PORT=${VALUE} ;;
|
SSH_PORT) SSH_PORT=${VALUE} ;;
|
||||||
*)
|
*)
|
||||||
esac
|
esac
|
||||||
done
|
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_HOST_KEY_CHECKING=False
|
||||||
export ANSIBLE_DISPLAY_SKIPPED_HOSTS=False
|
export ANSIBLE_DISPLAY_SKIPPED_HOSTS=False
|
||||||
export ACTION_WARNINGS=False
|
export ACTION_WARNINGS=False
|
||||||
|
@ -34,9 +28,9 @@ PWD=$PWD/scripts/ansible/
|
||||||
echo "$HOST ansible_port=$SSH_PORT" > $PWD/$HOST
|
echo "$HOST ansible_port=$SSH_PORT" > $PWD/$HOST
|
||||||
|
|
||||||
if [[ $KEY == "" ]]; then
|
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
|
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
|
fi
|
||||||
|
|
||||||
if [ $? -gt 0 ]
|
if [ $? -gt 0 ]
|
||||||
|
@ -44,10 +38,12 @@ then
|
||||||
echo "error: Can't install Node exporter <br /><br />"
|
echo "error: Can't install Node exporter <br /><br />"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
if [ "$EXP_PROM" == 0 ]
|
||||||
if ! sudo grep -Fxq " - $HOST:9100" /etc/prometheus/prometheus.yml; then
|
then
|
||||||
sudo echo " - $HOST:9100" | sudo tee -a /etc/prometheus/prometheus.yml > /dev/null
|
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
|
fi
|
||||||
|
|
||||||
sudo systemctl reload prometheus
|
|
||||||
rm -f $PWD/$HOST
|
rm -f $PWD/$HOST
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
<tr>
|
<tr>
|
||||||
<td id="cur_grafana_ver" class="padding10 first-collumn">
|
<td id="cur_grafana_ver" class="padding10 first-collumn">
|
||||||
{% if grafana == "active" %}
|
{% if grafana == "active" %}
|
||||||
Grafana and Prometheus servers have already installed
|
Grafana and Prometheus servers have benn installed
|
||||||
{% else %}
|
{% else %}
|
||||||
There are no Grafana and Prometheus servers
|
There are no Grafana and Prometheus servers
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -35,17 +35,20 @@
|
||||||
<caption><h3>Install HAProxy Exporter</h3></caption>
|
<caption><h3>Install HAProxy Exporter</h3></caption>
|
||||||
<tr class="overviewHead">
|
<tr class="overviewHead">
|
||||||
<td class="padding10 first-collumn">Current installation</td>
|
<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 class="padding10 first-collumn" style="width: 30%;">Server</td>
|
||||||
<td></td>
|
<td></td>
|
||||||
<td></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id="cur_haproxy_exp_ver" class="padding10 first-collumn">
|
<td id="cur_haproxy_exp_ver" class="padding10 first-collumn"></td>
|
||||||
</td>
|
|
||||||
<td class="padding10 first-collumn" style="width: 20%;">
|
<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>
|
||||||
|
<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">
|
<td class="padding10 first-collumn">
|
||||||
<select autofocus required name="haproxy_exp_addserv" id="haproxy_exp_addserv">
|
<select autofocus required name="haproxy_exp_addserv" id="haproxy_exp_addserv">
|
||||||
<option disabled selected>------</option>
|
<option disabled selected>------</option>
|
||||||
|
@ -54,8 +57,6 @@
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
|
||||||
</td>
|
|
||||||
<td>
|
<td>
|
||||||
<span class="ui-button ui-widget ui-corner-all" id="haproxy_exp_install" title="Install HAProxy Exporter">Install</span>
|
<span class="ui-button ui-widget ui-corner-all" id="haproxy_exp_install" title="Install HAProxy Exporter">Install</span>
|
||||||
</td>
|
</td>
|
||||||
|
@ -65,17 +66,20 @@
|
||||||
<caption><h3>Install Nginx Exporter</h3></caption>
|
<caption><h3>Install Nginx Exporter</h3></caption>
|
||||||
<tr class="overviewHead">
|
<tr class="overviewHead">
|
||||||
<td class="padding10 first-collumn">Current installation</td>
|
<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 class="padding10 first-collumn" style="width: 30%;">Server</td>
|
||||||
<td></td>
|
<td></td>
|
||||||
<td></td>
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id="cur_nginx_exp_ver" class="padding10 first-collumn">
|
<td id="cur_nginx_exp_ver" class="padding10 first-collumn"></td>
|
||||||
</td>
|
|
||||||
<td class="padding10 first-collumn" style="width: 20%;">
|
<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>
|
||||||
|
<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">
|
<td class="padding10 first-collumn">
|
||||||
<select autofocus required name="nginx_exp_addserv" id="nginx_exp_addserv">
|
<select autofocus required name="nginx_exp_addserv" id="nginx_exp_addserv">
|
||||||
<option disabled selected>------</option>
|
<option disabled selected>------</option>
|
||||||
|
@ -84,8 +88,6 @@
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
|
||||||
</td>
|
|
||||||
<td>
|
<td>
|
||||||
<span class="ui-button ui-widget ui-corner-all" id="nginx_exp_install" title="Install Nginx Exporter">Install</span>
|
<span class="ui-button ui-widget ui-corner-all" id="nginx_exp_install" title="Install Nginx Exporter">Install</span>
|
||||||
</td>
|
</td>
|
||||||
|
@ -95,17 +97,21 @@
|
||||||
<caption><h3>Install Node Exporter</h3></caption>
|
<caption><h3>Install Node Exporter</h3></caption>
|
||||||
<tr class="overviewHead">
|
<tr class="overviewHead">
|
||||||
<td class="padding10 first-collumn">Current installation</td>
|
<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 class="padding10 first-collumn" style="width: 30%;">Server</td>
|
||||||
<td></td>
|
<td></td>
|
||||||
<td></td>
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td id="cur_node_exp_ver" class="padding10 first-collumn">
|
<td id="cur_node_exp_ver" class="padding10 first-collumn"></td>
|
||||||
</td>
|
|
||||||
<td class="padding10 first-collumn" style="width: 20%;">
|
<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>
|
||||||
|
<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">
|
<td class="padding10 first-collumn">
|
||||||
<select autofocus required name="node_exp_addserv" id="node_exp_addserv">
|
<select autofocus required name="node_exp_addserv" id="node_exp_addserv">
|
||||||
<option disabled selected>------</option>
|
<option disabled selected>------</option>
|
||||||
|
@ -114,11 +120,13 @@
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
|
||||||
</td>
|
|
||||||
<td>
|
<td>
|
||||||
<span class="ui-button ui-widget ui-corner-all" id="node_exp_install" title="Install Node Exporter">Install</span>
|
<span class="ui-button ui-widget ui-corner-all" id="node_exp_install" title="Install Node Exporter">Install</span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<div id="ajaxmon"></div>
|
<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',
|
{% 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.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.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'} %}
|
'2.4.0-1':'2.4.0-1','2.4.9-1':'2.4.9-1'} %}
|
||||||
{{ select('hapver', values=values, selected='2.4.0-1', required='required') }}
|
{{ select('hapver', values=values, selected='2.4.9-1', required='required') }}
|
||||||
</td>
|
</td>
|
||||||
<td class="padding10 first-collumn">
|
<td class="padding10 first-collumn">
|
||||||
<select autofocus required name="haproxyaddserv" id="haproxyaddserv">
|
<select autofocus required name="haproxyaddserv" id="haproxyaddserv">
|
||||||
|
|
|
@ -146,7 +146,7 @@ pre {
|
||||||
}
|
}
|
||||||
#logo_footer {
|
#logo_footer {
|
||||||
float: left;
|
float: left;
|
||||||
margin-left: 37%;
|
margin-left: 41%;
|
||||||
}
|
}
|
||||||
#logo_footer_img {
|
#logo_footer_img {
|
||||||
width: 35px;
|
width: 35px;
|
||||||
|
|
60
inc/users.js
60
inc/users.js
|
@ -165,10 +165,16 @@ $( function() {
|
||||||
$('#haproxy_exp_install').click(function() {
|
$('#haproxy_exp_install').click(function() {
|
||||||
$("#ajaxmon").html('')
|
$("#ajaxmon").html('')
|
||||||
$("#ajaxmon").html(wait_mess);
|
$("#ajaxmon").html(wait_mess);
|
||||||
|
var ext_prom = 0;
|
||||||
|
if ($('#haproxy_ext_prom').is(':checked')) {
|
||||||
|
ext_prom = '1';
|
||||||
|
}
|
||||||
$.ajax( {
|
$.ajax( {
|
||||||
url: "options.py",
|
url: "options.py",
|
||||||
data: {
|
data: {
|
||||||
haproxy_exp_install: $('#haproxy_exp_addserv').val(),
|
haproxy_exp_install: $('#haproxy_exp_addserv').val(),
|
||||||
|
exporter_v: $('#hapexpver').val(),
|
||||||
|
ext_prom: ext_prom,
|
||||||
token: $('#token').val()
|
token: $('#token').val()
|
||||||
},
|
},
|
||||||
type: "POST",
|
type: "POST",
|
||||||
|
@ -196,10 +202,16 @@ $( function() {
|
||||||
$('#nginx_exp_install').click(function() {
|
$('#nginx_exp_install').click(function() {
|
||||||
$("#ajaxmon").html('')
|
$("#ajaxmon").html('')
|
||||||
$("#ajaxmon").html(wait_mess);
|
$("#ajaxmon").html(wait_mess);
|
||||||
|
var ext_prom = 0;
|
||||||
|
if ($('#haproxy_ext_prom').is(':checked')) {
|
||||||
|
ext_prom = '1';
|
||||||
|
}
|
||||||
$.ajax( {
|
$.ajax( {
|
||||||
url: "options.py",
|
url: "options.py",
|
||||||
data: {
|
data: {
|
||||||
nginx_exp_install: $('#nginx_exp_addserv').val(),
|
nginx_exp_install: $('#nginx_exp_addserv').val(),
|
||||||
|
exporter_v: $('#nginxexpver').val(),
|
||||||
|
ext_prom: ext_prom,
|
||||||
token: $('#token').val()
|
token: $('#token').val()
|
||||||
},
|
},
|
||||||
type: "POST",
|
type: "POST",
|
||||||
|
@ -226,10 +238,16 @@ $( function() {
|
||||||
$('#node_exp_install').click(function() {
|
$('#node_exp_install').click(function() {
|
||||||
$("#ajaxmon").html('')
|
$("#ajaxmon").html('')
|
||||||
$("#ajaxmon").html(wait_mess);
|
$("#ajaxmon").html(wait_mess);
|
||||||
|
var ext_prom = 0;
|
||||||
|
if ($('#haproxy_ext_prom').is(':checked')) {
|
||||||
|
ext_prom = '1';
|
||||||
|
}
|
||||||
$.ajax( {
|
$.ajax( {
|
||||||
url: "options.py",
|
url: "options.py",
|
||||||
data: {
|
data: {
|
||||||
node_exp_install: $('#node_exp_addserv').val(),
|
node_exp_install: $('#node_exp_addserv').val(),
|
||||||
|
exporter_v: $('#nodeexpver').val(),
|
||||||
|
ext_prom: ext_prom,
|
||||||
token: $('#token').val()
|
token: $('#token').val()
|
||||||
},
|
},
|
||||||
type: "POST",
|
type: "POST",
|
||||||
|
@ -313,14 +331,14 @@ $( function() {
|
||||||
type: "POST",
|
type: "POST",
|
||||||
success: function( data ) {
|
success: function( data ) {
|
||||||
data = data.replace(/^\s+|\s+$/g,'');
|
data = data.replace(/^\s+|\s+$/g,'');
|
||||||
if(data == 'active') {
|
if (data.indexOf('error:') != '-1') {
|
||||||
$('#cur_haproxy_exp_ver').text('HAProxy exporter is installed');
|
toastr.clear();
|
||||||
$('#haproxy_exp_install').text('Update');
|
toastr.error(data);
|
||||||
$('#haproxy_exp_install').attr('title', 'Update HAProxy exporter');
|
} else if(data == 'no') {
|
||||||
|
$('#cur_haproxy_exp_ver').text('HAProxy exporter has been not installed');
|
||||||
} else {
|
} else {
|
||||||
$('#cur_haproxy_exp_ver').text('HAProxy exporter has not installed');
|
$('#cur_haproxy_exp_ver').text(data);
|
||||||
$('#haproxy_exp_install').text('Install');
|
$('#cur_haproxy_exp_ver').css('font-weight', 'bold');
|
||||||
$('#haproxy_exp_install').attr('title', 'Install HAProxy exporter');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
|
@ -336,14 +354,14 @@ $( function() {
|
||||||
type: "POST",
|
type: "POST",
|
||||||
success: function( data ) {
|
success: function( data ) {
|
||||||
data = data.replace(/^\s+|\s+$/g,'');
|
data = data.replace(/^\s+|\s+$/g,'');
|
||||||
if(data == 'active') {
|
if (data.indexOf('error:') != '-1') {
|
||||||
$('#cur_nginx_exp_ver').text('Nginx exporter is installed');
|
toastr.clear();
|
||||||
$('#nginx_exp_install').text('Update');
|
toastr.error(data);
|
||||||
$('#nginx_exp_install').attr('title', 'Update Nginx exporter');
|
} else if(data == 'no') {
|
||||||
|
$('#cur_nginx_exp_ver').text('Nginx exporter has not been installed');
|
||||||
} else {
|
} else {
|
||||||
$('#cur_nginx_exp_ver').text('Nginx exporter has not installed');
|
$('#cur_nginx_exp_ver').text(data);
|
||||||
$('#nginx_exp_install').text('Install');
|
$('#cur_nginx_exp_ver').css('font-weight', 'bold');
|
||||||
$('#nginx_exp_install').attr('title', 'Install Nginx exporter');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
|
@ -359,14 +377,14 @@ $( function() {
|
||||||
type: "POST",
|
type: "POST",
|
||||||
success: function( data ) {
|
success: function( data ) {
|
||||||
data = data.replace(/^\s+|\s+$/g,'');
|
data = data.replace(/^\s+|\s+$/g,'');
|
||||||
if(data == 'active') {
|
if (data.indexOf('error:') != '-1') {
|
||||||
$('#cur_node_exp_ver').text('Node exporter is installed');
|
toastr.clear();
|
||||||
$('#node_exp_install').text('Update');
|
toastr.error(data);
|
||||||
$('#node_exp_install').attr('title', 'Update Node exporter');
|
} else if(data == 'no') {
|
||||||
|
$('#cur_node_exp_ver').text('Node exporter has not been installed');
|
||||||
} else {
|
} else {
|
||||||
$('#cur_node_exp_ver').text('Node exporter has not installed');
|
$('#cur_node_exp_ver').text(data);
|
||||||
$('#node_exp_install').text('Install');
|
$('#cur_node_exp_ver').css('font-weight', 'bold');
|
||||||
$('#node_exp_install').attr('title', 'Install Node exporter');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
|
|
Loading…
Reference in New Issue