{"id":15160,"date":"2023-09-12T11:53:06","date_gmt":"2023-09-12T06:23:06","guid":{"rendered":"https:\/\/opstree.com\/blog\/\/?p=15160"},"modified":"2024-02-23T14:50:24","modified_gmt":"2024-02-23T09:20:24","slug":"opensearch-alert-integration-with-sns","status":"publish","type":"post","link":"https:\/\/opstree.com\/blog\/2023\/09\/12\/opensearch-alert-integration-with-sns\/","title":{"rendered":"OpenSearch Alert Integration with SNS"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"2000\" height=\"800\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/08\/banner.jpg?w=1024\" alt=\"\" class=\"wp-image-15218\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Why Opt for Integrating Alerts with OpenSearch?<\/h4>\n\n\n\n<p class=\"has-text-align-justify\">Monitoring the OpenSearch visualization dashboard 24*7 becomes challenging when application or system logs fail to appear. Therefore, it&#8217;s essential to establish alerts that promptly notify us when such issues arise.                             The flexibility and scalability of OpenSearch make it a compelling choice for implementing alerting solutions in various domains, from IT operations and security to business intelligence and analytics.  <\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Overview of OpenSearch cluster<\/strong><\/h4>\n\n\n\n<p class=\"has-text-align-justify\">OpenSearch, a powerful and versatile search and analytics engine, plays a crucial role in helping you gain valuable insights from your data. However, staying on top of potential issues and anomalies in your OpenSearch cluster requires a proactive approach.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p class=\"has-text-align-justify\">OpenSearch provides a robust alerting and monitoring framework that enables you to set up customized alerts based on your specific use cases and requirements. By defining alert conditions that trigger notifications, you can be instantly notified about critical events such as:<\/p>\n\n\n\n<ul>\n<li>Abnormal CPU utilization<\/li>\n\n\n\n<li>Out-of-memory incidents<\/li>\n\n\n\n<li>Query performance degradation<\/li>\n\n\n\n<li>Data indexing failures<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">What is SNS (Simple Notification Service)<\/h4>\n\n\n\n<p class=\"has-text-align-justify\">AWS SNS is a versatile notification service that empowers you to build event-driven, cloud-native applications. In this blog post, we&#8217;ll explore the process of integrating OpenSearch alerts with AWS SNS, and we&#8217;ll uncover how this integration can greatly enhance your monitoring capabilities.<\/p>\n\n\n\n<p>So now we will deep-dive into the integration of OpenSearch alerts with AWS SNS.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 1<\/h2>\n\n\n\n<p>Now we will have to create an SNS topic. <\/p>\n\n\n\n<p class=\"has-text-align-justify\">Log in to the AWS Management Console, then navigate to the SNS service. Click on &#8216;Create topic&#8217; and provide a name along with a display name for your topic. Afterward, click &#8216;Create topic.&#8217;&nbsp;<\/p>\n\n\n\n<p>Remember to note down the Amazon Resource Name (ARN) of the newly created SNS topic.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"828\" height=\"346\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2024\/02\/arn.png\" alt=\"\" class=\"wp-image-17554\" srcset=\"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2024\/02\/arn.png 828w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2024\/02\/arn-300x125.png 300w, https:\/\/opstree.com\/blog\/wp-content\/uploads\/2024\/02\/arn-768x321.png 768w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Step 2<\/h2>\n\n\n\n<p class=\"has-text-align-justify\">As we have created an SNS Topic, we will now need to create a subscription endpoint where we can receive an alert. So in our case, I want to get a notification on my email ID hence email is selected as an endpoint for the subscription.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"238\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/09\/image-12.png?w=800\" alt=\"\" class=\"wp-image-15430\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Step 3<\/h2>\n\n\n\n<p class=\"has-text-align-justify\">Next, create an OpenSearch role that grants access to the SNS service, enabling it to initiate alerts.<\/p>\n\n\n\n<p><img decoding=\"async\" style=\"width: 1000000px\" src=\"https:\/\/lh6.googleusercontent.com\/HRoYJf-70hXpWB5LgpvmSJR2ewcFEg1sswIum5SWwj13mG28yYxPixe3zgrAD-mO8Xs1bBYEACkcgw8Wng5-dItIuCZwyDonof3UlFk6JdITIA9CW8NFJFQhA0aAf7gzWy_YpU1iOaP8dYsay8EPfA\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 4<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"172\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/09\/image-13.png?w=800\" alt=\"\" class=\"wp-image-15431\" \/><\/figure>\n\n\n\n<p>Now attach the SNS Full access policy for this role.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Update the trust relationship to openSearch for the same. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    \"Version\": \"2012-10-17\",\n    \"Statement\": &#091;\n        {\n            \"Action\": &#091;\n                \"sts:AssumeRole\"\n            ],\n            \"Effect\": \"Allow\",\n            \"Principal\": {\n                \"Service\": &#091;\n                    \"opensearchservice.amazonaws.com\"\n                ]\n            }\n        }\n    ]\n}\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Step 5<\/h2>\n\n\n\n<p class=\"has-text-align-justify\">Once we have created a role in IAM. Now navigate to your OpenSearch cluster and update&nbsp;the access policy of openSearch cluster.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"247\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/09\/image-22.png?w=800\" alt=\"\" class=\"wp-image-15432\" \/><\/figure>\n\n\n\n<p>Go to the security panel to update the access policy.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">Having established a role with complete SNS access and having designated Amazon OpenSearch as a trusted entity, we need to incorporate this role into the access policy of your OpenSearch cluster.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": &#091;\n    {\n      \"Effect\": \"Allow\",\n      \"Principal\": {\n        \"AWS\": \"*\"\n      },\n      \"Action\": \"es:*\",\n      \"Resource\": \"arn:aws:es:ap-south-1:&lt;account-id&gt;:domain\/&lt;opensearch-domain-name&gt;\/*\"\n    },\n    {\n      \"Effect\": \"Allow\",\n      \"Principal\": {\n        \"AWS\": \"arn:aws:iam::&lt;account-id&gt;:role\/SNS-ACCESS\"\n      },\n      \"Action\": \"es:ESHttpPost\",\n      \"Resource\": \"arn:aws:es:ap-south-1:&lt;account-id&gt;:domain\/&lt;opensearch-domain-name&gt;\/_doc\/_bulk\"\n    }\n  ]\n}\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"361\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/09\/image-21.png?w=800\" alt=\"\" class=\"wp-image-15433\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Step 6<\/h2>\n\n\n\n<p>Now Login into OpenSearch then go to the notification channel and create a channel for SNS.<\/p>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/P_-lylMyky6Ag_4PDBcgbN59F8j5tCZ57FTC__G5fguojPtlDo_OtA9hyfOiIIKceuGrKXcCMJ9M5AkBIb6m1ZwUH14Qyfu_ocswZKNY1kOvLFbMX9J8ahhPDwNhqQ1hPbjzstxE4-ecusbUkDctXA\" width=\"624\" height=\"155\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 7<\/h2>\n\n\n\n<p class=\"has-text-align-justify\">To complete the setup, proceed by selecting &#8220;Create Channel&#8221; and opt for SES as the chosen channel type. Input the SNS Topic ARN and the Role ARN of the previously established role. This configuration ensures the activation of alerts effectively.<\/p>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/UL8rUECwwhZsux98dkHte57bJUAIEfyJ9ItA-FnTP5ysGPoR-zM_7NzxNBwqHy1FOk_hW-9SizN0ok_i32XR2Vb5DfFow7M-mKTzL5yciOy1bWVWdlh11dvoVuclU2Mxev_nq7I81ls7NCzJIJvmEg\" width=\"624\" height=\"271\"><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Now<\/strong> <strong>let&#8217;s check an example for setting up alerts on openSearch.<\/strong><\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Step 1<\/h5>\n\n\n\n<p>Once you log into OpenSearch, navigate to the Alerting section.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Step 2<\/h5>\n\n\n\n<p>Once you\u2019re inside the alerting system click on Monitor and click on Create monitor to create an alert.<\/p>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/HnIHLLui9rZ9lAkV7UekX56QvBe93jDe8fEqb8KbFOnx7je6f-bjtyNDTgzCvOwfvUFNQfhrZhze_wxN1vl2NwWdVpAuW93tjtCiKskFc3gP8Tlp8Jsvco1e5QGJHvdlt92CSI1wT8A-sXmuc7Bztgg\" width=\"624\" height=\"119\"><\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Step 3<\/h5>\n\n\n\n<p>Now we will create an alert to monitor the index. Give a name and time interval that it will monitor the index.<\/p>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/u9xgWMtdI66-Qsu9nh1HKXbQ1zAfiStYO88Y_ntuMgxNc081xs7ZlV9GIQO6z21XangiWFhYZQCQe_WYtvL0q-52L0yB99PkNQxSpfrTJ2qdO5jBid5ChOIsquZhVoLcvE64Gi3rOBoY6Hc9knHP9iI\" width=\"624\" height=\"320\"><\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Step 4<\/h5>\n\n\n\n<p>Provide the index name for which monitoring needs to be enabled.<\/p>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/c4fMeLNQAzH0F6f-43Q2P20OgHSPJEmJ5CEZ9GgWxy0THhMcdMbPCE3FOBiqq15adwlBYfj6PbGvl16n8vyHFgCA6-r6Yqx3OgmA0jXFJd_zjApwGAHJ_yeq8gIN183_mBbwv7vwNlk1y5w4HASunlc\" width=\"624\" height=\"111\"><\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Step 5<\/h5>\n\n\n\n<p class=\"has-text-align-justify\">We will write a query for monitoring the index, aiming to identify instances where data hasn&#8217;t been received. In this illustration, will use the <strong>env: dev<\/strong> tag that accompanies each log entering the OpenSearch of the <strong>fmpp-goal index<\/strong>.<\/p>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/tDrnJ1y36PL_saqhEngklWkZ91OsEOS5vAvC6hLFdARZXRzziPuVJGsphCXKOd1HWfpLnjxBdyWMc4LP4ZszL0AQFEL-tki6ecJxCKWh5mZJLP4ZLmB4H8LNpNYRggtH_AnQkfHHr4uIZOKOPsI2Qt4\" width=\"624\" height=\"296\"><\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Step 6<\/h5>\n\n\n\n<p>Once you&#8217;ve established the monitoring query for the index, proceed to configure the trigger. This enables the generation of alerts whenever logs are not generated.<\/p>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/Gwywv4PAU31Cn--IljuFX4XEAcidzFw7LYPI3_WjAFOUWgWwJsisYDl3VlviVSOTROMup6Mlsh5nQp_gVyPDXvM5Ra8bur3tmgT9hQWrz3o5rrb8bFL_wWRJfPdCVAqBkfakW1j6zVqQqrm397aFsUs\" width=\"624\" height=\"88\"><\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Step 7<\/h5>\n\n\n\n<p>Now, define the alert condition based on the specific use case. In my scenario, I&#8217;ve configured it to trigger when the count reaches zero. This condition is applicable when no logs are present, meaning the <strong>env: dev<\/strong> tag is absent in the fmpp-goal index. Therefore, I&#8217;ve precisely set the trigger condition to zero.<\/p>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/Uvv3eFvN4r0iim53jbez-QTwlCOBBSs6aMFCxNYrWylrTVqMDMF-84fB814dfhBnrghjEsGQqmOOeU1SMZhIwBbp4KwuuJK-o76_G8lUxjpdOgDnx50XaUt4EzLwBEuMroV-QYIL50UQWIcb8bzxhwc\" width=\"624\" height=\"260\"><\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Step 8<\/h5>\n\n\n\n<p>Now set the alert message and notification channel which we have configured earlier.<\/p>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"241\" src=\"https:\/\/lh3.googleusercontent.com\/13GthojzqhdJ0I6LHFbwt3irfzUcVsBsYhZFN2I-YAdWz5mbYAoNPAcmCFGyg02ErLFI8Wdfu6mKAMH3vsPJKH8ozKZjCMGV4olbtrwy95YtsOIijkdZTG0AjAj4RvUwhbYndwhKGW5pTsOUSfBMyaE\"><\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Step 9<\/h5>\n\n\n\n<p>Click on Create and that will complete the alerting setup on OpenSearch<\/p>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/nFq6QIb-Puv68jg51ChhLRvONqtAqmWtnAmTkMQC6Nq-sXJxlytCCFpT70sFxqYsi1uR9_uRU0zVCJQonz3GlR79xdTYUM00NUAsIh3QR0rTrHg-zPCGzh9Znaq1kvJmijtJm83y6NhXLjxMqODThOk\" width=\"624\" height=\"69\"><\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Step 10<\/h5>\n\n\n\n<p>Once the alert is set up using openSearch. You will receive the notification below.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"270\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/09\/image-20-1.png?w=800\" alt=\"\" class=\"wp-image-15434\" \/><\/figure>\n\n\n\n<p>In the same way, you can set up alerts for API Failure as well.<\/p>\n\n\n\n<p><strong>Conclusion<\/strong><\/p>\n\n\n\n<p class=\"has-text-align-justify\">Real-time monitoring and alerts are not just a convenience but a necessity. The integration of OpenSearch alerts with AWS SNS empowers you to take control of your cluster&#8217;s health by providing instant notifications that enable swift action. With this integration, you can ensure that potential issues are addressed before they impact your users or disrupt your operations.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Blog Pundits: <a href=\"https:\/\/opstree.com\/blog\/\/author\/deepakgupta97\/\">&nbsp;<strong>Deepak Gupta<\/strong><\/a><strong><strong> <\/strong><\/strong><\/strong> <strong>and <a rel=\"noreferrer noopener\" href=\"https:\/\/opstree.com\/blog\/\/author\/sandeep7c51ad81ba\/\" target=\"_blank\">Sandeep Rawat<\/a><\/strong><\/p>\n\n\n\n<p><strong>OpsTree is an End-to-End <a href=\"https:\/\/opstree.com\/services\/\" target=\"_blank\" rel=\"noreferrer noopener\">DevOps Solution<\/a> Provider.<\/strong><\/p>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/opstree.com\/contact-us\/?utm_source=WordPress&amp;utm_medium=Blog&amp;utm_campaign=OpenSearch+Alert+Integration+with+SNS\" target=\"_blank\" rel=\"noreferrer noopener\">Contact Us<\/a><\/div>\n<\/div>\n\n\n\n<p class=\"has-text-align-center\"><strong>Connect with Us<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-social-links aligncenter is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-1 wp-block-social-links-is-layout-flex\"><li class=\"wp-social-link wp-social-link-linkedin  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/www.linkedin.com\/company\/opstree-solutions\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">LinkedIn<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-youtube  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/www.youtube.com\/channel\/UCeLma6SpNYH7jjYKSBNSexw\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">YouTube<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-github  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/github.com\/OpsTree\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">GitHub<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-facebook  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/www.facebook.com\/opstree\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Facebook<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-medium  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/medium.com\/buildpiper\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M20.962,7.257l-5.457,8.867l-3.923-6.375l3.126-5.08c0.112-0.182,0.319-0.286,0.527-0.286c0.05,0,0.1,0.008,0.149,0.02 c0.039,0.01,0.078,0.023,0.114,0.041l5.43,2.715l0.006,0.003c0.004,0.002,0.007,0.006,0.011,0.008 C20.971,7.191,20.98,7.227,20.962,7.257z M9.86,8.592v5.783l5.14,2.57L9.86,8.592z M15.772,17.331l4.231,2.115 C20.554,19.721,21,19.529,21,19.016V8.835L15.772,17.331z M8.968,7.178L3.665,4.527C3.569,4.479,3.478,4.456,3.395,4.456 C3.163,4.456,3,4.636,3,4.938v11.45c0,0.306,0.224,0.669,0.498,0.806l4.671,2.335c0.12,0.06,0.234,0.088,0.337,0.088 c0.29,0,0.494-0.225,0.494-0.602V7.231C9,7.208,8.988,7.188,8.968,7.178z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Medium<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-twitter  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/twitter.com\/opstreedevops\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M22.23,5.924c-0.736,0.326-1.527,0.547-2.357,0.646c0.847-0.508,1.498-1.312,1.804-2.27 c-0.793,0.47-1.671,0.812-2.606,0.996C18.324,4.498,17.257,4,16.077,4c-2.266,0-4.103,1.837-4.103,4.103 c0,0.322,0.036,0.635,0.106,0.935C8.67,8.867,5.647,7.234,3.623,4.751C3.27,5.357,3.067,6.062,3.067,6.814 c0,1.424,0.724,2.679,1.825,3.415c-0.673-0.021-1.305-0.206-1.859-0.513c0,0.017,0,0.034,0,0.052c0,1.988,1.414,3.647,3.292,4.023 c-0.344,0.094-0.707,0.144-1.081,0.144c-0.264,0-0.521-0.026-0.772-0.074c0.522,1.63,2.038,2.816,3.833,2.85 c-1.404,1.1-3.174,1.756-5.096,1.756c-0.331,0-0.658-0.019-0.979-0.057c1.816,1.164,3.973,1.843,6.29,1.843 c7.547,0,11.675-6.252,11.675-11.675c0-0.178-0.004-0.355-0.012-0.531C20.985,7.47,21.68,6.747,22.23,5.924z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Twitter<\/span><\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Why Opt for Integrating Alerts with OpenSearch? Monitoring the OpenSearch visualization dashboard 24*7 becomes challenging when application or system logs fail to appear. Therefore, it&#8217;s essential to establish alerts that promptly notify us when such issues arise. The flexibility and scalability of OpenSearch make it a compelling choice for implementing alerting solutions in various domains, &hellip; <a href=\"https:\/\/opstree.com\/blog\/2023\/09\/12\/opensearch-alert-integration-with-sns\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;OpenSearch Alert Integration with SNS&#8221;<\/span><\/a><\/p>\n","protected":false},"author":239127798,"featured_media":29900,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[28070474],"tags":[26084,44070,768739294,83934289,768739308,676319247,765246259,4996032],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/11\/DevSecOps-1.jpg","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pfDBOm-3Ww","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/15160"}],"collection":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/users\/239127798"}],"replies":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/comments?post=15160"}],"version-history":[{"count":26,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/15160\/revisions"}],"predecessor-version":[{"id":17555,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/15160\/revisions\/17555"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media\/29900"}],"wp:attachment":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media?parent=15160"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/categories?post=15160"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/tags?post=15160"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}