Supervisión de la base de datos Oracle EBS-Zabbix+zabbix-agent2+orabbix

La solución oficial de Zabbix proporciona el uso de zabbix-agent2 y ODBC para monitorear la base de datos de Oracle, pero la versión compatible es 12.2 y superior.Después del análisis, el código fuente de zabbix-agent2 es una parte del complemento de Oracle que usa un en la nueva función json_table de Oralce 12.2.json_object, use sql para descubrir que las versiones anteriores a la 12.2 no integran esta función, por lo que la solución oficial solo puede monitorear versiones superiores, y orabbix se puede usar para monitorear versiones anteriores a la 12.2.

Componentes básicos: instalación del servidor Zabbix

Instalación MySQL8.0

Use la instalación de la fuente yum, consulte el documento oficial

https://dev.mysql.com/doc/refman/8.0/en/linux-installation-yum-repo.html

Entre ellos, se ha actualizado el mecanismo de seguridad 8.0 Para evitar errores de configuración de front-end al configurar zabbix, se debe agregar un parámetro que permita el inicio de sesión local al archivo de configuración.

vi /etc/my.cnf
default_authentication_plugin=mysql_native_password
#重启数据库
systemctl restart  mysqld.service

instalación de Zabbix

Debido a la limitación de la versión del sistema operativo Linux: CentOS7, solo se puede instalar Zabbix versión 5.0 Para conocer los pasos de instalación, consulte la documentación oficial:

https://www.zabbix.com/download?zabbix=5.0&os_distribution=centos&os_version=7&db=mysql&ws=apache

Al ejecutar el siguiente comando

# yum install zabbix-server-mysql zabbix-agent

Cambie zabbix-agent a zabbix-agent2 de la siguiente manera:

    # yum install zabbix-server-mysql zabbix-agent2

Porque zabbix-agent2 no solo incluye las funciones originales de zabbix-agent, sino que también integra el complemento de monitoreo de base de datos.

También tenga en cuenta que después de crear el usuario de monitoreo de la base de datos, debe modificar la contraseña con el parámetro mysql_native_password:

ALTER USER 'zabbix'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Instrucciones de monitoreo de la versión de Oracle

Para diferentes versiones de la base de datos de Oracle, se utilizan dos agentes: el zabbix-agent2 oficial y el orabbix de terceros.

El complemento oficial de adquisición de datos de zabbix-agent2 Oralce utiliza una nueva función integrada json_table y json_object de 12 C. Esta función solo se ha integrado desde la versión 12.1 y encapsula directamente los datos detectados por sql en formato json y los envía al servidor zabbix-server.

Las versiones inferiores a 12.1 no integran esta función, por lo que la solución oficial de zabbix solo puede monitorear versiones superiores (12.1 y superiores), y orabbix se puede usar para monitorear versiones inferiores a 12.1.

Que configuran /usr/lib/systemd/system/zabbix-agent2.service

12.1 y superior

Use zabbix-agent2 para monitorear la base de datos de versión alta de Oracle

Configurar zabbix-agent2

Determine el archivo de configuración utilizado por ps -ef | grep zabbix_agent2

[root@test75v234 ~]# ps -ef | grep zabbix_agent2
zabbix    2166     1  0 Oct28 ?        01:46:47 /usr/sbin/zabbix_agent2 -c /etc/zabbix/zabbix_agent2.conf
root     19423 19352  0 16:06 pts/0    00:00:00 grep --color=auto zabbix_agent2
[root@test75v234 ~]# 

Modificar /etc/zabbix/zabbix_agent2.conf

sed -i 's/Server=127.0.0.1/Server=【改成zabbix server实际IP】/' /etc/zabbix/zabbix_agentd.conf
sed -i 's/ServerActive=127.0.0.1/ServerActive=【改成zabbix server实际IP】/' /etc/zabbix/zabbix_agentd.conf
sed -i 's/Hostname=Zabbix server/Hostname=【改成zabbix agent2所在的机器的hostname】/'  /etc/zabbix/zabbix_agentd.conf
sed -i 's/^# Plugins.Oracle.CallTimeout.*/Plugins.Oracle.CallTimeout=10/' /etc/zabbix/zabbix_agent2.conf
sed -i 's/^# Plugins.Oracle.ConnectTimeout.*/Plugins.Oracle.ConnectTimeout=1/' /etc/zabbix/zabbix_agent2.conf
sed -i 's/^# Plugins.Oracle.KeepAlive=300.*/Plugins.Oracle.KeepAlive=300/' /etc/zabbix/zabbix_agent2.conf

