Oracle EBS データベース監視 - Zabbix+zabbix-agent2+orabbix

公式の Zabbix ソリューションでは、Oracle データベースを監視するために zabbix-agent2 と ODBC の使用が提供されていますが、サポートされているバージョンは 12.2 以降です。分析後、zabbix-agent2 のソース コードは、組み込みのOralce 12.2.json_object の新しい関数 json_table では、SQL を使用して、12.2 より前のバージョンにはこの関数が統合されていないことを確認します。そのため、公式ソリューションではより高いバージョンのみを監視でき、orabbix を使用して 12.2 より前のバージョンを監視できます。

基本コンポーネント - Zabbix サーバーのインストール

MySQL8.0のインストール

yum ソースのインストールを使用します。公式ドキュメントを参照してください。

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

このうち、8.0ではセキュリティ機構が強化されており、zabbix設定時のフロントエンド設定エラーを回避するために、設定ファイルにローカルログインを許可するパラメータを追加する必要があります。

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

Zabbixのインストール

Linux オペレーティング システムのバージョン: CentOS7 の制限により、Zabbix バージョン 5.0 のみをインストールできます。インストール手順については、公式ドキュメントを参照してください。

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

以下のコマンドを実行すると

# yum install zabbix-server-mysql zabbix-agent

次のように、zabbix-agent を zabbix-agent2 に変更します。

    # yum install zabbix-server-mysql zabbix-agent2

zabbix-agent2 には zabbix-agent の本来の機能だけでなく、データベース監視プラグインも統合されているためです。

また、データベース監視ユーザーを作成した後、パラメータ mysql_native_password を使用してパスワードを変更する必要があることにも注意してください。

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

Oracle のバージョン監視手順

Oracle データベースのさまざまなバージョンでは、公式の zabbix-agent2 とサードパーティの orabbix の 2 つのエージェントが使用されます。

公式の zabbix-agent2 Oralce データ取得プラグインは、12C の組み込み新関数 json_table および json_object を使用します。この関数はバージョン 12.1 から統合されたばかりで、SQL で検出されたデータを直接 json 形式にカプセル化して、 zabbix-server サーバー。

12.1 より前のバージョンにはこの機能が統合されていないため、公式の zabbix ソリューションはより高いバージョン (12.1 以降) のみを監視でき、orabbix は 12.1 より前のバージョンの監視に使用できます。

/usr/lib/systemd/system/zabbix-agent2.service を構成するもの

12.1以降

zabbix-agent2 を使用して Oracle の上位バージョンのデータベースを監視する

zabbix-agent2 を構成する

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 ~]# 

/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

パラメータ設定の表示

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

Oracle クライアントを構成する

rootユーザーで操作する

最新バージョンのクライアントをダウンロードするだけです。ドキュメントを参照してください:
https://docs.oracle.com/en/database/oracle/oracle-database/21/lacli/install-instant-client-using-zip.html# GUID-D3DCB4FB -D3CA-4C25-BE48-3A1FB5A22E84

LD_LIBRARY_PATH を構成するには、構成を構成ファイルに直接書き込む必要があります。

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

systemd 以外のシステムの場合は、
/etc/init.d/zabbix-agent2 ファイルの ### END INIT INFO 行の下に環境変数を追加します。

# 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

zabbix-agent2を再起動します

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

専用のデータベース ユーザーを作成する

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;

zabbix テンプレートを構成する

Zabbix5.0 には独自の Oracle 監視モジュールがすでに搭載されており、ホストを追加する場合は、Template DB Oracle by Zabbix Agent 2 テンプレートを選択します。
次に、以下の 4 つのマクロの値を設定します

構成マクロ

次に、以下に示すように実行されます。

12.1 以下のデータベース監視

orabbix モニタリングを使用した orabbix アーキテクチャは図に示されています
[外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-Q8x2AaYD-1637231332263) ) (http://www.smartmarmot.com/wiki /images/1/1f/Orabbix_architecture.png)]
インストール手順は次を参照してください: http://www.smartmarmot.com/wiki/index.php?title=Orabbix

公式 Web サイトにある既存のバージョンは zabbix 5.0 と互換性がありません。兄貴が再開発して github に公開しました。公式の既存の jar パッケージを orabbix-1.2.4w.jar に置き換えると動作します。
https://github.com/wanghy8166/orabbix/blob/master/orabbix-1.2.4w.jar

表領域の自動検出ルールを構成する

表スペースを追加するとき、SQL の一部を orabbix の SQL クエリ テンプレートに追加するのではなく、zabbix が追加した表スペースを自動的に認識して、監視項目を zabbix に追加したり、詳細設定などを実行できるようにしたいと考えています。ただし、ここには問題があり、自動検出ルール orabbix が実装されておらず、zabbix サーバーに json データを送信するために zabbix-agent を使用して二次設定を行う必要があります。 :

  1. sqlplus スプールを介してテーブルスペース ファイルをエクスポートし、テキスト形式 (mornitor_tbs.sh) で保存します。
  2. テキストファイルをjson形式に処理するシェルを作成します(oracle_discovery.sh)
  3. zabbix-agent クライアントを構成し、カスタマイズされた自動検出ルール (oracle_check.sh) を追加します。

3 つのスクリプトは次のとおりです。

monitor_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

これら 2 つのスクリプトを 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

oracle_discovery.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

zabbix 自動検出ルール、監視項目、およびアラームを構成する

自動検出ルールを構成する

3 つの監視項目を設定し、自動検出ルール内の監視項目のプロトタイプをクリックします。

テーブルスペース {#TABLESPACE} の使用率

テーブルスペース[{#TABLESPACE},autopercent]

テーブルスペースの最大容量 {#TABLESPACE}/M

テーブルスペース[{#TABLESPACE},maxmb]

テーブルスペース {#TABLESPACE} はすでに使用されています /M

テーブルスペース[{#TABLESPACE},使用済み]

トリガーアラートを構成する

テーブルスペース {#TABLESPACE} アラーム

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

グラフィックスの構成

グラフィックス集約効果を構成します。


EBS モニタリングを設定するには、次の 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

追加の参考資料:

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/archives/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

おすすめ

転載: blog.csdn.net/x6_9x/article/details/121407057