{"id":1350,"date":"2019-02-19T21:15:39","date_gmt":"2019-02-19T21:15:39","guid":{"rendered":"https:\/\/www.appservgrid.com\/paw93\/?p=1350"},"modified":"2019-03-07T20:11:55","modified_gmt":"2019-03-07T20:11:55","slug":"grafana-dashboard-deploy-docker-image","status":"publish","type":"post","link":"https:\/\/www.appservgrid.com\/paw93\/index.php\/2019\/02\/19\/grafana-dashboard-deploy-docker-image\/","title":{"rendered":"Grafana Dashboard | Deploy Docker Image"},"content":{"rendered":"<p>Rancher Server has recently <a href=\"http:\/\/rancher.com\/rancher-adds-support-for-docker-machine-provisioning\/\">added Docker Machine support<\/a>,<br \/>\nenabling us to easily deploy new Docker hosts on multiple cloud<br \/>\nproviders via Rancher\u2019s UI\/API and automatically have those hosts<br \/>\nregistered with Rancher. For now Rancher supports DigitalOcean and<br \/>\nAmazon EC2 clouds, and more providers will be supported in the future.<br \/>\nAnother significant feature of Rancher is its networking implementation,<br \/>\nbecause it enhances and facilitates the way you connect Docker<br \/>\ncontainers and those services running on them. Rancher creates a private<br \/>\nnetwork across all Docker hosts that allows containers to communicate as<br \/>\nif they were in the same subnet. In this post we will see how to use the<br \/>\nnew Docker Machine support and Rancher networking by deploying a Grafana<br \/>\ndashboard installation on Amazon EC2. We are creating EC2 instances directly from<br \/>\nRancher UI and all our containers are being connected through the<br \/>\nRancher network. If you have never heard of Grafana, it is an open<br \/>\nsource rich metric web dashboard and graph editor for Graphite, influxDB<br \/>\nand OpenTSBD metric storages. To set this up we are using these docker<br \/>\nimages:<\/p>\n<ul>\n<li>tutum\/influxdb for storing metrics and grafana dashboards<\/li>\n<li>tutum\/grafana for graphing influxDB metrics and serving<br \/>\ndashboards<\/li>\n<li>a custom linux image that will send linux O.S. metrics to influxDB<br \/>\nusing sysinfo_influxdb (CPU, memory, load, disks I\/O, network<br \/>\ntraffic).<\/li>\n<\/ul>\n<p>In a test environment you may want to deploy docker images in the same<br \/>\nhost, but we are using a total of 4 AWS instances listed below in order<br \/>\nto mimic a large-scale production deployment and also to see how Rancher<br \/>\nnetworking works.<\/p>\n<ul>\n<li>1 as a Rancher Server to provision and manage application stack AWS<br \/>\ninstances,<\/li>\n<li>1 running influxDB docker image (tutum\/influxdb)<\/li>\n<li>1 running grafana docker image (tutum\/grafana)<\/li>\n<li>1 running sysinfo docker image (nixel\/sysinfo_influxdb)<\/li>\n<\/ul>\n<h2>Preparing AWS Environment<\/h2>\n<p>First you will need to create the following in AWS Console: a Key Pair<br \/>\nfor connecting to your servers, a Security Group to give you access to<br \/>\nRancher Console, and a Access Key for Rancher to provision EC2<br \/>\ninstances. Creating a Key Pair Enter AWS EC2 Console, go to <em>Key<br \/>\nPairs<\/em> section, click <em>Create Key Pair<\/em> button and then enter a name for<br \/>\nyour Key Pair. Once created, your browser downloads a pem certificate.<br \/>\nYou will need it if you want to connect to your AWS instances.<br \/>\nCreating a Security Group First of all go to VPC Console and enter<br \/>\n<em>Subnets<\/em> section. You will get a list of available subnets in default<br \/>\nVPC, choose one for deploying AWS instances and copy its ID and CIDR.<br \/>\nAlso copy VPC ID, you will need all this data later when creating Docker<br \/>\nhosts with Machine integration. I am using subnet 172.31.32.0\/20 for<br \/>\nthis tutorial.<br \/>\n<a href=\"http:\/\/cdn.rancher.com\/wp-content\/uploads\/2015\/04\/07185125\/AWS-VPC-Subnets.png\"><img decoding=\"async\" src=\"http:\/\/cdn.rancher.com\/wp-content\/uploads\/2015\/04\/07185125\/AWS-VPC-Subnets.png\" alt=\"AWS-VPC-Subnets\" \/><\/a><br \/>\nThen enter AWS EC2 Console, go to <em>Security Groups<\/em> section and click<br \/>\n<em>Create Security Group<\/em> button. Enter the following data:<\/p>\n<ul>\n<li>Security Group Name: Rancher and Grafana<\/li>\n<li>Description: Open Rancher and Grafana ports<\/li>\n<li>VPC: select the default one<\/li>\n<li>Add a new inbound rule to allow 22 TCP port to be accessible only<br \/>\nfrom your IP<\/li>\n<li>Add a new inbound rule to allow 8080 TCP port to be accessible only<br \/>\nfrom your IP<\/li>\n<li>Add a new inbound rule to allow 9345-9346 TCP ports to be accessible<br \/>\nfrom anywhere<\/li>\n<li>Add a new inbound rule to allow all traffic from your VPC network.<br \/>\nIn this case source is 172.31.32.0\/20, change it accordingly to your<br \/>\nenvironment.<\/li>\n<\/ul>\n<p><a href=\"http:\/\/cdn.rancher.com\/wp-content\/uploads\/2015\/04\/07185125\/AWS-Security-Group-RancherServer.png\"><img decoding=\"async\" src=\"http:\/\/cdn.rancher.com\/wp-content\/uploads\/2015\/04\/07185125\/AWS-Security-Group-RancherServer.png\" alt=\"AWS-Security-Group-RancherServer\" \/><\/a><br \/>\nCreating an Access Key Enter EC2 Console and click your user name in<br \/>\nthe top menu bar, click <em>Security Credentials<\/em> and then expand <em>Access<br \/>\nKeys<\/em> option. Click <em>Create New Access Key<\/em> button and after it has been<br \/>\ncreated you will click <em>Show Access Key<\/em> to get the ID and Secret Key.<br \/>\nSave them because you are needing them later to create Docker hosts.<\/p>\n<h2>Rancher Server Setup<\/h2>\n<p>For launching Rancher Server you will need an AWS instance. I am using<br \/>\nthe t1.micro instance for writing this guide, but it is recommended to<br \/>\nuse a larger instance for real environments. Enter AWS EC2 Console and<br \/>\ngo to <em>Instances<\/em> section, click <em>Launch Instance<\/em> button, click<br \/>\n<em>Community AMIs<\/em> and then search for RancherOS and select last version,<br \/>\nfor example rancheros-v0.2.1. Choose an instance type and click <em>Next:<br \/>\nConfigure instance details<\/em> button. In configuration screen be sure to<br \/>\nselect the same subnet you chose for Security Group. Expand <em>Advanced<br \/>\nDetails<\/em> section and enter this <em>user data<\/em> to initialize your instance<br \/>\nand get Rancher Server installed and running.<\/p>\n<p>#!\/bin\/bash<br \/>\ndocker run -d -p 8080:8080 rancher\/server:v0.14.1<\/p>\n<p><a href=\"http:\/\/cdn.rancher.com\/wp-content\/uploads\/2015\/04\/07185125\/AWS-RancherServer-userData.png\"><img decoding=\"async\" src=\"http:\/\/cdn.rancher.com\/wp-content\/uploads\/2015\/04\/07185125\/AWS-RancherServer-userData.png\" alt=\"AWS-RancherServer-userData\" \/><\/a><br \/>\nYou may keep default options for all steps excepting <em>Security Group<\/em><br \/>\n(choose Security Group named <em>Rancher and Grafana<\/em>). When launching AWS<br \/>\ninstance you are asked to choose a Key Pair, be sure to select the one<br \/>\nthat we created before. Go to <em>Instances<\/em> section and click your Rancher<br \/>\nServer instance to know its private and public IPs. Wait a few minutes<br \/>\nand then browse to<br \/>\n<a href=\"http:\/\/rancher_server_public_ip:8080\">http:\/\/RANCHER_SERVER_PUBLIC_IP:8080<\/a><br \/>\nto enter Rancher Web Console and click <em>Add Host<\/em>. You will be asked to<br \/>\nconfirm Rancher Server IP address, click <em>Something else<\/em> and enter<br \/>\nRANCHER_SERVER_PRIVATE_IP:8080, finally click <em>Save<\/em> button.<br \/>\n<a href=\"http:\/\/cdn.rancher.com\/wp-content\/uploads\/2015\/04\/07185125\/AWS-RancherServer-Host-setup.png\"><img decoding=\"async\" src=\"http:\/\/cdn.rancher.com\/wp-content\/uploads\/2015\/04\/07185125\/AWS-RancherServer-Host-setup.png\" alt=\"AWS-RancherServer-Host-setup\" \/><\/a><\/p>\n<h2>Docker hosts setup<\/h2>\n<p>Go to Rancher Console, click <em>Add Host<\/em> and select <em>Amazon EC2<\/em>. Here<br \/>\nyou will need to enter the new host name, the <em>Access Key<\/em> and the<br \/>\n<em>Secret Key<\/em>. Also be sure to set the same <em>Region<\/em>, <em>Zone<\/em>, and <em>VPC<br \/>\nID<\/em> as those used by Rancher Server. Leave all other parameters with<br \/>\ntheir default values. Repeat this process to create our three Docker<br \/>\nhosts that will appear up and running after a while.<br \/>\n<a href=\"http:\/\/cdn.rancher.com\/wp-content\/uploads\/2015\/04\/07185125\/AWS-DockerHosts.png\"><img decoding=\"async\" src=\"http:\/\/cdn.rancher.com\/wp-content\/uploads\/2015\/04\/07185125\/AWS-DockerHosts.png\" alt=\"AWS-DockerHosts\" \/><\/a><br \/>\nSecurity Group for grafana Rancher Server has created a Security<br \/>\nGroup named <em>docker-machine<\/em> for your Docker hosts. Now in order to be<br \/>\nable to connect to grafana you must go to VPC Console and add the<br \/>\nfollowing Inbound rules:<\/p>\n<ul>\n<li>Add a new inbound rule to allow 80 TCP port to be accessible only<br \/>\nfrom your IP<\/li>\n<li>Add a new inbound rule to allow 8083-8084 TCP ports to be accessible<br \/>\nonly from your IP<\/li>\n<li>Add a new inbound rule to allow 8086 TCP port to be accessible only<br \/>\nfrom your IP<\/li>\n<li>Add a new inbound rule to allow all traffic from your VPC network.<br \/>\nIn this case source is 172.31.32.0\/20, change it accordingly to your<br \/>\nenvironment.<\/li>\n<\/ul>\n<p><a href=\"http:\/\/cdn.rancher.com\/wp-content\/uploads\/2015\/04\/07185125\/AWS-DockerMachine-SecurityGroup.png\"><img decoding=\"async\" src=\"http:\/\/cdn.rancher.com\/wp-content\/uploads\/2015\/04\/07185125\/AWS-DockerMachine-SecurityGroup.png\" alt=\"AWS-DockerMachine-SecurityGroup\" \/><\/a><\/p>\n<h2>Installing application containers<\/h2>\n<p>This step consists of installing and configuring influxDB, grafana, and<br \/>\nan ubuntu container running sysinfo_influxdb. This container will send<br \/>\nO.S. metrics to influxDB which will be graphed in grafana.<br \/>\nInstalling influxDB container Go to Rancher Web Console and click <em>+<br \/>\nAdd Container<\/em> button at your first host, enter a container name like<br \/>\n<em>influxdb<\/em> and <em>tutum\/influxdb<\/em> in <em>Select Image<\/em> field. Add these<br \/>\nthree port mappings, all of them are TCP:<\/p>\n<ul>\n<li>8083 (on host) to 8083 (in container)<\/li>\n<li>8084 (on host) to 8084 (in container)<\/li>\n<li>8086 (on host) to 8086 (in container)<\/li>\n<\/ul>\n<p>Expand <em>Advanced Options<\/em> section an add an environment variable named<br \/>\nPRE_CREATE_DB which value is grafana, so influxDB will create<br \/>\nan empty database for grafana metrics. Now go to <em>Networking<\/em> section<br \/>\nand enter a hostname like <em>influxdb<\/em> for this container. Be sure that<br \/>\nNetwork type is <em>Managed Network on docker0<\/em> so this container can be<br \/>\nreached by grafana and sysinfo_influxdb. You can leave other options<br \/>\nwith their default values. After a few minutes you will see your<br \/>\ninfluxDB container launched and running in your host. Note that influxdb<br \/>\ncontainer has a private IP address, copy it to configure<br \/>\nsysinfo_influxdb later. Copy also the public IP of host that is running<br \/>\nthis container, you will need it later to configure grafana.<br \/>\n<a href=\"http:\/\/cdn.rancher.com\/wp-content\/uploads\/2015\/04\/07185125\/AWS-grafana1-host.png\"><img decoding=\"async\" src=\"http:\/\/cdn.rancher.com\/wp-content\/uploads\/2015\/04\/07185125\/AWS-grafana1-host.png\" alt=\"AWS-grafana1-host\" \/><\/a><\/p>\n<p>Installing grafana container Go to Rancher Web Console and click <em>+<br \/>\nAdd Container<\/em> button at your second host, enter a container name like<br \/>\n<em>grafana<\/em> and <em>tutum\/grafana<\/em> in <em>Select Image<\/em> field. Add this TCP<br \/>\nport mapping:<\/p>\n<ul>\n<li>80 (on host) to 80 (in container)<\/li>\n<\/ul>\n<p>Expand <em>Advanced Options<\/em> section and enter the following environment<br \/>\nvariables needed by grafana:<\/p>\n<p>Variable name Variable value Used for<br \/>\nHTTP_USER admin User login for grafana basic HTTP authentication<br \/>\nHTTP_PASS Some password User password for grafana basic HTTP authentication<br \/>\nINFLUXDB_HOST 52.11.32.51 InfluxDB host\u2019s public IP. Adapt this to your environment<br \/>\nINFLUXDB_PORT 8086 InfluxDB port<br \/>\nINFLUXDB_NAME grafana Name of previously created database<br \/>\nINFLUXDB_USER root InfluxDB user credentials<br \/>\nINFLUXDB_PASS root InfluxDB user credentials<br \/>\nINFLUXDB_IS_GRAFANADB true Tell grafana to use InfluxDB for storing dashboards<\/p>\n<p><a href=\"http:\/\/cdn.rancher.com\/wp-content\/uploads\/2015\/04\/07185125\/AWS-Grafana-Env-Vars.png\"><img decoding=\"async\" src=\"http:\/\/cdn.rancher.com\/wp-content\/uploads\/2015\/04\/07185125\/AWS-Grafana-Env-Vars.png\" alt=\"AWS-Grafana-Env-Vars\" \/><\/a><br \/>\nGrafana makes your browser to connect to influxDB directly. This is why<br \/>\nwe need to configure a public IP in INFLUXDB_HOST variable here. If<br \/>\nnot, your browser could not reach influxDB when reading metric values.<br \/>\nGo to <em>Networking<\/em> section and enter a hostname like <em>grafana<\/em> for this<br \/>\ncontainer. Be sure that Network type is <em>Managed Network on docker0<\/em> so<br \/>\nthis container can connect to influxdb. You can leave other options with<br \/>\ntheir default values and after a few minutes you will see your grafana<br \/>\ncontainer launched and running in your host.<br \/>\n<a href=\"http:\/\/cdn.rancher.com\/wp-content\/uploads\/2015\/04\/07185125\/AWS-grafana2-host.png\"><img decoding=\"async\" src=\"http:\/\/cdn.rancher.com\/wp-content\/uploads\/2015\/04\/07185125\/AWS-grafana2-host.png\" alt=\"AWS-grafana2-host\" \/><\/a><br \/>\nNow go to Instances section in EC2 Console, click on the instance which<br \/>\nis running grafana container and copy its public IP. Type the following<br \/>\nurl in your browser:<br \/>\n<a href=\"http:\/\/grafana_host_public_ip\">http:\/\/GRAFANA_HOST_PUBLIC_IP<\/a>, use<br \/>\nHTTP_USER and HTTP_PASS credentials to log in.<br \/>\n<a href=\"http:\/\/cdn.rancher.com\/wp-content\/uploads\/2015\/04\/07185125\/Grafana-Main-Page.png\"><img decoding=\"async\" src=\"http:\/\/cdn.rancher.com\/wp-content\/uploads\/2015\/04\/07185125\/Grafana-Main-Page-300x280.png\" alt=\"Grafana-Main-Page\" \/><\/a><br \/>\nInstalling sysinfo_influxdb container Go to Rancher Web Console and<br \/>\nclick <em>+ Add Container<\/em> button at your third host, enter <em>sysinfo<\/em> in<br \/>\ncontainer name and <em>nixel\/sysinfo_influxdb<\/em> in <em>Select Image<\/em><br \/>\nfield. No port mapping is needed. Expand <em>Advanced Options<\/em> section and<br \/>\nenter these environment variables which are needed by this container:<\/p>\n<p>Variable name Variable value Used for<br \/>\nINFLUXDB_HOST 10.42.169.239 InfluxDB container private IP. Adapt this to your environment<br \/>\nINFLUXDB_PORT 8086 InfluxDB port<br \/>\nINFLUXDB_NAME grafana Name of previously created database<br \/>\nINFLUXDB_USER root InfluxDB user credentials<br \/>\nINFLUXDB_PASS root InfluxDB user credentials<br \/>\nSYSINFO_INTERVAL 5m Sysinfo frequency to update metric values. Default is 5m<\/p>\n<p><a href=\"http:\/\/cdn.rancher.com\/wp-content\/uploads\/2015\/04\/07185125\/Rancher-Sysinfo-Env-Vars.png\"><img decoding=\"async\" src=\"http:\/\/cdn.rancher.com\/wp-content\/uploads\/2015\/04\/07185125\/Rancher-Sysinfo-Env-Vars.png\" alt=\"Rancher-Sysinfo-Env-Vars\" \/><\/a><br \/>\nNote that in this case INFLUXDB_HOST contains influxDB container<br \/>\nprivate IP. This is because sysinfo_influxdb will directly connect to<br \/>\ninfluxDB, using the VPN created by Rancher. Go to <em>Networking<\/em> section<br \/>\nand be sure the container hostname is <em>sysinfo<\/em> because you will later<br \/>\nimport a sample grafana dashboard which needs this. Be sure that Network<br \/>\ntype is <em>Managed Network on docker0<\/em> so this container can connect to<br \/>\ninfluxdb. You can leave other options with their default values and<br \/>\nafter a few minutes you will see your sysinfo container launched and<br \/>\nrunning in your host.<br \/>\n<a href=\"http:\/\/cdn.rancher.com\/wp-content\/uploads\/2015\/04\/07185125\/AWS-grafana3-host.png\"><img decoding=\"async\" src=\"http:\/\/cdn.rancher.com\/wp-content\/uploads\/2015\/04\/07185125\/AWS-grafana3-host.png\" alt=\"AWS-grafana3-host\" \/><\/a><\/p>\n<h2>Graph metrics with grafana<\/h2>\n<p>At this point sysinfo container is collecting O.S. metrics and sending<br \/>\nthem to influxDB every 5 minutes using Rancher networking. In this final<br \/>\nstep we are graphing those metrics in grafana. First let\u2019s import a<br \/>\nsample grafana dashboard that is already configured. Execute the<br \/>\nfollowing command to download the dashboard definition:<\/p>\n<p>curl -o https:\/\/raw.githubusercontent.com\/nixelsolutions\/sysinfo_influxdb\/master\/grafana_dashboard.json<\/p>\n<p>Then open grafana web, browse<br \/>\nto <a href=\"http:\/\/grafana_host_public_ip\">http:\/\/GRAFANA_HOST_PUBLIC_IP<\/a> and<br \/>\nclick folder icon on top.<br \/>\n<a href=\"http:\/\/cdn.rancher.com\/wp-content\/uploads\/2015\/04\/07185125\/Grafana-Import-dashboard.png\"><img decoding=\"async\" src=\"http:\/\/cdn.rancher.com\/wp-content\/uploads\/2015\/04\/07185125\/Grafana-Import-dashboard.png\" alt=\"Grafana-Import-dashboard\" \/><\/a><br \/>\nClick import button and upload the file you have just downloaded. Click<br \/>\nsave button on top and now you will be able to see CPU, Load Average,<br \/>\nRAM, Swap and Disks metrics that are being collected in your sysinfo<br \/>\ncontainer.<br \/>\n<a href=\"http:\/\/cdn.rancher.com\/wp-content\/uploads\/2015\/04\/07185125\/Grafana-metrics.png\"><img decoding=\"async\" src=\"http:\/\/cdn.rancher.com\/wp-content\/uploads\/2015\/04\/07185125\/Grafana-metrics.png\" alt=\"Grafana-metrics\" \/><\/a><\/p>\n<h2>Conclusion<\/h2>\n<p>Rancher implements a networking solution that really simplifies the way<br \/>\nyou bring connectivity to those services running in your containers.<br \/>\nInstead of managing port mappings it automatically puts all your<br \/>\ncontainers into the same network without requiring any configuration<br \/>\nfrom you. This is an important feature because, in fact, it brings<br \/>\ncontainers closer to enterprise production platforms because it makes<br \/>\neasier to deploy complex scenarios where some containers need to connect<br \/>\nwith others. With Rancher you can deploy any container on any host at<br \/>\nany time without reconfiguring your environment, and there is no need to<br \/>\nworry about defining, configuring or maintaining port mappings when<br \/>\ninterconnecting containers. To get more information on Rancher, feel<br \/>\nfree at any time to request a <a href=\"http:\/\/info.rancher.com\/schedule-a-rancher-demo\">demonstration from one of our<br \/>\nengineers<\/a>, or sign up<br \/>\nfor an upcoming online meetup.<\/p>\n<p><em>Manel Martinez<br \/>\nis a Linux systems engineer with experience in the design and management<br \/>\nof scalable, distributable and highly available open source web<br \/>\ninfrastructures based on products like KVM, Docker, Apache, Nginx,<br \/>\nTomcat, Jboss, RabbitMQ, HAProxy, MySQL and XtraDB. He lives in spain,<br \/>\nand you can find him on Twitter<br \/>\n<a href=\"http:\/\/twitter.com\/manel_martinezg\">@manel_martinezg<\/a>.<\/em><\/p>\n<p><a href=\"https:\/\/rancher.com\/deploying-grafana-server-on-aws-with-rancher-and-rancheros\/\" target=\"_blank\" rel=\"noopener\">Source<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Rancher Server has recently added Docker Machine support, enabling us to easily deploy new Docker hosts on multiple cloud providers via Rancher\u2019s UI\/API and automatically have those hosts registered with Rancher. For now Rancher supports DigitalOcean and Amazon EC2 clouds, and more providers will be supported in the future. Another significant feature of Rancher is &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.appservgrid.com\/paw93\/index.php\/2019\/02\/19\/grafana-dashboard-deploy-docker-image\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Grafana Dashboard | Deploy Docker Image&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-1350","post","type-post","status-publish","format-standard","hentry","category-kubernetes"],"_links":{"self":[{"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/posts\/1350","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/comments?post=1350"}],"version-history":[{"count":1,"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/posts\/1350\/revisions"}],"predecessor-version":[{"id":1425,"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/posts\/1350\/revisions\/1425"}],"wp:attachment":[{"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/media?parent=1350"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/categories?post=1350"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/tags?post=1350"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}