Drop Down MenusCSS Drop Down MenuPure CSS Dropdown Menu

Consul

cd /usr/local/bin/
wget https://releases.hashicorp.com/consul/0.6.4/consul_0.6.4_linux_amd64.zip
unzip

cd /root/consul-ui/
wget https://releases.hashicorp.com/consul/0.6.4/consul_0.6.4_web_ui.zip
unzip


vim /etc/consul.d/server/config.json

{
    "bootstrap": true,
    "server": true,
    "log_level": "DEBUG",
    "datacenter": "dc1",
    "addresses": {
        "http": "0.0.0.0"
    },
    "bind_addr": "172.16.16.92",
    "node_name": "172.16.16.92",
    "data_dir": "/root/consuldata",
    "ui_dir": "/root/consul-ui",
    "acl_datacenter": "dc1",
    "acl_master_token": "",
    "acl_default_policy": "deny"
}




consul agent -config-dir=/etc/consul.d/server -ui-dir=/root/consul-ui -bootstrap true -client=0.0.0.0

Good example
===============
CONSUL SERVER 172.16.16.92
===============
mkdir /etc/consul.d

vim config.json
{
  "bootstrap": true,
  "server": true,
  "datacenter": "use1",
  "data_dir": "/var/consul",
  "ui_dir": "/usr/local/consul-webui",
  "enable_syslog": true
}



vim common_checks.json
{
  "checks": [
    {
    "id": "cpu-load",
    "name": "Load Avg",
    "script": "/usr/lib64/nagios/plugins/check_load -w 6,6,6 -c 10,10,10",
    "interval": "10s",
    "timeout": "1s"
    },
    {
    "id": "procs",
    "name": "Procs",
    "script": "/usr/lib64/nagios/plugins/check_procs",
    "interval": "10s",
    "timeout": "1s"
    },
    {
    "id": "disk-usage",
    "name": "Disk Usage",
    "script": "/usr/lib64/nagios/plugins/check_disk -w 15% -c 10% -r /",
    "interval": "10s",
    "timeout": "1s"
    },
    {
    "id": "memory",
    "name": "Memory",
    "script": "/usr/lib64/nagios/plugins/check_mem -w 85 -c 90",
    "interval": "10s",
    "timeout": "1s"
    }
  ]
}

vim check_consul-alerts.json
{
  "check": {
    "id": "consul-template-alerts",
    "name": "Consul-Alerts",
    "script": "/usr/lib64/nagios/plugins/check_systemd_service.sh consul-alerts",
    "interval": "10s",
    "timeout": "1s"
    }
}

for this,
 systemctl enable consul
 systemctl enable consul-alerts



*******
cd /usr/bin/
wget https://releases.hashicorp.com/consul/0.6.4/consul_0.6.4_linux_amd64.zip
unzip *.zip

wget https://github.com/AcalephStorage/consul-alerts/releases/download/v0.5.0/consul-alerts-0.5.0-linux-amd64.tar
tar -xvf *.tar

******
mkdir /usr/local/consul-webui
wget https://releases.hashicorp.com/consul/0.6.4/consul_0.6.4_web_ui.zip
unzip *.zip
******
copy nagios plugins to  /usr/lib64/nagios/plugins/
https://drive.google.com/open?id=0B_HG6_iDrJyDQUdQNjJyRV9udWM
******
vim /usr/lib64/nagios/plugins/check_systemd_service.sh
#!/bin/bash

# Copyright (C) 2016 Mohamed El Morabity <melmorabity@fedoraproject.com>
#
# This module is free software: you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation, either version 3 of the License, or (at your option) any later
# version.
#
# This software is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along with
# this program. If not, see <http://www.gnu.org/licenses/>.


PLUGINDIR=$(dirname $0)
. $PLUGINDIR/utils.sh


