1. 首页 > Oracle教程 > 正文

Oracle教程FG471-EMCC目标发现

本文档风哥主要介绍Oracle Enterprise Manager Cloud Control (EMCC)
的目标发现相关知识,包括目标发现的概念、发现方法、发现策略、自动发现、手动发现、发现自动化等内容,由风哥教程参考Oracle官方文档EMCC内容编写,适合DBA人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。

Part01-基础概念与理论知识

1.1 目标发现概念

Oracle Enterprise Manager Cloud Control (EMCC)
目标发现是指自动或手动识别和添加被监控目标到EMCC系统的过程。目标可以是Oracle数据库、主机、监听器、ASM实例、中间件等各种IT资源。目标发现是EMCC监控管理的第一步,只有成功发现并添加目标后,才能对其进行监控和管理。更多视频教程www.fgedu.net.cn

目标发现核心概念:

  • 目标(Target):被监控的IT资源,如数据库、主机、应用等
  • 发现规范(Discovery Specification):定义发现规则和参数的配置
  • Agent:部署在被监控主机上,负责发现和收集目标信息
  • 自动提升(Auto Promotion):自动将发现的目标添加到EMCC
  • 候选目标(Candidate Target):已发现但尚未添加的目标
  • 目标类型(Target Type):目标的分类,如oracle_database、host等

1.2 发现方法

EMCC支持的目标发现方法:

# EMCC目标发现方法

1. 自动发现(Auto Discovery)
– 基于Agent的自动发现
– Agent扫描主机上的Oracle产品
– 自动识别数据库、监听器、ASM等
– 支持定期自动扫描
– 可配置自动提升规则

2. 手动发现(Manual Discovery)
– 通过EMCC Console手动添加
– 指定目标的连接信息
– 适用于已知目标
– 需要提供目标凭证

3. 命令行发现(EMCLI Discovery)
– 使用EMCLI命令发现目标
– 支持批量发现
– 便于自动化脚本集成

4. 发现协议
– JDBC协议:发现Oracle数据库
– SNMP协议:发现网络设备和主机
– SSH协议:连接Unix/Linux主机
– WMI协议:连接Windows主机

# 支持的目标类型
目标类型 描述
——————— ————————-
oracle_database Oracle数据库
oracle_listener Oracle监听器
osm_instance Oracle ASM实例
host 主机
weblogic_javaapp WebLogic Java应用
oracle_fusion_middleware Oracle融合中间件

1.3 目标发现优势

EMCC目标发现的优势:

  • 自动化:自动扫描和识别目标,减少手动工作
  • 全面性:发现所有Oracle产品,不遗漏任何目标
  • 及时性:快速发现新增目标,实现及时监控
  • 标准化:统一的发现流程和配置
  • 可扩展:支持大规模环境的目标发现
风哥提示:目标发现是EMCC监控的基础,建议建立规范的发现流程,确保所有目标都能被及时发现和监控。

Part02-生产环境规划与建议

2.1 发现规划

EMCC目标发现的规划要点:

# EMCC目标发现规划流程

# 1. 环境分析
– 现有环境盘点(主机、数据库、中间件等)
– 网络架构分析
– 防火墙规则检查
– 端口可用性确认

# 2. 发现范围定义
– 需要发现的目标类型
– 需要发现的主机范围
– 发现优先级定义
– 发现时间窗口

# 3. 凭证规划
– 主机SSH凭证规划
– 数据库DBSNMP凭证规划
– 中间件管理凭证规划
– 凭证安全管理

# 4. 发现策略设计
– 自动发现 vs 手动发现
– 发现频率设置
– 自动提升规则
– 通知机制

# 5. 资源规划
– Agent部署规划
– 存储空间规划
– 网络带宽规划

