{"id":1945,"date":"2024-05-14T11:13:40","date_gmt":"2024-05-14T10:13:40","guid":{"rendered":"https:\/\/thomas-kopton.de\/vblog\/?p=1945"},"modified":"2024-05-14T11:13:40","modified_gmt":"2024-05-14T10:13:40","slug":"automated-workflows-using-vmware-aria-operations-snmp-trap-plugin","status":"publish","type":"post","link":"https:\/\/thomas-kopton.de\/vblog\/?p=1945","title":{"rendered":"Automated Workflows using VMware Aria Operations SNMP Trap Plugin"},"content":{"rendered":"\n<p><a href=\"https:\/\/datatracker.ietf.org\/doc\/html\/rfc1157\">SNMP<\/a>, likely one of the oldest protocols in OSI Layer 7, is still used today in the monitoring environments and offers a very simple way, with <strong>SNMP traps<\/strong>, to send messages from one system to another to trigger an action. This action could involve executing an automated workflow.<\/p>\n\n\n\n<p>In this post, I describe how the <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">VMware Aria Operations SNMP Trap Plugin<\/mark> can be used to execute automated workflows in <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">Aria Automation Orchestrator<\/mark> in response to alarms triggered in <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">VMware Aria Operations<\/mark>.<\/p>\n\n\n\n<p>In Aria Operations you can utilize the <a href=\"https:\/\/docs.vmware.com\/en\/VMware-Aria-Operations\/8.17.1\/Configuring-Operations\/GUID-04179AAF-A987-44AE-BA52-2375E9B06F73.html\">Outbound Settings<\/a> to configure your communication preferences, allowing you to send information to users or applications external to Aria Operations. In addition to the most well-known plugin here, the Standard Email Plugin, we also have access to other plugins like the <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">SNMP Trap Plugin<\/mark>.<\/p>\n\n\n\n<p>Before we proceed with configuring in Aria Operations, we need an <strong>SNMP receiver<\/strong> to receive our traps, evaluate them, and trigger an automated action. We&#8217;ll build this receiver in VMware Aria Automation Orchestrator. The official documentation can be found here: <a href=\"https:\/\/docs.vmware.com\/en\/VMware-Aria-Automation\/8.16\/Using-Automation-Orchestrator-Plugins\/GUID-B54F7000-D3F8-4315-8DC9-23485B2BDBF5.html\">https:\/\/docs.vmware.com\/en\/VMware-Aria-Automation\/8.16\/Using-Automation-Orchestrator-Plugins\/GUID-B54F7000-D3F8-4315-8DC9-23485B2BDBF5.html<\/a><\/p>\n\n\n\n<p>The\u00a0SNMP\u00a0plugin in Aria Orchestrator provides two methods of communication with the SNMP devices.<\/p>\n\n\n\n<ul class=\"wp-block-list\" id=\"GUID-A5D71A71-A13F-416E-8F14-F7719A70EE88__ul_C21F5B875B4249399AC85A7E6C996F78\">\n<li>Queries for the values of specific SNMP variables.<\/li>\n\n\n\n<li><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-green-cyan-color\">Listening for events (SNMP traps) that are generated from the devices and pushed to the registered SNMP managers.<\/mark><\/li>\n<\/ul>\n\n\n\n<p>For our use case, the second method is what we need, receiving SNMP traps.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Aria Orchestrator Basic Setup<\/h5>\n\n\n\n<p>The first step is to configure the <strong>port<\/strong> for the SNMP receiver and expose it for the outside world. In my example I am using <strong>UDP<\/strong> and the default port number <strong>162<\/strong>. On the Aria Automation console following commands are needed.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SNMP_PORT=162\n\nvracli network ports expose --proto udp --targetPort $SNMP_PORT $SNMP_PORT vco-app<\/code><\/pre>\n\n\n\n<p>In the next step we need to run the <code>Set the SNMP trap port<\/code> workflow to set the port on which\u00a0Automation Orchestrator\u00a0will start listening for incoming SNMP traps &#8211; in my case, 162 as specified in the previous step.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-6.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"654\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-6-1024x654.png\" alt=\"\" class=\"wp-image-1946\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-6-1024x654.png 1024w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-6-300x191.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-6-768x490.png 768w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-6-1536x980.png 1536w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-6-2048x1307.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\"><em>Figure 01: Setting up the SNMP trap receiver port in Aria Automation Orchestrator. <\/em><\/figcaption><\/figure>\n\n\n\n<p>Using <code>netstat<\/code> on the command line we can test if the <code>kube-apiserver<\/code> is now waiting for incoming messages on UDP port 162.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">root@ariaauto [ ~ ]# netstat -tulpena | grep :162<br>udp 0 0 0.0.0.0:162 0.0.0.0:* 0 28271956 4643\/kube-proxy<\/pre>\n\n\n\n<p>Aria Automation Orchestrator will show us the newly configured Trap Host in the inventory.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-12.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"651\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-12-1024x651.png\" alt=\"\" class=\"wp-image-1967\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-12-1024x651.png 1024w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-12-300x191.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-12-768x489.png 768w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-12-1536x977.png 1536w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-12-2048x1303.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\"><em>Figure 02: New SNMP Trap Host in the inventory. <\/em><\/figcaption><\/figure>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"GUID-D70D8B5B-D78F-45C1-9445-A20C9BCE87E7__GUID-3B8DB2B1-906A-4DC2-975E-B1C520B585DA\">SNMP Trap Host Policy Configuration<\/h5>\n\n\n\n<p>The next step is to configure and run a Aria Automation Orchestrator <strong>Policy<\/strong>.<\/p>\n\n\n\n<p>The <code>SNMP Trap Host<\/code> policy in Aria Orchestrator basically listens for SNMP traps and according to its configuration it executes scripts or workflows. In my environment I have cloned the existing <code>SNMP Trap Host<\/code> policy and configured my own policy to meet my requirements, <code>tk-SNMP Trap Host<\/code>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-13.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"409\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-13-1024x409.png\" alt=\"\" class=\"wp-image-1972\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-13-1024x409.png 1024w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-13-300x120.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-13-768x307.png 768w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-13-1536x614.png 1536w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-13-2048x818.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\"><em>Figure 03: Custom SNMP Trap Host policy.<\/em><\/figcaption><\/figure>\n\n\n\n<p>This customized policy will execute a script on <code>OnTrapAll<\/code> event. The script itself will execute a workflow and pass the SNMP trap data. The workflow configured in the script has to have an input parameter <code>trapData<\/code> (this is how I have specified it in my script) of the type <code>Array\/Properties<\/code>. The <code>workflowID<\/code> variable contains the ID of the Orchestrator workflow to execute.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-18.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"481\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-18-1024x481.png\" alt=\"\" class=\"wp-image-1984\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-18-1024x481.png 1024w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-18-300x141.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-18-768x361.png 768w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-18-1536x722.png 1536w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-18-2048x963.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\"><em>Figure 04: Policy configuration &#8211; script executing a workflow.<\/em><\/figcaption><\/figure>\n\n\n\n<p>And this is the script code to make it easy to copy and paste:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Replace the workflowID value with the ID of your workflow\n\/\/ The workflow need an Input parameter \"trapData\"\nvar workflowID = \"504f26ea-0ae6-426f-82d1-5fe332228cb6\";\n \n\/\/ process SNMP trap\nvar key = event.getValue(\"key\");\nvar snmpResult = SnmpService.retrievePolicyData(key);\nvar trapData = System.getModule(\"com.vmware.library.snmp\").processSnmpResult(snmpResult);\n\nvar myWorkflow = Server.getWorkflowWithId(workflowID);\nif (myWorkflow == null) {\n    throw \"Workflow not found\";\n}\nvar myWorkflowParams = new Properties();\nmyWorkflowParams.put(\"trapData\",trapData);\nvar wfToken = myWorkflow.execute(myWorkflowParams);<\/code><\/pre>\n\n\n\n<p>Running the <code>tk-SNMP Trap Host<\/code> will create a new <strong>Policy Run<\/strong>. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-16.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"373\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-16-1024x373.png\" alt=\"\" class=\"wp-image-1979\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-16-1024x373.png 1024w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-16-300x109.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-16-768x280.png 768w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-16-1536x560.png 1536w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-16-2048x746.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\"><em>Figure 05: Policy Run based on the custom policy.<\/em><\/figcaption><\/figure>\n\n\n\n<p>Every Policy Run can be reconfigured in stopped mode, for example to ensure that the Policy Run will be started on every server start-up. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-15.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"782\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-15-1024x782.png\" alt=\"\" class=\"wp-image-1978\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-15-1024x782.png 1024w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-15-300x229.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-15-768x587.png 768w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-15-1536x1174.png 1536w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-15-2048x1565.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\"><em>Figure 06: Policy Run configuration details.<\/em><\/figcaption><\/figure>\n\n\n\n<p><mark style=\"background-color:#fcb900\" class=\"has-inline-color has-vivid-red-color\"><strong>Note<\/strong>:<\/mark> <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">If you change anything in the Policy itself, you will need to create a entirely new Policy Run based on the altered Policy to take effect.<\/mark><\/p>\n\n\n\n<h5 class=\"wp-block-heading\">The Workflow<\/h5>\n\n\n\n<p>To finally be able to create and test a suitable SNMP Trap Plugin Outbound instance on the Aria Operations side, and to verify which data a trap contains in this specific use case, I have created a very simple <strong>Orchestrator Workflow<\/strong>. As mentioned earlier, this workflow includes a single input parameter to capture the SNMP trap data.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-19.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"358\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-19-1024x358.png\" alt=\"\" class=\"wp-image-1989\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-19-1024x358.png 1024w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-19-300x105.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-19-768x269.png 768w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-19-1536x538.png 1536w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-19-2048x717.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\"><em>Figure 07: Orchestrator workflow input.<\/em><\/figcaption><\/figure>\n\n\n\n<p>Using this simple code, which I will extend later on, we can check the <strong>structure<\/strong> of a test <strong>SNMP trap<\/strong> send by Aria Operations. Interesting parts are the OIDs and the actual values.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-20.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"457\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-20-1024x457.png\" alt=\"\" class=\"wp-image-1990\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-20-1024x457.png 1024w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-20-300x134.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-20-768x342.png 768w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-20-1536x685.png 1536w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-20-2048x913.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\"><em>Figure 08: Orchestrator workflow scripting task with the initial test code.<\/em><\/figcaption><\/figure>\n\n\n\n<p>And this is the initial code for copy and paste:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>System.log(\"Trap Data: \" + trapData);\n\nfor (var i = 0; i &lt; trapData.length; i++) {\n    var prop = trapData&#91;i];\n    System.log(prop.get(\"oid\") + \" = \" + prop.get(\"value\"));\n}<\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\">Aria Operations Setup<\/h5>\n\n\n\n<p>With this preliminary work, we can finally create, configure, and test the necessary components in Aria Operations. The first step is to create a <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">SNMP Trap Plugin Outbound Instance<\/mark> within the <strong>Configure Alerts<\/strong> section. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-21.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"678\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-21-1024x678.png\" alt=\"\" class=\"wp-image-1998\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-21-1024x678.png 1024w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-21-300x199.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-21-768x509.png 768w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-21-1536x1018.png 1536w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-21.png 1932w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\"><em>Figure 09: Creating SNMP Trap Outbound Instance.<\/em><\/figcaption><\/figure>\n\n\n\n<p>The only options we need to specify when creating the instance are the destination host, so in this case my Aria Automation Orchestrator <strong>FQDN<\/strong> and the SNMP Trap <strong>receiver port<\/strong> I have specified in the first step.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-22.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"613\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-22-1024x613.png\" alt=\"\" class=\"wp-image-2001\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-22-1024x613.png 1024w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-22-300x180.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-22-768x460.png 768w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-22-1536x919.png 1536w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-22-2048x1226.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p><em>Figure 10: Configuring SNMP Trap Outbound Instance.<\/em><\/p>\n\n\n\n<p>Now we can hit the Test button in the newly created Outbound Instance and check if our Workflow is getting started. If everything has been created and configured correctly you should see this in the Workflow log section as log output:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>2024-05-13 13:45:18.512 +02:00INFO1.3.6.1.2.1.1.3.0 = 1908767417\n\n2024-05-13 13:45:18.513 +02:00INFO1.3.6.1.6.3.1.1.4.1.0 = 1.3.6.1.4.1.6876.4.50.1.0.200\n\n2024-05-13 13:45:18.514 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.1 = localhost\n\n2024-05-13 13:45:18.515 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.2 = Test\n\n2024-05-13 13:45:18.516 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.3 = Test\n\n2024-05-13 13:45:18.517 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.4 = 1715600718121\n\n2024-05-13 13:45:18.518 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.5 = Info\n\n2024-05-13 13:45:18.519 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.6 = Test trap\n\n2024-05-13 13:45:18.520 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.7 =\n\n2024-05-13 13:45:18.521 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.8 = 0\n\n2024-05-13 13:45:18.522 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.9 = Test info message\n\n2024-05-13 13:45:18.523 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.10 = Test type\n\n2024-05-13 13:45:18.524 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.11 = Test subtype\n\n2024-05-13 13:45:18.525 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.12 = Test Health\n\n2024-05-13 13:45:18.526 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.13 = Test Risk\n\n2024-05-13 13:45:18.527 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.14 = Test Efficiency\n\n2024-05-13 13:45:18.528 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.15 = Test Metric Name\n\n2024-05-13 13:45:18.529 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.16 = Test Object Type\n\n2024-05-13 13:45:18.530 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.17 = Test Alert Definition Name\n\n2024-05-13 13:45:18.531 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.18 = Test Alert Definition Description\n\n2024-05-13 13:45:18.532 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.19 = Test Alert Impact\n\n2024-05-13 13:45:18.533 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.20 = Test Notification Rule<\/code><\/pre>\n\n\n\n<p>With the knowledge of the SNMP Trap structure we can start modifying our actual Aria Automation Orchestrator Workflow and add some more sophisticated logic to it to do some actual work. In the new code I have added checks for the host name and the criticality of the alert. Feel free to use your own logic and extend this workflow basic code.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>System.log(\"Trap Data: \" + trapData);\n\nfor (var i = 0; i &lt; trapData.length; i++) {\n    var prop = trapData&#91;i];\n    System.log(prop.get(\"oid\") + \" = \" + prop.get(\"value\"));\n}\n\nfor (var i = 0; i &lt; trapData.length; i++) {\n    var prop = trapData&#91;i];\n    if (prop.get(\"oid\") == \"1.3.6.1.4.1.6876.4.50.1.2.1\") {\n        System.log(\"Host name in the message: \" + prop.get(\"value\"))\n    }\n}\n\nfor (var i = 0; i &lt; trapData.length; i++) {\n    var prop = trapData&#91;i];\n    if (prop.get(\"oid\") == \"1.3.6.1.4.1.6876.4.50.1.2.5.0\") {\n        if (prop.get(\"value\") == \"critical\") {\n                    System.log(\"CRTITICAL ALERT OCCURED! Do something:-)\");\n        }\n    }\n}<\/code><\/pre>\n\n\n\n<p>The last step in <strong>Aria Operations<\/strong> is to create and configure a <strong>Notifications<\/strong> which will use the SNMP Trap Plugin Outbound Instance.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-23.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"661\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-23-1024x661.png\" alt=\"\" class=\"wp-image-2020\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-23-1024x661.png 1024w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-23-300x194.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-23-768x496.png 768w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-23-1536x992.png 1536w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-23-2048x1322.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\"><em>Figure 11: Aria Operations Notifications configuration.<\/em><\/figcaption><\/figure>\n\n\n\n<p>And this is how a real SMTP Trap message looks like when used in the Aria Operations Notification.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>2024-05-14 11:54:03.470 +02:00INFO1.3.6.1.2.1.1.3.0 = 1988492837\n2024-05-14 11:54:03.474 +02:00INFO1.3.6.1.6.3.1.1.4.1.0 = 1.3.6.1.4.1.6876.4.50.1.0.46\n2024-05-14 11:54:03.478 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.1.0 = vrops01.mydomain.eu\n2024-05-14 11:54:03.481 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.2.0 = esxi07.mydomain.eu\n2024-05-14 11:54:03.485 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.3.0 = General\n2024-05-14 11:54:03.491 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.4.0 = 1715680441062\n2024-05-14 11:54:03.496 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.5.0 = critical\n2024-05-14 11:54:03.500 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.6.0 = New alert by id 71dd412d-de66-453f-8b12-dcf8b66a054b is generated at Tue May 14 09:54:01 UTC 2024;\n2024-05-14 11:54:03.504 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.7.0 = https:\/\/192.168.0.28\/ui\/index.action#environment\/object-browser\/hierarchy\/64ac1118-826c-4470-9f9d-ad24e5757eab\/alerts-and-symptoms\/alerts\/71dd412d-de66-453f-8b12-dcf8b66a054b\n2024-05-14 11:54:03.511 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.8.0 = 71dd412d-de66-453f-8b12-dcf8b66a054b\n2024-05-14 11:54:03.514 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.9.0 = symptomSet: f9f06558-8c14-4f65-a0c8-bf5307bc6765\nrelation: self\ntotalObjects: 1\nviolatingObjects: 1\nsymptom: Host disconnected from vCenter\nactive: true\nobj.1.name: esxi07.mydomain.eu\nobj.1.id: 64ac1118-826c-4470-9f9d-ad24e5757eab\nobj.1.metric: \nobj.1.info: Property not equal notResponding != connected\nsymptom: SymptomDefinition-VMWARE-HostIsPlacedInStandbyMode\nactive: false\nobj.1.name: esxi07.mydomain.eu\nobj.1.id: 64ac1118-826c-4470-9f9d-ad24e5757eab\n2024-05-14 11:54:03.517 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.10.0 = Virtualization\/Hypervisor\n2024-05-14 11:54:03.520 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.11.0 = Availability\n2024-05-14 11:54:03.523 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.12.0 = critical\n2024-05-14 11:54:03.526 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.13.0 = \n2024-05-14 11:54:03.529 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.14.0 = \n2024-05-14 11:54:03.532 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.15.0 = \n2024-05-14 11:54:03.535 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.16.0 = HostSystem\n2024-05-14 11:54:03.538 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.17.0 = Host has lost connection to vCenter Server\n2024-05-14 11:54:03.541 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.18.0 = The host has been unexpectedly disconnected from vCenter Server. The virtual machines on the host have also lost connectivity to vCenter Server. The host might not have a problem and the virtual machines on the host might be running as expected, but any configuration, data, and events from the host and its virtual machines are lost.\n2024-05-14 11:54:03.544 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.19.0 = health\n2024-05-14 11:54:03.547 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.20.0 = tk-GenericAllEventsToSNMP\n2024-05-14 11:54:03.551 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.21.0 = \n2024-05-14 11:54:03.555 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.22.0 = \n2024-05-14 11:54:03.559 +02:00INFO1.3.6.1.4.1.6876.4.50.1.2.23.0 = \n2024-05-14 11:54:03.565 +02:00INFOCRTITICAL ALERT OCCURED! Do something:-)<\/code><\/pre>\n\n\n\n<p>Now have fun coding your own automation solutions based on SNMP traps sent by Aria Operations and received by Aria Automation Orchestrator.<\/p>\n\n\n\n<p><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">Stay<\/mark><\/strong> <strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#f5d800\" class=\"has-inline-color\">safe<\/mark><\/strong>.<\/p>\n\n\n\n<p>Thomas \u2013&nbsp;<a href=\"https:\/\/twitter.com\/ThomasKopton\">https:\/\/twitter.com\/ThomasKopton<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>SNMP, likely one of the oldest protocols in OSI Layer 7, is still used today in the monitoring environments and offers a very simple way, with SNMP traps, to send messages from one system to another to trigger an action. This action could involve executing an automated workflow. In this post, I describe how the &#8230;<\/p>\n","protected":false},"author":1,"featured_media":1990,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[79,86,57,87,12,34],"tags":[89,58,47,90,26,88],"class_list":["post-1945","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-alerting","category-aria-automation","category-aria-operations","category-aria-orchestrator","category-vra","category-vrealize-operations","tag-alerting","tag-aria-operations","tag-automation","tag-snmp","tag-vro","tag-workflow"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Automated Workflows using VMware Aria Operations SNMP Trap Plugin - TOMsOps<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/thomas-kopton.de\/vblog\/?p=1945\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Automated Workflows using VMware Aria Operations SNMP Trap Plugin - TOMsOps\" \/>\n<meta property=\"og:description\" content=\"SNMP, likely one of the oldest protocols in OSI Layer 7, is still used today in the monitoring environments and offers a very simple way, with SNMP traps, to send messages from one system to another to trigger an action. This action could involve executing an automated workflow. In this post, I describe how the ...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/thomas-kopton.de\/vblog\/?p=1945\" \/>\n<meta property=\"og:site_name\" content=\"TOMsOps\" \/>\n<meta property=\"article:published_time\" content=\"2024-05-14T10:13:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-20.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2772\" \/>\n\t<meta property=\"og:image:height\" content=\"1236\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Thomas Kopton\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Thomas Kopton\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/?p=1945#article\",\"isPartOf\":{\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/?p=1945\"},\"author\":{\"name\":\"Thomas Kopton\",\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/#\/schema\/person\/892d6b96c66b1dd4b75c6e32fdbfea82\"},\"headline\":\"Automated Workflows using VMware Aria Operations SNMP Trap Plugin\",\"datePublished\":\"2024-05-14T10:13:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/?p=1945\"},\"wordCount\":980,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/?p=1945#primaryimage\"},\"thumbnailUrl\":\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-20.png\",\"keywords\":[\"Alerting\",\"Aria Operations\",\"automation\",\"SNMP\",\"vRO\",\"Workflow\"],\"articleSection\":[\"Alerting\",\"Aria Automation\",\"Aria Operations\",\"Aria Orchestrator\",\"vRA\",\"vRealize Operations\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/thomas-kopton.de\/vblog\/?p=1945#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/?p=1945\",\"url\":\"https:\/\/thomas-kopton.de\/vblog\/?p=1945\",\"name\":\"Automated Workflows using VMware Aria Operations SNMP Trap Plugin - TOMsOps\",\"isPartOf\":{\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/?p=1945#primaryimage\"},\"image\":{\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/?p=1945#primaryimage\"},\"thumbnailUrl\":\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-20.png\",\"datePublished\":\"2024-05-14T10:13:40+00:00\",\"author\":{\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/#\/schema\/person\/892d6b96c66b1dd4b75c6e32fdbfea82\"},\"breadcrumb\":{\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/?p=1945#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/thomas-kopton.de\/vblog\/?p=1945\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/?p=1945#primaryimage\",\"url\":\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-20.png\",\"contentUrl\":\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-20.png\",\"width\":2772,\"height\":1236},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/?p=1945#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/thomas-kopton.de\/vblog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Automated Workflows using VMware Aria Operations SNMP Trap Plugin\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/#website\",\"url\":\"https:\/\/thomas-kopton.de\/vblog\/\",\"name\":\"TOMsOps\",\"description\":\"Just another VMware Cloud Management Blog\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/thomas-kopton.de\/vblog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/#\/schema\/person\/892d6b96c66b1dd4b75c6e32fdbfea82\",\"name\":\"Thomas Kopton\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/thomas-kopton.de\/vblog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/e746aafbd3733172ceb4d600ba1feda61bc87cd3b70f5a9dfb581907cc7973b1?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/e746aafbd3733172ceb4d600ba1feda61bc87cd3b70f5a9dfb581907cc7973b1?s=96&d=mm&r=g\",\"caption\":\"Thomas Kopton\"},\"url\":\"https:\/\/thomas-kopton.de\/vblog\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Automated Workflows using VMware Aria Operations SNMP Trap Plugin - TOMsOps","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/thomas-kopton.de\/vblog\/?p=1945","og_locale":"en_US","og_type":"article","og_title":"Automated Workflows using VMware Aria Operations SNMP Trap Plugin - TOMsOps","og_description":"SNMP, likely one of the oldest protocols in OSI Layer 7, is still used today in the monitoring environments and offers a very simple way, with SNMP traps, to send messages from one system to another to trigger an action. This action could involve executing an automated workflow. In this post, I describe how the ...","og_url":"https:\/\/thomas-kopton.de\/vblog\/?p=1945","og_site_name":"TOMsOps","article_published_time":"2024-05-14T10:13:40+00:00","og_image":[{"width":2772,"height":1236,"url":"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-20.png","type":"image\/png"}],"author":"Thomas Kopton","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Thomas Kopton","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/thomas-kopton.de\/vblog\/?p=1945#article","isPartOf":{"@id":"https:\/\/thomas-kopton.de\/vblog\/?p=1945"},"author":{"name":"Thomas Kopton","@id":"https:\/\/thomas-kopton.de\/vblog\/#\/schema\/person\/892d6b96c66b1dd4b75c6e32fdbfea82"},"headline":"Automated Workflows using VMware Aria Operations SNMP Trap Plugin","datePublished":"2024-05-14T10:13:40+00:00","mainEntityOfPage":{"@id":"https:\/\/thomas-kopton.de\/vblog\/?p=1945"},"wordCount":980,"commentCount":0,"image":{"@id":"https:\/\/thomas-kopton.de\/vblog\/?p=1945#primaryimage"},"thumbnailUrl":"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-20.png","keywords":["Alerting","Aria Operations","automation","SNMP","vRO","Workflow"],"articleSection":["Alerting","Aria Automation","Aria Operations","Aria Orchestrator","vRA","vRealize Operations"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/thomas-kopton.de\/vblog\/?p=1945#respond"]}]},{"@type":"WebPage","@id":"https:\/\/thomas-kopton.de\/vblog\/?p=1945","url":"https:\/\/thomas-kopton.de\/vblog\/?p=1945","name":"Automated Workflows using VMware Aria Operations SNMP Trap Plugin - TOMsOps","isPartOf":{"@id":"https:\/\/thomas-kopton.de\/vblog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/thomas-kopton.de\/vblog\/?p=1945#primaryimage"},"image":{"@id":"https:\/\/thomas-kopton.de\/vblog\/?p=1945#primaryimage"},"thumbnailUrl":"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-20.png","datePublished":"2024-05-14T10:13:40+00:00","author":{"@id":"https:\/\/thomas-kopton.de\/vblog\/#\/schema\/person\/892d6b96c66b1dd4b75c6e32fdbfea82"},"breadcrumb":{"@id":"https:\/\/thomas-kopton.de\/vblog\/?p=1945#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thomas-kopton.de\/vblog\/?p=1945"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/thomas-kopton.de\/vblog\/?p=1945#primaryimage","url":"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-20.png","contentUrl":"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2024\/05\/image-20.png","width":2772,"height":1236},{"@type":"BreadcrumbList","@id":"https:\/\/thomas-kopton.de\/vblog\/?p=1945#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/thomas-kopton.de\/vblog"},{"@type":"ListItem","position":2,"name":"Automated Workflows using VMware Aria Operations SNMP Trap Plugin"}]},{"@type":"WebSite","@id":"https:\/\/thomas-kopton.de\/vblog\/#website","url":"https:\/\/thomas-kopton.de\/vblog\/","name":"TOMsOps","description":"Just another VMware Cloud Management Blog","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/thomas-kopton.de\/vblog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/thomas-kopton.de\/vblog\/#\/schema\/person\/892d6b96c66b1dd4b75c6e32fdbfea82","name":"Thomas Kopton","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/thomas-kopton.de\/vblog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/e746aafbd3733172ceb4d600ba1feda61bc87cd3b70f5a9dfb581907cc7973b1?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e746aafbd3733172ceb4d600ba1feda61bc87cd3b70f5a9dfb581907cc7973b1?s=96&d=mm&r=g","caption":"Thomas Kopton"},"url":"https:\/\/thomas-kopton.de\/vblog\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=\/wp\/v2\/posts\/1945","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1945"}],"version-history":[{"count":63,"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=\/wp\/v2\/posts\/1945\/revisions"}],"predecessor-version":[{"id":2026,"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=\/wp\/v2\/posts\/1945\/revisions\/2026"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=\/wp\/v2\/media\/1990"}],"wp:attachment":[{"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1945"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1945"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1945"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}