Ver configuración de parámetros

grep -Ev '^#|^$' /etc/zabbix/zabbix_agent2.conf

Configurar el cliente de Oracle

Operar bajo el usuario root

Simplemente descargue la última versión del cliente, consulte el documento:
https://docs.oracle.com/en/database/oracle/oracle-database/21/lacli/install-instant-client-using-zip.html# GUID-D3DCB4FB-D3CA-4C25-BE48-3A1FB5A22E84

La configuración de LD_LIBRARY_PATH requiere escribir la configuración directamente en el archivo de configuración

echo "LD_LIBRARY_PATH=/apps/oracle/instantclient:\$LD_LIBRARY_PATH" > /etc/sysconfig/zabbix-agent2

Para sistemas que no sean systemd,
agregue variables de entorno debajo de la línea ### END INIT INFO en el archivo /etc/init.d/zabbix-agent2

# export ORACLE_HOME=/apps/oracle
export LD_LIBRARY_PATH=/apps/oracle/instantclient:$LD_LIBRARY_PATH
# export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"
# export TNS_ADMIN=/apps/oracle/instantclient/network/admin

Reiniciar zabbix-agent2

systemctl daemon-reload
source /etc/profile
systemctl restart zabbix-agent2.service
ps -ef|grep zabbix

Crear un usuario de base de datos dedicado

alter session set container=orapdb1;--切换到PDB
CREATE USER zabbix_mon IDENTIFIED BY zabbix_mon;
GRANT CONNECT, CREATE SESSION TO zabbix_mon;
GRANT SELECT ON DBA_TABLESPACE_USAGE_METRICS TO zabbix_mon;
GRANT SELECT ON DBA_TABLESPACES TO zabbix_mon;
GRANT SELECT ON DBA_USERS TO zabbix_mon;
GRANT SELECT ON SYS.DBA_DATA_FILES TO zabbix_mon;
GRANT SELECT ON V_$ACTIVE_SESSION_HISTORY TO zabbix_mon;
GRANT SELECT ON V_$ARCHIVE_DEST TO zabbix_mon;
GRANT SELECT ON V_$ASM_DISKGROUP TO zabbix_mon;
GRANT SELECT ON V_$DATABASE TO zabbix_mon;
GRANT SELECT ON V_$DATAFILE TO zabbix_mon;
GRANT SELECT ON V_$INSTANCE TO zabbix_mon;
GRANT SELECT ON V_$LOG TO zabbix_mon;
GRANT SELECT ON V_$OSSTAT TO zabbix_mon;
GRANT SELECT ON V_$PGASTAT TO zabbix_mon;
GRANT SELECT ON V_$PROCESS TO zabbix_mon;
GRANT SELECT ON V_$RECOVERY_FILE_DEST TO zabbix_mon;
GRANT SELECT ON V_$RESTORE_POINT TO zabbix_mon;
GRANT SELECT ON V_$SESSION TO zabbix_mon;
GRANT SELECT ON V_$SGASTAT TO zabbix_mon;
GRANT SELECT ON V_$SYSMETRIC TO zabbix_mon;
GRANT SELECT ON V_$SYSTEM_PARAMETER TO zabbix_mon;

Configurar plantilla zabbix

Zabbix5.0 ya tiene su propio módulo de monitoreo de Oracle. Al agregar un host, seleccione la plantilla Template DB Oracle by Zabbix Agent 2.
Luego configure los valores de las siguientes cuatro macros

macro de configuración

Luego se hace como se muestra a continuación:

12.1 y por debajo de la supervisión de la base de datos