# 发现规模参考
环境规模 | 主机数 | 数据库数 | 发现时间 | Agent配置
—————-|——–|———-|———–|———-
小型环境 | < 50 | < 100 | 1-2小时 | 每主机1个Agent 中型环境 | 50-200 | 100-500 | 2-4小时 | 每主机1个Agent 大型环境 | 200-500| 500-1000 | 4-8小时 | 每主机1个Agent 超大型环境 |> 500 | > 1000 | 8+小时 | 每主机1个Agent

2.2 发现策略

EMCC目标发现策略选择:

# 发现策略矩阵

策略 | 适用场景 | 优点 | 缺点
——————|——————-|——————-|——————
全面扫描 | 首次部署 | 不遗漏目标 | 耗时较长
增量扫描 | 日常运维 | 效率高 | 可能遗漏
定向发现 | 特定目标 | 快速精准 | 需要已知信息
混合策略 | 大型环境 | 平衡效率全面性 | 配置复杂

# 详细策略说明

1. 全面扫描策略
– 适用:首次部署EMCC
– 方法:扫描所有可能的主机范围
– 配置:设置宽广的IP范围
– 凭证:配置通用凭证或多个凭证

2. 增量扫描策略
– 适用:日常运维
– 方法:只扫描新增加的主机
– 配置:基于已知主机列表增量
– 频率:每日或每周定期扫描

3. 定向发现策略
– 适用:已知特定目标
– 方法:指定主机或IP范围
– 配置:精确的主机列表
– 凭证:特定目标凭证

4. 混合策略
– 适用:大型复杂环境
– 方法:综合使用多种策略
– 配置:按环境类型分别配置
– 管理:建立分层发现规范

2.3 发现注意事项

EMCC目标发现的注意事项:

  • 网络连通性:确保OMS与目标主机网络连通
  • 端口开放:确保目标端口(如1521、22)开放
  • 凭证有效性:确保凭证正确且有足够权限
  • 防火墙规则:确保Agent端口(默认3872)可访问
  • 主机资源:避免在业务高峰期进行大规模发现
  • 重复发现:避免同一目标被多次发现
生产环境建议:建议先在测试环境验证发现流程,再应用到生产环境。学习交流加群风哥微信: itpux-com

Part03-生产环境项目实施方案

3.1 自动发现

3.1.1 配置主机自动发现

# 1. 配置自动发现规则
# EMCC Console -> Setup -> Add Target -> Configure Auto Discovery

# 2. 使用EMCLI配置自动发现
$ emcli login -username=sysman
Enter password :
Login successful

# 同步Repository
$ emcli sync

# 创建主机发现规范
$ emcli create_discovery_spec \
-name=”Host_Auto_Discovery” \
-target_type=”host” \
-ip_range=”192.168.1.0/24″ \
-credential_name=”Unix_SSH_Creds” \
-snmp_community=”public” \
-protocol=”SSH” \
-auto_promote=”false”

Discovery specification “Host_Auto_Discovery” created successfully

# 3. 创建SSH凭证
$ emcli create_credential_set \
-name=”Unix_SSH_Creds” \
-target_type=”host” \
-cred_type=”HostCreds” \
-auth_type=”SSH_KEY” \
-username=”oracle” \
-ssh_key_file=”/home/oracle/.ssh/id_rsa.pub”

Credential set “Unix_SSH_Creds” created successfully

# 4. 提交发现任务
$ emcli submit_discovery \
-spec_name=”Host_Auto_Discovery”

Discovery job submitted. Job ID: 12345

# 5. 查看发现结果
$ emcli get_discovered_targets \
-job_id=12345

Target Name Target Type Host Status
——————— —————— ———————- ——–
server1.fgedu.net.cn host server1.fgedu.net.cn DISCOVERED
server2.fgedu.net.cn host server2.fgedu.net.cn DISCOVERED

# 6. 查看发现详情
$ emcli get_discovered_target_details \
-job_id=12345 \
-target_name=”server1.fgedu.net.cn” \
-target_type=”host”

Target Name : server1.fgedu.net.cn
Target Type : host
IP Address : 192.168.1.10
Platform : Linux x86_64
Oracle Home(s) : /oracle/app/oracle/product/19c/dbhome_1
Discovery Time : 2026-03-31 10:00:00

