I want to share how to use Enterprise Manager’s (EM) REST APIs to query metric data and integrate with 3rd party tools.
First of all, always follow the documentation. Below is the link to the EM’s REST API functionality.
Using the EM’s REST API functionality we can query the EM repository using a web service. Let’s follow below steps.
a) Create a new EM user who is going to have the privileges to query the EM’s repository. Navigate to Setup -> Security -> Administrators.
Administrators navigation
b) Create a new Repository User.
Administrator creation
c) I’m going to create a new Administrator named ABC.
Administrator creation
d) Create a new Named Credential. Navigate to Setup -> Security -> Named Credentials.
Named Credential creation
e) Click on Create.
Named Credential creation
f) I’m going to create NC_ABC Named Credential.
Named Credential creation
g) Enable the repository REST APIs in EM. For that execute below emctl command.
emctl set property -name oracle.sysman.db.restfulapi.executesql.repository.query.enable -value true -sysman_pwd "sysman"
Now is time to test our REST APIs.
I’m going to test them out using 2 different mechanisms. For the first one, let’s use CURL.
$ curl -k -u ABC -H "Content-Type: application/json" -d '{"sqlStatement": "SELECT * FROM sysman.MGMT$TARGET_METRIC_SETTINGS", "credential": {"DBCredsMonitoring":"NC_ABC"}, "maxRowLimit": 10, "maxColumnLimit": 2}' https://<EM_Host>:<EM Port>/em/websvcs/restful/emws/oracle.sysman.db/executesql/repository/query/v1
Here are the results based on my demo environment:
REST API results from CURL
The second test is by using Ansible. If you are not familiar on how to configure Ansible in order to work with EM, please follow the Oracle Live Labs that we created about this.
I’m going to create a new YAML file (test.yml) in order to test the REST API.
---
- name: Using a REST API
become: false
hosts: emserver
gather_facts: false
tasks:
- name: Query Metric Settings
uri:
url: https://emcc.marketplace.com:7803/em/websvcs/restful/emws/oracle.sysman.db/executesql/repository/query/v1
method: POST
return_content: yes
force_basic_auth: yes
validate_certs: no
body_format: json
url_username: ABC
url_password: *******
headers:
Content-Type: application/json
body:
{
"sqlStatement": "SELECT * FROM sysman.MGMT$TARGET_METRIC_SETTINGS", "maxRowLimit": 2, "maxColumnLimit": 29
}
register: results
- name: Print returned json dictionary
debug:
var: results.json
Let’s execute this using Ansible.
ansible-playbook /home/oracle/ansible/yml/test.yml -u oracle --private-key=~/.ssh/dtkey.ssh
Here the results:
REST API results from Ansible
With this you can get the desired results from the EM’s repository using this REST API.
Thanks,
Alfredo