if [ $# -ne 1 ]; then
    echo "Usage: ${0##*/} <service name>" >&2
    exit $STATE_UNKNOWN
fi

service=$1


status=$(systemctl is-enabled $service 2>/dev/null)
r=$?
if [ -z "$status" ]; then
    echo "ERROR: service $service doesn't exist"
    exit $STATE_CRITICAL
fi

if [ $r -ne 0 ]; then
    echo "ERROR: service $service is $status"
    exit $STATE_CRITICAL
fi


systemctl --quiet is-active $service
if [ $? -ne 0 ]; then
    echo "ERROR: service $service is not running"
    exit $STATE_CRITICAL
fi

echo "OK: service $service is running"
exit $STATE_OK


********
vim /usr/lib64/nagios/plugins/utils.sh
#! /bin/sh

STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3
STATE_DEPENDENT=4

print_revision() {
    echo "$1 v$2 (nagios-plugins 2.1.4)"
    printf '%b' "The nagios plugins come with ABSOLUTELY NO WARRANTY. You may redistribute\ncopies of the plugins under the terms of the GNU General Public License.\nFor more information about these matters, see the file named COPYING.\n"
}

support() {
    printf '%b' "Send email to help@nagios-plugins.org if you have questions regarding use\nof this software. To submit patches or suggest improvements, send email to\ndevel@nagios-plugins.org. Please include version information with all\ncorrespondence (when possible, use output from the --version option of the\nplugin itself).\n"
}

#
# check_range takes a value and a range string, returning successfully if an
# alert should be raised based on the range.  Range values are inclusive.
# Values may be integers or floats.
#
# Example usage:
#
# Generating an exit code of 1:
# check_range 5 2:8
#
# Generating an exit code of 0:
# check_range 1 2:8
#
check_range() {
    local v range yes no err decimal start end cmp match
    v="$1"
    range="$2"

    # whether to raise an alert or not
    yes=0
    no=1
    err=2

    # regex to match a decimal number
    decimal="-?([0-9]+\.?[0-9]*|[0-9]*\.[0-9]+)"

    # compare numbers (including decimals), returning true/false
    cmp() { awk "BEGIN{ if ($1) exit(0); exit(1)}"; }

    # returns successfully if the string in the first argument matches the
    # regex in the second
    match() { echo "$1" | grep -E -q -- "$2"; }

    # make sure value is valid
    if ! match "$v" "^$decimal$"; then
        echo "${0##*/}: check_range: invalid value" >&2
        unset -f cmp match
        return "$err"
    fi

    # make sure range is valid
    if ! match "$range" "^@?(~|$decimal)(:($decimal)?)?$"; then
        echo "${0##*/}: check_range: invalid range" >&2
        unset -f cmp match
        return "$err"
    fi

    # check for leading @ char, which negates the range
    if match $range '^@'; then
        range=${range#@}
        yes=1
        no=0
    fi

    # parse the range string
    if ! match "$range" ':'; then
        start=0
        end="$range"
    else
        start="${range%%:*}"
        end="${range#*:}"
    fi

    # do the comparison, taking positive ("") and negative infinity ("~")
    # into account
    if [ "$start" != "~" ] && [ "$end" != "" ]; then
        if cmp "$start <= $v" && cmp "$v <= $end"; then
            unset -f cmp match
            return "$no"
        else
            unset -f cmp match
            return "$yes"
        fi
    elif [ "$start" != "~" ] && [ "$end" = "" ]; then
        if cmp "$start <= $v"; then
            unset -f cmp match
            return "$no"
        else
            unset -f cmp match
            return "$yes"
        fi
    elif [ "$start" = "~" ] && [ "$end" != "" ]; then
        if cmp "$v <= $end"; then
            unset -f cmp match
            return "$no"
        else
            unset -f cmp match
            return "$yes"
        fi
    else
        unset -f cmp match
        return "$no"
    fi
}

***********

vim /etc/systemd/system/consul-alerts.service
[Unit]
Description=consul-alerts
Requires=network-online.target
After=network-online.target consul.service vault.service

[Service]
Restart=on-failure
ExecStart=/usr/bin/consul-alerts $OPTIONS start --consul-dc=use1 --watch-checks --watch-events --log-level=info
ExecReload=/bin/kill -HUP $MAINPID
KillSignal=SIGINT

[Install]
WantedBy=multi-user.target

******
vim /etc/systemd/system/consul.service****

[Unit]
Description=consul server agent
Requires=network-online.target
After=network-online.target

[Service]
Restart=on-failure
ExecStart=/bin/consul agent $OPTIONS -client=0.0.0.0 -bind=172.16.16.92 -config-dir=/etc/consul.d
ExecReload=/bin/kill -HUP $MAINPID
KillSignal=/bin/consul leave

[Install]
WantedBy=multi-user.target


service consul-alerts restart
service consul restart
consul members

========
CLIENT 172.16.16.88
========
vim /etc/systemd/system/consul.service
[Unit]
Description=consul server agent
Requires=network-online.target
After=network-online.target

[Service]
Restart=on-failure
ExecStart=/bin/consul agent  -client=0.0.0.0 -bind=172.16.16.88 -config-dir=/etc/consul.d
ExecReload=/bin/kill -HUP
KillSignal=/bin/consul leave

[Install]
WantedBy=multi-user.target

********
mkdir /etc/consul.d/
vim common_checks.json{
  "checks": [
    {
    "id": "cpu-load",
    "name": "Load Avg",
    "script": "/usr/lib64/nagios/plugins/check_load -w 6,6,6 -c 10,10,10",
    "interval": "10s",
    "timeout": "1s"
    },
    {
    "id": "procs",
    "name": "Procs",
    "script": "/usr/lib64/nagios/plugins/check_procs",
    "interval": "10s",
    "timeout": "1s"
    },
    {
    "id": "disk-usage",
    "name": "Disk Usage",
    "script": "/usr/lib64/nagios/plugins/check_disk -w 15% -c 10% -r /",
    "interval": "10s",
    "timeout": "1s"
    },
    {
    "id": "memory",
    "name": "Memory",
    "script": "/usr/lib64/nagios/plugins/check_mem -w 85 -c 90",
    "interval": "10s",
    "timeout": "1s"
    }
  ]
}

*********
vim config.json
{
  "server": false,
  "datacenter": "use1",
  "data_dir": "/var/consul",
  "enable_syslog": true,
  "start_join": [ "172.16.16.92" ]
}

********
vim service_check.json
{
  "service": {
    "name": "Ansible",
    "address": "172.16.16.88",
    "port": 8080,
    "checks": [
      {
        "script": "/usr/lib64/nagios/plugins/check_tcp -H 172.16.16.88 -p 8080",
        "interval": "10s"
      }
    ]
  }
}



*********
cd /usr/bin
wget https://releases.hashicorp.com/consul/0.6.4/consul_0.6.4_linux_amd64.zip
unzip *.zip
*********
copy nagios plugins to  /usr/lib64/nagios/plugins/
https://drive.google.com/open?id=0B_HG6_iDrJyDQUdQNjJyRV9udWM
*********

service consul restart


%%%%%%%%%%%%%%%%%%%
consul centos 6
mv plugins /usr/lib64/nagios/
   chmod 775 /usr/lib64/nagios/ -R
  mkdir  /etc/consul.d/
   cd /bin/
   wget https://releases.hashicorp.com/consul/0.7.5/consul_0.7.5_linux_amd64.zip
  unzip consul_0.7.5_linux_amd64.zip
   rm -rf consul_0.7.5_linux_amd64.zip
   cd /etc/init.d/

 vim consul

#!/bin/bash
#
# consul        Manage the consul agent
#
# chkconfig:   2345 95 95
# description: Consul is a tool for service discovery and configuration
# processname: consul
# config: /etc/consul.conf
# pidfile: /var/run/consul.pid

### BEGIN INIT INFO
# Provides:       consul
# Required-Start: $local_fs $network
# Required-Stop:
# Should-Start:
# Should-Stop:
# Default-Start: 2 3 4 5
# Default-Stop:  0 1 6
# Short-Description: Manage the consul agent
# Description: Consul is a tool for service discovery and configuration
### END INIT INFO

# source function library
. /etc/rc.d/init.d/functions

prog="consul"
user="root"
exec="/bin/$prog"
pidfile="/var/run/$prog.pid"
lockfile="/var/lock/subsys/$prog"
logfile="/var/log/$prog.log"
confdir="/etc/consul.d"
bindip="172.16.1.05"   ///////client server address

# pull in sysconfig settings
[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog

export GOMAXPROCS=${GOMAXPROCS:-2}

start() {
    [ -x $exec ] || exit 5

    [ -f $conffile ] || exit 6
    [ -d $confdir ] || exit 6

    umask 077

    touch $logfile $pidfile
    chown $user:$user $logfile $pidfile

    echo -n $"Starting $prog: "

    ## holy shell shenanigans, batman!
    ## daemon can't be backgrounded.  we need the pid of the spawned process,
    ## which is actually done via runuser thanks to --user.  you can't do "cmd
    ## &; action" but you can do "{cmd &}; action".
    daemon \
        --pidfile=$pidfile \
        --user=$user \
        " { $exec agent -bind=$bindip -config-dir=$confdir $1 &>> $logfile & } ; echo \$! >| $pidfile "

    RETVAL=$?
    echo

    [ $RETVAL -eq 0 ] && touch $lockfile

    sleep 2
    return $RETVAL
}

stop() {
    echo -n $"Shutting down $prog: "
    ## graceful shutdown with SIGINT
    killproc -p $pidfile $exec -INT
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && rm -f $lockfile
    return $RETVAL
}

restart() {
    stop
    sleep 2
    start
}

reload() {
    echo -n $"Reloading $prog: "
    killproc -p $pidfile $exec -HUP
    echo
}

force_reload() {
    restart
}

rh_status() {
    status -p "$pidfile" -l $prog $exec
}

rh_status_q() {
    rh_status >/dev/null 2>&1
}

case "$1" in
    bootstrap)
        rh_status_q && exit 0
        start -bootstrap
        ;;
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart)
        $1
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    force-reload)
        force_reload
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
        restart
        ;;
    *)
        echo $"Usage: $0 {bootstrap|start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
        exit 2