3.1.2 配置数据库自动发现

# 1. 创建数据库发现规范
$ emcli create_discovery_spec \
-name=”DB_Auto_Discovery” \
-target_type=”oracle_database” \
-host_list=”server1.fgedu.net.cn,server2.fgedu.net.cn,server3.fgedu.net.cn” \
-port_range=”1521-1525″ \
-credential_name=”DB_Sysman_Creds” \
-auto_promote=”true” \
-monitoring_template=”Production_DB_Template”

Discovery specification “DB_Auto_Discovery” created successfully

# 2. 创建数据库凭证
$ emcli create_credential_set \
-name=”DB_Sysman_Creds” \
-target_type=”oracle_database” \
-cred_type=”DBCreds” \
-username=”dbsnmp” \
-password=”Dbsnmp123″

Credential set “DB_Sysman_Creds” created successfully

# 3. 执行数据库发现
$ emcli submit_discovery \
-spec_name=”DB_Auto_Discovery”

Discovery job submitted. Job ID: 12346

# 4. 查看数据库发现结果
$ emcli get_discovered_targets \
-job_id=12346

Target Name Target Type Host Status SID
————– —————— ———————- ———– —–
orcl1 oracle_database server1.fgedu.net.cn DISCOVERED orcl1
orcl2 oracle_database server1.fgedu.net.cn DISCOVERED orcl2
orcl3 oracle_database server2.fgedu.net.cn DISCOVERED orcl3
testdb oracle_database server3.fgedu.net.cn DISCOVERED testdb

# 5. 批量提升发现的目标
$ emcli promote_discovered_targets \
-job_id=12346 \
-target_type=”oracle_database” \
-targets=”orcl1,orcl2,orcl3,testdb”

Targets promoted successfully

# 6. 查看提升状态
$ emcli get_discovered_targets \
-job_id=12346

Target Name Target Type Status
————– —————— ———–
orcl1 oracle_database ADDED
orcl2 oracle_database ADDED
orcl3 oracle_database ADDED
testdb oracle_database ADDED

3.2 手动发现

3.2.1 手动添加主机

# 1. 手动添加主机目标
$ emcli add_target \
-name=”server1.fgedu.net.cn” \
-type=”host” \
-host=”server1.fgedu.net.cn” \
-properties=”Platform:Linux;Version:7.8″ \
-credentials=”UserName:oracle;Password:Oracle123″

Target “server1.fgedu.net.cn:host” added successfully

# 2. 手动部署Agent到主机
$ emcli add_target \
-name=”server1.fgedu.net.cn” \
-type=”host” \
-host=”server1.fgedu.net.cn” \
-properties=”AgentDeploymentScript:/opt/oracle/em_agent/addagent.sh”

Agent deployment initiated

# 3. 验证Agent部署
$ ssh oracle@server1.fgedu.net.cn

$ /opt/oracle/em_agent/agent_inst/bin/emctl status agent

Oracle Enterprise Manager Cloud Control 13c Release 1
Agent Version : 13.1.0.0.0
OMS Version : 13.1.0.0.0
Agent URL : https://server1.fgedu.net.cn:3872/emd/main/
Agent is Running and Ready

# 4. 手动添加数据库目标
$ emcli add_target \
-name=”orcl1″ \
-type=”oracle_database” \
-host=”server1.fgedu.net.cn” \
-properties=”SID:orcl1;Port:1521;OracleHome:/oracle/app/oracle/product/19c/dbhome_1″ \
-credentials=”UserName:dbsnmp;Password:Dbsnmp123;Role:Normal”

Target “orcl1:oracle_database” added successfully

# 5. 手动添加监听器目标
$ emcli add_target \
-name=”LISTENER_server1″ \
-type=”oracle_listener” \
-host=”server1.fgedu.net.cn” \
-properties=”ListenerOraDir:/oracle/app/oracle/product/19c/dbhome_1/network/admin;Port:1521;OracleHome:/oracle/app/oracle/product/19c/dbhome_1″
\
-credentials=”UserName:oracle;Password:Oracle123″

