Restore repo
This commit is contained in:
46
bareos/README.md
Normal file
46
bareos/README.md
Normal file
@@ -0,0 +1,46 @@
|
||||
## Мониторинг Bareos в Zabbix
|
||||
|
||||
### bareos_get_all.sh
|
||||
|
||||
Скрипт для получения данных о клиентах и заданиях в Bareos для использования в zabbix.
|
||||
|
||||
Возможна работа как с zabbix-agent так и zabbix-sender
|
||||
|
||||
# Использование:
|
||||
|
||||
Предварительно необходимо создать узел в zabbix и прикрепить к нему шаблон Template_Bareos_Clients.xml
|
||||
|
||||
- Вывести список клиентов ввиде zabbix discovery JSON
|
||||
|
||||
```bareos_get_all.sh clients-discovery```
|
||||
|
||||
- Вывести список названий заданий (job) для клиента
|
||||
|
||||
```bareos_get_all.sh client-list-job _CLIENT_NAME_```
|
||||
|
||||
- Получить статусы всех заданий для клиента
|
||||
|
||||
```bareos_get_all.sh client-get-jobs-status _CLIENT_NAME_```
|
||||
|
||||
- Получить статус задания
|
||||
|
||||
```bareos_get_all.sh get-job-status _CLIENT_NAME_ _JOB_NAME_```
|
||||
|
||||
- Вывести количество задач с определенным статусом
|
||||
|
||||
```bareos_get_all.sh count-jobs _JOB_STATUS```
|
||||
|
||||
Где:
|
||||
|
||||
```
|
||||
_CLIENT_NAME_ - имя клиента в bareos
|
||||
_JOB_NAME_ - название задачи в bareos
|
||||
_JOB_STATUS_ - статус задания в терминах bareos:
|
||||
T - Completed successfully
|
||||
E - Terminated with errors
|
||||
e - Non-fatal error
|
||||
f - Fatal error
|
||||
W - Terminated with warnings
|
||||
```
|
||||
|
||||
Полный список доступен тут: https://docs.bareos.org/Appendix/CatalogTables.html#jobstatus)
|
198
bareos/Template_Bareos_Clients.xml
Normal file
198
bareos/Template_Bareos_Clients.xml
Normal file
@@ -0,0 +1,198 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<zabbix_export>
|
||||
<version>4.0</version>
|
||||
<date>2020-11-18T12:58:04Z</date>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<templates>
|
||||
<template>
|
||||
<template>Template_Bareos_Clients</template>
|
||||
<name>Template_Bareos_Clients</name>
|
||||
<description/>
|
||||
<groups>
|
||||
<group>
|
||||
<name>Templates</name>
|
||||
</group>
|
||||
</groups>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Bareos clients</name>
|
||||
</application>
|
||||
</applications>
|
||||
<items/>
|
||||
<discovery_rules>
|
||||
<discovery_rule>
|
||||
<name>Bareos clients</name>
|
||||
<type>2</type>
|
||||
<snmp_community/>
|
||||
<snmp_oid/>
|
||||
<key>bareos.clients</key>
|
||||
<delay>0</delay>
|
||||
<status>0</status>
|
||||
<allowed_hosts/>
|
||||
<snmpv3_contextname/>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authprotocol>0</snmpv3_authprotocol>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privprotocol>0</snmpv3_privprotocol>
|
||||
<snmpv3_privpassphrase/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<filter>
|
||||
<evaltype>0</evaltype>
|
||||
<formula/>
|
||||
<conditions/>
|
||||
</filter>
|
||||
<lifetime>30d</lifetime>
|
||||
<description/>
|
||||
<item_prototypes>
|
||||
<item_prototype>
|
||||
<name>{#BAREOSCLIENT} job {#BAREOSJOB} status</name>
|
||||
<type>2</type>
|
||||
<snmp_community/>
|
||||
<snmp_oid/>
|
||||
<key>bareos.clients.job.status[{#BAREOSCLIENT}, {#BAREOSJOB}]</key>
|
||||
<delay>0</delay>
|
||||
<history>90d</history>
|
||||
<trends>0</trends>
|
||||
<status>0</status>
|
||||
<value_type>4</value_type>
|
||||
<allowed_hosts/>
|
||||
<units/>
|
||||
<snmpv3_contextname/>
|
||||
<snmpv3_securityname/>
|
||||
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||
<snmpv3_authprotocol>0</snmpv3_authprotocol>
|
||||
<snmpv3_authpassphrase/>
|
||||
<snmpv3_privprotocol>0</snmpv3_privprotocol>
|
||||
<snmpv3_privpassphrase/>
|
||||
<params/>
|
||||
<ipmi_sensor/>
|
||||
<authtype>0</authtype>
|
||||
<username/>
|
||||
<password/>
|
||||
<publickey/>
|
||||
<privatekey/>
|
||||
<port/>
|
||||
<description/>
|
||||
<inventory_link>0</inventory_link>
|
||||
<applications>
|
||||
<application>
|
||||
<name>Bareos clients</name>
|
||||
</application>
|
||||
</applications>
|
||||
<valuemap/>
|
||||
<logtimefmt/>
|
||||
<preprocessing/>
|
||||
<jmx_endpoint/>
|
||||
<timeout>3s</timeout>
|
||||
<url/>
|
||||
<query_fields/>
|
||||
<posts/>
|
||||
<status_codes>200</status_codes>
|
||||
<follow_redirects>1</follow_redirects>
|
||||
<post_type>0</post_type>
|
||||
<http_proxy/>
|
||||
<headers/>
|
||||
<retrieve_mode>0</retrieve_mode>
|
||||
<request_method>0</request_method>
|
||||
<output_format>0</output_format>
|
||||
<allow_traps>0</allow_traps>
|
||||
<ssl_cert_file/>
|
||||
<ssl_key_file/>
|
||||
<ssl_key_password/>
|
||||
<verify_peer>0</verify_peer>
|
||||
<verify_host>0</verify_host>
|
||||
<application_prototypes/>
|
||||
<master_item/>
|
||||
</item_prototype>
|
||||
</item_prototypes>
|
||||
<trigger_prototypes>
|
||||
<trigger_prototype>
|
||||
<expression>{Template_Bareos_Clients:bareos.clients.job.status[{#BAREOSCLIENT}, {#BAREOSJOB}].iregexp(".+e",#1)}=1</expression>
|
||||
<recovery_mode>0</recovery_mode>
|
||||
<recovery_expression/>
|
||||
<name>{HOSTNAME}. Статус задания {#BAREOSJOB} для {#BAREOSCLIENT}, ERROR</name>
|
||||
<correlation_mode>0</correlation_mode>
|
||||
<correlation_tag/>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>3</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<manual_close>1</manual_close>
|
||||
<dependencies/>
|
||||
<tags/>
|
||||
</trigger_prototype>
|
||||
<trigger_prototype>
|
||||
<expression>{Template_Bareos_Clients:bareos.clients.job.status[{#BAREOSCLIENT}, {#BAREOSJOB}].regexp(".+f",#1)}=1</expression>
|
||||
<recovery_mode>0</recovery_mode>
|
||||
<recovery_expression/>
|
||||
<name>{HOSTNAME}. Статус задания {#BAREOSJOB} для {#BAREOSCLIENT}, FATAL ERROR</name>
|
||||
<correlation_mode>0</correlation_mode>
|
||||
<correlation_tag/>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>3</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<manual_close>1</manual_close>
|
||||
<dependencies/>
|
||||
<tags/>
|
||||
</trigger_prototype>
|
||||
<trigger_prototype>
|
||||
<expression>{Template_Bareos_Clients:bareos.clients.job.status[{#BAREOSCLIENT}, {#BAREOSJOB}].iregexp(".+w",#1)}=1</expression>
|
||||
<recovery_mode>0</recovery_mode>
|
||||
<recovery_expression/>
|
||||
<name>{HOSTNAME}. Статус задания {#BAREOSJOB} для {#BAREOSCLIENT}, WARNING</name>
|
||||
<correlation_mode>0</correlation_mode>
|
||||
<correlation_tag/>
|
||||
<url/>
|
||||
<status>0</status>
|
||||
<priority>2</priority>
|
||||
<description/>
|
||||
<type>0</type>
|
||||
<manual_close>1</manual_close>
|
||||
<dependencies/>
|
||||
<tags/>
|
||||
</trigger_prototype>
|
||||
</trigger_prototypes>
|
||||
<graph_prototypes/>
|
||||
<host_prototypes/>
|
||||
<jmx_endpoint/>
|
||||
<timeout>3s</timeout>
|
||||
<url/>
|
||||
<query_fields/>
|
||||
<posts/>
|
||||
<status_codes>200</status_codes>
|
||||
<follow_redirects>1</follow_redirects>
|
||||
<post_type>0</post_type>
|
||||
<http_proxy/>
|
||||
<headers/>
|
||||
<retrieve_mode>0</retrieve_mode>
|
||||
<request_method>0</request_method>
|
||||
<allow_traps>0</allow_traps>
|
||||
<ssl_cert_file/>
|
||||
<ssl_key_file/>
|
||||
<ssl_key_password/>
|
||||
<verify_peer>0</verify_peer>
|
||||
<verify_host>0</verify_host>
|
||||
</discovery_rule>
|
||||
</discovery_rules>
|
||||
<httptests/>
|
||||
<macros/>
|
||||
<templates/>
|
||||
<screens/>
|
||||
</template>
|
||||
</templates>
|
||||
</zabbix_export>
|
123
bareos/bareos_get_all.sh
Executable file
123
bareos/bareos_get_all.sh
Executable file
@@ -0,0 +1,123 @@
|
||||
#!/bin/bash
|
||||
#-------------------------------------------------------------------
|
||||
# Скрипт для получения данных о клиентах и заданиях в Bareos
|
||||
# для использования в zabbix.
|
||||
#
|
||||
# Для работы нужен шаблон Template_Bareos_Clients.xml
|
||||
#-------------------------------------------------------------------
|
||||
# Author: Sergey Kalinin
|
||||
# https://nuk-svk.ru
|
||||
# svk@nuk-svk.ru
|
||||
#-------------------------------------------------------------------
|
||||
# Использование:
|
||||
# - Вывести список клиентов ввиде zabbix discovery JSON
|
||||
# bareos_get_all.sh clients-discovery
|
||||
#
|
||||
# - Вывести список названий заданий (job) для клиента
|
||||
# bareos_get_all.sh client-list-job _CLIENT_NAME_
|
||||
#
|
||||
# - Получить статусы всех заданий для клиента
|
||||
# bareos_get_all.sh client-get-jobs-status _CLIENT_NAME_
|
||||
#
|
||||
# - Получить статус задания
|
||||
# bareos_get_all.sh get-job-status _CLIENT_NAME_ _JOB_NAME_
|
||||
#
|
||||
# - Вывести количество задач с определенным статусом
|
||||
# bareos_get_all.sh count-jobs _JOB_STATUS
|
||||
#
|
||||
# Где:
|
||||
# _CLIENT_NAME_ - имя клиента в bareos
|
||||
# _JOB_NAME_ - название задачи в bareos
|
||||
# _JOB_STATUS_ - статус задания в терминах bareos:
|
||||
# T - Completed successfully
|
||||
# E - Terminated with errors
|
||||
# e - Non-fatal error
|
||||
# f - Fatal error
|
||||
# W - Terminated with warnings
|
||||
# (полный список доступен тут:
|
||||
# https://docs.bareos.org/Appendix/CatalogTables.html#jobstatus)
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
ZABBIX_AGENT=${ZABBIX_AGENT:-FALSE}
|
||||
ZABBIX_SENDER=${ZABBIX_SENDER:-/usr/bin/zabbix_sender}
|
||||
ZABBIX_AGENT_CONFIG=${ZABBIX_AGNT_CONFIG:-/etc/zabbix/zabbix_agentd.conf}
|
||||
ZABBIX_HOST="${ZABBIX_HOST:-bareos}"
|
||||
|
||||
ZABBIX_AGENT=${ZABBIX_AGENT:-FALSE}
|
||||
ZABBIX_SENDER=${ZABBIX_SENDER:-/usr/bin/zabbix_sender}
|
||||
ZABBIX_AGENT_CONFIG=${ZABBIX_AGNT_CONFIG:-/etc/zabbix/zabbix_agentd.conf}
|
||||
ZABBIX_HOST="${ZABBIX_HOST:-bareos}"
|
||||
|
||||
# За сколько дней выбирать задания
|
||||
JOB_AGE=2
|
||||
|
||||
case "$1" in
|
||||
get-clients-list)
|
||||
#echo "run"
|
||||
echo list clients | bconsole | cut -d '|' -f 3 -s | tr -d " " | grep -E '[[:alnum:]]' | grep -E -v "^name"
|
||||
;;
|
||||
clients-discovery)
|
||||
#CLIENTS_LIST=$(echo list clients | bconsole | cut -d '|' -f 3 -s | tr -d " " | grep -E '[[:alnum:]]' | grep -E -v "^name")
|
||||
#echo "${CLIENTS_LIST}"
|
||||
CLIENTS_LIST=$(${0} get-clients-list)
|
||||
CLIENTS_JSON="{\"data\":["
|
||||
for LINE in ${CLIENTS_LIST}; do
|
||||
JOB_NAMES=$($0 client-list-jobs ${LINE})
|
||||
CLIENTS_JSON="${CLIENTS_JSON}"
|
||||
for NAME in ${JOB_NAMES}; do
|
||||
CLIENTS_JSON="${CLIENTS_JSON} {\"{#BAREOSCLIENT}\":\"$LINE\", \"{#BAREOSJOB}\":\"$NAME\"},"
|
||||
done
|
||||
CLIENTS_JSON="${CLIENTS_JSON}"
|
||||
done
|
||||
JSON_STRING="$(echo $CLIENTS_JSON | sed 's/,\+$//') ]}"
|
||||
echo "$JSON_STRING"
|
||||
if [ "$ZABBIX_AGENT" = "FALSE" ]; then
|
||||
$ZABBIX_SENDER -vv -c $ZABBIX_AGENT_CONFIG -s "$ZABBIX_HOST" -k bareos.clients -o "${JSON_STRING}"
|
||||
fi
|
||||
;;
|
||||
client-list-jobs)
|
||||
echo list jobs client="$2" | bconsole | awk -F "|" '{print $3}' | tr -d " " | grep -E -v "(^$)|(^name)" | sort -u
|
||||
;;
|
||||
client-get-jobs-status)
|
||||
JOBS_LIST=$(${0} client-list-jobs ${2})
|
||||
for JOB in ${JOBS_LIST}; do
|
||||
${0} get-job-status ${2} ${JOB}
|
||||
done
|
||||
;;
|
||||
get-job-status)
|
||||
CLIENT=${2}
|
||||
JOB_NAME=${3}
|
||||
#JOB_STATUS=$(echo list job=\"${JOB_NAME}\" days=${JOB_AGE} | bconsole | awk -F "|" '{print $5 $10}' | grep -E -v "(^$)|(starttime)" | tail -1)
|
||||
JOB_STATUS=$(echo list job=\"${JOB_NAME}\" client=\"${CLIENT}\" | bconsole | awk -F "|" '{print $5 $10}' | grep -E -v "(^$)|(starttime)" | tail -1)
|
||||
|
||||
echo "${CLIENT} ${JOB_NAME} ${JOB_STATUS}"
|
||||
if [ "$ZABBIX_AGENT" = "FALSE" ]; then
|
||||
$ZABBIX_SENDER -c $ZABBIX_AGENT_CONFIG -s "$ZABBIX_HOST" -k "bareos.clients.job.status[${CLIENT}, ${JOB_NAME}]" -o "${JOB_STATUS}"
|
||||
fi
|
||||
;;
|
||||
jobs-list)
|
||||
JOB_STATUS="${1}"
|
||||
echo show jobs | bconsole | grep -i "^ name =" | cut -d '"' -f 2 | while read LINE; do
|
||||
if [[ $JOB_STATUS != "notrun" ]]; then
|
||||
echo list job=\"$LINE\" jobstatus=$JOB_STATUS | bconsole -c /etc/bareos/bconsole.conf | cut -d"|" -f10 -s | tr -d ' '| grep "^${JOB_STATUS}$" | while read RES; do
|
||||
# echo list job=\"$LINE\" | bconsole -c /etc/bareos/bconsole.conf | cut -d"|" -f10 | grep "${JOB_STATUS}" | while read RES; do
|
||||
if [[ -n $RES ]]
|
||||
then
|
||||
echo "${RES}"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
done
|
||||
;;
|
||||
get-all)
|
||||
CLIENTS_LIST=$(${0} get-clients-list)
|
||||
echo "${CLIENTS_LIST}"
|
||||
for CLIENT in ${CLIENTS_LIST}; do
|
||||
JOB_NAMES=$($0 client-list-jobs ${CLIENT})
|
||||
echo "${JOB_NAMES}"
|
||||
for JOB_NAME in ${JOB_NAMES}; do
|
||||
${0} get-job-status ${CLIENT} ${JOB_NAME}
|
||||
done
|
||||
done
|
||||
;;
|
||||
esac
|
Reference in New Issue
Block a user