Health diagnostic API
This API provides access to health diagnostic information.
Get health diagnostic status
URI:https://hub.cfengine.com/api/health-diagnostic/status
Method: GET
Example response:
{ "hostsNeverCollected": 1, "deletedHostsReport": 1, "hostNotRecentlyCollected": 0, "hostsUsingSameIdentity": 0, "agentNotRunRecently": 2, "lastAgentRunUnsuccessful": 0, "totalFailed": 3, "total": "50642"}List of health diagnostic report categories
URI:https://hub.cfengine.com/api/health-diagnostic/report_ids
Method: GET
Example response:
[ "hostsNeverCollected", "deletedHostsReport", "notRecentlyCollected", "hostsUsingSameIdentity", "agentNotRunRecently", "lastAgentRunUnsuccessful"]Get health diagnostic report data
URI:https://hub.cfengine.com/api/health-diagnostic/report/:report_id
Method: POST
Execute user SQL query. Accepts SQL compatible with PostgreSQL database. Query is a subject to Role Base Access Control and will include data for hosts that issuing user have permissions to access. Read-only SQL is allowed.
API performance depend on the query result size, to achieve fastest results consider narrowing result set at much as possible.
Parameters:
- report_id(string)Report id.List of report ids you can obtain throughList of health diagnostic report categories
- sortColumn(string)Column name on which to sort results. Optional parameter.
- sortDescending(boolean)Sorting order. Optional parameter.
- skip(integer)Number of results to skip for the processedquery. The Mission Portal uses this for pagination. Optional parameter.
- limit(integer)Limit the number of results in the query.
- hostContextInclude(array)Includes only results that concern hosts which have all specified CFEngine contexts (class) set. Optional parameter.
- hostContextExclude(array)Excludes results that concern hosts which have specified CFEngine context (class) set. Hosts that have at lest one of the specified contexts set will be excluded from the results. Optional parameter.
CURL Request Example:curl -k --user <username>:<password> -X POST \ https://hub.cfengine.com/api/health-diagnostic/report/agentNotRunRecently \ -H 'Content-Type: application/json' \ -d '{"limit": 50}'
Example response:
{ "data": [ { "header": [ { "columnName": "key", "columnType": "STRING" }, { "columnName": "Host name", "columnType": "STRING" }, { "columnName": "Last report collected", "columnType": "STRING" }, { "columnName": "Last agent local execution time", "columnType": "STRING" } ], "query": "SELECT h.Hostkey as key,h.hostname as \"Host name\", lastreporttimestamp as \"Last report collected\", agentstatus.lastagentlocalexecutiontimestamp as \"Last agent local execution time\" \n FROM vm_hosts h \n LEFT JOIN agentstatus ON agentstatus.Hostkey = h.Hostkey WHERE h.HostKey IN (SELECT result.hostkey FROM (SELECT agentstatus.HostKey \n FROM agentstatus \n LEFT JOIN vm_hosts ON vm_hosts.hostkey = agentstatus.hostkey\n WHERE extract(epoch from (lastReportTimeStamp::timestamp - lastagentlocalexecutiontimestamp::timestamp)) > agentexecutioninterval::int * 1.3) AS result \n WHERE hostkey IS NOT NULL AND HostKey NOT IN (SELECT hostkey FROM hosts_not_reported) AND HostKey NOT IN (SELECT Hosts_view.HostKey \n FROM vm_hosts Hosts_view \n WHERE Hosts_view.lastreporttimestamp < to_timestamp('1549559891')) AND HostKey NOT IN (SELECT SameHosts.HostKey \n FROM (\n SELECT remotehostkey as HostKey FROM lastseenhostslogs GROUP BY remotehostkey HAVING COUNT(distinct remotehostip) > 1\n ) AS SameHosts))", "queryTimeMs": 1408, "rowCount": 2, "rows": [ [ "SHA=aasdsfdgddswrdfgddfdfgwerdffb86", "SHA=aasdsfdgddswrdfgddfdfgwerdffb86", "2019-02-27 15:16:52.987126+00", "2019-02-27 15:05:56.567979+00" ], [ "SHA=fe7f992547addc96fe167bacd6de37681c188709ce9f01fb995f03124ef2a934", "vagrant-ubuntu-trusty-64", "2019-03-05 10:26:08+00", "2019-03-04 08:38:30+00" ] ] } ], "meta": { "count": 1, "page": 1, "timestamp": 1551782115, "total": 1 }}List of health diagnostic dismissed hosts
URI:https://hub.cfengine.com/api/health-diagnostic/dismiss/:report_id
Method: GET
Parameters
- report_id(string)Report id.List of report ids you can obtain throughList of health diagnostic report categories
- offset(integer)Number of results to skip for the processed query.
- limit(integer)Limit the number of results in the query.
CURL Request Example:curl -k --user <username>:<password> -X GET \ https://hub.cfengine.com/api/health-diagnostic/dismiss/notRecentlyCollected?limit=3&offset=0
Example response:
{ "data": [ { "header": [ { "columnName": "hostkey", "columnType": "STRING" }, { "columnName": "hostname", "columnType": "STRING" }, { "columnName": "ipaddress", "columnType": "STRING" }, { "columnName": "lastreporttimestamp", "columnType": "STRING" }, { "columnName": "firstreporttimestamp", "columnType": "STRING" } ], "query": "SELECT * FROM m_hosts WHERE hostkey IN (SELECT hostkey FROM health_diagnostics_dismissed WHERE report_type = 'notRecentlyCollected' AND username = 'admin')", "queryTimeMs": 26, "rowCount": 50, "rows": [ [ "SHA=aasdsfdgddswrdfgddfdfgdffb8922", "SHA=aasdsfdgddswrdfgddfdfgdffb8922", null, "2019-02-27 10:32:12.813777+00", "2019-02-27 10:32:12.813777+00" ], [ "SHA=aasdsfdgddswrdfgddfdfgdffb8930", "SHA=aasdsfdgddswrdfgddfdfgdffb8930", null, "2019-02-27 10:32:12.813777+00", "2019-02-27 10:32:12.813777+00" ], [ "SHA=aasdsfdgddswrdfgddfdfgdffb8925", "SHA=aasdsfdgddswrdfgddfdfgdffb8925", null, "2019-02-27 10:32:12.813777+00", "2019-02-27 10:32:12.813777+00" ] ] } ], "meta": { "count": 1, "page": 1, "timestamp": 1553087363, "total": 1 }}Dismiss hosts from health diagnostic
URI:https://hub.cfengine.com/api/health-diagnostic/dismiss/:report_id
Method: POST
Parameters
- report_id(string)Report id.List of report ids you can obtain throughList of health diagnostic report categories
- hosts(array)Array of host keys to dismiss
CURL Request Example:curl -k --user admin:admin -X POST \ https://hub.cfengine.com/api/health-diagnostic/dismiss/notRecentlyCollected \ -H 'Content-Type: application/json' \ -d '{"hosts": ["SHA=aasdsfdgddswrdfgddfdfgwerdffb86", "SHA=fe7f992547addc96fe167bacd6de37681c188709ce9f01fb995f03124ef2a934"]}'
Example response:
HTTP 201 CREATEDRemove hosts from dismissed list
URI:https://hub.cfengine.com/api/health-diagnostic/dismiss/:report_id
Method: DELETE
Parameters
- report_id(string)Report id.List of report ids you can obtain throughList of health diagnostic report categories
- hosts(array)Array of host keys to remove from dismissed list
CURL Request Example:curl -k --user admin:admin -X POST \ https://hub.cfengine.com/api/health-diagnostic/dismiss/notRecentlyCollected \ -H 'Content-Type: application/json' \ -d '{"hosts": ["SHA=aasdsfdgddswrdfgddfdfgwerdffb86", "SHA=fe7f992547addc96fe167bacd6de37681c188709ce9f01fb995f03124ef2a934"]}'
Example response:
HTTP 202 ACCEPTED- Overview
- Getting started
- Reference
- Components
- Functions
- accessedbefore
- accumulated
- ago
- and
- basename
- bundlesmatching
- bundlestate
- callstack_callers
- callstack_promisers
- canonify
- canonifyuniquely
- cf_version_after
- cf_version_at
- cf_version_before
- cf_version_between
- cf_version_maximum
- cf_version_minimum
- changedbefore
- classesmatching
- classfiltercsv
- classify
- classmatch
- concat
- countclassesmatching
- countlinesmatching
- data_expand
- data_readstringarray
- data_readstringarrayidx
- data_regextract
- data_sysctlvalues
- datastate
- difference
- dirname
- diskfree
- escape
- eval
- every
- execresult
- execresult_as_data
- expandrange
- file_hash
- fileexists
- filesexist
- filesize
- filestat
- filter
- findfiles
- findfiles_up
- findprocesses
- format
- getclassmetatags
- getenv
- getfields
- getgid
- getindices
- getuid
- getuserinfo
- getusers
- getvalues
- getvariablemetatags
- grep
- groupexists
- hash
- hash_to_int
- hashmatch
- host2ip
- hostinnetgroup
- hostrange
- hostsseen
- hostswithclass
- hubknowledge
- ifelse
- int
- intersection
- ip2host
- iprange
- irange
- isdir
- isexecutable
- isgreaterthan
- isipinsubnet
- islessthan
- islink
- isnewerthan
- isplain
- isreadable
- isvariable
- join
- lastnode
- laterthan
- ldaparray
- ldaplist
- ldapvalue
- length
- lsdir
- makerule
- maparray
- mapdata
- maplist
- max
- mean
- mergedata
- min
- network_connections
- none
- not
- now
- nth
- on
- or
- packagesmatching
- packageupdatesmatching
- parseintarray
- parsejson
- parserealarray
- parsestringarray
- parsestringarrayidx
- parseyaml
- peerleader
- peerleaders
- peers
- processexists
- product
- randomint
- read_module_protocol
- readcsv
- readdata
- readenvfile
- readfile
- readintarray
- readintlist
- readjson
- readrealarray
- readreallist
- readstringarray
- readstringarrayidx
- readstringlist
- readtcp
- readyaml
- regarray
- regcmp
- regex_replace
- regextract
- registryvalue
- regldap
- regline
- reglist
- remoteclassesmatching
- remotescalar
- returnszero
- reverse
- rrange
- selectservers
- shuffle
- some
- sort
- splayclass
- splitstring
- storejson
- strcmp
- strftime
- string
- string_downcase
- string_head
- string_length
- string_mustache
- string_replace
- string_reverse
- string_split
- string_tail
- string_trim
- string_upcase
- sublist
- sum
- sysctlvalue
- translatepath
- type
- unique
- url_get
- usemodule
- userexists
- validdata
- validjson
- variablesmatching
- variablesmatching_as_data
- variance
- version_compare
- Language concepts
- Masterfiles Policy Framework
- promises.cf
- .no-distrib/
- update.cf
- standalone_self_upgrade.cf
- cfe_internal/
- cfe_internal/CFE_cfengine.cf
- cfe_internal/core/
- cfe_internal/core/watchdog
- cfe_internal/core/watchdog/watchdog.cf
- cfe_internal/enterprise/
- cfe_internal/enterprise/federation/
- cfe_internal/enterprise/federation/federation.cf
- cfe_internal/recommendations.cf
- cfe_internal/update/
- cfe_internal/update/cfe_internal_dc_workflow.cf
- cfe_internal/update/cfe_internal_update_from_repository.cf
- cfe_internal/update/lib.cf
- cfe_internal/update/systemd_units.cf
- cfe_internal/update/update_bins.cf
- cfe_internal/update/update_policy.cf
- cfe_internal/update/update_processes.cf
- controls/
- controls/cf_agent.cf
- controls/cf_execd.cf
- controls/cf_hub.cf
- controls/cf_monitord.cf
- controls/cf_runagent.cf
- controls/cf_serverd.cf
- controls/def.cf
- controls/def_inputs.cf
- controls/reports.cf
- controls/update_def.cf
- controls/update_def_inputs.cf
- inventory/
- inventory/any.cf
- inventory/debian.cf
- inventory/freebsd.cf
- inventory/generic.cf
- inventory/linux.cf
- inventory/lsb.cf
- inventory/macos.cf
- inventory/os.cf
- inventory/redhat.cf
- inventory/suse.cf
- inventory/windows.cf
- lib/
- lib/autorun.cf
- lib/bundles.cf
- lib/cfe_internal.cf
- lib/cfe_internal_hub.cf
- lib/cfengine_enterprise_hub_ha.cf
- lib/commands.cf
- lib/common.cf
- lib/databases.cf
- lib/edit_xml.cf
- lib/event.cf
- lib/examples.cf
- lib/feature.cf
- lib/files.cf
- lib/guest_environments.cf
- lib/monitor.cf
- lib/packages.cf
- lib/paths.cf
- lib/processes.cf
- lib/reports.cf
- lib/services.cf
- lib/stdlib.cf
- lib/storage.cf
- lib/testing.cf
- lib/users.cf
- lib/vcs.cf
- modules/
- modules/mustache/
- modules/packages/
- modules/packages/vendored/
- modules/promises/
- modules/promises/cfengine.py
- modules/promises/cfengine.sh
- services/
- services/autorun/
- services/main.cf
- Macros
- Promise types
- Special variables
- All promise and body types
- Release notes
- Web UI
- Settings
- Health
- Hosts
- Alerts and notifications
- Custom actions for alerts
- Enterprise reporting
- Federated reporting
- Measurements app
- Hub administration
- Decommissioning hosts
- Extending Mission Portal
- Extending query builder in Mission Portal
- Adjusting schedules
- Backup and restore
- Configure a custom LDAP port
- Custom LDAPs certificate
- Custom SSL certificate
- Enable plain http
- Lookup license info
- Policy deployment
- Public key distribution
- Re-installing Enterprise hub
- Regenerate self signed SSL certificate
- Reset administrative credentials
- Debugging Mission Portal
- License
- Examples and tutorials
- Example snippets
- General examples
- Administration examples
- Measuring examples
- Software administration examples
- Commands, scripts, and execution examples
- File and directory examples
- File template examples
- Interacting with directory services
- Database examples
- Network examples
- System security examples
- System information examples
- System administration examples
- System file examples
- Windows registry examples
- File permissions
- User management examples
- Common promise patterns
- Aborting execution
- Change detection
- Check filesystem space
- Copy single files
- Create files and directories
- Customize message of the day
- Distribute ssh keys
- Ensure a process is not running
- Ensure a service is enabled and running
- Find the MAC address
- Install packages
- Mount NFS filesystem
- Restart a process
- Set up name resolution with DNS
- Set up sudo
- Set up time management through NTP
- Updating from a central policy server
- Tutorials
- JSON and YAML support in CFEngine
- Installing CFEngine Enterprise agent
- Managing local users
- Managing network time protocol
- Managing processes and services
- Package management
- Writing CFEngine policy
- Distributing files from a central location
- File editing
- Reporting and remediation of security vulnerabilities
- Masterfiles Policy Framework upgrade
- Tags for variables, classes, and bundles
- Custom inventory
- Dashboard alerts
- Integrating alerts with PagerDuty
- Integrating alerts with ticketing systems
- Integrating with Sumo Logic
- Rendering files with Mustache templates
- Reporting
- File comparison
- High availability
- Writing and serving policy
- Example snippets
- Resources
- FAQ
- Why knowledge management?
- Requesting a CFEngine Enterprise License
- Uninstalling / reinstalling
- Agent output email
- Debugging slow queries
- Enterprise Report Filtering
- Enterprise report collection
- Enterprise reporting database
- How can I tell what classes and variables are defined?
- How do I find the public key for a given host
- How do I fix trust after an IP change?
- How do I fix undefined body errors?
- How do I integrate custom policy?
- How do I pass a data type variable?
- Manual execution
- Mustache templating
- Unable to log into Mission Portal
- Users
- What is promise locking?
- Why are remote agents not updating?
- Why are some files inside masterfiles not being updated/distributed?
- Why does CFEngine install into /var/cfengine instead of following the FHS?
- Bootstrapping
- Tuning PostgreSQL
- What did CFEngine do?
- External resources
- Additional topics
- Best practices
- FAQ
- API
- Enterprise API examples
- Enterprise API reference
- Actions API
- Build API
- CMDB API
- Changes REST API
- Federated reporting configuration API
- File changes API
- Health diagnostic API
- Host REST API
- Import & export API
- Import & export compliance report API
- Inventory API
- LDAP authentication API
- Personal groups API
- Query REST API
- SQL schema
- SSH keys API
- Shared groups API
- Status and settings REST API
- Two-factor authentication API
- Users and access-control REST API
- VCS settings API
- Web RBAC API