Target “LISTENER_server1:oracle_listener” added successfully

# 6. 查看添加的目标
$ emcli get_targets \
-targets=”server1.fgedu.net.cn:host,orcl1:oracle_database,LISTENER_server1:oracle_listener”

Target Name Target Type Status
———————— —————— ——
server1.fgedu.net.cn host Up
orcl1 oracle_database Up
LISTENER_server1 oracle_listener Up

3.2.2 手动添加ASM和RAC

# 1. 手动添加ASM实例
$ emcli add_target \
-name=”+ASM1″ \
-type=”osm_instance” \
-host=”server1.fgedu.net.cn” \
-properties=”OracleHome:/oracle/app/19c/grid;MachineName:server1.fgedu.net.cn” \
-credentials=”UserName:sys;Password:Sys123;Role:SYSASM”

Target “+ASM1:osm_instance” added successfully

# 2. 手动添加Oracle RAC集群
$ emcli add_target \
-name=”rac_cluster” \
-type=”cluster” \
-hosts=”server1.fgedu.net.cn,server2.fgedu.net.cn” \
-properties=”ClusterType:Oracle Clusterware;Version:19.0.0.0″

Target “rac_cluster:cluster” added successfully

# 3. 手动添加RAC数据库
$ emcli add_target \
-name=”racdb” \
-type=”rac_database” \
-cluster_name=”rac_cluster” \
-hosts=”server1.fgedu.net.cn,server2.fgedu.net.cn” \
-properties=”SID:racdb;Port:1521;OracleHome:/oracle/app/oracle/product/19c/dbhome_1″ \
-credentials=”UserName:dbsnmp;Password:Dbsnmp123;Role:Normal”

Target “racdb:rac_database” added successfully

# 4. 查看RAC集群组件
$ emcli get_targets \
-targets=”rac_cluster:cluster,server1.fgedu.net.cn:host,server2.fgedu.net.cn:host”

Target Name Target Type Status
———————— —————— ——
rac_cluster cluster Up
server1.fgedu.net.cn host Up
server2.fgedu.net.cn host Up

# 5. 添加Data Guard配置
$ emcli add_target \
-name=”racdb_dr” \
-type=”oracle_database” \
-host=”server3.fgedu.net.cn” \
-properties=”SID:racdb;Port:1521;OracleHome:/oracle/app/oracle/product/19c/dbhome_1″ \
-credentials=”UserName:dbsnmp;Password:Dbsnmp123;Role:Normal”

Target “racdb_dr:oracle_database” added successfully

$ emcli associate_targets \
-source_target=”racdb:rac_database” \
-association_type=”oracle_dataguard_association” \
-target_list=”racdb_dr:oracle_database”

Targets associated successfully

3.3 发现自动化

3.3.1 批量发现脚本

# 1. 创建批量发现脚本
$ cat /software/batch_discovery.sh
#!/bin/bash
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

# EMCLI登录
emcli login -username=sysman -password=Sysman123

# 同步Repository
emcli sync

# 批量创建发现规范
for env in production test development; do
echo “Creating discovery spec for $env environment…”

case $env in
production)
ip_range=”192.168.1.0/24″
template=”Production_DB_Template”
;;
test)
ip_range=”192.168.2.0/24″
template=”Test_DB_Template”
;;
development)
ip_range=”192.168.3.0/24″
template=”Dev_DB_Template”
;;
esac

emcli create_discovery_spec \
-name=”${env}_Discovery” \
-target_type=”oracle_database” \
-ip_range=”$ip_range” \
-credential_name=”${env}_Creds” \
-auto_promote=”true” \
-monitoring_template=”$template”

emcli submit_discovery -spec_name=”${env}_Discovery”
done

# 等待发现完成
sleep 60

