InfluxDB Installation/Collectors

From r00tedvw.com wiki
Revision as of 04:03, 2 October 2016 by R00t (Talk | contribs)

Jump to: navigation, search

InfluxDB Installation | Collector Scripts

vmstat collector

script

#!/bin/bash -x

#user defined variables
dbhostname=('db fqdn')
dbport=('8086')
dbtable=('influxdb')
dbuser=('influx')
dbpassword=('influxdb')
logdir=("/var/log/vmstatcollector/")

#define variables
HOSTNAME=$(hostname)
DOMAIN=$(hostname | awk -F "." '/1/ { printf $2"."$3"."$4};')
log=("vmstatcollector-$(date +%F).txt")
DATE=$(date +%F"|"%R:%S)


#vmstat 10 sec avg, output and create variables matching each
vmstatout=$(vmstat 10 2 -S k | awk 'NR==4')
r_process_normal=$(printf "$vmstatout" | awk '{ printf $1 }')
b_process_uninterruptible=$(printf "$vmstatout" | awk '{ printf $2 }')
swapd_virtual_mem_used=$(printf "$vmstatout" | awk '{ printf $3 }')
free_idle_mem=$(printf "$vmstatout" | awk '{ printf $4 }')
buf_mem_kernel=$(printf "$vmstatout" | awk '{ printf $5 }')
cache_mem_kernel=$(printf "$vmstatout" | awk '{ printf $6 }')
si_mem_from_swap=$(printf "$vmstatout" | awk '{ printf $7 }')
so_mem_to_swap=$(printf "$vmstatout" | awk '{ printf $8 }')
bi_io_from=$(printf "$vmstatout" | awk '{ printf $9 }')
bo_io_to=$(printf "$vmstatout" | awk '{ printf $10 }')
in_interrupts=$(printf "$vmstatout" | awk '{ printf $11 }')
cs_context_switch=$(printf "$vmstatout" | awk '{ printf $12 }')
us_cpu_non_kernel_code=$(printf "$vmstatout" | awk '{ printf $13 }')
sy_cpu_kernel_code=$(printf "$vmstatout" | awk '{ printf $14 }')
id_cpu_idle=$(printf "$vmstatout" | awk '{ printf $15 }')
wa_cpu_wait=$(printf "$vmstatout" | awk '{ printf $16 }')
st_cpu_stolen=$(printf "$vmstatout" | awk '{ printf $17 }')

#array of vmstat variable values
vmstatvalues=("$r_process_normal" "$b_process_uninterruptible" "$swapd_virtual_mem_used" "$free_idle_mem" "$buf_mem_kernel" "$cache_mem_kernel" "$si_mem_from_swap" "$so_mem_to_swap" "$bi_io_from" "$bo_io_to" "$in_interrupts" "$cs_context_switch" "$us_cpu_non_kernel_code" "$sy_cpu_kernel_code" "$id_cpu_idle" "$wa_cpu_wait" "$st_cpu_stolen")
#printf "%s\n" "${arr[@]}"

#array of vmstat variable names
vmstatdef=('r_process_normal' 'b_process_uninterruptible' 'swapd_virtual_mem_used' 'free_idle_mem' 'buf_mem_kernel' 'cache_mem_kernel' 'si_mem_from_swap' 'so_mem_to_swap' 'bi_io_from' 'bo_io_to' 'in_interrupts' 'cs_context_switch' 'us_cpu_non_kernel_code' 'sy_cpu_kernel_code' 'id_cpu_idle' 'wa_cpu_wait' 'st_cpu_stolen')

#function that checks for connectivity to db host and continues if found.
function inet_test {
        #function that checks for access to log dir and creates log file either in log directory or in /var/tmp/
        function log_dir {
                if ls "$logdir" >/dev/null 2>&1; then
                      if [ -e "$logdir""$log" ] >/dev/null 2>&1; then
                                printf "$DATE"" -- ""$dbhostname"" ""$is"" accessible\n" >> "$logdir""$log"
                        else
                                printf "Start New Log\n""$DATE"" -- ""$dbhostname"" ""$is"" accessible\n" > "$logdir""$log"
                        fi
                elif [ -e "/var/tmp/""$log" ] >/dev/null 2>&1; then
                        printf "$DATE"" -- ""$logdir"" is NOT accessible\n""$DATE"" -- ""$dbhostname"" ""$is"" accessible\n" >> "/var/tmp/""$log"
                else
                        printf "Start New Log\n""$DATE"" -- ""$logdir"" is NOT accessible\n""$DATE"" -- ""$dbhostname"" ""$is"" accessible\n" > "/var/tmp/""$log"
                fi
        }
        #loop that brings everything together and outputs to db via http post
        function influx_post {
                for ((i=0;i<=(${#vmstatvalues[@]}-1);i++))
                do
                        curl -i --max-time 10\
                        -H "Accept: application/json" \
                        -H "Content-Type:application/json" \
                        -X POST "http://""$dbhostname"":""$dbport""/write?db=""$dbtable" -u "$dbuser":"$dbpassword" --data-binary "${vmstatdef[i]}"",host=""$HOSTNAME"",domain=""$DOMAIN"" value=""${vmstatvalues[i]}"

                done
        }
        #portion of code that checks db connectivity and then calls nested functions
        if ping -q -c 1 -W 1 "$dbhostname" >/dev/null 2>&1; then
                is=("is") \
                && log_dir \
                && influx_post
        else
                is=('is NOT') \
                && log_dir
        fi
}

inet_test

Personal tools
Namespaces

Variants
Actions
Navigation
Mediawiki
Confluence
DevOps Tools
Ubuntu
Ubuntu 22
Mac OSX
Oracle Linux
AWS
Windows
OpenVPN
Grafana
InfluxDB2
TrueNas
OwnCloud
Pivotal
osTicket
OTRS
phpBB
WordPress
VmWare ESXI 5.1
Crypto currencies
HTML
CSS
Python
Java Script
PHP
Raspberry Pi
Canvas LMS
Kaltura Media Server
Plex Media Server
MetaSploit
Zoneminder
ShinobiCE
Photoshop CS2
Fortinet
Uploaded
Certifications
General Info
Games
Meal Plans
NC Statutes
2020 Election
Volkswagen
Covid
NCDMV
Toolbox