This has been asked before but the solutions I have seen are only for indexers. The best one I've seen is:
| rest /services/cluster/config
| fields splunk_server guid
But like I said this is only for indexers.
I want something for search heads.
Also, why not also include the cluster master, license manager, deployment server, search head deployer, and all the data forwarders, that would be quite useful.
A REST request to a cluster endpoint is valid only for cluster members (indexers). To get GUIDs for other instance types you must send different requests.
For forwarders, try sending /services/deployment/server/clients to the Deployment Server.
For most other instances, try sending /services/search/distributed/peers to the Monitoring Console..
You can send /services/server/info to any instance to get that instance's GUID.
Each Splunk server logs its GUID to splunkd.log at startup. If your internal logs go back far enough then you can fetch a list of GUIDs with a search something like this
index=_internal sourcetype=splunkd log_level=INFO component=ServerConfig "- My GUID is "
| dedup host
| rex "My GUID is (?<GUID>.*)"
| table host GUID
View solution in original post