Usando el monitoreo de orabbix, la arquitectura de orabbix se muestra en la figura
[la transferencia de la imagen del enlace externo falló, el sitio de origen puede tener un mecanismo anti-leeching, se recomienda guardar la imagen y cargarla directamente (img-Q8x2AaYD-1637231332263 ) (http://www.smartmarmot.com/wiki /images/1/1f/Orabbix_architecture.png)]
Pasos de instalación ver: http://www.smartmarmot.com/wiki/index.php?title=Orabbix

La versión existente en el sitio web oficial no es compatible con zabbix 5.0. Un hermano mayor la volvió a desarrollar y la puso en github. Reemplace el paquete jar oficial existente con orabbix-1.2.4w.jar y funcionará.
https://github.com/wanghy8166/orabbix/blob/master/orabbix-1.2.4w.jar

Configurar reglas de descubrimiento automático de tablespace

Cuando agregamos un espacio de tabla, esperamos que zabbix pueda reconocer automáticamente el espacio de tabla que agregamos, en lugar de agregar un fragmento de sql a la plantilla de consulta de sql de orabbix, y luego agregar elementos de monitoreo a zabbix, configurar avanzado, etc. Pero hay un problema en este lugar, es decir, no se ha implementado la regla de descubrimiento automático orabbix, y es necesario usar zabbix-agent para realizar una configuración secundaria para enviar datos json al servidor de servicio zabbix.Los pasos son los siguientes :

  1. Exporte el archivo de tablespace a través de sqlplus spool y guárdelo en forma de texto (mornitor_tbs.sh).
  2. Escriba un shell para procesar archivos de texto en formato json (oracle_discovery.sh)
  3. Configure el cliente zabbix-agent y agregue reglas personalizadas de descubrimiento automático (oracle_check.sh)

Los tres guiones son los siguientes:

mornitor_tbs.sh

#此脚本需要放到crontab中调用  */10 * * * * /home/orasit/orabbix/monitor_tbs.sh > /home/orasit/orabbix/monitor_tbs.log
#!/bin/bash
source /home/orasit/.bash_profile
sqlplus -s apps/apps > /tmp/tablespace.log<<\EOF
set linesize 140 pagesize 10000
col "Status" for a10
col "Name" for a25
col "Type" for a10
col "Extent" for a15
SELECT d.status "Status",
       d.tablespace_name "Name",
       d.contents "Type",
       d.extent_management "Extent",
       ROUND(NVL(a.bytes, 0)) "Size (M)",
       ROUND(NVL(a.bytes - NVL(f.bytes, 0), 0)) "Used (M)",
       round(NVL((a.bytes - NVL(f.bytes, 0)) / a.bytes * 100, 0), 2) "Used %"
  FROM sys.dba_tablespaces d,
       (SELECT tablespace_name, SUM(DECODE(autoextensible, 'YES', maxbytes, 'NO', bytes))/1024/1024 bytes
          FROM dba_data_files
         GROUP BY tablespace_name) a,
       (SELECT tablespace_name, SUM(bytes)/1024/1024 bytes
          FROM dba_free_space
         GROUP BY tablespace_name) f
 WHERE d.tablespace_name = a.tablespace_name(+)
       AND d.tablespace_name = f.tablespace_name(+)
       --AND d.tablespace_name NOT IN ('SYSAUX', 'SYSTEM')
       AND NOT (d.extent_management LIKE 'LOCAL' AND d.contents LIKE 'TEMPORARY')
UNION ALL
SELECT d.status "Status",
       d.tablespace_name "Name",
       d.contents "Type",
       d.extent_management "Extent",
       ROUND(NVL(a.bytes, 0)) "Size (M)",
       ROUND(NVL(t.bytes, 0)) "Used (M)",
       round(NVL(t.bytes / a.bytes * 100, 0), 2) "Used %"
  FROM sys.dba_tablespaces d,
       (SELECT tablespace_name, SUM(bytes)/1024/1024 bytes
          FROM dba_temp_files
         GROUP BY tablespace_name) a,
       (SELECT tablespace_name, SUM(bytes_cached)/1024/1024 bytes
          FROM v$temp_extent_pool
         GROUP BY tablespace_name) t
 WHERE d.tablespace_name = a.tablespace_name(+)
       AND d.tablespace_name = t.tablespace_name(+)
       AND d.extent_management LIKE 'LOCAL'
       AND d.contents LIKE 'TEMPORARY'
 ORDER BY 7;
EOF
sed -i '$d' /tmp/tablespace.log
sed -i '$d' /tmp/tablespace.log
sed -i 's/,//g' /tmp/tablespace.log

Coloque estos dos scripts en el archivo de configuración de zabbix-agent (/etc/zabbix/zabbix_agentd.conf)

#在/etc/zabbix/zabbix_agentd.conf最后加入
#表空间自动发现及告警
UserParameter=ora.tbs.discovery,/etc/zabbix/zabbix_agentd.d/oracle_discovery.sh
UserParameter=tablespace[*],/etc/zabbix/zabbix_agentd.d/oracle_check.sh $1 $2

descubrimiento_de_oracle.sh

#!/bin/bash
TABLESPACE=`cat /tmp/tablespace.log |awk '{print$2}'|awk 'NR>3{print}'`
COUNT=`echo "$TABLESPACE" |wc -l`
INDEX=0
echo '{"data":['
echo "$TABLESPACE" | while read LINE; do
echo -n '{"{#TABLESPACE}":"'$LINE'"}'
INDEX=`expr $INDEX + 1`
if [ $INDEX -lt $COUNT ]; then
echo ','
fi
done
echo ']}'

oracle_check.sh

#!/bin/bash
EQ_DATA="$2"
ZBX_REQ_DATA_TAB="$1"
SOURCE_DATA=/tmp/tablespace.log
case $2 in
maxmb) grep -Ew "$ZBX_REQ_DATA_TAB" $SOURCE_DATA |awk '{print $5}';;
used) grep -Ew "$ZBX_REQ_DATA_TAB" $SOURCE_DATA |awk '{print $6}';;
autopercent) grep -Ew "$ZBX_REQ_DATA_TAB" $SOURCE_DATA |awk '{print $7}';;
*) echo $ERROR_WRONG_PARAM; exit 1;;
esac
exit 0