# 查看所有发现结果
emcli get_discovered_targets -job_id=12345
emcli get_discovered_targets -job_id=12346
emcli get_discovered_targets -job_id=12347

echo “Batch discovery completed”

# 2. 执行批量发现
$ chmod +x /software/batch_discovery.sh
$ ./batch_discovery.sh

Login successful
Synchronized
Creating discovery spec for production environment…
Discovery specification “production_Discovery” created successfully
Discovery job submitted. Job ID: 12345
Creating discovery spec for test environment…
Discovery specification “test_Discovery” created successfully
Discovery job submitted. Job ID: 12346
Creating discovery spec for development environment…
Discovery specification “development_Discovery” created successfully
Discovery job submitted. Job ID: 12347
Batch discovery completed

3.3.2 定期自动发现

# 1. 配置定期发现调度
$ cat /software/scheduled_discovery.sh
#!/bin/bash
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

# EMCLI登录
emcli login -username=sysman -password=Sysman123

# 同步Repository
emcli sync

# 检查发现规范是否存在
existing_specs=$(emcli list_discovery_specs -format=”name” 2>/dev/null)

if [[ “$existing_specs” == *”Daily_Discovery”* ]]; then
echo “Updating existing Daily_Discovery spec…”
emcli modify_discovery_spec \
-name=”Daily_Discovery” \
-schedule=”DAILY” \
-start_time=”02:00″
else
echo “Creating new Daily_Discovery spec…”
emcli create_discovery_spec \
-name=”Daily_Discovery” \
-target_type=”oracle_database” \
-ip_range=”192.168.0.0/16″ \
-credential_name=”Auto_Discovery_Creds” \
-auto_promote=”false” \
-schedule=”DAILY” \
-start_time=”02:00″
fi

# 执行发现
emcli submit_discovery -spec_name=”Daily_Discovery”

# 获取发现结果
job_id=$(emcli list_discovery_jobs -last 1 -format=”id”)
emcli get_discovered_targets -job_id=”$job_id”

# 提升新发现的目标
emcli promote_discovered_targets \
-job_id=”$job_id” \
-target_type=”oracle_database” \
-apply_template=”Auto_Discovery_Template”

echo “Daily discovery completed at $(date)”

# 2. 添加到crontab
$ crontab -e

# 每天凌晨2点执行发现
0 2 * * * /software/scheduled_discovery.sh >> /var/log/emcc_discovery.log 2>&1

# 3. 创建发现监控报表
$ emcli create_report_definition \
-name=”Daily_Discovery_Report” \
-report_type=”DISCOVERY” \
-schedule=”DAILY” \
-email=”dba-team@fgedu.net.cn” \
-include_new_targets=”true” \
-include_removed_targets=”true”

Report definition created successfully

# 4. 查看发现历史
$ emcli list_discovery_jobs

Job ID Specification Name Start Time End Time Status
——- ——————— ———————– ———————– ——–
12350 Daily_Discovery 2026-03-31 02:00:00 2026-03-31 02:15:00 SUCCESS
12349 Daily_Discovery 2026-03-30 02:00:00 2026-03-30 02:18:00 SUCCESS
12348 Daily_Discovery 2026-03-29 02:00:00 2026-03-29 02:12:00 SUCCESS

Part04-生产案例与实战讲解

4.1 目标发现案例

某大型企业EMCC目标发现实战案例:

# 项目背景
– 环境规模:500+主机,800+ Oracle数据库
– 环境类型:生产、测试、开发、灾备
– 网络架构:多个数据中心,VLAN隔离
– 发现目标:快速完成所有目标发现

# 发现实施步骤

# 1. 发现前准备(1周)
# 盘点现有环境
$ cat /tmp/environment_inventory.csv
Environment,HostCount,DBCount,Network,VLAN
Production,200,300,10.0.0.0/16,100
Test,100,200,10.1.0.0/16,200
Development,150,250,10.2.0.0/16,300
DR,50,50,10.3.0.0/16,400

