diff --git a/files/usr/lib/check_mk_agent/nrpe/check_oracle_db_segment_size.sh b/files/usr/lib/check_mk_agent/local/3600/check_oracle_db_segment_size.sh similarity index 91% rename from files/usr/lib/check_mk_agent/nrpe/check_oracle_db_segment_size.sh rename to files/usr/lib/check_mk_agent/local/3600/check_oracle_db_segment_size.sh index 89ddf79e73f087078356f5cf78e6de70bcd4d18b..ef5ec222bc188d8233c4bbdfbc05d49f92589021 100755 --- a/files/usr/lib/check_mk_agent/nrpe/check_oracle_db_segment_size.sh +++ b/files/usr/lib/check_mk_agent/local/3600/check_oracle_db_segment_size.sh @@ -13,7 +13,7 @@ scriptname=$( basename "${0}" ".sh" ) LOCKFILE="/var/lock/${scriptname}.lock" status=3 -itemname='oracle_segment_size' +itemname='Oracle database segment size' perf_values="-" # check if sqlplus is installed @@ -44,7 +44,7 @@ flock -n 9 || exit 1 statustext="Couldn' get used Oracle DB segments." fi - echo "${status} ${itemname} ${perf_values} ${statustext}" + echo "${status} '${itemname}' ${perf_values} ${statustext}" ) 9>"${LOCKFILE}" -# Code checked by shellcheck (https://github.com/koalaman/shellcheck) on 2020-12-02 +# Code checked by shellcheck (https://github.com/koalaman/shellcheck) on 2022-09-09 diff --git a/files/usr/lib/check_mk_agent/nrpe/check_oracle_db_table_integrity.sh b/files/usr/lib/check_mk_agent/local/3600/check_oracle_db_table_integrity.sh similarity index 85% rename from files/usr/lib/check_mk_agent/nrpe/check_oracle_db_table_integrity.sh rename to files/usr/lib/check_mk_agent/local/3600/check_oracle_db_table_integrity.sh index 7e77b01b825d88569ca90832c009b297579ecd28..466f2ff10416dbc8e5e3ecdc482dfdbec0c0ceea 100755 --- a/files/usr/lib/check_mk_agent/nrpe/check_oracle_db_table_integrity.sh +++ b/files/usr/lib/check_mk_agent/local/3600/check_oracle_db_table_integrity.sh @@ -13,7 +13,7 @@ scriptname=$( basename "${0}" ".sh" ) LOCKFILE="/var/lock/${scriptname}.lock" status=3 -itemname='oracle_tables_integrity' +itemname='Oracle corrupt table blocks' perf_values="-" # check if sqlplus is installed @@ -21,7 +21,7 @@ BINARY="$(su oracle -c 'command -v sqlplus')" [[ ${BINARY} ]] || exit 1 create_commandlist(){ - /bin/su - oracle -c"${BINARY} -S / as sysdba <<-EOF + /bin/su - oracle -c"${BINARY} -S / as sysdba <<-\"EOF\" /* shamelessly stolen (and adapted) from: https://oracle-base.com/dba/script?category=miscellaneous&file=analyze_all.sql @@ -29,6 +29,7 @@ create_commandlist(){ more documentation: https://www.oracle.com/technetwork/database/availability/corruption-bestpractices-12c-2141348.pdf */ + SET TERMOUT OFF SET PAGESIZE 0 SET FEEDBACK OFF SET VERIFY OFF @@ -43,13 +44,13 @@ create_commandlist(){ /* run the instructions Comment out following line to prevent immediate run */ - --@/tmp/${scriptname}.tempsql + /* --@/tmp/${scriptname}.tempsql */ SET PAGESIZE 14 SET FEEDBACK ON SET VERIFY ON exit; - EOF" + \"EOF\"" > /dev/null echo "exit;" >> "/tmp/${scriptname}.tempsql" } @@ -57,7 +58,7 @@ create_commandlist(){ # IMPORTANT: Set lock using "flock", NOT "touch"!!! It's atomic and doesn't have to be cleared after the script ran. ( flock -n 9 || exit 1 - if [[ ( ! -e "/tmp/${scriptname}.tempsql" ) && \ + if [[ ( ! -e "/tmp/${scriptname}.tempsql" ) || \ ( $(date -r "/tmp/${scriptname}.tempsql" +%s) -lt $(date -d 'now - 14 days' +%s) ) ]]; then create_commandlist fi @@ -70,8 +71,8 @@ flock -n 9 || exit 1 # - ORA-01578: ORACLE data block corrupted (file # string, block # string) # (https://docs.oracle.com/database/121/ERRMG/ORA-01500.htm#ERRMG-GUID-65B2B9E5-7075-4D53-91B8-FCAECA0AEE0E) # FEEL FREE TO ADD MORE ERRORS AS NECESSARY. - if [[ $( grep -q "ORA-01210" "/tmp/${scriptname}.log" ) || \ - $( grep -q "ORA-01578" "/tmp/${scriptname}.log" ) ]]; then + if grep -q "ORA-01210" "/tmp/${scriptname}.log" || \ + grep -q "ORA-01578" "/tmp/${scriptname}.log"; then ORACLE_OUTPUT=3 fi @@ -85,10 +86,10 @@ flock -n 9 || exit 1 statustext="Database integrity broken, please go look into that NOW!" fi - echo "${status} ${itemname} ${perf_values} ${statustext}" + echo "${status} '${itemname}' ${perf_values} ${statustext}" ) 9>"${LOCKFILE}" rm -f "/tmp/${scriptname}.tempsql" rm -f "/tmp/${scriptname}.log" -# Code checked by shellcheck (https://github.com/koalaman/shellcheck) on 2020-12-02 +# Code checked by shellcheck (https://github.com/koalaman/shellcheck) on 2022-09-09 diff --git a/tasks/oracle/install_checkmk_plugins_oracle.yml b/tasks/oracle/install_checkmk_plugins_oracle.yml index 5016ad695e7c5429795615ea37318151131a41b4..5327aca9ff4e26f566cd08258f0474170aacb309 100644 --- a/tasks/oracle/install_checkmk_plugins_oracle.yml +++ b/tasks/oracle/install_checkmk_plugins_oracle.yml @@ -1,21 +1,14 @@ --- - name: install self-developed Check_MK plugins for Oracle ansible.builtin.copy: - src: "{{ item }}" - dest: "/{{ item }}" + src: "usr/lib/check_mk_agent/local/3600/{{ item }}" + dest: "/usr/lib/check_mk_agent/local/3600/{{ item }}" owner: "root" group: "root" mode: "0750" loop: - - "usr/lib/check_mk_agent/nrpe/check_oracle_db_segment_size.sh" - - "usr/lib/check_mk_agent/nrpe/check_oracle_db_table_integrity.sh" - -- name: configure mrpe - ansible.builtin.blockinfile: - path: "/etc/check_mk/mrpe.cfg" - block: | - Get%20Oracle%20database%20segment%20size. (interval=3600) /usr/lib/check_mk_agent/nrpe/check_oracle_db_segment_size.sh - Find%20corrupt%20Oracle%20table%20blocks. (interval=3600) /usr/lib/check_mk_agent/nrpe/check_oracle_db_table_integrity.sh + - "check_oracle_db_segment_size.sh" + - "check_oracle_db_table_integrity.sh" # get vendor plugins straight from monitoring server to make sure we get the latest version - name: install vendor Check_MK plugins for Oracle