memcached: NRPE check for multi-instance setup
All checks were successful
gitea/ansible-roles/pipeline/head This commit looks good
All checks were successful
gitea/ansible-roles/pipeline/head This commit looks good
Also some cleanup & split of tasks between single and multi instance Note: Munin part seems still broken at the time
This commit is contained in:
parent
16e0f923ef
commit
1f52700b47
|
@ -17,6 +17,7 @@ The **patch** part changes is incremented if multiple releases happen the same m
|
||||||
* vrrp: add an `ip.yml` task file to help create VRRP addresses
|
* vrrp: add an `ip.yml` task file to help create VRRP addresses
|
||||||
* webapps/nextcloud: Add compatibility with apache2, and apache2 mod_php.
|
* webapps/nextcloud: Add compatibility with apache2, and apache2 mod_php.
|
||||||
* inspect-domains: Add role
|
* inspect-domains: Add role
|
||||||
|
* memcached: NRPE check for multi-instance setup
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
|
|
82
memcached/files/check_memcached_instances.sh
Normal file
82
memcached/files/check_memcached_instances.sh
Normal file
|
@ -0,0 +1,82 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# {{ ansible_managed }}
|
||||||
|
|
||||||
|
set -u
|
||||||
|
|
||||||
|
return=0
|
||||||
|
nb_crit=0
|
||||||
|
nb_warn=0
|
||||||
|
nb_ok=0
|
||||||
|
nb_unchk=0
|
||||||
|
output=""
|
||||||
|
|
||||||
|
vendored_check=/usr/local/lib/nagios/plugins/check_memcached.pl
|
||||||
|
|
||||||
|
if [ -x $vendored_check ]; then
|
||||||
|
check_bin=$vendored_check
|
||||||
|
else
|
||||||
|
echo "UNCHK - can't find check_memcached"
|
||||||
|
exit 3
|
||||||
|
fi
|
||||||
|
|
||||||
|
check_server() {
|
||||||
|
name=$1
|
||||||
|
conf_file=$2
|
||||||
|
|
||||||
|
host=$(config_var "-l" "${conf_file}")
|
||||||
|
port=$(config_var "-p" "${conf_file}")
|
||||||
|
|
||||||
|
cmd="${check_bin} -H ${host} -p ${port}"
|
||||||
|
|
||||||
|
result=$($cmd)
|
||||||
|
ret="${?}"
|
||||||
|
if [ "${ret}" -ge 2 ]; then
|
||||||
|
nb_crit=$((nb_crit + 1))
|
||||||
|
printf -v output "%s%s\n" "${output}" "${result}"
|
||||||
|
[ "${return}" -le 2 ] && return=2
|
||||||
|
elif [ "${ret}" -ge 1 ]; then
|
||||||
|
nb_warn=$((nb_warn + 1))
|
||||||
|
printf -v output "%s%s\n" "${output}" "${result}"
|
||||||
|
[ "${return}" -le 1 ] && return=1
|
||||||
|
else
|
||||||
|
nb_ok=$((nb_ok + 1))
|
||||||
|
printf -v output "%s%s\n" "${output}" "${result}"
|
||||||
|
[ "${return}" -le 0 ] && return=0
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
config_var() {
|
||||||
|
variable=$1
|
||||||
|
file=$2
|
||||||
|
test -f "${file}" && grep -E "^${variable}\s+.+$" "${file}" | awk '{ print $2 }' | sed -e "s/^[\"']//" -e "s/[\"']$//"
|
||||||
|
}
|
||||||
|
|
||||||
|
# default instance
|
||||||
|
if systemctl is-enabled -q memcached; then
|
||||||
|
check_server "default" "/etc/memcached.conf"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# additional instances
|
||||||
|
conf_files=$(ls -1 /etc/memcached_*.conf 2> /dev/null)
|
||||||
|
for conf_file in ${conf_files}; do
|
||||||
|
name=$(basename "${conf_file}" | sed '{s|memcached_||;s|\.conf||}')
|
||||||
|
if systemctl is-enabled -q "memcached@${name}.service"; then
|
||||||
|
check_server "${name}" "${conf_file}"
|
||||||
|
else
|
||||||
|
nb_unchk=$((nb_unchk + 1))
|
||||||
|
output="${output}UNCHK - ${name} (unit is disabled or missing)\n"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
[ "${return}" -ge 0 ] && header="OK"
|
||||||
|
[ "${return}" -ge 1 ] && header="WARNING"
|
||||||
|
[ "${return}" -ge 2 ] && header="CRITICAL"
|
||||||
|
|
||||||
|
printf "%s - %s UNCHK / %s CRIT / %s WARN / %s OK\n\n" "${header}" "${nb_unchk}" "${nb_crit}" "${nb_warn}" "${nb_ok}"
|
||||||
|
|
||||||
|
printf "%s" "${output}" | grep -E "CRITICAL"
|
||||||
|
printf "%s" "${output}" | grep -E "WARNING"
|
||||||
|
printf "%s" "${output}" | grep -E "OK"
|
||||||
|
printf "%s" "${output}" | grep -E "UNCHK"
|
||||||
|
|
||||||
|
exit "${return}"
|
17
memcached/tasks/instance-default.yml
Normal file
17
memcached/tasks/instance-default.yml
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
|
||||||
|
- name: Memcached is configured.
|
||||||
|
template:
|
||||||
|
src: memcached.conf.j2
|
||||||
|
dest: /etc/memcached.conf
|
||||||
|
mode: "0644"
|
||||||
|
notify: restart memcached
|
||||||
|
tags:
|
||||||
|
- memcached
|
||||||
|
|
||||||
|
- name: Memcached is running and enabled on boot.
|
||||||
|
service:
|
||||||
|
name: memcached
|
||||||
|
enabled: yes
|
||||||
|
state: started
|
||||||
|
tags:
|
||||||
|
- memcached
|
41
memcached/tasks/instance-multi.yml
Normal file
41
memcached/tasks/instance-multi.yml
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
- name: Add systemd unit template
|
||||||
|
copy:
|
||||||
|
src: memcached@.service
|
||||||
|
dest: /etc/systemd/system/memcached@.service
|
||||||
|
tags:
|
||||||
|
- memcached
|
||||||
|
|
||||||
|
- name: Disable default memcached systemd unit
|
||||||
|
systemd:
|
||||||
|
name: memcached
|
||||||
|
enabled: false
|
||||||
|
state: stopped
|
||||||
|
tags:
|
||||||
|
- memcached
|
||||||
|
|
||||||
|
- name: Make sure memcached.conf is absent
|
||||||
|
file:
|
||||||
|
path: /etc/memcached.conf
|
||||||
|
state: absent
|
||||||
|
tags:
|
||||||
|
- memcached
|
||||||
|
|
||||||
|
- name: "Create a configuration file for instance ({{ memcached_instance_name }})"
|
||||||
|
template:
|
||||||
|
src: memcached.conf.j2
|
||||||
|
dest: /etc/memcached_{{ memcached_instance_name }}.conf
|
||||||
|
mode: "0644"
|
||||||
|
tags:
|
||||||
|
- memcached
|
||||||
|
|
||||||
|
- name: "Enable and start the memcached instance ({{ memcached_instance_name }})"
|
||||||
|
systemd:
|
||||||
|
name: memcached@{{ memcached_instance_name }}
|
||||||
|
enabled: yes
|
||||||
|
state: started
|
||||||
|
daemon_reload: yes
|
||||||
|
masked: no
|
||||||
|
tags:
|
||||||
|
- memcached
|
|
@ -1,73 +1,15 @@
|
||||||
- name: ensure packages are installed
|
- name: Ensure memcached is installed
|
||||||
apt:
|
apt:
|
||||||
name: memcached
|
name: memcached
|
||||||
state: present
|
state: present
|
||||||
tags:
|
tags:
|
||||||
- memcached
|
- memcached
|
||||||
|
|
||||||
- name: Memcached is configured.
|
- include: instance-default.yml
|
||||||
template:
|
when: memcached_instance_name is undefined
|
||||||
src: memcached.conf.j2
|
|
||||||
dest: /etc/memcached.conf
|
|
||||||
mode: "0644"
|
|
||||||
notify: restart memcached
|
|
||||||
tags:
|
|
||||||
- memcached
|
|
||||||
when: memcached_instance_name | length == 0
|
|
||||||
|
|
||||||
- name: Memcached is running and enabled on boot.
|
- include: instance-multi.yml
|
||||||
service:
|
when: memcached_instance_name is defined
|
||||||
name: memcached
|
|
||||||
enabled: yes
|
|
||||||
state: started
|
|
||||||
tags:
|
|
||||||
- memcached
|
|
||||||
when: memcached_instance_name | length == 0
|
|
||||||
|
|
||||||
- name: Add systemd template
|
|
||||||
copy:
|
|
||||||
src: memcached@.service
|
|
||||||
dest: /etc/systemd/system/memcached@.service
|
|
||||||
tags:
|
|
||||||
- memcached
|
|
||||||
when: memcached_instance_name | length > 0
|
|
||||||
|
|
||||||
- name: Delete default memcached systemd configuration file
|
|
||||||
systemd:
|
|
||||||
name: memcached
|
|
||||||
enabled: false
|
|
||||||
state: stopped
|
|
||||||
tags:
|
|
||||||
- memcached
|
|
||||||
when: memcached_instance_name | length > 0
|
|
||||||
|
|
||||||
- name: Make sure memcached.conf is absent
|
|
||||||
file:
|
|
||||||
path: /etc/memcached.conf
|
|
||||||
state: absent
|
|
||||||
tags:
|
|
||||||
- memcached
|
|
||||||
when: memcached_instance_name | length > 0
|
|
||||||
|
|
||||||
- name: Create a configuration file
|
|
||||||
template:
|
|
||||||
src: memcached.conf.j2
|
|
||||||
dest: /etc/memcached_{{ memcached_instance_name }}.conf
|
|
||||||
mode: "0644"
|
|
||||||
tags:
|
|
||||||
- memcached
|
|
||||||
when: memcached_instance_name | length > 0
|
|
||||||
|
|
||||||
- name: Enable and start the memcached instance
|
|
||||||
systemd:
|
|
||||||
name: memcached@{{ memcached_instance_name }}
|
|
||||||
enabled: yes
|
|
||||||
state: started
|
|
||||||
daemon_reload: yes
|
|
||||||
masked: no
|
|
||||||
tags:
|
|
||||||
- memcached
|
|
||||||
when: memcached_instance_name | length > 0
|
|
||||||
|
|
||||||
- include: munin.yml
|
- include: munin.yml
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
- name: Choose packages (Oracle)
|
- name: Choose packages (Oracle)
|
||||||
set_fact:
|
set_fact:
|
||||||
multi: "multi_"
|
multi: "multi_"
|
||||||
when: memcached_instance_name | length > 0
|
when: memcached_instance_name is defined
|
||||||
|
|
||||||
- name: is Munin present ?
|
- name: is Munin present ?
|
||||||
stat:
|
stat:
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
---
|
---
|
||||||
- include_role:
|
|
||||||
name: evolix/remount-usr
|
|
||||||
|
|
||||||
- name: Is nrpe present ?
|
- name: Is nrpe present ?
|
||||||
stat:
|
stat:
|
||||||
|
@ -10,7 +8,12 @@
|
||||||
- block:
|
- block:
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
apt:
|
apt:
|
||||||
name: libcache-memcached-perl
|
name:
|
||||||
|
- libcache-memcached-perl
|
||||||
|
- libmemcached11
|
||||||
|
|
||||||
|
- include_role:
|
||||||
|
name: evolix/remount-usr
|
||||||
|
|
||||||
- name: Copy Nagios check for memcached
|
- name: Copy Nagios check for memcached
|
||||||
copy:
|
copy:
|
||||||
|
@ -18,13 +21,29 @@
|
||||||
dest: /usr/local/lib/nagios/plugins/
|
dest: /usr/local/lib/nagios/plugins/
|
||||||
mode: "0755"
|
mode: "0755"
|
||||||
|
|
||||||
# TODO: install a "multi-instances" check if the memcached_instance_name variable is not null
|
- name: install check_memcached_instances
|
||||||
|
copy:
|
||||||
|
src: check_memcached_instances.sh
|
||||||
|
dest: /usr/local/lib/nagios/plugins/check_memcached_instances
|
||||||
|
force: yes
|
||||||
|
mode: "0755"
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
|
||||||
- name: Add NRPE check
|
- name: Add NRPE check (single instance)
|
||||||
lineinfile:
|
lineinfile:
|
||||||
name: /etc/nagios/nrpe.d/evolix.cfg
|
name: /etc/nagios/nrpe.d/evolix.cfg
|
||||||
regexp: '^command\[check_memcached\]='
|
regexp: '^command\[check_memcached\]='
|
||||||
line: 'command[check_memcached]=/usr/local/lib/nagios/plugins/check_memcached.pl -H 127.0.0.1 -p {{ memcached_port }}'
|
line: 'command[check_memcached]=/usr/local/lib/nagios/plugins/check_memcached.pl -H 127.0.0.1 -p {{ memcached_port }}'
|
||||||
notify: restart nagios-nrpe-server
|
notify: restart nagios-nrpe-server
|
||||||
|
when: memcached_instance_name is undefined
|
||||||
|
|
||||||
|
- name: Add NRPE check (multi instance)
|
||||||
|
lineinfile:
|
||||||
|
name: /etc/nagios/nrpe.d/evolix.cfg
|
||||||
|
regexp: '^command\[check_memcached\]='
|
||||||
|
line: 'command[check_memcached]=/usr/local/lib/nagios/plugins/check_memcached_instances'
|
||||||
|
notify: restart nagios-nrpe-server
|
||||||
|
when: memcached_instance_name is defined
|
||||||
|
|
||||||
when: nrpe_evolix_config.stat.exists
|
when: nrpe_evolix_config.stat.exists
|
||||||
|
|
Loading…
Reference in a new issue