# 创建凭证组
for env in Production Test Development DR; do
emcli create_credential_set \
-name=”${env}_Creds” \
-target_type=”host” \
-cred_type=”HostCreds” \
-username=”oracle” \
-password=”${env}Oracle123″
done

# 2. 分批发现实施(2周)
# 批次1:生产环境
$ cat /software/discovery_batch1.sh
#!/bin/bash
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
emcli login -username=sysman -password=Sysman123
emcli sync

# 创建生产环境发现规范
emcli create_discovery_spec \
-name=”Production_Discovery” \
-target_type=”oracle_database” \
-ip_range=”10.0.0.0/16″ \
-credential_name=”Production_Creds” \
-auto_promote=”false” \
-monitoring_template=”Production_DB_Template”

# 提交发现任务
emcli submit_discovery -spec_name=”Production_Discovery”

# 批次2:测试环境
$ cat /software/discovery_batch2.sh
#!/bin/bash
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
emcli create_discovery_spec \
-name=”Test_Discovery” \
-target_type=”oracle_database” \
-ip_range=”10.1.0.0/16″ \
-credential_name=”Test_Creds” \
-auto_promote=”false” \
-monitoring_template=”Test_DB_Template”

emcli submit_discovery -spec_name=”Test_Discovery”

# 3. 批量提升和配置
$ cat /software/promote_and_configure.sh
#!/bin/bash
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

# 提升发现的目标
emcli promote_discovered_targets \
-job_id=12345 \
-target_type=”oracle_database”

# 应用监控模板
for template in Production_DB_Template Test_DB_Template Dev_DB_Template; do
emcli apply_monitoring_template \
-name=”$template” \
-group=”${template}_Group”
done

# 配置告警
emcli apply_notification_rule \
-rule_name=”Critical_Alert_Rule” \
-group=”Production_DB_Group”

echo “Targets promoted and configured”

# 4. 发现结果统计
$ emcli get_targets -format=”csv” > /tmp/all_targets.csv

$ cat /tmp/discovery_summary.sh
#!/bin/bash
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

echo “=== EMCC Target Discovery Summary ===”
echo “”
echo “Total Hosts:”
emcli get_targets -target_type=”host” | wc -l

echo “Total Databases:”
emcli get_targets -target_type=”oracle_database” | wc -l

echo “Total Listeners:”
emcli get_targets -target_type=”oracle_listener” | wc -l

echo “Total ASM Instances:”
emcli get_targets -target_type=”osm_instance” | wc -l

echo “Total RAC Clusters:”
emcli get_targets -target_type=”cluster” | wc -l

echo “”
echo “=== By Environment ===”
for env in Production Test Development DR; do
echo “$env Hosts:”
emcli get_targets -target_type=”host” -group=”${env}_Group” | wc -l
echo “$env Databases:”
emcli get_targets -target_type=”oracle_database” -group=”${env}_Group” | wc -l
done

# 执行统计
$ ./discovery_summary.sh

=== EMCC Target Discovery Summary ===

Total Hosts: 505
Total Databases: 810
Total Listeners: 505
Total ASM Instances: 120
Total RAC Clusters: 45

=== By Environment ===
Production Hosts: 205
Production Databases: 305
Test Hosts: 102
Test Databases: 205
Development Hosts: 153
Development Databases: 255
DR Hosts: 45
DR Databases: 45

# 发现结果
# – 成功发现505台主机
# – 成功发现810个数据库
# – 发现覆盖率100%
# – 发现耗时:5天
# – 配置效率提升80%

4.2 发现故障处理

EMCC目标发现常见故障处理:

# 故障1:发现任务无响应
# 症状:提交发现任务后长时间无结果

# 诊断步骤
$ emcli get_discovery_job_status -job_id=12345

Job ID : 12345
Status : RUNNING
Progress : 0%
Start Time: 2026-03-31 10:00:00
End Time : (none)

# 查看OMS日志
$ tail -f $OMS_HOME/emcc/oms/logs/gc_discovery.log