Configure las reglas de descubrimiento automático de zabbix, los elementos de monitoreo y las alarmas

Configurar reglas de detección automática

Configure 3 elementos de monitoreo y haga clic en el prototipo del elemento de monitoreo en la regla de detección automática:

Uso del espacio de tablas {#TABLESPACE}

espacio de tablas [{#TABLESPACE}, autopercent]

Capacidad máxima de espacio de tablas {#TABLESPACE}/M

espacio de tablas [{#ESPACIO DE MESA}, maxmb]

Tablespace {#TABLESPACE} ya utilizado /M

espacio de tabla[{#TABLESPACE},usado]

Configurar alertas de activación

Alarma de TableSpace {#TABLESPACE}

{Template_Oracle-orabbix:tablespace[{#TABLESPACE},autopercent].last()}>95

Configurar gráficos

Configure el efecto de agregación de gráficos:


Para configurar el monitoreo de EBS, puede consultar el siguiente SQL:

https://github.com/ikzelf/zbxdb/blob/master/etc/zbxdb_checks/oracle/ebs.cfg

https://github.com/ikzelf/zbxdb/blob/master/etc/zbxdb_checks/oracle/primary.11.cfg

Referencias adicionales:

https://oracle-base.com/articles/misc/an-introduction-to-json-support-in-the-oracle-database#json-support-in-12c
https://seeyon.ren/blog/index .php/archivos/223/

https://blog.51cto.com/u_5646435/3170513

https://blog.cactifans.com/2020/05/19/Zabbix5.0%E7%89%88%E6%9C%ACAgent2%E5%AE%89%E8%A3%85/

https://bbs.huaweicloud.com/blogs/249319

https://blog.csdn.net/qq_22894935/article/details/115544995

https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/

https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/db/oracle_agent2?at=release/5.4

https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/src/go/plugins/oracle/README.md

https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/src/go/plugins/oracle

https://www.cnblogs.com/kerrycode/p/13368640.html

Supongo que te gusta

Origin blog.csdn.net/x6_9x/article/details/121407057
Recomendado
Clasificación