- 命令行
export gghome=/ogg/12.3.0.1/GG_App1
export LD_LIBRARY_PATH=/ogg/12.3.0.1/GG_App1/lib:/u01/app/oracle/product/12.2.0.1/dbhome_1/lib
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH:${gghome}
export OGG_HOME=/opt/ogg-mysql
export LD_LIBRARY_PATH=$OGG_HOME/lib
${OGG_HOME}/ggsci << EOF |egrep 'EXTRACT|REPLICAT'|(awk '{print $1"|"$2"|"$3"|"$4"|"$5"|" (substr($4,1,2)*60)+substr($4,4,2)}')
info all
exit
EOF
${OGG_HOME}/ggsci << EOF |egrep -i 'EXTRACT|REPLICAT'|tr 'A-Z' 'a-z'| \
(awk '{gsub(/stopped|abended/,"0"); gsub(/running/,"1"); print $1"|"$2"|"$3"|"$4"|"$5"|" (substr($4,1,2)*60)+substr($4,4,2)}')
info all
exit
EOF
- http 方式
说明:本文测试于 19c 版本,其他版本未测试
#cat GLOBALS
GGSCHEMA ggadmin
ENABLEMONITORING UDPPORT 2009 HTTPPORT 2009
# ./ggsci
ggsci> start PMSRVR
# curl -v http://x.x.x.x:2009/groups
# 返回 xml 格式的文件内容
附录:JAGENT 配置方法(未测试)
cat jagent.prm
COMMAND /home/oracle/goldengate_19c/GGTGT/jdk/bin/java -Dconfig.dir=/home/oracle/gg_agent_inst/GGTGT/cfg -Djava.util.logging.config.class=oracle.core.ojdl.logging.LoggingConfiguration -Doracle.core.ojdl.logging.config.file=/home/oracle/gg_agent_inst/GGTGT/cfg/logging-config.xml -Doracle.core.ojdl.logging.componentId=JAGENT -jar -Xms512m -Xmx1024m /home/oracle/gg_monitor/oggmon/ogg_agent/dirjar/jagent.jar
https://dbatracker.com/2020/10/14/creating-monitor-agent-instance-and-discover-gg-targets/
https://chandu208.blogspot.com/2019/02/ogg-requested-url-is-not-serviced-by.html
http://chandu208.blogspot.com/2019/01/goldengate-performance-metric-server.html
- promethues
cat /app/sh/ogg_metric.sh
source /etc/profile
export OGG_HOME=/opt/ogg-mysql
export OGG_LABEL='label="ogg-mysql"'
set -e -o nounset # 变量未初始化自动退出,脚本中间执行异常也会自动退出
mkdir -p /app/prom.keys
output=/app/prom.keys/ogg.prom
exec > $output 2>&1
echo "# HELP ogg_lag_at_chkpt_sec OGG job lag by sec"
echo "# TYPE ogg_lag_at_chkpt_sec gauge"
echo "# HELP ogg_time_since_chkpt_sec OGG job lag by sec"
echo "# TYPE ogg_time_since_chkpt_sec gauge"
echo "# HELP ogg_up OGG job status active 1 for UP / 0 for DOWN"
echo "# TYPE ogg_up gauge"
${OGG_HOME}/ggsci << EOF |egrep -i 'EXTRACT|REPLICAT|PUMP'|tr 'A-Z' 'a-z'| \
(awk '{gsub(/stopped|abended/,"0"); gsub(/running/,"1"); \
print "ogg_up{" "svc=\"" $1 "\",name=\"" $3 "\"}" " " $2 "\n" \
"ogg_lag_at_chkpt_sec{" "svc=\"" $1 "\",name=\"" $3 "\"}" " " (substr($4,1,2)*60)+substr($4,4,2) "\n" \
"ogg_time_since_chkpt_sec{" "svc=\"" $1 "\",name=\"" $3 "\"}" " " (substr($5,1,2)*60)+substr($5,4,2)
}')
info all
exit
EOF
crontab -l
* * * * * /bin/bash /app/sh/ogg_metric.sh
#cat /usr/lib/systemd/system/node_exporter.service
[Unit]
Description=node_exporter
Documentation=https://prometheus.io/
After=network.target
[Service]
Type=simple
User=prometheus
ExecStart=/usr/local/node_exporter/node_exporter \
--web.listen-address=0.0.0.0:5003 \
--web.telemetry-path=/metrics \
--collector.textfile.directory=/app/prom.keys \
--log.level=info \
--log.format=logfmt
Restart=on-failure
[Install]
WantedBy=multi-user.target
# ogg.yaml
- name: OGG任务存活告警规则
rules:
- alert: OGG任务实例存活告警
expr: ogg_up == 0
for: 65s
labels:
app: "{{ $labels.app }}"
svc: "{{ $labels.svc }}"
name: "{{ $labels.name }}"
env : "{{ $labels.env }}"
severity: warning
annotations:
description: " {{ $labels.svc }}的{{ $labels.name }}无法工作超过1分钟"
- name: OGG任务延迟告警规则
rules:
- alert: OGG任务延迟存活告警
expr: ogg_lag_at_chkpt_sec > 600
for: 5s
labels:
app: "{{ $labels.app }}"
svc: "{{ $labels.svc }}"
name: "{{ $labels.name }}"
env : "{{ $labels.env }}"
severity: warning
annotations:
description: " {{ $labels.svc }}的{{ $labels.name }} 延迟超过10分钟"
#- name: OGG任务延迟告警规则
# rules:
- alert: OGG任务延迟存活告警
expr: ogg_time_since_chkpt_sec > 600
for: 5s
labels:
app: "{{ $labels.app }}"
svc: "{{ $labels.svc }}"
name: "{{ $labels.name }}"
env : "{{ $labels.env }}"
severity: warning
annotations:
description: " {{ $labels.svc }}的{{ $labels.name }} 延迟超过10分钟"
网友评论