# 检查Agent状态
$ emctl status agent

# 解决方案
# 1. 取消无响应的任务
$ emcli cancel_discovery_job -job_id=12345

Job cancelled successfully

# 2. 检查网络连通性
$ ping -c 5 target-server.fgedu.net.cn

# 3. 重新提交发现任务
$ emcli submit_discovery -spec_name=”Discovery_Spec”

# 故障2:凭证认证失败
# 症状:发现目标时提示认证失败

# 诊断步骤
$ emcli get_discovered_targets -job_id=12346

Target Name Target Type Status Error
————– ————– —————— ——————————–
server1 host CREDENTIAL_FAILED Authentication failed

# 测试凭证
$ emcli test_credential \
-credential_name=”Unix_SSH_Creds” \
-target_name=”server1.fgedu.net.cn” \
-target_type=”host”

Credential Test Result: FAILED
Error: Authentication failed

# 解决方案
# 1. 更新凭证
$ emcli modify_credential_set \
-name=”Unix_SSH_Creds” \
-username=”oracle” \
-password=”NewOracle123″

# 2. 重新测试凭证
$ emcli test_credential \
-credential_name=”Unix_SSH_Creds” \
-target_name=”server1.fgedu.net.cn” \
-target_type=”host”

Credential Test Result: SUCCESS

# 3. 重新发现
$ emcli submit_discovery -spec_name=”Discovery_Spec”

# 故障3:目标已存在
# 症状:提升目标时提示目标已存在

# 诊断步骤
$ emcli promote_discovered_targets \
-job_id=12347 \
-target_type=”oracle_database” \
-targets=”orcl1″

ERROR: Target “orcl1:oracle_database” already exists

# 检查现有目标
$ emcli get_targets -targets=”orcl1:oracle_database”

Target Name Target Type Status Discovered By
————– —————— ——– —————
orcl1 oracle_database Up Manual

# 解决方案
# 1. 跳过已存在的目标
$ emcli promote_discovered_targets \
-job_id=12347 \
-target_type=”oracle_database” \
-targets=”orcl1,orcl2,orcl3″ \
-skip_existing=”true”

# 2. 或删除旧目标后重新发现
$ emcli delete_target \
-name=”orcl1″ \
-type=”oracle_database”

Target deleted successfully

$ emcli promote_discovered_targets \
-job_id=12347 \
-target_type=”oracle_database” \
-targets=”orcl1″

Target promoted successfully

# 故障4:Agent部署失败
# 症状:自动部署Agent失败

# 诊断步骤
$ emcli get_agent_deployment_status -job_id=12348

Job ID : 12348
Target : server1.fgedu.net.cn
Status : FAILED
Error : Unable to connect to target host

# 检查Agent部署日志
$ ssh oracle@server1.fgedu.net.cn
$ cat /tmp/agentDeploy.log

# 解决方案
# 1. 手动部署Agent
$ ssh oracle@server1.fgedu.net.cn
$ mkdir -p /opt/oracle/agent
$ cd /opt/oracle/agent
$ scp oracle@oms-server:/oracle/app/oracle/middleware/sysman/agent_install/13.1.0.0.0_AgentCore.zip .
$ unzip 13.1.0.0.0_AgentCore.zip
$ ./agentDeploy.sh AGENT_BASE_DIR=/opt/oracle/agent \
OMS_HOST=oms-server.fgedu.net.cn \
EM_UPLOAD_PORT=4900 \
AGENT_REGISTRATION_PASSWORD=AgentReg123

# 2. 验证Agent
$ /opt/oracle/agent/agent_inst/bin/emctl status agent

4.3 发现优化

EMCC目标发现性能优化实践:

# 优化1:并行发现
# 创建多个发现规范并行执行

$ for i in {1..5}; do
emcli create_discovery_spec \
-name=”Parallel_Discovery_${i}” \
-target_type=”oracle_database” \
-ip_range=”10.0.${i}.0/24″ \
-credential_name=”Production_Creds” \
-auto_promote=”false”