esac

exit $?




cd /etc/consul.d/
 vim config.json
 vim common_checks.json
service consul restart


%%%%%%%%%%%%%%%%%%%

add mail alerts via web interface

.
.
.
===================================

Grafana / influxdb / telegraf client

http://foxutech.com/setup-influxdb-grafana-and-telegraf-on-ubuntu/

wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.3.1-1.x86_64.rpm
yum install initscripts fontconfig
rpm -Uvh grafana-4.3.1-1.x86_64.rpm
  726  service grafana-server start

  730  wget https://s3.amazonaws.com/influxdb/influxdb-0.10.0-1.x86_64.rpm
  731  rpm -Uvh influxdb-0.10.0-1.x86_64.rpm
  732  service influxdb restart
.
.
.working -->  wget https://dl.influxdata.com/telegraf/releases/telegraf-1.3.2-1.x86_64.rpm
 yum localinstall telegraf-1.3.2-1.x86_64.rpm




%%%%%%%%%%%
telegraf client on centos 6
wget https://dl.influxdata.com/telegraf/releases/telegraf-1.3.2-1.x86_64.rpm
  yum localinstall telegraf-1.3.2-1.x86_64.rpm
   rm -rf telegraf-1.3.2-1.x86_64.rpm
   cd /etc/telegraf/
   > telegraf.conf
  vim telegraf.conf
[global_tags]

[agent]
  interval = "30s"
  round_interval = true
  metric_batch_size = 1000
  metric_buffer_limit = 10000
  collection_jitter = "0s"
  flush_interval = "30s"
  flush_jitter = "0s"
  precision = ""
  debug = false
  quiet = false
  logfile = ""
  hostname = ""
  omit_hostname = false

###############################################################################
#                            OUTPUT PLUGINS                                   #
###############################################################################

[[outputs.influxdb]]
  urls = ["http://172.55.1.1:8086"] # required grafana  server ip
  database = "telegraf" # required
  retention_policy = ""
  write_consistency = "any"
  timeout = "5s"

###############################################################################
#                            INPUT PLUGINS                                    #
###############################################################################

[[inputs.cpu]]
  percpu = false
  totalcpu = true
  collect_cpu_time = false

[[inputs.disk]]
  mount_points = ["/"]

[[inputs.diskio]]

#[[inputs.kernel]]

[[inputs.mem]]



   service telegraf start

  mkdir /etc/telegraf/plugins
  vim /etc/telegraf/plugins/postgres.sh
  chmod 775 /etc/telegraf/plugins/postgres.sh
service telegraf restart
%%%%%%%%%%%%

No comments:

Post a Comment