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
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 :
- Exporte el archivo de tablespace a través de sqlplus spool y guárdelo en forma de texto (mornitor_tbs.sh).
- Escriba un shell para procesar archivos de texto en formato json (oracle_discovery.sh)
- 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