emcli submit_discovery -spec_name=”Parallel_Discovery_${i}” &
done

wait

# 优化2:发现频率优化
# 调整发现任务并发数

$ emcli set_discovery_property \
-name=”max_concurrent_discovery_jobs” \
-value=”10″

# 优化3:凭证缓存
# 启用凭证缓存减少认证开销

$ emcli set_discovery_property \
-name=”credential_cache_enabled” \
-value=”true”

$ emcli set_discovery_property \
-name=”credential_cache_ttl” \
-value=”3600″

# 优化4:发现结果过滤
# 过滤不需要的目标

$ emcli create_discovery_spec \
-name=”Filtered_Discovery” \
-target_type=”oracle_database” \
-ip_range=”10.0.0.0/16″ \
-credential_name=”Production_Creds” \
-filter_expression=”version >= ‘19.0.0.0’” \
-auto_promote=”false”

# 优化5:发现性能监控
# 创建发现性能监控脚本

$ cat /software/monitor_discovery.sh
#!/bin/bash
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

# 获取最近发现任务
jobs=$(emcli list_discovery_jobs -last 10 -format=”csv”)

# 分析发现性能
echo “=== Discovery Performance Analysis ===”
echo “”
echo “Average Discovery Time:”
echo “$jobs” | awk -F’,’ ‘{sum+=$4-$3; count++} END {print sum/count ” seconds”}’

echo “”
echo “Targets Discovered per Hour:”
echo “$jobs” | awk -F’,’ ‘{targets+=$5; time+=$4-$3} END {print targets/(time/3600) ” targets/hour”}’

echo “”
echo “Failed Jobs:”
echo “$jobs” | awk -F’,’ ‘$6==”FAILED” {count++} END {print count}’

# 添加到crontab
$ crontab -e
0 */4 * * * /software/monitor_discovery.sh >> /var/log/discovery_perf.log

Part05-风哥经验总结与分享

5.1 目标发现总结

EMCC目标发现的关键经验总结:

  • 充分准备:提前规划发现范围和凭证
  • 分批实施:大规模环境分批发现,便于管理
  • 凭证管理:建立统一的凭证管理策略
  • 自动化:使用脚本实现定期自动发现
  • 监控:建立发现性能监控机制
  • 文档:记录发现配置和结果,便于审计
风哥提示:目标发现是EMCC监控的基础,建议建立规范的发现流程,确保所有目标都能被及时发现和监控,避免遗漏。

5.2 发现检查清单

# EMCC目标发现检查清单

# 发现前检查
□ 盘点现有环境
□ 确认网络连通性
□ 准备凭证
□ 创建目标组
□ 创建监控模板
□ 配置告警规则

# 发现中检查
□ 提交发现任务
□ 监控发现进度
□ 检查发现结果
□ 处理发现错误
□ 验证发现目标

# 发现后检查
□ 提升发现的目标
□ 应用监控模板
□ 配置告警规则
□ 验证监控数据
□ 更新目标清单
□ 归档发现记录

5.3 发现工具推荐

EMCC目标发现推荐工具:

工具名称 用途 说明
EMCLI 命令行发现 批量发现和自动化脚本
EMCC Console 图形发现 直观的图形界面发现
Auto Discovery 自动发现 基于Agent的自动扫描
Credential Manager 凭证管理 集中管理发现凭证
Discovery Report 发现报告 发现结果和统计报告
Target Manager 目标管理 目标分组和配置
最佳实践:

  • 建立规范的发现流程和标准
  • 使用模板标准化新目标配置
  • 建立定期发现机制,发现新目标
  • 监控发现性能,优化发现效率
  • 建立发现审计机制,记录发现历史
  • 定期审查发现配置,确保有效性
风哥总结:目标发现是EMCC监控管理的重要环节,通过合理的规划和自动化,可以快速、准确地发现所有监控目标,为后续的监控管理工作打下坚实基础。更多视频教程www.fgedu.net.cn

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息