diff --git a/app/scripts/ansible/roles/grafana.yml b/app/scripts/ansible/roles/grafana.yml index 2d80679c..6ad812d0 100644 --- a/app/scripts/ansible/roles/grafana.yml +++ b/app/scripts/ansible/roles/grafana.yml @@ -32,6 +32,9 @@ - dashboard_id: 11879 revision_id: 3 datasource: prometheus + - dashboard_id: 11074 + revision_id: 9 + datasource: prometheus tasks: - name: populate service facts service_facts: diff --git a/app/scripts/ansible/roles/node_exporter.yml b/app/scripts/ansible/roles/node_exporter.yml new file mode 100644 index 00000000..d9931e45 --- /dev/null +++ b/app/scripts/ansible/roles/node_exporter.yml @@ -0,0 +1,38 @@ +- hosts: "{{ variable_host }}" + become: yes + become_method: sudo + tasks: + - name: Set SSH port + set_fact: + ansible_port: "{{SSH_PORT}}" + + + - name: collect facts about system services + service_facts: + register: services_state + + + - name: Open stat port for firewalld + firewalld: + port: "9100/tcp" + state: enabled + permanent: yes + immediate: yes + ignore_errors: yes + when: (ansible_facts['os_family'] == "RedHat" or ansible_facts['os_family'] == 'CentOS') and ansible_facts.services["firewalld.service"]['state'] == "running" + + + - name: Open stat port for iptables + iptables: + chain: INPUT + destination_port: "9100" + jump: ACCEPT + protocol: tcp + ignore_errors: yes + + + roles: + - role: cloudalchemy.node_exporter + environment: + http_proxy: "{{PROXY}}" + https_proxy: "{{PROXY}}" diff --git a/app/scripts/install_node_exporter.sh b/app/scripts/install_node_exporter.sh new file mode 100644 index 00000000..76ffc50f --- /dev/null +++ b/app/scripts/install_node_exporter.sh @@ -0,0 +1,53 @@ +#!/bin/bash +for ARGUMENT in "$@" +do + KEY=$(echo $ARGUMENT | cut -f1 -d=) + VALUE=$(echo $ARGUMENT | cut -f2 -d=) + + case "$KEY" in + PROXY) PROXY=${VALUE} ;; + HOST) HOST=${VALUE} ;; + USER) USER=${VALUE} ;; + PASS) PASS=${VALUE} ;; + KEY) KEY=${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 +export LOCALHOST_WARNING=False +export COMMAND_WARNINGS=False + +PWD=`pwd` +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 +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 +fi + +if [ $? -gt 0 ] +then + echo "error: Can't install Node exporter

" + 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 +fi + +sudo systemctl reload prometheus +rm -f $PWD/$HOST