# Welcome to Fylamynt

Welcome to Fylamynt Documentation! You'll be able to leverage this portal to find product guides, best practices and reference documentation for Integrations, Automations, Workflows and more.

## About Fylamynt

Fylamynt is a comprehensive Cloud orchestration, automation and response platform that unifies case management, automation, real-time collaboration and incident remediation to serve cloud engineering teams across the incident lifecycle.

It is the most comprehensive incident response platform in the market today, orchestrating across hundreds of cloud products to help your cloud engineering and on-call teams standardize and automate their processes for faster response times and increased team productivity.

Fylamynt's unique incident response approach combines the power of integrations across the cloud product stack. It is a single platform for end-to-end incident lifecycle management.

* Orchestrate: Integrations come from a wide range of tools like metrics, monitoring, logging, CI/CD, communication, cloud remediation services and bring all critical incident data into one platform.
* Automate: Fylamynt can help you tap into that right brain creativity, with a visual and intuitive interface that makes automated workflow creation as easy as, well, drag and drop.
* Collaborate: Managing incidents in Fylamynt is more hands-off as you could also automate the collaboration piece by creating the communication channels like Slack, Zoom and Jira automatically.
* Remediate: Ensure consistent remediation with Fylamynt by leveraging the right set of actions in your workflows. Reduced your MTTR by shifting to an automated enrichment and remediation mechanism.
* Schedule: Periodically schedule any of your workflows and also add human-in-the-loop with Slack approvals for maintaining the state of your application.
* Analyze: Track critical incident SLAs, environment health, application metrics with ready to use widgets on Fylamynt dashboard. Review workflow execution details to improve your ongoing metrics.

## How to use this portal?

On this portal you will learn all about Fylamynt product capabilities so that it's easier for you to perform the same set of actions in the product.

From the left panel, you can navigate to any of the reference documentation that covers Fylamynt's components : integrations and workflows.

## Partner with Fylamynt

If you wish to become a Partner, please check out our [Partners](https://www.fylamynt.com/contact) section of the site.


# Onboarding Checklist

Use the provided onboarding checklist to bring yourself up to speed on how everything works and creating powerful workflows in no time at all.

### 1. [Add an AWS Target Account](/getting-started-1/1.-setting-up-your-first-cloud-service-target-account)

Adding your AWS target accounts is required to execute AWS API calls as action nodes in a Fylamynt Workflow. &#x20;

* The AWS Execution Action allows you to call any AWS API endpoint supported by the [boto3 library](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html#).
* Fylamynt also provides AWS service-specific actions, which are listed [here](https://barney.dev.neurops.io/actions).

### 2. [Getting to know Fylamynt workflows](/getting-started-1/getting-to-know-workflows)

Fylamynt workflows and the Workflow Editor Canvas are where all the magic happens, providing drag and drop capabilities for all your workflow steps/actions as well as triggering workflows automatically.

### 3. [Creating your first workflow using an AWS Target Account](/getting-started-1/3.-creating-your-first-workflow-using-aws-cloud-services)

AWS API calls are notoriously hard to read, understand and use.  Fylamynt provides a step-by-step guide to simplify the process by using the AWS Execution action node to create a workflow.

### 4. [Setting up your first Integration](/getting-started-1/setting-up-your-first-integration)

Integrations are the building blocks of workflows created in Fylamynt.  Each Fylamynt integration exposes a set of actions that can be used to create a workflow.

### 5. [Setting up your first Resource](/getting-started-1/setting-up-your-first-resource)

Resources in Fylamynt are either third-party or system plugins that help you with integration setup or provide the necessary elements needed in some of the integration actions.

### 6. [Creating your first Incident Response workflow using Integrations](/getting-started-1/6.-creating-your-first-incident-response-workflow)

Fylamynt provides a step-by-step guide to create a workflow that automates the remediation of an alert received from your performance monitoring tool.

### 7. [Incident Management Configuration](/getting-started-1/7.-incident-management-automatic-workflow-execution)

Incident Management is the business layer on top of workflow executions and is used to automatically execute the workflow that is associated with a task type assignment.

### 8. [Quickstart - Fylamynt sample workflows](/getting-started-1/sample-workflows)

Sample workflows in Fylamynt can be duplicated to provide users with a quick starting point for their ideal incident response use case.


# 1. Setting up your first Cloud Service target account

To start using Fylamynt, you will need to connect your AWS Accounts. Fylamynt uses an IAM role with assume role permissions. Using policies allows for custom access to only the necessary services.

AWS API calls are notoriously hard to read, understand and use.  Our goal is to help users connect and execute individual API calls as a node in Fylamynt workflows. More on this later when we create our first workflow.&#x20;

## Configure AWS in Fylamynt

After successfully [signing up](https://app.fylamynt.com/sign-up) for a Fylamynt account, the first onboarding step is to add your AWS account.  Click on **Connect AWS Account**

![](/files/fZJBIc8r0oirLI8GxTyA)

If you decide to connect your AWS later, follow these steps:

* Navigate to **Settings** > Integrations > **Cloud Services**&#x20;
* ![](/files/eaAT2u19imlecmZEZEZI)
* Click **"Add AWS Account"** to configure Fylamynt integration with your AWS account.
* ![](/files/dDfpFrlLwznUMbef2FNd)

On the [**Add AWS Target Account**](https://app.fylamynt.com/settings/get-started) page, we provide multiple options to configure the IAM role with AssumeRole permission. Additional information is also available on the[ AWS integration page](/integrations/aws). The easiest method however is to use our provided CloudFormation template which will automatically open the users AWS console and Cloudformation stack with our template pre-loaded.&#x20;

**Configuration steps for CloudFormation template:**

* Login to your AWS account
* Select the CloudFormation Template here.&#x20;
  * CloudFormation Stack should open with the pre-loaded template&#x20;

![](/files/PNLE99iy54HMLjHUQIAB)

* Under Parameters, provide the information for each of the following:
* Fylamynt Account ID
  * On the **Add AWS Target Account setting** page, copy the Fylamaynt Account ID and paste it here.  *This is the AWS account ID that hosts the Fylamynt application, and you are granting that account access to your AWS target account.*
* Fylamynt External ID
  * On the **Add AWS Target Account setting** page, copy the Fylamaynt External ID and paste it here.&#x20;
* AWS Policy ARN
  * If you already have a policy, copy/paste the ARN. Otherwise, the Fylamynt team can help you create a policy that suits your needs.&#x20;
  * For non-critical test accounts, the **PowerUserAccess** managed policy is set by default. This will unlock the full functionality of the Fylamynt platform.
* Check the box to acknowledge that AWS CloudFormation might create IAM resources
* Click **Create stack**
* Monitor the stack status and verify successful completion with status "CREATE\_COMPLETE"
* ![](/files/qLF2KZx4ND79C9TBKmdS)
* Select the Outputs tab and copy the AssumeRoleARN value
* ![](/files/hU9h6Z0ESWzvNrBDYPtR)
* On the **Add AWS Target Account setting** page, paste the value into the **AssumeRole ARN** text field
* Enter an AWS Account Alias name
* Select the preferred region
* Click **Add Target Account**
* The newly added account should display on the **AWS Target Accounts** page
* ![](/files/8NQbIgSDW4SYc5z7neQd)

Video walkthrough of the steps provided:

![](/files/xCEWLup0cqbCJLoT91Uw)

With a target AWS Account added, let's see what functionality this provides by creating your first workflow.


# 2. Getting to know workflows

Fylamynt can help you tap into that right-brain creativity, with a visual and intuitive interface that makes automated workflow creation as easy as, well, drag and drop.

The workflow editor page offered in the product is where all the magic lies. You can simply drag, drop and connect nodes on the canvas to create a workflow that suits your needs.

## How do I reach the Workflow Editor Page (Canvas)?

1. Click on "Workflows" available in the left panel of the product.
2. ![](/files/l4djb2QZJA6egzPInlZu)
3. Click on "New Workflow +" available in the top right corner.
4. Enter a suitable workflow name&#x20;
   1. Workflow name cannot start with aws, amazon, amzn
5. ![](/files/MDUCyJrddE2wh1hbCZB0)
6. Select the trigger type.
   1. Trigger types are made available for selection once the integration is configured and authorized on the settings page.
7. Click on "Create Workflow"
8. ![](/files/Fsvh2GRtJ9uv8Dad84JA)
9. There are three panels on this page that will help you create your workflow.
   1. Left Panel - Library of integration actions. Click on the "+" icon in the top left to open and close the library.
      1. ![](/files/82yNplb9uGOLh2pIVEOW)
   2. Center Panel - Canvas where you can drag and drop actions to connect them and create a workflow.
   3. Right Panel - Action configuration panel where you get to enter the input parameters and explore the output parameters for a particular action that you have selected.
      1. ![](/files/k5d2npKh6CBvovZg50Dk)

Please go through the following sections for more information on workflows.

1. [Workflow as Code](/getting-started-1/getting-to-know-workflows#workflow-as-code)
2. [Workflows are flexible](/getting-started-1/getting-to-know-workflows#workflows-are-flexible)
3. [Workflows in action ](/getting-started-1/getting-to-know-workflows#workflows-in-action)

## **Workflow as Code**

We like to call this “workflow as code” because our user interface gets out of your way and lets you switch seamlessly between drag-and-drop and coding scripts in Python and JSON, without loss of information.

You can select from a comprehensive library of connectors and automated actions to connect any part of your cloud. You can select from a list of actions to create a workflow to solve a specific business task such as fixing an incident that caused the website to be down.

![](/files/1LQrl6ntsdDcTNLjHcVt)

## **Workflows are flexible**

Workflows can be a combination of actions, controls, operators, and even nested workflows.&#x20;

When action nodes are connected, the outputs of previous nodes can be consumed in downstream nodes. For example, the Instance ID of an EC2 instance that you want to stop, due to low resource utilization, can be retrieved from the output of Trusted Advisor.

![](/files/7KiIoBB3Vq0KOf6QLP0C)

Conditional nodes can also be added to evaluate variables and based on the result set the downstream action node destination. For example, let's add a conditional node to verify if AWS Trusted Advisor identified any low utilization EC2 instances. If no instances are identified then end workflow, otherwise stop the instances using the instance IDs extracted from Trusted Advisor.

![](/files/PgIarroLYmVUpP0HoNdJ)

Workflows also feature version control, which creates a new version of your workflow on every new save.  You can manage your version by rolling back or deleting it.

![](/files/rlluNonSQE1vWRp2fARl)

Actions in a workflow are specific to performing service tasks. Fylamynt provides pre-built actions and service integrations, or connectors, to simplify and speed up workflow deployment.

Services can include:

* SaaS services such as DataDog, New Relic, Splunk, Sumo Logic, etc.
* SaaS execution services such as Terraform, Pulumi, CloudFormation, Ansible, etc.
* Public cloud services such as CloudWatch, EventBridge, EC2, RDS, etc.
* Kubernetes and Container services such as EKS, ECS, GKE, etc

## **Workflows in action**

The following methods to run workflows in Fylamynt are supported:

* **Manually**
  * From the Workflow Editor page
    * ![](/files/ndciH9MBHIWqunIhu78c)
  * From the workflow details page
    * ![](/files/QHpOLUMyoEvD3pQiRwO4)
* **Scheduled**
  * From the Workflow Editor page
    * ![](/files/2dfRVQ47PnaItfQGO7ZQ)
    * ![](/files/18VrBsz18YcxeXMdPEds)
  * From the workflow details page
    * ![](/files/J6eIga5rLiEx9GnvDw4q)
* **Automatically**
  * Workflows can automatically be triggered from native monitoring services.
  * When a new workflow is created, you will be prompted to select the Trigger type for your workflow. &#x20;
    * ![](/files/DGv6X89q6TRsjlMTEtgz)
  * Here are some examples of integration trigger types.  Fylamynt is constantly adding new integrations so please refer to the integrations listed on the console page [here](https://app.fylamynt.com/settings/integrations) for an accurate list.
    * Manual
    * [AWS Health](https://docs.fylamynt.com/integrations/aws_health) (Service)
    * [CloudWatch ](https://docs.fylamynt.com/resources/cloudwatch)(Event)
    * [Datadog ](#how-do-i-reach-the-workflow-editor-page-canvas)(Monitor)
    * [Amazon EventBridge](https://docs.fylamynt.com/integrations/event_bridge) (Rule)
    * [Humio](https://docs.fylamynt.com/integrations/humio) (Repository)
    * [Instana ](https://docs.fylamynt.com/integrations/instana)(Entity type & name)
    * [New Relic](https://docs.fylamynt.com/integrations/new_relic) (Policy)
    * [OpsGenie ](https://docs.fylamynt.com/integrations/opsgenie)(Service)
    * [PagerDuty](https://docs.fylamynt.com/integrations/pagerduty) (Service)
    * [Prometheus ](https://docs.fylamynt.com/integrations/prometheus)(Alert)
    * [ServiceNow ](https://docs.fylamynt.com/integrations/servicenow)(Category)
    * [Splunk On-Call](https://docs.fylamynt.com/integrations/splunk-on-call) (Team name & Escalation policy)
    * Webhook

The trigger type selected during the creation of the workflow can be changed on the fly from within the editor.

![](/files/eBmEaXEbGLRUTRkMRkBx)


# 3. Creating your first workflow using AWS Cloud Services

Now that an AWS target account has been added, let's create a workflow using this Cloud Service integration.

As discussed in our first step of adding a target AWS account, AWS API calls are notoriously hard to read, understand and use. Fylamynt's goal is to help users connect and execute individual API calls as a node in Fylamynt workflows. The node referred to is called AWS and is available to drag and drop from the Actions panel onto the canvas. &#x20;

The AWS Action allows you to call any AWS API endpoint supported by the boto3 library. See boto3 documentation here: <https://boto3.amazonaws.com/v1/documentation/api/latest/index.html>

#### Input

| **Parameter Name** | **Description**                                     | **Required** |
| ------------------ | --------------------------------------------------- | ------------ |
| Service            | The AWS Service you want to call.                   | True         |
| Operation          | The API call you want to make to the above service. | True         |

After you select a service (e.g. EC2, S3, IAM) and an operation (e.g. 'DescribeInstances', 'CreateBucket'), a further list of parameters for that call will appear on the right sidebar. These will be specific to the call you're making.

#### Output

The specific output of the AWS Execution Action depends on the Service and Operation selected above. The 'output' tab on the right panel will show a preview of the JSON output of the given operation.

## Example Workflow using the AWS Action node

Suppose you have a blue-green deployment environment, where you have a set of EC2 instances tagged "Deployment:blue" and another set tagged "Deployment:green". Green is currently in production, and we want to get a list of the instance IDs of the blue instances so we can perform some other action on them later.

### **Creating a workflow in Fylamynt**

We are going to use the AWS Action to get a list of the blue EC2 instances and then use a second AWS Action to send a 'stop\_instances' to them.

* Starting from a new workflow, drag an "AWS" action node onto the canvas from the left-hand "Add" sidebar.
* For the input, configure the following:
  * Set the AWS Target account alias, which you created in the previous step.
  * Set the region for the AWS Target account.
  * Set the service to "Ec2" and the operation to "DescribeInstances".

![](/files/0L9NVJ2Uxdh1H6nNF2Zl)

Now we'll set up a filter so we only get the blue instances we're interested in. This is an implementation of AWS filters, which can get quite complex. More information here: <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Filtering.html>&#x20;

* Click "Add Filters".
* For the "Name" field, enter "tag:Description".
* Click "Add Value"
* For the value, enter "blue".
* Click Save in the "value" dialog.&#x20;

![](/files/lAAtyCY9JbrDOxZIGWct)

* Click Save again to save the whole filter.
* The filters section should look like this:&#x20;

<div align="left"><img src="/files/3Fi0Y8ZAfwuj8ny4iZc8" alt=""></div>

Now we have a node that will find our 'blue' deployment EC2 instances.

![](/files/D8yozLuTyeKOoJzwqQHN)

The next step to add to the workflow is to stop the EC2 instance identified in the first step.

* Drag and drop a second AWS Action from the left sidebar, then drag a line from the bottom of the first AWS node to the top of the second. Then click on the second node to select it.
* For the input, configure the following:
  * Set the AWS Target account alias, which you created in the previous step.
  * Set the region for the AWS Target account.
  * Set the service to "Ec2" and the operation to "StopInstances".

![](/files/7o2x9aOijLEbyUFegawF)

A new field named "InstanceIds" will appear under the Service/Operation area. For most parameters, Fylamynt gives you the ability to set the values now, at runtime, or from the output of a previous step.

![](/files/PeoyVfjGpLxH5TSrFvVX)

* Click the gear to the left of the "InstanceIds" label gear image
* Select "Set value from a previous step"
* Click on "Choose a step".
* Click on "Choose an output from the step"
* Choose "output" from the dropdown.
* Select the Name and number of the previous step action node called "Ec2 DescribeInstances"
* A new previous step output field appears, select "output"
* A new parameter called output appears, click on "Configure"

A listing of the JSON output from the previous step will appear. We want the Instance ID for each instance in the Instances list in that document. Find "Instances" and scroll down to "InstanceID". Click on that.

![](/files/4XRkD25VGgupRV5OfBJv)

You will see a dialog that looks like this:&#x20;

![](/files/lL2wmXcJZwji5pMqMHAe)

Click "Save Output".

The right sidebar should look like this:&#x20;

<div align="left"><img src="/files/LIJ2vy9pQWFwEnTTymaX" alt=""></div>

If you decide to add additional AWS Action steps further down, it could also use the Instance ID list provided above.

Now we're ready to stop the blue instances.&#x20;

* Before saving the workflow you first need to add a required workflow description
  * Click "Workflow Settings"
  * ![](/files/zQWSPgsmOrFB8Fap7lSO)
  * Enter a description
  * ![](/files/fyFiyLJx0GP4ziKNCY9U)
* Save the workflow, by clicking "Save new version"
  * ![](/files/8A76e7UZ6HTXweKlmLMZ)
* Run the workflow, by clicking "Run" -> "Run Now"
  * ![](/files/pGj2aJBZeIJmhqoUt57C)

A video walkthrough for creating your first workflow.

![](/files/QxOyYvQFN4O77aU9zuZU)

The next step is to integrate your favorite tools to enhance your workflows.


# 4. Setting up your first Integration

### Why do you need Integrations?

![](/files/ymzTnQJ0JbJwU4uREViu)

* Integrations are the building blocks of workflows created in Fylamynt.
* Each Fylamynt integration exposes a set of actions that can be used to create a workflow.
* Only after configuring the API credentials and authorizing the integration are you able to leverage the specific integration actions.

### To configure an Integration in Fylamynt:

* Click on "Settings" available in the left panel of the product.
* You should by default be in the Integration tab
* Scroll down to see the list of available Integrations
* Select an integration that you would like to configure

![](/files/mVhl4IcxiTxtqsVB0upO)

* Fill out the parameters presented to you on the screen.&#x20;
  * To get detailed instructions for each parameter, click on the Documentation link which will open a new tab to the integration's documentation page.
  * ![](/files/bW35xOST9WjC9EXFF6db)
* Once all the parameters have been filled out, click "Authorize" to enable the integration instance.
  * ![](/files/M4gh4RaOa91HFxGHZ87k)

![](/files/VbV7j6V3FYN4Up4bViCE)

### What happens when you configure an Integration?

If the integration is a compatible workflow trigger then it can be selected as a trigger type when a workflow is created.

![](/files/2ATRMFnY3mCyKlMGl0oy)

Each Fylamynt integration also exposes a set of actions that can be used in a workflow. The actions available for each integration are listed on the configuration and documentation page.

![](/files/ZZemuGbYkxKc03qyyCGd)


# 5. Setting up your first resource

Now that you have seen the process of enabling integrations in Fylamynt, it's time to understand how resources are used in the product.

Resources in Fylamynt are either third-party or system plugins that help you with integration setup or provide the necessary elements needed in some of the integration actions.

For example:

* [API Keys](https://docs.fylamynt.com/resources/api-keys) are unique to your organization and are used for authorization of webhook-type integrations with Fylamynt. For many integrations, an API key is required, so it is recommended that you first create this resource before configuring your integrations.

![](/files/OMEJL3OiQbV0paCK0nQN)

* [Github Repos](https://docs.fylamynt.com/resources/git) are needed for getting project files/templates used in Terraform or Pulumi actions.

![](/files/AluuiihnaiDYBpPNbEdi)

* [S3 Buckets](https://docs.fylamynt.com/resources/s3) are needed to read pre-existing data stored in an S3 bucket for a given step in a workflow or for capturing, re-using or persisting output data from a given step in a workflow.

![](/files/-MaCJxd1f7MoUJLNRac_)

Each resource has a different purpose to serve in Fylamynt. Resources are created to support the infrastructure that in the end is required to create a workflow.&#x20;

## To configure a resource in Fylamynt:

* Click on "Settings" in the left panel of the product
* You should by default be in the Integration tab
* Scroll down to see the list of available Resources
* Select a Resource that you would like to configure

![](/files/Y3wBrNhrnGtXS5qdYYK5)

* Fill out the parameters presented on the screen
* Click Save

![](/files/vYKPZgpR6qxCjhFi3VH8)


# 6. Creating your first Incident Response workflow

Performing repetitive tasks typically produces boredom, which can result in errors and mistake

## Description&#x20;

As SREs and IT administrators can attest, software applications can sometimes have a mind of their own and behave in ways that are not easy to understand or comprehend. The faults and errors can be attributed to many factors like hardware, resource allocation, operating systems, network, DNS, cloud provider services going down, and the list goes on and on.

Let’s be honest, at one point in time and probably still today, your business is running and you have to support an old legacy application with critical data. Unfortunately, it is not always easy to replace these systems due to internal knowledge gaps, application EOL, or migrations that can be costly and time-consuming.&#x20;

## Use case&#x20;

The repetitive task we want to address is where a distributed application experiences memory leaks and causes the Linux operating system to run out of memory and creates performance issues. A simplified runbook to remediate such a scenario might look something like this:

* Alert is received from APM tool for high server memory utilization&#x20;
* The server is identified by either the name or IP address&#x20;
* Connect and authenticate via SSH to the Linux server&#x20;
  * The server might be in an isolated or firewalled network, which requires a Bastion host or VPN server for connectivity&#x20;
* Restart the service of the application&#x20;
* Verify memory utilization If memory utilization is still high, create a Jira ticket&#x20;
* If resolved, close the incident

This might sound simple enough to tackle manually, but having to repeatedly perform this task, and at the dreaded 2 am, just becomes a drag.

So let’s see how you can, using Fylamynt’s low-code workflow engine, automate the remediation of an alert received from a performance monitoring tool.

## **Integrations**

Firstly, before building the workflow, you need to configure and authorize the required integrations.

1. Log in to Fylamynt
2. Select Settings
3. ![](https://assets.website-files.com/604bd02b50b856623023de21/619714df15888378221a0bd6_z6ChtIp9ruFWjsvLudLVOayEUo3bFWb3F47xAhYz4eRTUPdGYRNZebt0-VYDyocSeUlkOneHmk9Gcp5-ECkKbfVoWikRUe_Hm-enJggLS2BT_i1WsIt5ZKvjTA6sx1DrgdpcCu45.png)
4. Select and configure the following integrations to be used in this workflow:
   * [**New Relic**](https://docs.fylamynt.com/integrations/new_relic)
     1. Trigger workflow execution with a selected New Relic Policy
     2. Alternatively, you can use [Datadog](https://docs.fylamynt.com/integrations/datadog), [Sumo Logic](https://docs.fylamynt.com/integrations/sumologic), [Humio](https://docs.fylamynt.com/integrations/humio), [Instana](https://docs.fylamynt.com/integrations/instana), or [Splunk On-Call](https://docs.fylamynt.com/integrations/splunk-on-call)
   * [**Teleport**](https://docs.fylamynt.com/integrations/teleport)
     1. Securely authenticate and access your SSH servers to execute commands.![](https://assets.website-files.com/604bd02b50b856623023de21/619714df3ca38a49c952b269_8HFkPnrznIhArL_5FZ39BS2rXTVm9r7BCoXxYkHnbwM_jqSS_R7B0tsw7siDakiKAMnHwtx1s2SoeQAZ5jZ0VuVl-WeukZpjYj6fIXNq62Y88We8fwEd9cc2vHwsFBy6erbn9MWD.png)
   * [**Slack**](https://docs.fylamynt.com/integrations/slack)
     1. Send messages and notifications to your teams
   * [**Pagerduty**](https://docs.fylamynt.com/integrations/pagerduty)
     1. Create or resolve incidents
     2. Alternatively, you can use [Jira](https://docs.fylamynt.com/integrations/jira), [Twilio](https://docs.fylamynt.com/integrations/twilio), or [ServiceNow](https://docs.fylamynt.com/integrations/servicenow)

## **Creating a workflow in Fylamynt**

Now that we have our integrations connected, let’s create the workflow.

### **Step 1: Create a new trigger based workflow**

1. Login to Fylamynt
2. On the workflow page, click “New Workflow”
3. ![](https://assets.website-files.com/604bd02b50b856623023de21/619714e0e8b3294d70ce51ff_lIvKFCZi8_d_fx6Kb536iW9OnBLkiBKqvg1lwkRHZKq6vS1sZvbpmSYKToOitTi_HtOs3uy2dIO3qMHQcZliVGMEaqHoE0fjX8zD-bspvTxsH3jPem8PzSOFQRe9XuXGqrzbmbse.png)
4. Provide a workflow name
5. Select New Relic as the trigger type
6. ![](https://assets.website-files.com/604bd02b50b856623023de21/619714e0036f0da9823c5ea6_NHtG5bwYG0fMRtKlQC2o7Ils4nN-iTwOH8c-magxxfshAzd011KqYEqqYl87HUYZCYvwy53bEZnaXQSNcu3jo5RNOUH2GVmsyd3xIe9sQvKPvhzJ3bLQrSGkQIZxGS_i4n5-Ty8M.png)
7. You are now presented with the Workflow Editor where you drag and drop Fylamynt’s action nodes as steps, it’s as simple as that.

![](https://assets.website-files.com/604bd02b50b856623023de21/619714e1195aa89989ba97b2_nCZ8VNiCnD6CKuTjG_vKPnQwgZCeOp7lkCW9WXulbZ9zf3fnQzNmwDeMFo2sSPeHz3WA0zDURwNQcnGdiXxBYpP1jLQRliMFhOzccGl2CUp9MHAJnwi9p3l7Hb3ENu3OHP_PXyGP.gif)

### **Step 2: Add JSONPath node**

The New Relic trigger is added by default and will provide the alert body in JSON output, which you can consume in any downstream node.  Since the data is in JSON format you need to extract the relevant information, in this case, the hostname that is experiencing high memory utilization, that you have to SSH into to restart the service.&#x20;

To add and configure the JSONPath node, here are the steps:

1. From the left menu bar, drag and drop the JSONPath action node onto the canvas and connect it to the New Relic node
2. Select the new action node
3. On the right menu, select the JSON input
   1. For demonstration purposes I am going to pre-populate the JSON input with the New Relic alert first, just to show how the JSON path expression delivers the output, and then will change back to retrieve the output of the New Relic trigger node as input for the JSONPath.
4. Change the JSON Input to “Trigger 1”
5. For Previous Step Output select “output\_json”
6. Enter the JSON Path expression to extract only the relevant name
   1. “$.targets\[0].labels.fullHostname”‍

![](https://assets.website-files.com/604bd02b50b856623023de21/619be1a17ddb58b38dc36709_JSONPath.gif)

### **Step 3: Add Teleport SSH Execute node**

For this example workflow, the [Teleport ](https://goteleport.com/)integration is used to authenticate and access the Linux server that runs on an isolated network. Fylamynt does support adding SSH Targets to specific servers that are publicly accessible, for instance your Bastion hosts, and in conjunction with the SSH Execute action node can run commands and retrieve the results.&#x20;

![](https://assets.website-files.com/604bd02b50b856623023de21/619714df074ea297f7fda92e_JU9_XfRPszWcl8xS2F1bwpjaA1lBjJo8DIMtp1GAVJtVi-Gx2lRZowurp2NjUlt5Jy_ZtIbiBdIbEVVKO2NrCOB1dR9UpmtDQgSNZUWAXQIVot8cqZ8wEmZfdawxWFjl3BpByTaD.png)

![](https://assets.website-files.com/604bd02b50b856623023de21/619714e0c276e7d705d4182c_WpMQS5N6UApXNMTkMikYiREVx701BNgPD1Rz3LVsQusqX56dYDbCzj9YymwHaiofMNZtKFWT90WOT0Y2DtN6AUod4lX78LUrWOYolGzlxvxsrs8V_Teyh7WYtobDDJsxNxJhD0NC.png)

To add and configure the Teleport SSH Execute node, here are the steps:

1. From the left menu bar, drag and drop the action node onto the canvas and connect it to the previous JSONPath node
2. Select the new action node
3. On the right menu, select the input tab
   1. Enter the SSH User
   2. For the SSH Target Host, you will retrieve the host information from the JSONPath’s output.
   3. ![](https://assets.website-files.com/604bd02b50b856623023de21/619714df66974220ca7cdac7_Fv7TswJpkEl-4Vk2GJFNNbj3MTXrq42GEGYbvwFwN98xe48M7rIOJVIUGFyV3ygJhnbqnZjLEIzUQdazp8vH5HupzAWogVlpHtunYe9sqAjnhKpyYWs0CjNinkY7FKoHX4qTi9yT.png)
   4. ![](https://assets.website-files.com/604bd02b50b856623023de21/619714e03fa1d42f9aebb986_RE2iTbJvtMdNlnFN6aa5CnSwUTY2ZdpjCTVsAxenF8tktZvgqoqA-A3wYQnJy3X2YU0Q9SseFR7fPXJpzytYFaWi5AJECaM0M8ACJ1x8NQqY-rfqHvAX_F26zvBg2YyB1N-mQ8bM.png)
4. Add the SSH Command you want to execute on the server
   1. “systemctl restart newrelic-infra.service && journalctl --unit=newrelic-infra.service -n 100 --no-pager”
5. Optionally, you can also add an S3 bucket where the execution logs will be stored.

![](https://assets.website-files.com/604bd02b50b856623023de21/619be1c538898b29162c87ae_TeleportSSHExecute.gif)

### **Step 4: Add String Transformation node**

The next step is to transform the JSON output to string to be easily consumed in the Slack node.

To add and configure the String Transformation node, here are the steps:

1. From the left menu bar, drag and drop the String Transformation action node onto the canvas and connect it to the previous Teleport SSH Execute node
2. Select the new action node
3. On the right menu, select the input tab
   1. For the JSON Input, you will retrieve the host information from the JSONPath’s output
   2. ![](https://assets.website-files.com/604bd02b50b856623023de21/619714df66974220ca7cdac7_Fv7TswJpkEl-4Vk2GJFNNbj3MTXrq42GEGYbvwFwN98xe48M7rIOJVIUGFyV3ygJhnbqnZjLEIzUQdazp8vH5HupzAWogVlpHtunYe9sqAjnhKpyYWs0CjNinkY7FKoHX4qTi9yT.png)
   3. ![](https://assets.website-files.com/604bd02b50b856623023de21/619714e03fa1d42f9aebb986_RE2iTbJvtMdNlnFN6aa5CnSwUTY2ZdpjCTVsAxenF8tktZvgqoqA-A3wYQnJy3X2YU0Q9SseFR7fPXJpzytYFaWi5AJECaM0M8ACJ1x8NQqY-rfqHvAX_F26zvBg2YyB1N-mQ8bM.png)
4. For the operation, select To Lowercase

![](https://assets.website-files.com/604bd02b50b856623023de21/619714e0a5bf6782ac8c750a_ilm8NC9DoSt9wfExIlDnltPAybwrIUrFc6z1OAGoyh9JTo6byRk2zpC4C5RytoGdhcFijkcdrfdhQd5NM_Wt0uPYSdtZl44Zcm4xiliv5g_G_OHtiXasKBYAKojWunGv_maKng7Y.gif)

### **Step 5: Add Slack Send Message node**

The Slack node is added to notify the users in the specified Slack channel that the service was restarted successfully.

To add and configure the Slack Send Message node, here are the steps:

1. From the left menu bar, drag and drop the Slack Send Message action node onto the canvas and connect it to the previous String Transformation node
2. Select the new action node
3. On the right menu, select the input tab
   1. Select the Slack Channel you want to send the message to
   2. Click Add Slack Variables
      1. Enter the variable name
      2. For label select the String Transformation node, and as the previous step output select “string\_output”
   3. Click Save Variable
   4. ![](https://assets.website-files.com/604bd02b50b856623023de21/619714e04626b747abd0bd35_5QS6Zy5YaDaO-gkL7-cDgE22wtCAJgDYbyAdttdqkblaN54kd1sRYtTqP6wnim_VmrBG8xcebhmx7hlBUvx9TFH5ZitbzxDRJ2zPYPH0rqSPTvWtkwDtTWH9gozZP0nPGbBfiE-O.png)
4. Now in the Message Text field, you can consume the variable in the following way:
   1. “Service restart on the host {{hostname}} has been successfully carried out.

![](https://assets.website-files.com/604bd02b50b856623023de21/619be1fe7f423c79972d9dec_SlackSendMessage.gif)

### **Step 6: Save the workflow**

Click the Save New Version button

![](https://assets.website-files.com/604bd02b50b856623023de21/619714e1655bee6969f8072a_9_3S7Z3W2HIroTEsQFu7pN3q3e8O5AMtqufsuJ1s2307Qr9NA_LVbST2Yy437pw2AD9brC7ZrGNB8JIMeY2fqnhYQZ5P7mAZIlz8jJ0T1lJpp9A9Og_Amsdxwm8Eb-NYMgjAPyF7.png)

Every change made to the workflow within the editor will be saved as a new version. You can also very easily revert to previous versions.

1. Select the Workflow name in the top-level corner, or click on the manage versions button.
2. ![](https://assets.website-files.com/604bd02b50b856623023de21/619714e05c43eed235565139_qfd39nUORA-hwCdGasCDSZBDsGlHOUUOs_WJnXJ5OgPPBNhedJQPvtaE7O6sYK16wrdZukuNp-42V-ucminN0uNBv-dM-bWDjGxzGa13xqQ-UytxxMcuwyrlyxQV3zTnW8HtGeYU.png)
3. ![](https://assets.website-files.com/604bd02b50b856623023de21/619714e0a874a44d70c81b41_Gjo7_p9OrKyBidiBWRFCHepTQIA9SSjOOSLxtTMU6G_AmMqqMhVmGsprmkWxGnGWmC3yHl-kCKEf0i47iQIXKrnK-O99EvSybkDn1VOeCgKzU6bvPQcqYunNCGBvBEb925TxVT5y.png)

### **Optional action nodes**

Fylamynt has over 100 [actions ](https://app.fylamynt.com/actions)across 38 services, with multiple integrations that you can use.

Here are some additional steps that you can add to enhance the workflow.

**Approval**&#x20;

The approval node will send a message to a Slack channel where a user can approve or deny the restart of the service

![](https://assets.website-files.com/604bd02b50b856623023de21/619714e05514cfc46a9af773_0MyfF2SaJl8nON-YoDDDz0Nw6dBX-yOu2OwbzowWW64sVPKYdqWNKz2NJk3IRFZt4piInj4jr2dd1uwaw7hHu44JDzOVdm8R4P2RPaf18CnVNJbDpduZTGCKdKk1h7v-YbmSv3MO.png)

**Slack Send Message**

This action can also send a notification at the beginning of the workflow that the memory alert was received from New Relic and that the service of the application will be restarted on the affected server.

**New Relic NRQL Query**

This action node allows you to perform a query and retrieve data that can be used to verify the memory utilization metric on the host after the service was restarted.

![](https://assets.website-files.com/604bd02b50b856623023de21/619714e0c59f9ee0e371be2d_W02osYgeNHhEe0mud9Nu1f13dPfKryGZ2EJk9-BpIJl79KTWct7JW4txnbaXdZSad6kTfK33777GtmUjadVEbbWAD760PzYiSzeeXnDLvd0TeK6vbnGdDcEobOPU3M8rYZHPXpqm.png)

**Conditional**

The conditional node can be used to review the new memory utilization metric after the service was restarted.

The rule would check whether the memory utilization is still above 80%, and if that is the case,  create a ticket or incident in one of the Fylamynt other integrations like Jira, ServiceNow, Pagerduty, etc.

### **Step 7: Automate the workflow trigger**

In the next and final step, you have to complete the Incident Management configuration to set up Incident types and Incident Type associations in order for the workflow to automatically run when an alert is received from your trigger type integrations.


# 7. Incident Management - Automatic workflow execution

Incident Management is the business layer on top of workflow executions and is used to automatically execute the workflow that is associated with a task type assignment.

Incident management contains 3 core pieces which include Incident Types, Incident Type assignment, and the Incident itself.

To automatically execute the example workflow with a New Relic trigger, the task type and assignment need to be configured. The configuration is similar for all other Fylamynt integrations. &#x20;

Here are the steps:

### **Create an Incident Type:**

1. Fylamynt -> Settings -> Incident Types
2. ![](https://assets.website-files.com/604bd02b50b856623023de21/619714e0532228f3100ce675_2S0Y7HRqrf7ZT5RL5EIaaP9fhefjq1C2w04Jhj2yguWViJiKGtUK6fFsbgR_k1PkJjoclTJOg7QGpPblAZB6VawLc6BnRZ1hlpCba2o0_tQGrJJ_maf3Q_WpcojRvDzsVzea5p08.png)
3. Select **New Type**
4. Enter the Name of the Incident type
5. Provide a description
6. Select the name of the example workflow created
7. ![](https://assets.website-files.com/604bd02b50b856623023de21/619714e1f4aafc29d93ca323_Ittf0I0xnNjoGtEoqTgVs8ui7TN2QJSId6DvbEvqtChoqK3-H0NTRnSvMkkgQ5T-PwJql-yhMEYFiOJBqUy7kOkWcZ7T7A4p0QT9-xW2znPvQRTZ4Ol8CUVxKvLntRlWaDJKB99x.png)
8. Click Next
9. Leave the default AlertBody Runtime Parameter
10. Click **Create Incident Type**

### **Incident Type Assignment:**

1. Fylamynt -> Settings -> Integration -> **New Relic** -> Incident Type assignments
   * Select whichever integration you need to configure.
2. ![](https://assets.website-files.com/604bd02b50b856623023de21/619714e00bb092ce29f50745_glLg2J6-BcUysZCHrH3u4nFMAah6BjH6HBWFaSY2n8-ToZjClPi6f01GgSCrOb_boSdUGI_eNoshPin_e1dGosb6BrRIs1jreGLVumpmzBcw749WxUG2YacFXKBJpfZGaMXWy3PG.png)
3. Click **New Assignment**
   1. For New Relic, select the Policy from the drop-down
      * The required fields will be different depending on the integration.
   2. Select the Corresponding Incident type created in the previous step
   3. Click **Add Assignment**
   4. ![](https://assets.website-files.com/604bd02b50b856623023de21/619714e144353d7bf5b052e7_mzJZc9358SN6-NshwZ7qzr5RpkP6Xm_MECioMNgJzZz_ZaQ5yxCY29SBNiDGZBQXBiIvBasYbjBzk_BWzuLLmH7dO9GZsutzkOOjU0pS67tURz6XufvAbGepB15IoVbcQTwJffcI.png)

The New Relic Policy name and the associated Incident type are now visible under Incident Type Assignments. Multiple Incident type assignments can be created to associate specific integration incidents/alerts to incident types.

### **New Relic notification Channel:**

After completing the previous configuration steps of your [first Incident Response workflow](/getting-started-1/6.-creating-your-first-incident-response-workflow) for the New Relic Integration, you need to create a webhook notification channel on the New Relic policy selected from the Policy Type assignment.  This process will be different depending on the integration and New Relic is provided as an example.

Step to create a New Notification channel:

1. Select Webhook as the channel type
2. Enter a channel name
3. The Base URL is available from the [New Relic integration](https://app.fylamynt.com/settings/integration/new_relic/description?edit=true) page on the Fylamynt console
4. Add custom headers
   1. Enter name “x-api-key”
   2. The value is available from the [New Relic integration](https://app.fylamynt.com/settings/integration/new_relic/description?edit=true) page on the Fylamynt, by firstly selecting a Webhook API Key Name
5. Click Create Channel
6. Add the channel to the Policy
7. ![](https://assets.website-files.com/604bd02b50b856623023de21/619714e144353d8a8bb052f1_7dEIPqVndZjCEtV8Pu3SNvV_8YH7e7fml6bEm2smM-58hpM9caC_k3tks5Hb5D4WsraIqLRlBU81FqdyN4HmlHsy_gaqLXAZb1B9co6O0Jya8AF41SQ99HfdlPfQovmL8mv2Si4O.png)

### **Automatically execute the workflow:**

To trigger the workflow you need to create some artificial load on the host. This can be achieved with a tool like [stress-ng](https://wiki.ubuntu.com/Kernel/Reference/stress-ng) by executing the following command:  “stress-ng --vm 2 --vm-bytes 1G --timeout 240s”

On the New Relic Policy, wait for a memory alert to trigger on the New Relic

![](https://assets.website-files.com/604bd02b50b856623023de21/619714e1891b7c0f0c3dcefe_KUP-mlzx9Mp7gA_CeoiVh991iaRmaRnSTnTFD2fX-45F9zCQAxV7rccy4mjQk8kGsLzneFhe8lAW_MQvvwoaOuSVy2uMjIh8UYnRehJErW9r-9E0Lrdu8Wmmx9jow61T-VzeBVAG.png)

In Fylamynt a new Incident is created, where you can monitor the execution of each step.

![](https://assets.website-files.com/604bd02b50b856623023de21/619714e1346420165829704e_2SBidh02vA9Dkr5_75UT5ZIVfOhpPQuXI_NzlzMfIdFfTG1ICY0rfJXBa8CKY60q7YfksPIpYPUMMNaOx9V-gBfdzzsnDF-uSrjnrom7iA7C91wF-NPBagxGcAotmkA78vuKGTmG.png)

![](https://assets.website-files.com/604bd02b50b856623023de21/619714e1754fb30a497cde6f_IQeGes284mfQpBZDA8fyl8eg2EocbFu8FWUSb7JCvViYFHPKLwdH3O43V65M1TL3BYulm0kItUrP0DNeuZlf5Iua4ABG4vFIvese-9BpBvjkQ1a6iBQ8J5sGBvY3pEiqMkHzjFv0.png)

![](https://assets.website-files.com/604bd02b50b856623023de21/619714e1719ab46a6aca89d4_yyejD1A0u64j2-bqsD2hsnIRfkL-aAUfurMrpNO_uwDN4VOb9GPB0Wud1fegxKCW6JA9OLh7QEPcI-rLHL0fPe_2-Z4V7Q1-xjnoKNYT663U6txxzMVQH0xiQ2NUxoYSfVkuQfPh.png)


# 8. Quickstart - Fylamynt sample workflows

The idea behind offering sample workflows in Fylamynt is to help our users navigate to their ideal workflow easily.&#x20;

* Each workflow represents a use case that could be your starting point.
* Sample workflows can be used as templates. Duplicate them and enhance them to suit your needs.
* Workflows include a combination of integration actions/helper functions/conditional nodes that could also be used for educational purposes.&#x20;

![](/files/26l1uE1nykEwugn08WaC)

Once logged into the Fylamynt console, you are presented with a comprehensive list of [workflow samples](https://app.fylamynt.com/workflows/fylamynt-workflows) that can be filtered based on the following use case categories:

* Incident Response Automation
* APM Optimization
* Cost Savings
* Steady State Management
* Infrastructure Automation
* Other
  * Cloud-Native Tasks
  * Helpers
  * DevOps
  * Security Management

You can also search for workflows using the workflow name or tags associated with each.

## Fylamynt sample workflows:

#### [Stop or Terminate underutilized AWS resources](/featured-workflows/stop-or-terminate-underutilized-aws-resources)

#### [Rightsizing EC2 instances](/featured-workflows/rightsizing-ec2-instances)

#### [Incident Response Automation](/featured-workflows/incident-response-automation)

#### [Application Performance Monitoring](/featured-workflows/application-performance-monitoring)


# Amazon EventBridge

Use Amazon EventBridge integration to address events happening in your application.

## Overview <a href="#overview" id="overview"></a>

Amazon EventBridge is a serverless event bus that makes it easier to build event-driven applications at scale using events generated from your applications, integrated Software-as-a-Service (SaaS) applications, and AWS services. Configure routing rule to trigger Fylamynt incident to react to events happening in your application.

## Use Cases

The integration between Fylamynt and Amazon EventBridge lets you:

* Trigger a workflow in Fylamynt, when a matching event occurs on an EventBridge rule.
* Create workflows for steady-state management

## Configure Amazon EventBridge in Fylamynt

* Navigate to **Settings** > **Integrations** > **Amazon EventBridge**
* Configure a new integration instance

Details needed to set up **Amazon EventBridge instance** in **Fylamynt**:

| **Parameters**        | **Description**                                    | **Required** |
| --------------------- | -------------------------------------------------- | ------------ |
| Webhook API Key Name  | This is needed to store the key of Webhook API key | True         |
| Webhook API Key Value | API key value for webook                           | True         |

Follow the steps listed below in your **Amazon EventBridge Account** and get the desired parameters to enter in **Fylamynt**

* In the Authorize Fylamynt card on the integration settings page, select one of the **Webhook API Key Name** from the dropdown, and the corresponding **Webhook API Key Value** will be made visible
  * If no options are available for the Webhook API Key Name, first go to Settings --> API Keys --> Manage Keys to Create a New API Key.
* ![](/files/fnlfk56T1CqFn6tcwAJM)
* Log in to your **AWS account**&#x20;
* Select service **Amazon EventBridge**
* Select Integrations -> API Destinations
* ![](/files/HAHEtBNUUNt9RENP2MzP)
* Click **Create API destination**
* Create a new API destination named **Fylamynt-EventBridge**
* Provide the parameters as mentioned below

| **Parameter**            | **Description**                                                                      | **Where to get value**                                                                                            |
| ------------------------ | ------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------- |
| Name                     | Name of the EventBridge API destination                                              | **Fylamynt-EventBridge**                                                                                          |
| API destination endpoint | This endpoint would be called when event triggers                                    | Copy and paste the **Amazon EventBridge Webhook URL** in the Authorize Fylamynt card on integration settings page |
| HTTP method              | Select the HTTP method used for the invocation endpoint, such as GET, POST etc..     | **POST**                                                                                                          |
| Connection               | Create a new connection to use for this destination.                                 | Select **Create new connection**                                                                                  |
| Connection Name          | Enter a name for the connection. The name must be unique for your account and Region | **Fylamynt-EventBridge-Connection**                                                                               |
| Authorization type       | Choose the type of authorization to use to access the API destination                | API Key                                                                                                           |
| API Key name             | Name of the `API Key name`                                                           | **x-api-key**                                                                                                     |
| Value                    | Value of the API key                                                                 | Copy and paste the **Webhook API Key Value** in the Authorize Fylamynt card on integration settings page          |

* ![](/files/d577nlLwBVRTqMnOpb7b)
* Click **Create**
* Return to the settings page in Fylamynt and click Authorize.
* ![](/files/thGMgbcYJbFXlAzd9qeT)

Create the **EventBridge rule**

* For the new rule's Target,  select **API destination**
* Select **Fylamynt-EventBridge** as the API destination
* ![](/files/PSHfERqR2QFsUdPUq148)
* Click **Create**

## Integration Actions

You can add the following actions in the Fylamynt workflow builder, as part of your workflow.

1. [Amazon EventBridge Trigger](#amazon-eventbridge-trigger)

### Amazon EventBridge Trigger

Integration node triggers a workflow from an EventBridge rule with Fylamynt specific alert channel.

When creating a workflow, you are presented with a wizard to select the trigger type to use.

* On the workflow page, select **New Workflow**
* Enter the name of the Workflow.
* Select the **Amazon EventBridge** trigger type.
* Click **Create Workflow**
* ![](/files/jYCzbObQnEdEdF0xgW8Z)

#### Configure the automatic execution of a workflow <a href="#fylamynt-task-management" id="fylamynt-task-management"></a>

To automatically run workflows with the Amazon EventBridge trigger, the incident type and assignment need to be configured. Follow the step-by-step instructions provided on the[ Incident Management - Automatic workflow execution](https://docs.fylamynt.com/getting-started-1/7.-incident-management-automatic-workflow-execution) page.


# Ansible

Use the Ansible integration to execute Ansible playbooks in a secure and centrally managed environment.

## Overview

The current state of art creates ad-hoc mechanisms to manage secrets, pass data, collect logs, and manage users for which the playbooks are being developed.

Using the Fylamynt | Ansible integration you can run your playbooks in a secure environment where the team workload can be orchestrated seamlessly.

## Use Cases

The integration between Fylamynt and Ansible lets you:

* Execute an Ansible playbook from your S3 bucket and collect logs.
* Centrally manage the SSH keys used by Ansible to connect with target VMs to execute commands.
* Monitor execution status and pair it with other integration actions that Fylamynt offers. For example, the execution status can be passed to a conditional node which branches out to either sending a Slack message or create a JIRA issue.

## Configure Ansible in Fylamynt

* Navigate to **Settings** > **Integrations** > **Ansible**.
* Configure a new integration instance.

Details needed to set up **Ansible instance** in **Fylamynt**:

<table data-header-hidden><thead><tr><th>Parameter</th><th width="385.40287769784175">Description</th><th>Required</th></tr></thead><tbody><tr><td><strong>Parameter</strong></td><td>Description</td><td><strong>Required</strong></td></tr><tr><td>Playbooks (S3 bucket with playbooks directory)</td><td>The Ansible directory hierarchy is expected to be available in an S3 bucket with Ansible playbooks. </td><td>True</td></tr><tr><td>S3 Access Role (Fylamynt IAM role for bucket policy in target account)</td><td>To enable cross-account access to the S3 bucket.</td><td>True</td></tr><tr><td>Logs (S3 bucket for execution logs)</td><td>The output of a run will be uploaded to the same bucket, or an optional S3 bucket for log files.</td><td>False</td></tr><tr><td>SSH Private Key (Ansible Controller Private ssh key)</td><td><p>Access to these resources needs to be granted by following the instructions below. A SSH private key that allows access to the managed nodes needs to be provided.</p><p></p></td><td>True</td></tr></tbody></table>

Follow the steps listed below in your **AWS Account** and get the desired parameters to enter in **Fylamynt**.

* Login to the **AWS console**
* Enable cross-account access to the S3 bucket with Ansible playbooks and the optional S3 bucket for log files:

<div align="center"><img src="/files/-Ma2LZrkqsjS7DoH4cVj" alt=""></div>

* Paste the value for **Principal** from the right pane into the green Principal field for the **Bucket policy**. The red Resource field should have entries for the bucket and the objects within.

The policy for a single bucket or the optional S3 bucket for log files should be:

![](/files/-Ma2MFQkD_zE3on8LFRy)

A more restrictive policy for a separate S3 bucket with Ansible playbooks can be:

![](/files/-Ma2McOjL0EZ-0MU90Ad)

## Integration Actions

You can add these actions in the Fylamynt workflow builder, as part of your workflow.

1. [Ansible Run Playbook](#ansible-run-playbook)

### Ansible Run Playbook

This action launches a playbook with Ansible.

**Input**

| Parameter Name | Description                                                                                  | Required |
| -------------- | -------------------------------------------------------------------------------------------- | -------- |
| playbook       | The name of the playbook to be run                                                           | True     |
| hosts          | A list of target hosts for the Ansible playbook run, or the name of the inventory YAML file. | True     |
| alias          | The target account for the run                                                               | True     |
| user           | The user on the remote system, defaults to admin                                             | False    |
| extra\_args    | Any extra arguments to be passed to the ansible-playbook command                             | False    |

**Output**

| Parameter Name | Type   | Description                                       |
| -------------- | ------ | ------------------------------------------------- |
| task\_arn      | String | The ARN for the task running the job.             |
| task\_status   | String | The task status when the action returns           |
| log\_bucket    | String | The S3 bucket in which the log file will be saved |
| log\_key       | String | The file name for the log.                        |

**Action Example**

![](/files/-MaFbB7IvFSbE27yjwgr)

![](/files/-MaFbDBg_zsaB6ajiwOk)


# AWS

Use the integration to execute AWS API calls in Fylamynt workflows.

## Overview <a href="#overview" id="overview"></a>

AWS API calls are notoriously hard to read, understand and use. Our goal is to help users connect individual API calls as a node in Fylamynt workflows.

## Use Cases <a href="#use-cases" id="use-cases"></a>

The integration between Fylamynt and AWS lets you:

* Use any AWS services through a drop-down list
  * ![](/files/GziUydVPSL5gbYQknMzr)
  * ![](/files/uXc8G6UB4UQmAKnD2ObP)
* Use all available operations against the selected service
  * ![](/files/u4Xp8qLOddO3oqnDZGfx)
  * ![](/files/7PCjqAhPdyZerLnLeI6B)

## Configure AWS in Fylamynt

* Navigate to **Settings** > **Cloud Services** > **AWS**
* Under AWS Target Accounts, click **"Add New"** to configure Fylamynt integration with your AWS account.

There are two steps needed to integrate Fylamynt with your AWS account.

1. In your AWS account, create an IAM role that allows Fylamynt to assume a role.&#x20;
2. In Fylamynt, provide the ARN to that IAM role and give it a name.&#x20;

### Create AWS IAM Role with Assume Role

We will cover three possible ways to create an AWS IAM role with assume role permissions. Fylamynt provides two scrips, one for Terraform and one for Python, to create the role. It's also possible to use the AWS console directly to create the role. You only need to use one of these options, or, if you're comfortable with some other tool (AWS CLI, for example) feel free to use that.

Both the Terraform template and the python script require you to have an AWS access key and AWS access secret for your AWS account.

#### Option 1: Terraform template.

If you are already using Terraform to provision your AWS account, this convenience script will help create a role with the correct permissions to allow Fylamynt to invoke AWS actions inside your account on your behalf.

#### Option 2: Python script.

* Install prerequisites

  The Python script assumes you have a working AWS account and have set up an access key.

Install Boto3 The boto3 python package provides programmatic access to the AWS API. <https://boto3.amazonaws.com/v1/documentation/api/latest/index.html>

In a shell, use pip to install boto3:

```
# pip3 install boto3
```

* Download the Fylamynt python script zip file.
* Extract the zip file.
* Change into the extracted directory

  ```
  cd fylamynt-aws-integration
  ```
* Edit a policy document.
  * There are two policy JSON documents provided in the zip file. "custom\_policy.json" provides full access to several services  AWS account, and read\_only\_policy.json gives read-only access to a set of services. Feel free to edit those as you see fit.&#x20;
* Execute the script

  * You will need:
    * Fylamynt Account ID (from the right side of the setup page).
    * Fylamynt External ID (from the right side of the setup page).
    * AWS Account Key (from your AWS account)
    * AWS Account Secret (from your AWS account)
    * The policy JSON file you'd like to use.

  ```
  python3 ./fylamynt_iam_role.py --accid FYLAMYNT_ACCOUNT_ID --extid FYLAMYNT_EXTERNAL_ID --accesskey AWS_ACCOUNT_KEY --secretkey AWS_ACCOUNT_SECRET --policyjson POLICY_JSON
  ```

If it ran correctly, execution should look like this:

```
[14:29:36] INFO [utils.<module>:209] Creating IAM Role: Fylamynt_AWSIntegrationRole
[14:29:37] INFO [utils.<module>:216] Fylamynt IAM Policy has been created
[14:29:37] INFO [utils.<module>:220] Creating IAM Role: Fylamynt_AWSIntegrationRole
[14:29:37] INFO [utils.<module>:227] Fylamynt IAM Role has been created
[14:29:37] INFO [utils.attach_policy_to_role:191] Attached IAM Policy 'Fylamynt_AWSIntegrationPolicy' to IAM Role 'Fylamynt_AWSIntegrationRole' successfully
[14:29:37] INFO [utils.<module>:231] Fylamynt IAM Role, Policy has been created

Add IAM role ARN to Fylamynt 'get-started' page to complete AWS integration: arn:aws:iam::XXXXXXXXXXX:role/Fylamynt_AWSIntegrationRole
```

#### Option 3: AWS Console.

Manually Create AWS AssumeRole

1. Go to the IAM console for your AWS target account.
2. Select Create role
3. Select Another AWS account for the Role Type.
4. For Account ID, copy-paste Your Fylamynt Account ID from the right panel.  This is the AWS account ID that hosts the Fylamynt application, and you are granting that account access to your AWS target account.
5. Check off Require external ID and copy-paste the “External ID” from the right panel. Make sure you leave Require MFA disabled. For more information about the External ID, check out this document in the IAM User Guide.
6. Click Next: Permissions.
7. If you already have a policy, select it. Otherwise, the Fylamynt team can help you create a policy that suits your needs. For non-critical test accounts, you can choose the PowerUserAccess managed policy. This will unlock the full functionality of the Fylamynt platform.

   Attach Permission Policies
8. Select the appropriate tags and proceed.

   Add Tags
9. Name the role and add a description that denotes that this role is for Fylamynt access. Click Create Role. Copy-paste the ARN for the created role from the AWS IAM console into the AssumeRole ARN field in the right panel on this Fylamynt page.

   Right Panel
10. Enter a friendly name, or alias, for this AWS target account into the Account Alias field in the right panel on this page. An alias may contain any alphabets and dashes. You select a target environment that your Fylamynt workflow runs against by picking one of your target accounts as runtime input.
11. Enter the AWS region name where your Fylamynt workflows will run against.
12. Click Add Target Account. You are now able to use Fylamynt with this account!

#### Option 4: AWS Cloudformation template

Steps provide [here](https://docs.fylamynt.com/getting-started-1/1.-setting-up-your-first-cloud-service-target-account)

## Integration Actions

### AWS Execution Action

The AWS Execution Action allows you to call any AWS API endpoint supported by the boto3 library. See boto3 documentation here: <https://boto3.amazonaws.com/v1/documentation/api/latest/index.html>

#### Input

| Parameter Name | Description                                         | Required |
| -------------- | --------------------------------------------------- | -------- |
| Service        | The AWS Service you want to call.                   | True     |
| Operation      | The API call you want to make to the above service. | True     |

After you select a service (e.g. EC2, S3, IAM) and an operation (e.g. 'DescribeInstances', 'CreateBucket'), a further list of parameters for that call will appear on the right sidebar. These will be specific to the call you're making.

#### Output

The Specific output of the AWS Execution Action depends on the Service and Operation selected above.

The 'output' tab on the right panel will show a preview of the JSON output of the given operation.

### Action Example

A step-by-step configuration is available on the [Creating your first workflow using AWS Cloud Services](https://docs.fylamynt.com/getting-started-1/3.-creating-your-first-workflow-using-aws-cloud-services) page


# AWS Health

The integration between AWS Health and Fylamynt provides users with the ability to automate remediation for AWS Outages.

## Overview <a href="#overview" id="overview"></a>

AWS Health provides ongoing visibility into your resource performance and the availability of your AWS services. The AWS Health delivers alerts and notifications triggered by changes in the health of AWS resources.

## Use Cases <a href="#use-cases" id="use-cases"></a>

The integration between Fylamynt and AWS Health lets you:

* Trigger a workflow in Fylamynt on a specific AWS Health Alert

#### Configure AWS Health in Fylamynt <a href="#configure-aws-health-in-fylamynt" id="configure-aws-health-in-fylamynt"></a>

* Navigate to **Settings** -> **Integrations** -> **AWS Health**.

#### Instructions to setup AWS Health Integration <a href="#instructions-to-setup-aws-health-integration" id="instructions-to-setup-aws-health-integration"></a>

Follow the steps listed below on your **AWS Account** to get the desired parameters to enter in **Fylamynt**.

* Go to **Amazon EventBridge** --> **Create Rule**
* Enter a name for the new rule
* *Define pattern:*
  * Select **Event pattern**&#x20;
  * Select **Pre-defined pattern by service** as the Event matching pattern
  * Select **AWS** as the Service Provider
  * Select **Health** as the Service Name
  * Select **All Events** for Event type
  * ![](/files/7FAocFvKUMUofCdbCb45)
* *Select event bus:*
  * Select **AWS default event bus**
  * ![](/files/y58xFzRnJVIdHILGrWKl)
* *Select targets:*
  * Select **API destination** as the Target
  * Select **Create a new API destination**
    * Enter a name for the destination eg. "Fylamynt"
    * On the Authorize Fylamynt card on the integration settings page, **copy** the **Webhook URL**
    * ![](/files/J9ywY4hZG1X0gSOrc2oi)
    * **Paste** the copied Webhook URL into the **API destination endpoint** field
  * Select **Post** as the HTTP method
  * Select **Create a new connection**
    * Enter a **name** for the connection
    * Select **API Key** as the Authorization type
    * Instructions to get Fylamynt **Webhook API Key value:**
      * On the Authorize Fylamynt card on the integration settings page, choose a **Webhook API Key Name** from the dropdown, and a corresponding **Webhook API Key Value** should be provided.&#x20;
      * If no dropdown options are available for the **Webhook API Key Name**, first go to **Settings** --> **Resources** -> [**API Keys**](https://app.fylamynt.com/settings/apikeys) to Create a New API Key. &#x20;
        * [API keys documentation](/resources/api-keys)&#x20;
    * Enter **x-api-key** as the API key name
    * On the Authorize Fylamynt card on the integration settings page, **copy** the **Webhook API Key Value**
    * ![](/files/C95WEgf3ADKMU9sovw4P)
    * **Paste** the copied Webhook API Key Value into the **Value** field
  * Configure input as **Matched events**
  * Create a new role for EventBridge permissions to invoke API destinations
    * Leave the default name
  * ![](/files/YV696raen1OJdHXQO10w)
* Optionally, add tags
* Click **Create**
* On the Authorize Fylamynt card on the integration settings page, select **Authorize**&#x20;

## Integration Actions <a href="#integration-actions" id="integration-actions"></a>

You can add the following actions in the Fylamynt workflow builder, as part of your workflow.

1. [AWS Health Alert Trigger](#aws-health-alert-trigger)

### **AWS Health Alert Trigger**

The integration node triggers the automatic execution of a workflow from a combined selection of an **AWS Health Service**, **Event Type Category**, and **Event Type Code**.

When creating a workflow, you are presented with a wizard to select the trigger type to use.

* On the workflow page, select **New Workflow**
* Enter the name of the Workflow.
* Select the **AWS Health** trigger type.
* Click **Create Workflow**
* ![](/files/nb2nkHIAAur1brhJUJur)

#### Configure the automatic execution of a workflow <a href="#fylamynt-task-management" id="fylamynt-task-management"></a>

To automatically run workflows with the AWS Health Alert trigger, the incident type and assignment need to be configured. Follow the step-by-step instructions provided on the[ Incident Management - Automatic workflow execution](https://docs.fylamynt.com/getting-started-1/7.-incident-management-automatic-workflow-execution) page.


# Container

Use the Container integration for running a script that’s packaged in a container to remediate an incident.

## Overview

In today's world, we often come across scripts (e.g. Bash, Python scripts) and code in Containers that is being used in remediating problems in the infrastructure. With this integration we support executing these scripts in our workflows and help users connect these scripts to other services available in Fylamynt.

Note that the container images used in this action node need to be set up according to <https://aws.amazon.com/blogs/aws/new-for-aws-lambda-container-image-support/>

Additionally, the target account role needs to have its **Trust Relationships** updated to allow access to the AWS lambda service, and an updated *Condition* clause as shown.

![](/files/-MafXLUmiweCub-uBPsK)

## Use Cases

The Container integration lets you:

* Configure a container registry.
* Pick a Docker image and version that’s available in the registry.
* Pass any input to the Docker image in a text box. The input is directly passed as input when running the container.
* Enter resource requirements for the container
  * CPU (specified in CPU units).&#x20;
  * MEM (specified in MB)

## Integration Actions

* Drag the **Container** Action node onto the workflow editor canvas

![](/files/-MaauSm7tVeLQrEGo_fS)

* **Select Alias** for the target account in the dropdown

![](/files/-MaauV94pZumZdLXujDQ)

* **Select Repository** from the dropdown

![](/files/-MaauXRUKQm2RRHotcTB)

* **Select Image** from the dropdown

![](/files/-MaauZclBoo7Xq8POqCr)

**Input**

<table data-header-hidden><thead><tr><th>Parameter Name</th><th width="342.3333333333333">Description</th><th>Required</th></tr></thead><tbody><tr><td><strong>Parameter Name</strong></td><td><strong>Description</strong></td><td><strong>Required</strong></td></tr><tr><td>alias</td><td>Target account alias for running the container</td><td>True</td></tr><tr><td>repository</td><td>Container repository in the <strong>alias</strong> target account</td><td>True</td></tr><tr><td>image</td><td>Container image SHA256 in the selected <strong>repository</strong></td><td>True</td></tr><tr><td>bucket</td><td>S3 bucket for log output from container run</td><td>False</td></tr><tr><td>command</td><td>extra command arguments</td><td>False</td></tr><tr><td>entry_point</td><td>Image entry point</td><td>False</td></tr><tr><td>memory_size</td><td>Memory size for container run, default is 128 MBytes</td><td>False</td></tr><tr><td>timeout</td><td>Timeout in seconds for the run, default is 900 seconds</td><td>False</td></tr><tr><td>working_directory</td><td>Working directory for the run</td><td>False</td></tr></tbody></table>

**Output**

| **Parameter Name** | **Type** | **Description**                                                  |
| ------------------ | -------- | ---------------------------------------------------------------- |
| bucket             | String   | S3 bucket in which log files are stored (if specified in inputs) |
| key                | String   | S3 key of log file (if a bucket was specified)                   |
| output             | String   | output from the run                                              |
| log                | String   | Last 4 KB of the execution log of the run                        |

![](/files/-MaauiSAEDoobj1hcWMs)


# Datadog

Use the Datadog integration to ingest alerts raised by the monitoring system and respond to them automatically.

## Overview

Datadog gives you the ability to create monitors that actively check metrics, integration availability, network endpoints, and more.

Using the Fylamynt | Datadog integration you can see the list of available monitors and pick the monitor to trigger a workflow when it goes into the state of Alert.

## Use Cases

The integration between Fylamynt and Datadog lets you:

* Trigger a workflow in Fylamynt, when a specific DataDog monitor goes into the state of ALERT.
* Retrieve data from Datadog Monitors based on a search query.
* Returns the test result from all the synthetic tests.

## Configure Datadog in Fylamynt

* Navigate to **Settings** > **Integrations** > **Datadog**
* Configure a new integration instance

Details needed to set up **Datadog instance** in **Fylamynt**:

<table data-header-hidden><thead><tr><th>Parameter</th><th width="343.3333333333333">Description</th><th>Required</th></tr></thead><tbody><tr><td><strong>Parameter</strong></td><td><strong>Description</strong></td><td><strong>Required</strong></td></tr><tr><td>Datadog API Key</td><td>API key for your Datadog instance</td><td>True</td></tr><tr><td>Datadog Application Key</td><td>Application key for your Datadog instance</td><td>True</td></tr><tr><td>External ID</td><td>Identifier that identifies the tenant, to be added into HTTP headers by Datadog</td><td>True</td></tr><tr><td>Webhook API Key Name</td><td>Fylamynt API Key Name</td><td>True</td></tr><tr><td>Datadog Webhook Name</td><td>Fylamynt webhook name to be used by Datadog service</td><td>True</td></tr><tr><td>Datadog Webhook URL</td><td>Fylamynt webhook URL to be used by Datadog service</td><td>True</td></tr></tbody></table>

Follow the steps listed below in your **Datadog Account** and get the desired parameters to enter in **Fylamynt**. To configure Datadog you will require access to **Organization settings** with **write permission** for **API Keys** and **Application Keys.**

* Login to your **Datadog Account**
* Navigate to **Organization settings**
  * Click on your username in the bottom left corner
  * Select Organization Settings
  * ![](/files/vRe7mYWdcNPbP7CVS99Q)
* Select Access -> **API Keys**
* Click **+** **New Key**
  * Provide a name for the new API key
  * Click **Create Key**
  * ![](/files/Zwgt3vqVi65z2j6ebXQi)
  * Click **Copy Key**
    * Paste the new API Key into the **Datadog API Key** field on the Authorize Fylamynt card on the Datadog Integration settings page.
  * Close the window
* Select Access -> **Application Keys**
* Click **+** **New Key**
  * Provide a name for the new Application key
  * Click **Create Key**
  * ![](/files/qBhKtOwixaYUhQOTGCfc)
  * Click **Copy Key**
    * Paste the new Application Key into the **Datadog Application Key** field on the Authorize Fylamynt card on the Datadog Integration settings page.
  * Close the window
* Navigate to **Integrations -> Integrations**
* ![](/files/g11EczQBEpArNNATJziK)
* Go to the Team page
* Search and select for **webhooks**
* ![](/files/gwodRdJDE2qcLErpSF0j)
* Click **+ New** button to create a new Webhook
* Complete “New Webhook” panel using the following details
  * Copy **Datadog Webhook Name** from the Authorize Fylamynt card as the **Name** of the New Webhook
  * Copy **Datadog Webhook URL** from the Authorize Fylamynt card as the **URL** of the New Webhook
  * Add **"alert\_id": "$ALERT\_ID"** in the JSON object for Payload
    * Optionally, add or remove any other fields
  * Check the **Custom Headers** box
    * Copy the JSON header information below and paste it into the Custom Header field
    * ```
      {
          "x-api-key": "<fylamynt-api-key>",
          "fylamynt-external-id": "<fylamynt-external-id>",
          "Content-Type": "application/json"
      }
      ```
    * Replace \<fylamynt-api-key>
      * From the Authorize Fylamynt card, choose one of the Webhook API Key Name from the dropdown, and the corresponding Webhook API Key Value should be shown
        * If no options are available for the Webhook API Key Name, first go to **Settings --> Resources -> API Keys** to create a New API Key
      * Copy the **Webhook API Key Value** and replace \<fylamynt-api-key> in the header.
    * Replace \<fylamynt-external-id>
      * From Authorize Fylamynt card, copy the **External ID** and replace \<fylamynt-external-id> in the header
* Click **Save** to complete Webhook creation

![](/files/mOJJj5TVnN2Hj4ovE5j8)

* Click on the **Authorize** button to complete the integration between Fylamynt and Datadog

## Integration Actions

You can add these actions in the Fylamynt workflow builder, as part of your workflow.

1. [Datadog Alert Trigger](#datadog-alert-trigger)
2. [Datadog Get API Test Results](#datadog-get-api-test-results)
3. [Datadog Search Monitors](#datadog-search-monitors)

### Datadog Alert Trigger

The integration node triggers the automatic execution of a workflow from a selected **Datadog Monitor.**

When creating a workflow, you are presented with a wizard to select the trigger type to use.

* On the workflow page, select **New Workflow**
* Enter the name of the Workflow.
* Select the **Datadog** trigger type.
* Click **Create Workflow**
* ![](/files/t0jcKFh5Ako7KZL9hz0u)

#### Configure the automatic execution of a workflow <a href="#fylamynt-task-management" id="fylamynt-task-management"></a>

To automatically run workflows with the Datadog Alert trigger, the incident type and assignment need to be configured. Follow the step-by-step instructions provided on the[ Incident Management - Automatic workflow execution](https://docs.fylamynt.com/getting-started-1/7.-incident-management-automatic-workflow-execution) page.

### Datadog Get API Test Results

Get the last 50 test results summaries for all Synthetics API tests.

**Input**

| **Parameter Name** | **Description**                                | **Required** |
| ------------------ | ---------------------------------------------- | ------------ |
| Start Timestamp    | Date-time from which to start querying results | False        |
| End Timestamp      | Date-time up to which to query results         | False        |

**Output**

| **Parameter Name** | **Type** | **Description**                       |
| ------------------ | -------- | ------------------------------------- |
| result             | Object   | A list of test result objects in JSON |

**Action Example**

![](/files/-Mkuzni3cmxRTvq2DSyw)

![](/files/-MkuzqiV5J6wpc8-SNPo)

### Datadog Search Monitors

Perform a search query and return matching monitors

**Input**

| **Parameter Name** | **Description**                                                                                                                                                        | **Required** |
| ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
| Query              | The query to be executed. Query documentation: <https://docs.datadoghq.com/monitors/manage_monitor/#find-the-monitors>                                                 | True         |
| Page Index         | Page to start paginating from                                                                                                                                          | False        |
| Monitors Per Page  | Number of monitors to return per page                                                                                                                                  | False        |
| Sort Order         | String for sort order, composed of field and sort order separate by a comma, e.g. name,asc. Supported sort directions: asc, desc. Supported fields: name, status, tags | False        |

**Output**

| **Parameter Name** | **Type** | **Description**            |
| ------------------ | -------- | -------------------------- |
| result             | Object   | A list of monitors in JSON |

**Action Example**

![](/files/-MkuzytEs78U3Yf0ihSl)

![](/files/-Mkv-19fq0M-_RRCsEk9)


# Elasticsearch

Use the integration to gain visibility from logging or APM Elastic platform.

## Overview

Elasticsearch has become the de facto standard open source logging database. Many users want to interact with data in Elasticsearch in their automation workflows. With this integration you get to explore the search API in Fylamynt.

## Use Cases

The integration between Fylamynt and Elasticsearch lets you:

* Use the search action - (Returns search hits that match the query defined in the request). You can provide search queries using the q [query string parameter](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-search.html#search-api-query-params-q) or [request body](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-body.html).

## Configure Elasticsearch in Fylamynt

* Navigate to **Settings** > **Integrations** > **Elasticsearch**
* Configure a new integration instance

Details needed to set up **Elasticsearch instance** in **Fylamynt**:

<table data-header-hidden><thead><tr><th>Parameters</th><th width="318.3333333333333">Description</th><th>Required</th></tr></thead><tbody><tr><td><strong>Parameters</strong></td><td><strong>Description</strong></td><td><strong>Required</strong></td></tr><tr><td>API Key ID</td><td>Elastic search API key id</td><td>True</td></tr><tr><td>API Key Value</td><td>Elastic search API key value</td><td>True</td></tr><tr><td>Cloud ID</td><td>Unique Id to configure your client to work with your Elastic Cloud deployment</td><td>True</td></tr></tbody></table>

Follow the steps listed below in your **Elasticsearch Account** and get the desired parameters to enter in **Fylamynt**

* Login to your **Elasticsearch** cloud
* Open `Kibana` in your deployment that you want to integrate

![](/files/-MbJ7MeQmmW2Eo0nUhoS)

* In your left side navigation panel go to management section and click on `Dev Tools`

![](/files/-MbJ7PIGdYKMPT4jhwmP)

* Run the following query and copy the output

```
POST /_security/api_key
{
  "name": "fylamynt_api_key",
  "role_descriptors": {
    "role1": {
      "indices": [
        {
          "names": [
            "*"
          ],
          "privileges": [
            "read"
          ]
        }
      ]
    }
  }
}
```

* Output should look like something

```
{
  "id" : "mKPFnnkBVpgijiDOsaVo",
  "name" : "fylamynt_api_key",
  "api_key" : "TvgPfIY5RSeRKYCC9yF8XQ"
}
```

* Copy the `id` and paste it in `Elastic Search API key id` section and copy `api_key` and paste it in `Elastic search API key value`

## Integration Actions <a href="#integration-actions" id="integration-actions"></a>

You can add these actions in the Fylamynt workflow builder, as part of your workflow.

1. [Elasticsearch Search](#elasticsearch-search)

### Elasticsearch Search

Integration node to run Elasticsearch Search

**Input**

| **Parameter Name** | **Description**                                              | **Required** |
| ------------------ | ------------------------------------------------------------ | ------------ |
| alias              | AWS assume role alias                                        | True         |
| index              | Index name where query is to run                             | True         |
| query              | Search query                                                 | True         |
| offset             | Offset of query result                                       | False        |
| limit              | Limit of query result                                        | False        |
| timeout            | time in seconds to timeout the search query (Default: 300 s) | False        |
| s3\_bucket         | S3 bucket name where query and result would be stored        | False        |

**Output**

| **Parameter Name**    | **Type** | **Description**                                               |
| --------------------- | -------- | ------------------------------------------------------------- |
| execution\_status     | String   | Status of run (ie: S\_OK / E\_FAIL)                           |
| result                | String   | Query result                                                  |
| is\_result\_truncated | Boolean  | Boolean value which denotes if the result is truncated or not |
| result\_bucket\_key   | String   | Name of the file where result is written                      |
| s3\_bucket            | String   | Name of the bucket                                            |

**Note:**

* AWS SSM automation has restriction on size of response object (\~100 KB), so if query has a result greater than this value then truncated result would be returned and if **S3 Bucket Name** is provided then whole result would be written to the bucket.

**Action Example**

![](/files/-MbJ7FqyXjA830UgHvRz)


# Generic Webhook

Webhooks are automated messages sent from applications when something happens.  They have a message, or payload, and are sent to a unique URL.

## Overview <a href="#overview" id="overview"></a>

Webhooks are a simple mechanism and nearly every service can integrate with Fylamynt by calling webhooks.

When creating a workflow, Fylamynt provides a generic webhook trigger node that can be called by any external application in order to automatically run the workflow.

## Use Cases <a href="#use-cases" id="use-cases"></a>

The webhook integration in a Fylamynt workflow lets you:

* Trigger the execution of a workflow, after validating the webhook input.

## Configure Generic Webhook in Fylamynt

Details needed to set up a Generic webhook in Fylamynt:

| Parameter             | Description                                                                                |
| --------------------- | ------------------------------------------------------------------------------------------ |
| Webhook Trigger URL   | Fylamynt Webhook URL created specifically for each workflow to be used by the application. |
| Webhook API Key Name  | Fylamynt API Key Name for webhook authentication                                           |
| Webhook API Key Value | Fylamynt API Key Value for webhook authentication                                          |

#### Instructions to setup a Webhook trigger <a href="#instructions-to-setup-instana-integration" id="instructions-to-setup-instana-integration"></a>

The Webhook trigger is not configured in the same way as other Fylamynt integrations. Every application handles webhook configuration differently, so please follow the instruction provided by your application to configure a webhook.  As an example, we are making use of [Squadcast's outgoing webhook](https://support.squadcast.com/docs/outgoing-webhooks) to trigger a workflow.

**In Fylamynt, create an API Key resource:**

* Navigate to **Settings** -> **Resources** -> **API Keys**
* ![](/files/AQAllwNxdPVUDLIa2g6S)
* Click **Add New**
* Enter the name for the API Key and click Save
* ![](/files/1rqw4q7Q5quUR6qMSEri)

**Create a new workflow:**

* On the workflow page, select **New Workflow**
* Enter the name of the Workflow.
* Select the **Webhook** trigger type.
* Click **Create Workflow**
* In the Workflow editor, select the Webhook node
* ![](/files/hVsYtD53nTWvELc8nrtU)
* The Action Configuration Panel will show on the right-hand side of the canvas.
  * Here you will find all the information necessary to create the webhook in your application.
  * From the dropdown box, select the API Key resource created earlier.
  * ![](/files/HbtoTuX7pWPZ35D5zfWI)
  * Once selected the API  Key value is displayed.
  * ![](/files/5eVB05rBhUW8FEkVzkpp)

Now turn your attention to your application, in this example use case, [Squadcast ](https://www.squadcast.com/)to configure the outgoing webhook with the information provided in the Action Configuration Panel.

* Login to Squadcast
* Navigate to Settings -> Webhooks
* Click Configure New
* ![](/files/sKqeHyV5NttOgRkJZVxc)
* Enter a name for the webhook.
* Click Create

![](/files/CoaMLF2niXSwfm7iQ7vl)

* From Fylamynt's Action configuration panel,  copy the provided **URL** and paste it in URL section, leaving the default as POST.
  * ![](/files/RNJ23oVVcL5hwP9BdFUg)
* Under additional headers, enter **x-api-key** as the key name
* From Fylamynt's Action configuration panel,  copy the **Webhook API Key value** and paste it in the value field of the 'x-api-key' key name
  * ![](/files/HIJb85YAycvuWEfT1axG)
* Click **Update**

Whenever a Squadcast incident is created, the newly create Fylamynt workflow will be triggered.

## Integration Actions

You can add the following actions in the Fylamynt workflow builder, as part of your workflow.

1. [Webhook Trigger](#webhook-trigger)

### Webhook Trigger

When creating a workflow, you are presented with a wizard to select the trigger type to use.

* On the workflow page, select **New Workflow**
* Enter the name of the Workflow.
* Select the **Webhook** trigger type.
* Click **Create Workflow**
* ![](/files/kUB8GtheeYz9EvpsxNYp)

The webhook trigger does not require an Incident Type or assignment to be configured for the workflow to run automatically.


# GitHub

Set up GitHub repositories in Fylamynt and access data that you need.

## **Configure GitHub Repos in Fylamynt**

* Navigate to **Settings** > **Integrations** > **GitHub Repos > Add Integration**.

Details needed to set up **GitHub Repos** in Fylamynt:

| **Parameter** | **Description**           | **Required**                   |
| ------------- | ------------------------- | ------------------------------ |
| Repo Id       | Repository name           | True                           |
| SSH Key       | SSH key of GitHub account | Either SSH key or Access Token |
| Access Token  | Access token              | Either SSH key or Access Token |
| URL           | GIT repo SSH URL          | True                           |

You can configure Github using either **Access Token** or **SSH key.**

An access token is recommended as you can specify granular level access, while SSH Key gives account level access to the Fylamynt.

* Configure SSH Key:
  * Select “**Profile Icon”** -> “**Settings”** -> “**SSH and GPG keys”**
  * Configure SSH key and add this key as **SSH Key**  parameter in Fylamynt repo configuration
* Configure Access Token:
  * Select “**Profile Icon”** -> “**Settings”** -> “**Developer Settings”** -> **“Personal Access Tokens”**
  * Configure Access Token and this as **Access Token** parameter in Fylamynt repo configuration

## **Integration Actions**

Configured GitHub repos can be used as input for any other actions like **CloudFormation\_Run\_Template.** This action node fetches the CloudFormation template file from the GitHub repo and executes it with given parameters.

Configure CloudFormation Template:

* Make sure that GitHub repos are already configured
* Navigate to **Settings** > **Resources** > **CloudFormation Templates > Add New**.
* Add the following details:

| **Parameter** | **Description**                      | **Required** |
| ------------- | ------------------------------------ | ------------ |
| Template Id   | Name for the CloudFormation Template | True         |
| Repo Id       | Repo in which CF template is present | True         |
| FilePath      | Path to CF template in the repo      | True         |
| Ref           | Branch, tag, or commit to checkout   | True         |

* Click on **Save CloudFormation Template**

Now this template is available in the **CloudFormation\_Run\_Template** node.


# Google Kubernetes Engine (GKE)

Use the GKE integration in Fylamynt to manage the clusters deployed in Google infrastructure.

## Overview

Google Kubernetes Engine (GKE) provides a managed environment for deploying, managing, and scaling your containerized applications using Google infrastructure.&#x20;

With the integration between Fylamynt and GKE, you can build and manage container based applications in Google Cloud Platform. The integration provides an abstraction layer over the Kubernetes API server and expose meaningful actions like "Get Overloaded Nodes", "Kill Overloaded Nodes" for automation.

## Use Cases

## Configure GKE in Fylamynt

* Navigate to **Settings** > **Integrations** > **Google Kubernetes Engine**.
* Configure a new integration instance.

Follow the steps listed below on your GCP Account and complete the integration setup by configuring Service Account Key.

Details needed to set up **GKE instance** in **Fylamynt**:

To register Fylamynt application in GCP and grant access to a project's Kubernetes engine account to manage cluster resources from Fylamynt, you need to follow the steps below.

#### **Create a Service Account (Ignore if you already have one)**

1. In the Cloud Console, go to the **Service accounts** page. [Go to the Service accounts page](https://console.cloud.google.com/iam-admin/serviceaccounts)
2. Select a project.
3. Click **Create service account**.
4. Enter a service account name to display in the Cloud Console.

   The Cloud Console generates a service account ID based on this name. Edit the ID if necessary. You cannot change the ID later.
5. Optional: Enter a description of the service account.
6. If you do not want to set access controls now, click **Done** to finish creating the service account.

   To set access controls now, click **Create and continue** and continue to the next step.
7. Choose the [IAM role](https://cloud.google.com/iam/docs/understanding-roles) -> **(Kubernetes Engine Service Agent)** to manage cluster resources and to grant access to the service account on the project.
8. When you are done adding roles, click **Continue**.
9. Optional: In the **Service account users role** field, add members that can [impersonate the service account](https://cloud.google.com/iam/docs/impersonating-service-accounts#allow-impersonation).
10. Optional: In the **Service account admins role** field, add members that can manage the service account.
11. Click **Done** to finish creating the service account.

#### Grant this service account access to project and include Kubernetes Engine Service Agent role.

1. If you did not follow step 7 while creating the service account or you already had a service account and missed adding the IAM role - **Kubernetes Engine Service Agent,** please go to the permissions tab for the specific service account and include the role.
2. **Kubernetes Engine Service Agent role** - Gives Kubernetes Engine account access to manage cluster resources. Includes access to service accounts.

#### Create service account key and add it to Fylamynt right panel to complete the integration setup

1. Select the same **Service Account** used&#x20;
2. Click the **Keys** tab.
3. Click the **Add key** drop-down menu, then select **Create new key**.
4. Select **JSON** as the **Key type** and click **Create**.

Clicking **Create** downloads a service account key file. After you download the key file, you cannot download it again.

The downloaded key has the following format, where `private-key` is the private portion of the public/private key pair:

```
{
  "type": "service_account",
  "project_id": "project-id",
  "private_key_id": "key-id",
  "private_key": "-----BEGIN PRIVATE KEY-----\nprivate-key\n-----END PRIVATE KEY-----\n",
  "client_email": "service-account-email",
  "client_id": "client-id",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://accounts.google.com/o/oauth2/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/service-account-email"
}
```

**Add Service Account Key JSON to Fylamynt**

1. Copy the JSON and add it to Fylamynt right integration panel where you see the field name **Service Account Key.**
2. Click on Authorize and you are all set to use the integration.


# Humio

The integration between Humio and Fylamynt provides users with the ability to automate and streamline cloud log management.

## Overview <a href="#overview" id="overview"></a>

Humio is powerful and extremely useful for system administrators. It provides a fast, flexible platform for logs and server metrics. With Humio Cloud, your log entries and other metrics are sent to your own private, secure repository. You’ll then use the Humio web interface to analyze your data and to create alerts to let you know when events occur or parameters are exceeded.

The alerts can be later ingested by Fylamynt with this integration and relevant information can be retrieved actively in the middle of any investigation from Fylamynt.

## Use Cases <a href="#use-cases" id="use-cases"></a>

The integration between Fylamynt and Humio lets you:

* Trigger a workflow in Fylamynt, when a specific Humio Alert goes into the state of ALERT.
* Search logs/metrics stored in Humio.

## Configure Humio in Fylamynt

* Navigate to **Settings** > **Integrations** > **Humio**
* Configure a new integration instance

Details needed to set up **Humio instance** in **Fylamynt**:

<table data-header-hidden><thead><tr><th>Parameters</th><th width="336.3333333333333">Description</th><th>Required</th></tr></thead><tbody><tr><td><strong>Parameters</strong></td><td><strong>Description</strong></td><td><strong>Required</strong></td></tr><tr><td>Humio API Token</td><td>API Token obtained from Humio</td><td>True</td></tr><tr><td>Humio URL</td><td>Humio Cloud URL, e.g. https://cloud.us.humio.com</td><td>True</td></tr><tr><td>Webhook API Key Name</td><td>Fylamynt API Key Name for webhook authentication</td><td>True</td></tr><tr><td>Webhook URL</td><td>Fylamynt Webhook URL to be used by Humio</td><td>True</td></tr></tbody></table>

Follow the steps listed below in your **Humio Account** to complete the configuration&#x20;

1. Add Humio Cloud URL to **Humio URL** in Authorize Fylamynt panel. e.g. <https://cloud.us.humio.com>
2. In your Humio account, go to **Manage Your Account --> Account Settings**, and copy **API Token**. Add the copied **API Token** to **Humio API Token** field in Authorize Fylamynt panel.
3. Configure Fylamynt webhook in selected Humio repository.&#x20;

   Go to a Humio repository --> **Alerts** --> **Actions** and create a New Action

   * Select **Action Type** as **Webhook**
   * Add **Name**
   * Copy the Fylamynt **Webhook URL** from Authorize Fylamynt panel and add in **Endpoint URL**
   * Select **POST** Method
   * **Http Headers**

     &#x20;   **Header Name:** Content-Type\
     &#x20;   **Header Value:** application/json

     &#x20;   **Header Name:** x-api-key\
     &#x20;   **Header Value:** add **Webhook API Key value** from Authorize Fylamynt panel.

     Instructions to get Fylamynt **Webhook API Key value**:\
     &#x20;   Under Authorize Fylamynt, choose one of the **Webhook API Key Name** from the dropdown, and the corresponding **Webhook API Key Value** should be shown. If no options are available for the Webhook API Key Name, first go to **Settings** --> **API Keys** --> **Manage Keys** to Create a New API Key.
   * Use the Default **Message Body Template**
   * Click on **Create Action**&#x20;
4. Configure a Humio **Alert** to use Webhook **Action**\
   Go to a Humio repository --> **Alerts** -> Create Alert or Edit Alert -> In Alert "Action" select newly created Webhook "Action"

## Integration Actions <a href="#integration-actions" id="integration-actions"></a>

You can add these actions in the Fylamynt workflow builder, as part of your workflow.

1. [Humio Alert Trigger](#humio-alert-trigger)
2. [Humio Search](#humio-search)

### Humio Alert Trigger

The integration node triggers the automatic execution of a workflow from a combined selection of a **Humio Repository** and an **Alert**.

When creating a workflow, you are presented with a wizard to select the trigger type to use.

* On the workflow page, select **New Workflow**
* Enter the name of the Workflow.
* Select the **Humio** trigger type.
* Click **Create Workflow**
* ![](/files/ffmbMgDsE2dv87ZXM82x)

#### Configure the automatic execution of a workflow <a href="#fylamynt-task-management" id="fylamynt-task-management"></a>

To automatically run workflows with the Humio Alert trigger, the incident type and assignment need to be configured. Follow the step-by-step instructions provided on the[ Incident Management - Automatic workflow execution](https://docs.fylamynt.com/getting-started-1/7.-incident-management-automatic-workflow-execution) page.

### Humio Search <a href="#humio-search" id="humio-search"></a>

Integration node to run Humio search query in a Humio repository

#### **Input**

| **Parameter Name** | **Description**                                                                                                  | **Required** |
| ------------------ | ---------------------------------------------------------------------------------------------------------------- | ------------ |
| Repository Name    | Humio repository to search                                                                                       | True         |
| Query              | The actual query. See [Query language](https://library.humio.com/stable/reference/language-syntax/) for details. | True         |
| Start Time         | The start date and time. This parameter tells Humio not to return results from before this date and time.        | True         |
| End time           | The end date and time. This parameter tells Humio not to return results from after this date and time.           | True         |
| S3 Bucket          | Target AWS Account S3 bucket to store search result                                                              | False        |

#### **Output**

| **Parameter Name**    | **Type** | **Description**                                               |
| --------------------- | -------- | ------------------------------------------------------------- |
| result                | String   | Query result                                                  |
| is\_result\_truncated | Boolean  | Boolean value which denotes if the result is truncated or not |
| result\_bucket\_key   | String   | S3 bucket key path of search result                           |
| s3\_bucket            | String   | Name of the bucket                                            |

#### **Note:**

* AWS SSM automation has restrictions on the size of the response object (\~100 KB). If the query has a result greater than this value then a truncated result would be returned, and if **S3 Bucket Name** is provided then the whole result would be written to the bucket.

#### Action Example

* Drag and drop the Humio Search Action node onto the canvas
* Select the Humio Search Action node
* Select the Humio **Repository name** from the dropdown
* Enter the **Query**
* Add the **Start Time**&#x20;
* Add the **End Time**
* Optionally, select the AWS Target Account Alias and S3 bucket name

<div align="left"><img src="/files/0WNFVr2OQaxXjSwtHUt2" alt=""></div>


# Instana

Use the Instana integration to ingest issues or incidents raised by build-in or custom events, and respond to them automatically.

## Overview <a href="#overview" id="overview"></a>

Instana is an Application Performance Management (APM) solution designed for the challenges of managing microservices and cloud-native applications.

It gives you the ability to create alerts from build-in events which are predefined health signatures based on integrated algorithms, or from custom events which allows you to create issues or incidents based on an individual metric of any given entity.

## Use Cases <a href="#use-cases" id="use-cases"></a>

The integration between Fylamynt and Instana lets you:

* Trigger a workflow in Fylamynt, when a specific Instana Alert goes into the state of ALERT.

## Configure Instana in Fylamynt <a href="#configure-instana-in-fylamynt" id="configure-instana-in-fylamynt"></a>

* Navigate to **Settings** -> **Integrations** -> **Instana**.

Details needed to set up **Instana instance** in **Fylamynt**:

| Parameter             | Description                                                                    |
| --------------------- | ------------------------------------------------------------------------------ |
| Instana API Key       | API Token obtained from Instana                                                |
| Instana URL           | Instana URL, example: [https://foobar.instana.io](https://foobar.instana.io/)) |
| Webhook API Key Name  | Fylamynt API Key Name for webhook authentication                               |
| Webhook API Key Value | Fylamynt API Key Value for webhook authentication                              |
| Instana Webhook URL   | Fylamynt Webhook URL to be used by Instana service                             |

#### Instructions to setup Instana Integration <a href="#instructions-to-setup-instana-integration" id="instructions-to-setup-instana-integration"></a>

Follow the steps listed below in your **Instana Account** and get the desired parameters to enter in **Fylamynt**.

* Login to your Instana Account.
* Copy the URL of your Instana site and paste it into the **Instana URL** field under **Authorize Fylamynt**.
* Go to **Settings** -> **Team Settings** -> **ACCESS CONTROL** -> **API Tokens**.
* ![](/files/uTuicUz3WaxOioz6Dpal)![](/files/0PuSq74M3jayEMcQ7Lc6)
* Click **Add API Token** to create a new token (or) select an existing API Token.
* For least privileged access, enable “Configuration of custom alerts” permissions.
* <img src="/files/nITdEQycc4qNFQdXsqSu" alt="" data-size="line">
* Click **Save**
* View and Copy the token and paste it into the **Instana API Key** field under **Authorize Fylamynt**.
* <img src="/files/YqqgciyM0CTvtonMCWwx" alt="" data-size="original">
* Go to **Settings** -> **Team Settings** -> **EVENTS & ALERTS** -> **Alert Channels**
* ![](/files/FEjqwhbzbmC9ExTJGBgw)
* Click on **Add Alert Channel** and select **Generic Webhook**
* ![](/files/PXwupt5Ew2qhJGlhxR2N)
* Add the below details to **Create Generic Webhook Alert Channel**
  * Enter the name for the Webhook alerts channel e.g. "Fylamynt-webhook"
  * Copy the **Instana Webhook URL** from Authorize Fylamynt card on the integration settings page and paste it into the **Webhook URL**
  * Under **Custom HTTP Request Headers**, select “Add Header”
    * Add "x-api-key" as Key
    * In the Authorize Fylamynt card on the integration settings page, select one of the **Webhook API Key Name** from the dropdown, and the corresponding **Webhook API Key Value** will be made visible.
    * If no options are available for the Webhook API Key Name, first go to Settings --> Resources --> API Keys --> Manage Resource to Create a New API Key.
    * Copy the **Webhook API Key Value** from Authorize Fylamynt card on the integration settings page, and paste it into the Value field of the **x-api-key** key
    * ![](/files/wilxllJLS1cGVVuhOhuw)
  * From **Authorize Fylamynt** card on the integration settings page, check to see if all the attributes are filled correctly.
  * Click on **Authorize** to finish Instana integration with Fylamynt.
  * Before saving the Alert Channel details click on **Test Channel** to verify that the Alerting Channel was successfully triggered.
  * ![](/files/vsENP9z6Ndp9yEZKWK2u)
  * Click “Create”
* Go to **Settings** -> **Team Settings** -> **EVENTS & ALERTS** -> **Alerts**
* Click on **New Alert**
* Add the below details to **Create New Alert**
  1. Enter the name for the Alert Configuration
  2. Under Events, select to send alerts on Event(s) or send alerts by Event Type(s)
  3. If Alert on Events is selected, click on **Add Events** and select all relevant events
  4. Under Alerting, click on **Add Alert Channels** and select the Alert Channel created in the previous step.
  5. Click **Create**

## Integration Actions

You can add the following actions in the Fylamynt workflow builder, as part of your workflow.

1. [Instana Alert Trigger](#instana-alert-trigger)

### Instana Alert Trigger

The integration node triggers the automatic execution of a workflow from a combined selection of an **Instana** **Entity Type** and an **Entity Name.**

When creating a workflow, you are presented with a wizard to select the trigger type to use.

* On the workflow page, select **New Workflow**
* Enter the name of the Workflow.
* Select the **Instana** trigger type.
* Click **Create Workflow**
* ![](/files/1lu8n0BfJKwd997tQ7Ba)

#### Configure the automatic execution of a workflow <a href="#fylamynt-task-management" id="fylamynt-task-management"></a>

To automatically run workflows with the Instana Alert trigger, the incident type and assignment need to be configured. Follow the step-by-step instructions provided on the[ Incident Management - Automatic workflow execution](https://docs.fylamynt.com/getting-started-1/7.-incident-management-automatic-workflow-execution) page.


# Jenkins

Use the Jenkins integration to run Jenkins jobs as part of your automation workflows.

## Overview

The primary use case of Jenkins is CI/CD, and with this integration we support users who are using Jenkins as the primary automation system. It could also be extended to Ops automation for already authored Jenkins jobs.

## Use Cases

The integration between Fylamynt and Jenkins lets you:

* See the list of available jobs and pick a specific job to run. (Schedule an existing Jenkins job)
* Be able to specify any input parameters needed for the job to run.

## Configure Jenkins in Fylamynt

* Navigate to **Settings** > **Integrations** > **Jenkins**.
* Configure a new integration instance.

Details needed to set up **Jenkins instance** in **Fylamynt**:

| **Parameter**      | Description                                |
| ------------------ | ------------------------------------------ |
| API Token          | The API Token from authorized user         |
| Jenkins Server URL | The Jenkins server (url:port)              |
| Jenkins Username   | Jenkins Username associated with the token |

Follow the steps listed below in your **Jenkins Account** and get the desired parameters to enter in **Fylamynt**.

* Find your Jenkins web url and port if needed, add it to the Server Url field of the 'Authorize Fylamynt' form.
* Login to your Jenkins Server.
* Go to People on the left menu.
* Select the user you want to integrate with Fylamynt and copy Jenkins User ID to the Username field.
* Select Configure from the left menu, navigate to API Token, generate a new token, and paste the value in the API Token field.
* Click Authorize button

`Note: Jenkins integration might not work when behind a proxy.`

## Integration Actions

You can add these actions in the Fylamynt workflow builder, as part of your workflow.

1. [Jenkins Build](#jenkins-build)

### Jenkins Build

You can start a Jenkins job from the workflow builder like follows:

1. Drop a Jenkins snippet.
2. Select Jenkins job was previously created in your Jenkins server.
3. Add the required parameters if any.
4. Execute the workflow to start the selected job.

**Action Example**

* Drag and drop the Jenkins Build Action node onto the canvas
* Select the Jenkins Build Action node
* Select the Jenkins **Job name** from the dropdown
* Enter the JSON input **parameter**

![](/files/n3ImAqevQZVl0DXGQilZ)


# Jira

Use the Jira integration to set up an automated issue tracking system.

## Overview

Jira Software is used by Ops engineers to plan, track, and release projects. Users can manager their CI/CD with Pipelines and monitor build status from within Jira Software.

With Jira and Fylamynt integration users can set up an automated system to track and update issues. Creating issues in real time with incident response activities or steady state management.

## Use Cases

The integration between Fylamynt and Jira lets you:

* Create an issue in an existing project.
* Update an existing issue in an existing project.

## Configure Jira in Fylamynt

* Navigate to **Settings** > **Integrations** > **Jira**
* Configure a new integration instance

Details needed to setup Jira instance in Fylamynt:

<table data-header-hidden><thead><tr><th>Parameter</th><th width="323.3333333333333">Description</th><th>Required</th></tr></thead><tbody><tr><td><strong>Parameter</strong></td><td><strong>Description</strong></td><td><strong>Required</strong></td></tr><tr><td>URL of Jira Account</td><td>Your Jira SaaS URL, example: <a href="https://acme.atlassian.net/">https://acme.atlassian.net/</a></td><td>True</td></tr></tbody></table>

Follow below step (1 - 7) on your JIRA Account and click on Authorize Fylamynt:

1. Jira User (with admin privileges) should navigate to the **Jira settings** menu and select **Products.**
2. Under **INTEGRATIONS** in menu, select **Application links.**
3. Enter <http://api.app.fylamynt.com/> as URL and click **Create new link**
4. Fill in Application Name with any name (used for identification, example: fylamynt) and leave **Generic Application** selected.
5. Scroll to the bottom of the form, check **Create incoming link**, and click **Continue.**
6. For the next page, copy-paste the "Consumer Key", "Consumer Name", and "Public Key" from the Authorize Fylamynt panel, and click **Continue.**
7. In Jira Integration page "Authorize Fylamynt" section, copy the URL of your JIRA account (Example: <https://acme.atlassian.net/>) and click on **Authorize**.
8. You will be re-directed to your Jira account to “Allow“ access for Fylamynt domain.

## **Integration Actions**

You can add these actions in the Fylamynt workflow builder, as part of your workflow.

1. [Jira Create Issue](#jira-create-issue)
2. [Jira Update Issue](#jira-update-issue)

### **Jira Create Issue**

Integration node to create an issue in Jira.

#### **Input**

| **Parameter Name** | **Description**                          | **Required** |
| ------------------ | ---------------------------------------- | ------------ |
| Jira Projects      | Select a Jira Project to create a ticket | True         |
| Issue Types        | Select Jira issue type                   | True         |
| Description        | Add description for Jira issue           | True         |
| Summary            | Add summary for Jira issue               | True         |
| Reporter           | Select reporter for Jira issue           | False        |
| Priority           | Select priority for Jira issue           | False        |

#### **Output**

| **Parameter Name** | **Type** | **Description**               |
| ------------------ | -------- | ----------------------------- |
| issue\_key         | String   | Key of the created Jira issue |

#### **Action Example**

* Drag and drop the Jira Create Action node onto the Workflow Editor Canvas&#x20;
* Select the Action node&#x20;
* Select the **Project Key** from the dropdown
* Select the **Issue Type** from the dropdown
* Enter the Issue Type Summary
* Enter the Issue Type Description
* Optionally, add set the priority
* Optionally, select the Reporter

![](/files/Haan1CZYtuEreeruZB12)

### **Jira Update Issue**

Integration node to update an existing issue in Jira.

**Input**

| **Parameter Name** | **Description**                       | **Required** |
| ------------------ | ------------------------------------- | ------------ |
| Jira Projects      | Select a Jira project to fetch issues | True         |
| Issue List         | Select issue to update                | True         |

**Output**

| **Parameter Name** | **Type** | **Description**              |
| ------------------ | -------- | ---------------------------- |
| issue\_key         | String   | Key of the update Jira issue |

**Action Example**

* Select a **Jira project** from the dropdown
* Select the Issue from the list
* Jira issue details of the selected issue
* Select any of the optional parameters to update the Jira issue

![](/files/bRxXfaGT8T3AJbTVT55U)


# New Relic

Use the integration to ingest alerts, search and retrieve data from New Relic.

## Overview

New Relic is a cloud-based observability platform built to help you create more perfect software. It includes three core components: **Full-Stack Observability, Applied Intelligence & Telemetry Data.**

&#x20;**Full-Stack Observability** lets you easily visualize, analyze, and troubleshoot your entire software stack in one connected experience. With rich analytics and a curated user experience, Full-Stack Observability surfaces the context your teams need to pinpoint and resolve problems within your infrastructure, applications, and end-user experience faster.

This integration is built for users who would like to interact with the data from New Relic's Full-Stack Observability component in their automation workflows.

## Use Cases

The integration between Fylamynt and New Relic lets you:

* Trigger a workflow in Fylamynt, when a specific New Relic Alert condition goes into the state of ALERT.
* Run New Relic NRQL Query to gather data from curated monitoring that span your entire estate, from applications and infrastructure to logs and serverless apps.

## Configure New Relic in Fylamynt

* Navigate to **Settings** > **Integrations** > **New Relic**
* Configure a new integration instance

Details needed to set up **New Relic instance** in **Fylamynt**:

<table data-header-hidden><thead><tr><th>Parameters</th><th width="365.3333333333333">Description</th><th>Required</th></tr></thead><tbody><tr><td><strong>Parameters</strong></td><td><strong>Description</strong></td><td><strong>Required</strong></td></tr><tr><td>New Relic Account Id</td><td>New Relic API key id</td><td>True</td></tr><tr><td>New Relic API Key</td><td>New Relic API key value</td><td>True</td></tr></tbody></table>

Follow the steps listed below in your **New Relic Account** and get the desired parameters to enter in **Fylamynt**

* Log in to your **New Relic** portal
* Navigate to settings
  * In the header top right corner, select the button ![](/files/LVDBSapNibzAJnvd5QNe)
  * ![](/files/1vyyLxF3txv6Ddirsszb)
* Click on **API keys**
* Click **Create a key**
  * Select your account
  * Leave User as the default Key type
  * Provide a name for the new API key
  * Optionally, add a note
  * ![](/files/Q0DA3x6omxAAIL7MN64Q)
  * Click **Create a key**
  * ![](/files/Oy9zInOIluA1ALSXgJPs)
* The newly created API Key should be listed on the API keys page
* Copy the `Account number` of your New Relic environment and paste it into the **New Relic Account ID** field in the Authorize Fylamynt card on the integration settings page.
* Click three dots next to the newly created API key
  * ![](/files/egkplvxD8v9JT9dfNCDP)
* Select **Copy Key** and paste it into the **New Relic API Key** field in the Authorize Fylamynt card on the integration settings page
* In the Authorize Fylamynt card on the integration settings page, select one of the **Webhook API Key Name** from the dropdown, and the corresponding **Webhook API Key Value** will be made visible.
  * If no options are available for the Webhook API Key Name, first go to **Settings --> Resources --> API Keys** to create a New API Key.
* To automatically trigger workflows, a new notification channel needs to be created
  * Navigate to **Alerts & AI ->ALERTS -> Channels**
  * Click **+ New notification channel**
  * Select **Webhook** as the Channel type
  * Enter Channel name
  * Copy the **New Relic Webhook URL** from Authorize Fylamynt card and paste it into **Base Url**
  * Click **+ custom headers**
  * Enter **x-api-key** as the custom header **name**
  * Copy the **Webhook API Key Value** from Authorize Fylamynt card on the integration settings page and paste as the custom header **value**
  * Click **Create Channel**
  * The notification channel can now be assigned to any Datadog alert policy to automatically trigger a workflow.
* Click `Authorize`

## Integration Actions <a href="#integration-actions" id="integration-actions"></a>

You can add these actions in the Fylamynt workflow builder, as part of your workflow.

1. [New Relic Alert Trigger](#new-relic-alert-trigger)
2. [New Relic NRQL Query](#new-relic-nrql-query)

### **New Relic** Alert Trigger

The integration node triggers the automatic execution of a workflow from a selected **New Relic Policy**.

When creating a workflow, you are presented with a wizard to select the trigger type to use.

* On the workflow page, select **New Workflow**
* Enter the name of the Workflow.
* Select the **New Relic** trigger type.
* Click **Create Workflow'**
* ![](/files/kZvRThKTQdzwbwPKwbom)

#### Configure the automatic execution of a workflow <a href="#fylamynt-task-management" id="fylamynt-task-management"></a>

To automatically run workflows with the New Relic Alert trigger, the incident type and assignment need to be configured. Follow the step-by-step instructions provided on the[ Incident Management - Automatic workflow execution](https://docs.fylamynt.com/getting-started-1/7.-incident-management-automatic-workflow-execution) page.

### **New Relic NRQL Query**

Use the action to run New Relic NRQL Query and retrieve data in Fylamynt

**Input**

| **Parameter Name** | **Description**                                       | **Required** |
| ------------------ | ----------------------------------------------------- | ------------ |
| alias              | AWS assume role alias                                 | False        |
| NRQL Query         | NRQL query to be run on the given 'New Relic' account | True         |
| s3\_bucket         | S3 bucket name where query and result would be stored | False        |

**Output**

| **Parameter Name**    | **Type** | **Description**                                               |
| --------------------- | -------- | ------------------------------------------------------------- |
| execution\_status     | String   | Status of run (ie: S\_OK / E\_FAIL)                           |
| result                | String   | Query result                                                  |
| is\_result\_truncated | Boolean  | Boolean value which denotes if the result is truncated or not |
| result\_bucket\_key   | String   | Name of the file where result is written                      |
| s3\_bucket            | String   | Name of the bucket                                            |

**Note:**

* AWS SSM automation has a restriction on the size of the response object (\~100 KB), so if the query has a result greater than this value then truncated result would be returned and if **S3 Bucket Name** is provided then the whole result would be written to the bucket and

**Action Example**

* Drag and drop the New Relic NRQL Query Action node onto the Workflow Editor Canvas
* Select the Action node&#x20;
* Enter the NRQL Query
* Optionally, select the AWS Target Account Alias and S3 bucket name for the query output.

![](/files/-Mkv1fMzLdeyOPC-jPx-)


# Opsgenie

Use the Opsgenie integration to ingest alerts from specific Opsgenie services.

## Overview <a href="#overview" id="overview"></a>

Opsgenie (now acquired by Atlassian) is mainly used for for on-call, alerting, and incident management.

Opsgenie integration is intended for users who have Opsgenie set up as the primary alerting and on-call management system.

## Use Cases <a href="#use-cases" id="use-cases"></a>

The integration between Fylamynt and Opsgenie lets you:

* Trigger a workflow in Fylamynt, when a specific Opsgenie Alert goes into the state of ALERT.

## Configure Opsgenie in Fylamynt

* Navigate to **Settings** > **Integrations** > **Opsgenie**.
* Configure a new integration instance

Details needed to set up **Opsgenie instance** in **Fylamynt**:

| **Parameter**        | Description                                         | **Required** |
| -------------------- | --------------------------------------------------- | ------------ |
| Opsgenie API token   | API Token obtained from Opsgenie                    | True         |
| Webhook API Key Name | Fylamynt API Key name                               | True         |
| Opsgenie Webhook URL | Fylamynt webhook URL to be used by Opsgenie service | True         |

Webhook is used to **fetch alerts** from Opsgenie in real-time. You can also **Enable / Disable** Opsgenie Webhook.

Follow the steps listed below in your **Opsgenie Account** and get the desired parameters to enter in **Fylamynt**.

* In your Opsgenie Account, go to “**Teams”** --> “**Select your team”** --> “**Integrations”** --> “**Add Integration”**.
* Select **API** as an integration option.
* Give **read-only** access, copy API Key and **Save** **Integration.**
* Now need to configure webhook:
  * Select “**Teams”** --> **“Your Team”** --> “**Add Action Channel”**
  * Provide name for the Action Channel
  * Select **Rest Endpoint** as a type for Action Channel
  * Add following details:
    * **URL**: copy Webhook URL from the Opsgenie Webhook URL in the right side panel.
    * **Custom Headers:**
      * Name: x-api-key
      * Value: add "Webhook API Key value" from right side panel
    * Instructions to get Fylamynt " Webhook API Key value":
    * Under Authorize Fylamynt, choose one of the **Webhook API Key Name** from the dropdown, and the corresponding **Webhook API Key Value** should be shown. If no options are available for the **Webhook API Key Name**, first go to **Settings** --> A**PI Keys** --> Manage Keys to Create a New API Key.
* Create **Managed Action:**
  * Select **“Teams” --> “Action” --> “Add Action”**
  * Select “**REST Endpoint”** --> (previously created Action Channel) --> “**Next”** --> “**Create”**
* Create **Policy** for created **Managed action:**
  * Select “**Teams”** --> “**Policies”** --> “**Add Action Policy”**
  * Tick Enable policy when created, add conditions when you want to trigger Webhooks.
  * Then click on **Create and enable policy**

## Integration Actions <a href="#integration-actions" id="integration-actions"></a>

You can add these actions in the Fylamynt workflow builder, as part of your workflow.

1\. [Opsgenie Alert Trigger](#opsgenie-alert-trigger)

### **Opsgenie Alert Trigger**

The integration node triggers the automatic execution of a workflow from a selected **Opsgenie Service**.

When creating a workflow, you are presented with a wizard to select the trigger type to use.

* On the workflow page, select **New Workflow**
* Enter the name of the Workflow.
* Select the **Opsgenie** trigger type.
* Click **Create Workflow**
* ![](/files/ptCuJ0Avh1WuT6m8a5sr)

#### Configure the automatic execution of a workflow <a href="#fylamynt-task-management" id="fylamynt-task-management"></a>

To automatically run workflows with the Opsgenie Alert trigger, the incident type and assignment need to be configured. Follow the step-by-step instructions provided on the[ Incident Management - Automatic workflow execution](https://docs.fylamynt.com/getting-started-1/7.-incident-management-automatic-workflow-execution) page.


# PagerDuty

Use the PagerDuty integration to standardize and speed up resolution of various cloud alerts.

## Overview

PagerDuty does an excellent job in aggregating data from myriad monitoring tools and creating actionable insights in the form of incidents. Using PagerDuty with Fylamynt for incident response in a completely automated fashion is the match we all need today. To access this, users can tap into the real-time PagerDuty intel with the workflow automation features of Fylamynt to improve full-stack visibility and accelerated incident response.

## Use Cases

The integration between Fylamynt and PagerDuty lets you:

* Ingest incidents from PagerDuty are collected from various monitoring tools and grouped into actionable insights.
* Leverage automated workflows in Fylamynt and create incident response best practices to reduce MTTR.
* Access hundreds of Fylamynt’s third-party integration actions to coordinate response across multiple cloud infrastructure functions such as AWS, GCP, and Azure.

To find out more about this integration, please refer to the following [blog](https://www.fylamynt.com/post/fylamynt-pagerduty-automated-incident-response) and [video](https://www.youtube.com/watch?v=XqGewhz3vYU).

## Configure PagerDuty in Fylamynt

* Navigate to **Settings** > **Integrations** > **PagerDuty**.
* Configure a new integration instance.

Details needed to set up **PagerDuty instance** in **Fylamynt**:

<table data-header-hidden><thead><tr><th>Parameter</th><th width="394">Description</th><th>Required</th></tr></thead><tbody><tr><td><strong>Parameter</strong></td><td>Description</td><td><strong>Required</strong></td></tr><tr><td>PagerDuty API Token</td><td>API Token obtained from PagerDuty</td><td>True</td></tr><tr><td>Webhook API Key Name</td><td>Fylamynt API Key name</td><td>True</td></tr><tr><td>PagerDuty Webhook URL</td><td>Fylamynt Webhook URL to be used by PagerDuty service</td><td>True</td></tr></tbody></table>

Webhook is used to **fetch alerts** from PagerDuty in real-time. You can also **Enable / Disable** PagerDuty Webhook.

Follow the steps listed below in your **PagerDuty Account** and get the desired parameters to enter in **Fylamynt**.

* In your **PagerDuty Account**, go to **"DEVELOPER TOOLS"** --> **"API Access"**.
* Create a new API Key and copy the **"API Key"** generated to the **"PagerDuty API Token"** field in Fylamynt.
* Now configure PagerDuty - Fylamynt workflow trigger (webhook) with the below steps
  * Go to **PagerDuty Services** --> **Service Directory**
  * Select any existing PagerDuty Service and go to IntegrationsIn Extensions and Add-Ons of Integrations, click on Add or manager extensions and Select **"Generic V2 Webhook"** type.
  * Add below details to **New Extension** --> **Generic V2 Webhook**
    * URL:
      * copy URL from the **"PagerDuty Webhook URL"** in the right panel
    * Custom Headers:
      * **Header Name**: **x-api-key**
      * **Header Value**: add **"Webhook API Key value"** from the right-side panel
    * Instructions to get Fylamynt " Webhook API Key value":
      * Under Authorize Fylamynt, choose one of the **Webhook API Key Name** from the dropdown, and the corresponding **Webhook API Key Value** should be shown. If no options are available for the **Webhook API Key Name**, first go to **Settings** --> **API Keys** --> **Manage Keys** to Create a New API Key.

## Integration Actions

You can add these actions in the Fylamynt workflow builder, as part of your workflow.

1. [PagerDuty Alert Trigger](#pagerduty-alert-trigger)
2. [PagerDuty Create Incident](#pagerduty-create-incident)
3. [PagerDuty Resolve Incident](#pagerduty-resolve-incident)

### Pagerduty Alert Trigger

The integration node triggers the automatic execution of a workflow from a selected **PagerDuty Service**.

When creating a workflow, you are presented with a wizard to select the trigger type to use.

* On the workflow page, select **New Workflow**
* Enter the name of the Workflow.
* Select the **PagerDuty** trigger type.
* Click **Create Workflow**
* ![](/files/HIqicWh0ca0SQ4yPLHS8)

#### Configure the automatic execution of a workflow <a href="#fylamynt-task-management" id="fylamynt-task-management"></a>

To automatically run workflows with the PagerDuty Alert trigger, the incident type and assignment need to be configured. Follow the step-by-step instructions provided on the[ Incident Management - Automatic workflow execution](https://docs.fylamynt.com/getting-started-1/7.-incident-management-automatic-workflow-execution) page.

### PagerDuty Create Incident

Use the action to create an incident in PagerDuty

**Input**

| **Parameter Name** | **Description**                                                                            | **Required** |
| ------------------ | ------------------------------------------------------------------------------------------ | ------------ |
| Incident Title     | Add a title for PagerDuty Incident                                                         | True         |
| PagerDuty Service  | Select a PagerDuty Service                                                                 | True         |
| Escalation Policy  | Select a PagerDuty Escalation Policy                                                       | True         |
| From User          | The email address of a valid user associated with the PagerDuty account making the request | True         |

**Output**

| **Parameter Name** | **Type** | **Description**                                                                  |
| ------------------ | -------- | -------------------------------------------------------------------------------- |
| created\_at        | String   | The date/time the incident was first triggered                                   |
| incident\_id       | String   | id of the incident                                                               |
| title              | String   | A succinct description of the nature, symptoms, cause, or effect of the incident |
| incident\_number   | Integer  | The number of the incident. This is unique across your account                   |
| status             | String   | The current status of the incident                                               |

**Action Example**

* Drag and drop the PagerDuty Create Action node onto the Workflow Editor Canvas
* Select the Action node
* Provide Incident title&#x20;
* Select PagerDuty service from the dropdown
* Select Escalation Policy from the dropdown
* Select the User to create PagerDuty incident

![](/files/u19Msl4IY4ldT6rG98E7)

### **PagerDuty Resolve Incident**

Use the action to resolve an incident in PagerDuty

**Input**

| **Parameter Name**    | **Description**                                                                            | **Required** |
| --------------------- | ------------------------------------------------------------------------------------------ | ------------ |
| PagerDuty Incident Id | ID of PagerDuty incident                                                                   | True         |
| From User             | The email address of a valid user associated with the PagerDuty account making the request | True         |
| Add Note              | Add a note or resolve message to incident                                                  | False        |

\
**Output**

| **Parameter Name** | **Type** | **Description**                                                                  |
| ------------------ | -------- | -------------------------------------------------------------------------------- |
| incident\_id       | String   | id of the incident                                                               |
| title              | String   | A succinct description of the nature, symptoms, cause, or effect of the incident |
| incident\_number   | Integer  | The number of the incident. This is unique across your account                   |
| status             | String   | The current status of the incident                                               |

**Action Example**

* Drag and drop the PagerDuty Resolve Action node onto the Workflow Editor Canvas
* Select the Action node
* Provide the PagerDuty Incident ID
* Select the User
* Optionally, add a note

![](/files/GoSnFLcDf5ucLoKkbLRb)


# Pulumi

Use the Pulumi integration to execute Pulumi templates and connect the execution with other integrations that Fylamynt offers.

## Overview <a href="#overview" id="overview"></a>

Pulumi is a modern infrastructure as code platform. It leverages existing programming languages—TypeScript, JavaScript, Python, Go, and .NET—and their native ecosystem to interact with cloud resources through the Pulumi SDK.

Users run multiple types of code (e.g. Terraform templates, Ansible playbooks, Python scripts) to automate their tasks. We built this integration, specifically to support the execution of Pulumi Programs.

## Use Cases <a href="#use-cases" id="use-cases"></a>

The integration between Fylamynt and Pulumi lets you:

* Execute **"Pulumi Up"** for the specified project and stack. Create the set of resources specified in the project.
* Execute **"Pulumi Stack Output"** for the specified project and stack. The output is in JSON format and can be pulled from specified **log\_bucket** and **log\_key** for further processing.
* Execute **"Pulumi Destroy"** for the specified project and stack, and removes the provisioned resources.

## Configure Pulumi in Fylamynt

* Navigate to **Settings > Integrations > Pulumi**
* Configure a new integration instance

Details needed to provide **Pulumi** integration with **Fylamynt.** Either **Access Token** or **Backend** (with a **Passphrase** protecting the content) can be specified:

<table data-header-hidden><thead><tr><th>Parameter</th><th width="325.3333333333333">Description</th><th>Required</th></tr></thead><tbody><tr><td><strong>Parameter</strong></td><td><strong>Description</strong></td><td><strong>Required</strong></td></tr><tr><td>Access Token</td><td>Access Token obtained from Pulumi Web console</td><td>If Backend is not specified</td></tr><tr><td>Backend</td><td>An S3 bucket that will store Pulumi config and state. The target account(s) for Pulumi operations should have read/write access to this bucket.</td><td>If Access Token is not specified</td></tr><tr><td>Passphrase</td><td>The passphrase for accessing the Pulumi config.</td><td>If backend is specified</td></tr><tr><td>Organization</td><td>Organization under which Pulumi projects should be run.</td><td>Optional. If specified, all workflows share the organization.</td></tr></tbody></table>

### Creating an Access Token

* Click on the *Settings* tab after logging into the Pulumi web console

![](/files/-MeWmylwsuV1ZbXrM7J_)

* Click on the *Access Tokens* menu item

![](/files/-MeWoM6i5mrzjXDKJzCB)

* Click on *Create token.* Give it a name, and click on *Create token*

![](/files/-MeWoXjUSQW_g-5taWuk)

* Copy the generated *Access Token* into the corresponding entry box in *Pulumi Settings*

![](/files/-MeWojFPCa-B_AbRIqgT)

## Integration Actions <a href="#integration-actions" id="integration-actions"></a>

We only support Pulumi Python projects with an AWS provider. Before using any Pulumi integration action, a project needs to be defined, either in the GitHub Repos resource, or the S3 Buckets resource. All actions are configured in the same way:

1. **pulumi\_up** - runs pulumi up for the specified project and stack. Creates the set of resources specified in the project.
2. **pulumi\_stack\_output** - runs pulumi stack output for the specified project and stack. The output is in JSON format and can be pulled from specified log\_bucket and log\_key for further processing.
3. **pulumi\_destroy** - runs pulumi destroy for the specified project and stack, and removes the provisioned resources.

**Input**

| **Parameter Name** | **Description**                                                                                                          | **Required**                            |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------ | --------------------------------------- |
| alias              | Target account alias for running the Pulumi action. It needs to have access to the Backend S3 bucket                     | True                                    |
| log\_bucket        | An S3 bucket for writing logs from the Pulumi command execution. The target account needs to have access to this bucket. | True                                    |
| stack              | The Pulumi stack used for the action. Pulumi support running the same project against different stacks.                  | True                                    |
| git\_repo          | A GitHub Repos resource with a Pulumi Python project with an AWS provider.                                               | If git repo was picked in Select Input  |
| s3\_bucket         | A S3 Buckets resource with a Pulumi Python project with an AWS provider                                                  | If s3 bucket was picked in Select Input |

**Output**

| **Parameter Name** | **Type** | **Description**                                   |
| ------------------ | -------- | ------------------------------------------------- |
| task\_arn          | string   | The task **ARN** for the asynchronous Pulumi task |
| task\_status       | string   | The task status when the action returns.          |
| log\_bucket        | string   | log\_bucket from the **Input** parameters         |
| log\_key           | string   | name of system created log file                   |

**Action Example**

![](/files/-MaZv7htjUmY9_dJYxWH)


# Prometheus

Use this integration to monitor machine-centric as well as highly dynamic service-oriented architectures.

## Overview

Prometheus is designed for reliability, to be the system you go to during an outage to allow you to quickly diagnose problems. Each Prometheus server is standalone, not depending on network storage or other remote services. You can rely on it when other parts of your infrastructure are broken, and you do not need to setup extensive infrastructure to use it.

This integration covers the alert capability of Prometheus.

## Use Cases

The integration between Fylamynt and Prometheus lets you:

* Trigger a workflow in Fylamynt, when a Prometheus notification is sent by its Alertmanager.

## Configure Prometheus in Fylamynt

* Navigate to **Settings** > **Integrations** > **Prometheus**.
* Configure a new integration instance.

<table data-header-hidden><thead><tr><th>Parameter</th><th width="389.3333333333333">Description</th><th>Required</th></tr></thead><tbody><tr><td><strong>Parameter</strong></td><td>Description</td><td><strong>Required</strong></td></tr><tr><td>Webhook API Key Name</td><td>Fylamynt API Key Name for webhook authentication</td><td>True</td></tr></tbody></table>

Details needed to set up **Prometheus** in **Fylamynt**:

Create an API Key or use an existing API Key. See [API Keys](/resources/api-keys).

Follow these steps on your Prometheus Infrastructure and click on Authorize Fylamynt:

* Prometheus Alertmanager is required for this integration to route alerts from Prometheus to Fylamynt. Please install Prometheus Alertmanager if you don't have it installed already, login to your Prometheus Alertmanager Server.
* Open Alertmanager configuration file, in the receivers config section create a new webhook configuration for Fylamynt either under an existing receiver or as a new receiver.

```
receivers:
- name: 'fylamynt'
  webhook_configs:
  - send_resolved: true
    url: 'FYLAMYNT_WEBHOOK_URL?x-api-key=FYLAMYNT_API_KEY'
    max_alerts: 0
```

* In the above receiver configuration for `url` in `webhook_configs`, replace **FYLAMYNT\_WEBHOOK\_URL**

  with the **Webhook URL** value from the right-side panel. For **FYLAMYNT\_API\_KEY**, use the configured **Webhook API Key Value** from the right-side panel.
* Instructions to get Fylamynt **Webhook API Key value**
  * Under **Authorize Fylamynt**, choose one of the **Webhook API Key Name** from the dropdown, and the corresponding **Webhook API Key Value** should be shown. If no options are available for the **Webhook API Key Name**, first go to **Settings** --> **API Keys** --> **Manage Keys** to Create a new API Key.
* Save the Alertmanager configuration.
* Start the Alertmanager server or restart to load the updated configuration to take effect if it was already running.

## Integration Actions

You can add these actions in the Fylamynt workflow builder, as part of your workflow.

1. [Prometheus Alert Trigger](#prometheus-alert-trigger)

### Prometheus Alert Trigger

The integration node triggers the automatic execution of a workflow from a selected **Prometheus Alert**.

When creating a workflow, you are presented with a wizard to select the trigger type to use.

* On the workflow page, select **New Workflow**
* Enter the name of the Workflow.
* Select the **Prometheus** trigger type.
* Click **Create Workflow**
* ![](/files/fu1VuzRhfSZmZtOmTYip)

#### Configure the automatic execution of a workflow <a href="#fylamynt-task-management" id="fylamynt-task-management"></a>

To automatically run workflows with the Prometheus Alert trigger, the incident type and assignment need to be configured. Follow the step-by-step instructions provided on the[ Incident Management - Automatic workflow execution](https://docs.fylamynt.com/getting-started-1/7.-incident-management-automatic-workflow-execution) page.


# ServiceNow

Use the integration to streamline your incidents and respond to them automatically.

## Overview

The ServiceNow integration is intended for users who have ServiceNow set up as an IT Service Management/Ticket Management system.

A lot of IT teams or cloud teams use ServiceNow as a single pane of glass for their Incident Management.

With this integration, we have covered most of the incident-related functionalities.

## Use Cases

The integration between Fylamynt and ServiceNow lets you:

* Trigger a workflow in Fylamynt, Ingest incidents as a trigger to Fylamynt workflows. (Fetch ServiceNow incidents into Fylamynt)
* ServiceNow Create Incident - Create a new ServiceNow Incident
* ServiceNow Delete Incident - Delete a specific ServiceNow Incident
* ServiceNow Search Incidents - Get the incident list according to the supplied query
* ServiceNow Update Incident - Update a specific ServiceNow Incident

## Configure ServiceNow in Fylamynt

* Navigate to **Settings** > **Integrations** > **ServiceNow**
* Configure a new integration instance

Details needed to set up **ServiceNow instance** in **Fylamynt**:

<table data-header-hidden><thead><tr><th>Parameter</th><th width="360.3333333333333">Description</th><th>Required</th></tr></thead><tbody><tr><td>Parameter</td><td>Description</td><td>Required</td></tr><tr><td>ServiceNow Instance URL</td><td>ServiceNow instance URL</td><td>True</td></tr><tr><td>ServiceNow User Password</td><td>Password for authorized user on ServiceNow instance</td><td>True</td></tr><tr><td>ServiceNow Username</td><td>Username for authorized user on ServiceNow instance</td><td>True</td></tr><tr><td>Webhook API Key Name</td><td>The Fylamynt API key to use for incoming ServiceNow webhooks.</td><td>False</td></tr><tr><td>ServiceNow Webhook URL</td><td>Fylamynt Webhook URL to be used by ServiceNow</td><td>True</td></tr></tbody></table>

### Setting up ServiceNow integration

In order to integrate Fylamynt with ServiceNow, you first need to set up a role user on your ServiceNow instance.

* Log in to your ServiceNow instance with an admin account.
* Go to the users table and click "New".
* Fill out the User ID, Email, First Name, Last Name, and Password fields.
* Make sure "Active" is checked. Optionally, you can also check the "Web services access only" box.
* Make sure "Password needs reset" and "Locked out" are unchecked.
* Click "Submit".

On the Fylamynt side

* Create an API Key to use for ServiceNow webhooks.
  * On the Fylamynt Settings page, scroll to the bottom, and click "API Keys".
  * Click "Add New".
  * Enter a name for the API Key.
* Return to Settings / ServiceNow.
* Enter your ServiceNow instance's URL. For example: "<https://dev12345.service-now.com>".
* Enter the username and password for the ServiceNow user you created earlier in the right-hand sidebar.
* Select the API Key you created in Fylamynt from the dropdown list of API keys.
* Click "Authorize".

### Setting up Webhook Trigger Action for ServiceNow

1. In your ServiceNow instance navigate to Outbound->REST Message
2. Click "New"
3. Give the Outbound REST call a name and a short description.
4. Copy the "Webhook URL" from the Fylamynt ServiceNow configuration and paste it into the "endpoint" field.
5. Leave "Authentication" set to "No Authentication"
6. Click "Submit".
7. Find the REST Message you just created in the list and re-open it.
8. There will be an "HTTP Methods" section that wasn't there before. Click "New" next to "HTTP Methods".
9. Name it "POSTCall"
10. Select "POST" from the HTTP method dropdown.
11. In the "HTTP Request" tab, add the following to the headers:
    * x-api-key : copy the key value from the Fylamynt API Key you created above and paste in in the value.
    * accept : application/json
    * Content-Type : application/json
12. In the "Content" text box, paste the following JSON (this is just an example, you may add more fields from the incident table as needed)&#x20;

    ```
    	{
    		"sys_id":"${sys_id}",
    		"number":"${number}",
    		"short_description": "${short_description}",
    		"urgency": "${urgency}",
    		"description": "${description}",
    		"impact": "${impact}",
    		"state": "${state}",
    	   "instance_id":"${instance_id}"
    	}
    ```
13. Click "Submit".
14. Re-open the HTTP Method you just created.
15. In the "Related Links" list, click "Auto-generate variables"
16. Click "Update".
17. Navigate to "Business Rules".
18. Click "New"
19. For the new Business Rule, enter a name, select a table ('incident' is the default ServiceNow incident database table)
20. Check "Active" and "Advanced"
21. In the "Advanced" tab, enter the following JavaScript. (This is just an example. Feel free to edit this code to include/exclude whichever fields you require.)
    * Be sure to change 'YourOutboundRestCall' to the name you gave your outbound rest call above.
    * Also make sure the second argument to sn\_ws.RESTMessageV2() is the name of the HTTP Method you created above.&#x20;

      ```
      (function executeRule(current, previous /*null when async*/ ) {

          // Add your code here
          function jsonEncode(str) {
              str = new JSON().encode(str);
              return str.substring(1, str.length - 1);
          }

          try {
              var r = new sn_ws.RESTMessageV2('YourOutboundRestCall', 'POSTCall');
              r.setStringParameter("sys_id", current.sys_id);
              r.setStringParameter("number", current.number);
              r.setStringParameter("short_description", current.short_description);
              r.setStringParameter("urgency", current.urgency);
              r.setStringParameter("description", jsonEncode(current.description + ''));
              r.setStringParameter("impact", current.impact);
              r.setStringParameter("state", current.state);
              r.setStringParameter("instance_id", gs.getProperty("instance_name"));
      		
              var response = r.execute();
              var responseBody = response.getBody();
              var httpStatus = response.getStatusCode();
              gs.log("getBody: " + response.getBody());
              gs.log("getStatusCode: " + response.getStatusCode());
              gs.log("getHeaders " + response.getHeaders());
          } catch (ex) {
              var message = ex.message;
          }

      })(current, previous);
      ```
22. In the "When to run" tab, select "after" from the dropdown and check "insert".
23. You can add other conditions as you see fit.
24. Click "Submit"

Now when you create a new incident in the incident table, a call will be made to Fylamynt containing the JSON you provided in step 12 above, populated with the fields in the new incident.

To take action when this message is received, create a new Fylamynt workflow and add a ServiceNow\_Alert action to it.

## Integration Actions

Fylamynt supports the following ServiceNow actions in workflows:

1. [Create a new ServiceNow Incident](#create-servicenow-issue)
2. [Delete a ServiceNow Incident](#delete-a-servicenow-incident)
3. [Search a ServiceNow Incident](#search-servicenow-issues)
4. [ServiceNow Alert Trigger](#servicenow-alert-trigger)
5. [Update a ServiceNow Incident](#update-a-servicenow-incident)

### Create a new ServiceNow Incident <a href="#create-servicenow-issue" id="create-servicenow-issue"></a>

Creates a new incident in ServiceNow

#### **Input**

| Parameter Name     | Required |
| ------------------ | -------- |
| table              | True     |
| short\_description | True     |
| caller             | True     |
| urgency            | False    |
| severity           | False    |
| assigned\_to       | False    |
| caller\_id         | False    |
| category           | False    |
| description        | False    |
| due\_date          | False    |
| made\_sla          | False    |
| incident\_state    | False    |
| impact             | False    |
| number             | False    |
| priority           | False    |
| template           | False    |
| state              | False    |

**Output**

| Parameter name | Type   | Description                         |
| -------------- | ------ | ----------------------------------- |
| Result         | Object | JSON of the newly created incident. |

### Delete a ServiceNow Incident

Delete the specified incident.

**Input**

| Parameter Name | Description                      | Required |
| -------------- | -------------------------------- | -------- |
| table          | The ServiceNow table to update   | True     |
| sys\_id        | The ID of the incident to update | True     |

**Output**

* Delete doesn't return a result.

### Search a ServiceNow Incident <a href="#search-servicenow-issues" id="search-servicenow-issues"></a>

Return the results of a ServiceNow query. Because the results might be very large, you can provide the name of an S3 bucket to save the non-truncated results.

See:[ ![](https://docs.servicenow.com/favicon.ico)Operators available for filters and queries](https://docs.servicenow.com/bundle/istanbul-servicenow-platform/page/use/common-ui-elements/reference/r_OpAvailableFiltersQueries.html)

**Input**

| Parameter Name | Description                                    | Required |
| -------------- | ---------------------------------------------- | -------- |
| query          | Query formatted per ServiceNow query syntax.   | True     |
| table          | The ServiceNow table to run the query against. | True     |
| s3\_bucket     | S3 bucket to save the full result list.        | False    |

**Output**

| Parameter name        | Type        | Description                                                                                  |
| --------------------- | ----------- | -------------------------------------------------------------------------------------------- |
| result                | JSON object | The output of the query.                                                                     |
| is\_result\_truncated | Boolean     | If the result is too large (>\~100k) the results will be truncated to the first 5 incidents. |
| result\_bucket\_key   | String      | If an S3 bucket is specified, the path to the data.                                          |
| s3\_bucket            | String      | The bucket specified in the input.                                                           |

### ServiceNow Alert Trigger

The integration node triggers the automatic execution of a workflow from a selected **ServiceNow Category**.

When creating a workflow, you are presented with a wizard to select the trigger type to use.

* On the workflow page, select **New Workflow**
* Enter the name of the Workflow.
* Select the **ServiceNow** trigger type.
* Click **Create Workflow**
* ![](/files/c2OHpXJpQ4ZSc9VWPoAp)

#### Configure the automatic execution of a workflow <a href="#fylamynt-task-management" id="fylamynt-task-management"></a>

To automatically run the workflow with the ServiceNow Alert trigger, the incident type and assignment need to be configured. Follow the step-by-step instructions provided on the[ Incident Management - Automatic workflow execution](https://docs.fylamynt.com/getting-started-1/7.-incident-management-automatic-workflow-execution) page.

### Update a ServiceNow Incident

Given an incident to update, update the provided fields.

**Input**

| Parameter Name                           | Description                     | Required |
| ---------------------------------------- | ------------------------------- | -------- |
| table                                    | The ServiceNow table to update. | True     |
| sys\_id The ID of the incident to update | True                            |          |
| short\_description                       | String                          | False    |
| urgency                                  |                                 | False    |
| severity                                 |                                 | False    |
| assigned\_to                             |                                 | False    |
| caller\_id                               |                                 | False    |
| category                                 |                                 | False    |
| description                              |                                 | False    |
| due\_date                                |                                 | False    |
| made\_sla                                |                                 | False    |
| incident\_state                          |                                 | False    |
| number                                   |                                 | False    |
| priority                                 |                                 | False    |
| template                                 |                                 | False    |
| state                                    |                                 | False    |
| caller                                   |                                 | False    |

**Output**

| Parameter name | Type | Description |
| -------------- | ---- | ----------- |

| Parameter name | Type        | Description          |
| -------------- | ----------- | -------------------- |
| result         | JSON Object | The updated incident |

###

###


# Slack

Use the Slack integration to send messages and notifications to your Slack Team.

## Overview <a href="#overview" id="overview"></a>

One of the most common workflow integrations is the connection to user's communication suite. Slack is arguably the most popular communication tool.

This integration is a path forward for users who want to connect to their Slack workspace with the Fylamynt platform to interact with workflows, get execution statuses, approvals etc.

## Use Cases <a href="#use-cases" id="use-cases"></a>

The integration between Fylamynt and Slack lets you:

* Send notifications, message from Fylamynt workflows to Slack.
* Manage Fylamynt workflow approvals via direct messages to the Slack Team.

## Configure Slack in Fylamynt <a href="#configure-slack-in-fylamynt" id="configure-slack-in-fylamynt"></a>

* Navigate to **Settings** > **Integrations** > **Slack**.
* Configure a new integration instance.
* In **Slack Integration** page(Fylamynt), click “Add to Slack” button.
* You may be prompted to log into your Slack workspace. If not, verify that you are logged into the Slack workspace that you want to add Fylamynt to.
* Review the permissions required to install **Fylamynt** and click **"Allow"**.
* If installation is successful, you will be redirected back to the **Slack Integration** settings page of your Fylamynt instance.
* After installation, invite **"@Fylamynt"** Slack bot user to the Slack channel(s) where you would like to receive messages on.

## Interaction Actions

You can add these actions in the Fylamynt workflow builder, as part of your workflow.

1. [Approval](#approval)
2. [Slack Add Users](#slack-add-users)
3. [Slack Archive Channel](#slack-archive-channel)
4. [Slack Create New Channel](#slack-create-new-channel)
5. [Slack Send Message](#slack-send-message)

### Approval

Approve or Deny any request to continue the execution of a workflow.

**Input**

| **Parameter**      | **Description**                                                                                                             | **Required** |
| ------------------ | --------------------------------------------------------------------------------------------------------------------------- | ------------ |
| alias              | The target account for the run                                                                                              | True         |
| Slack Channel      | Select the Slack channel to notify for approval                                                                             | True         |
| Notes for Reviewer | This notes will be attached to the Slack message that request the approval. This message should give the user more context. | True         |
| Timeout Interval   | Specify an interval before timing out the request. The maximum timeout is 7 days.                                           | True         |

**Output**

| **Parameter**        | **Type** | **Description**                                                                                   |
| -------------------- | -------- | ------------------------------------------------------------------------------------------------- |
| alias                | String   | The target account for the run                                                                    |
| Execution Start Time | String   | A string representation of time when the execution started. i.e *Wed 12 May 2021 22:52:46.441000* |
| Message Channel ID   | String   | The ID of the Slack channel where the message was sent.                                           |
| Message Timestamp    | String   | Timestamp of the Slack message that was sent for approval.                                        |
| Workflow Name        | String   | Name of the workflow associated with the execution.                                               |

**Action Example**

![](/files/-MaaxW_Et3k2jmrRkrGK)

![](/files/-MaaxZN_5pAuCo0qXEJa)

![](/files/-MaaxalPmEunwi24yMKm)

### Slack Add Users

Add users to a previously created Slack channel.

**Input**

| Parameter    | Description                                               | Required |
| ------------ | --------------------------------------------------------- | -------- |
| Channel Name | The name of the channel to add the users.                 | True     |
| Users        | Dropdown list of Slack users to add to the above channel. | True     |

**Output**

| Parameter | Type   | Description                                                  |
| --------- | ------ | ------------------------------------------------------------ |
| message   | String | List of the Slack User IDs of the users added to the channel |

**Action Example**

![](/files/VnsH9mBBlzkPfu6xZVkr)

![](/files/s2U6llXLnL7fdut3ZzDx)

### Slack Archive Channel

Archives a specified Slack channel. Archived channels can still be searched, but are closed to any new activity.

**Input**

| Parameter    | Description                         | Required |
| ------------ | ----------------------------------- | -------- |
| Channel Name | The name of the channel to archive. | True     |

**Output**

| Parameter | Type   | Description                    |
| --------- | ------ | ------------------------------ |
| message   | String | Status of the archive command. |

**Action Example**

![](/files/Tfhg3B2ImBbGpWTuo9aR)

![](/files/l2V5r9MaTdiO4DRMYEba)

### Slack Create New Channel

Create a new slack channel. *Note*:The Fylamynt Slack bot user will be automatically added to any channel created using this action, public or private. This allows the other Slack actions to see the channel.

**Input**

| Parameter    | Description                  | Required |
| ------------ | ---------------------------- | -------- |
| Channel Name | The name for the new channel | True     |
| Private      | Make the new channel private | False    |

**Output**

| Parameter    | Type   | Description                                                                                                                                                                                                                                               |
| ------------ | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| channel      | Object | <p>The output of the Slack <a href="https://api.slack.com/methods/conversations.create">conversations.create</a> api call.<br>Channel names may only contain lowercase letters, numbers, hyphens, and underscores, and must be 80 characters or less.</p> |
| channel\_url | String | A URL for the newly created channel                                                                                                                                                                                                                       |

**Action Example**

![](/files/28e3HIas1arlVv1yRvgu)

![](/files/J4eXVetXLFPjvtb0u3f8)

![](/files/ZQxa8mG40y8O0wH7WCnM)

### Slack Send Message

Send Slack messages to a given channel.

**Input**

<table data-header-hidden><thead><tr><th>Parameter</th><th width="399.3333333333333">Description</th><th>Required</th></tr></thead><tbody><tr><td><strong>Parameter</strong></td><td><strong>Description</strong></td><td><strong>Required</strong></td></tr><tr><td>Slack Channel</td><td>Name of the Slack channel where we need to send the Slack message</td><td>True</td></tr><tr><td>Message Text</td><td>The message to be sent to the channel.</td><td>True</td></tr></tbody></table>

**Output**

There is no output of this action.

**Action Example**

![](/files/-MaaxS6dPuF54ZAxvlDP)

![](/files/-MaaxUBb61aXNkAgrr12)


# Splunk

Use the Splunk integration to search and retrieve data needed for incident enrichment.

## Overview <a href="#overview" id="overview"></a>

Integrate Splunk Cloud in your workflows. This integration will help you find a way to automatically retrieve data and enable Splunk in your automation workflows.

## Use Cases <a href="#use-cases" id="use-cases"></a>

The integration between Fylamynt and Splunk lets you:

* Ability to retrieve data from Splunk based on a query described in SPL.
* Connect the data to other workflow steps involving third-party integrations.

## Configure Splunk in Fylamynt

* Navigate to **Settings** > **Integrations** > **Splunk**
* Configure a new integration instance

Details needed to set up **Splunk instance** in **Fylamynt**:

<table data-header-hidden><thead><tr><th>Parameter</th><th width="376.3333333333333">Description</th><th>Required</th></tr></thead><tbody><tr><td><strong>Parameter</strong></td><td><strong>Description</strong></td><td><strong>Required</strong></td></tr><tr><td>Access Token</td><td>Token used to access the Splunk instance</td><td>True</td></tr><tr><td>Splunk URL</td><td>URL of the Splunk instance</td><td>True</td></tr></tbody></table>

Follow the steps below to integrate your **Splunk** instance with **Fylamynt**:

1. Enter the URL to your Splunk Cloud instance in **Splunk URL** field in Fylamynt. This should be in the format ***\<yoursubdomain>.splunkcloud.com***. Please do not add ***https\://*** or ***http\://*** at the beginning.
2. Generate an access token by following the instruction in [https://docs.splunk.com/Documentation/SplunkCloud/8.1.2012/Security/CreateAuthTokens.](https://docs.splunk.com/Documentation/SplunkCloud/8.1.2012/Security/CreateAuthTokens) Enter the access token in **Access Token** field.
3. Click **Authorize** button to complete integration.

## Integration Actions

You can add these actions in the Fylamynt workflow builder, as part of your workflow.

1. [Splunk Search](#splunk-search)

### **Splunk Search**

**Input**

| **Parameter** | **Description**                                                    | **Required** |
| ------------- | ------------------------------------------------------------------ | ------------ |
| alias         | The target account for the run                                     | True         |
| query         | Splunk query string to be executed during the run                  | True         |
| s3\_bucket    | Name of the S3 bucket where the entire query result can be written | False        |

**Output**

| **Parameter**         | **Type** | **Description**                                                                                                                                                                         |
| --------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| result                | String   | String representation of a JSON payload consisting of the query result.                                                                                                                 |
| is\_result\_truncated | Boolean  | indicates whether the result is truncated or not. The “result” can have size up to 100kb. The entire result can be written to a S3 bucket provided by the input parameter “s3\_bucket”. |
| s3\_bucket            | String   | Name of the S3 bucket where the result was written.                                                                                                                                     |
| result\_bucket\_key   | String   | The S3 bucket key where the result was written.                                                                                                                                         |

**Action Example**

* Drag and drop the Splunk Search Action node onto the Workflow Editor Canvas
* Select the Action node
* Enter the Query
* Optionally, select the AWS Target Account Alias and S3 bucket name for query output destination

![](/files/thJdHHap8K2kb7Xxjjab)


# Splunk On-Call (VictorOps)

Use the Splunk On-Call integration to triage alerts and remediate them automatically.

## Overview <a href="#overview" id="overview"></a>

This integration is intended for customers who have Splunk On-Call set up as the primary alerting and on-call management system.

## Use Cases <a href="#use-cases" id="use-cases"></a>

The integration between Fylamynt and Splunk On-Call lets you:

* Reroute a list of Splunk On-Call incidents.
* Resolve a list of Splunk On-Call incidents.
* Trigger a workflow in Fylamynt, when a specific Splunk On-Call Incident goes into the state of ALERT.&#x20;

## Configure Splunk On-Call in Fylamynt

* Navigate to **Settings** > **Integrations** > Splunk On-Call (VictorOps)
* Configure a new integration instance

Details needed to set up **Splunk On-Call** (VictorOps) instance in **Fylamynt**:

<table data-header-hidden><thead><tr><th>Parameter</th><th width="396.0808858931151">Description</th><th width="292.3333333333333">Required</th></tr></thead><tbody><tr><td><strong>Parameter</strong></td><td>Description</td><td><strong>Required</strong></td></tr><tr><td>API ID</td><td>API ID obtained from Splunk On-Call (VictorOps)</td><td>True</td></tr><tr><td>API Key</td><td>API Key obtained from Splunk On-Call (VictorOps)</td><td>True</td></tr><tr><td>Webhook API Key Name </td><td>Fylamynt API Key name</td><td>True</td></tr><tr><td>Splunk On-Call Webhook URL</td><td>Fylamynt Webhook URL to be used by Splunk On-Call (VictorOps) service</td><td></td></tr></tbody></table>

Webhook is used to fetch alerts from Splunk On-Call (VictorOps) in real-time. You can also Enable / Disable Splunk On-Call (VictorOps) Webhook.

Follow the steps listed below in your Splunk On-Call (VictorOps) Account and get the desired parameters to enter in Fylamynt.

1. In your Splunk On-Call Account, go to "Integrations "-->" API"

![](/files/-MaZh-hS6Eme8t6D3pjw)

* "Activate API" if API Access if OFF, else copy the available API ID and API Key.
* Add the API ID and API Key details to the "Authorize Fylamynt" panel.

&#x20;2\. Now setup Splunk On-Call to Fylamynt Outgoing Webook from"Integrations" --> "Outgoing Webhook"![](blob:https://fylamynt.atlassian.net/d244e92e-566e-4d5d-8aa7-d8a37bc50994#media-blob-url=true\&id=3c65465e-be6c-4b36-85c0-9c6105676223\&collection=contentId-534511747\&contextId=534511747\&mimeType=image%2Fpng\&name=image-20210521-155614.png\&size=29718\&width=893\&height=309)

![](/files/-MaZh54M_CvrTnAMW1ZB)

"Add Webhook" with below details:\
**-- Event:**\
Select "Incident-Triggered" from dropdown\
**-- Method**: POST\
**-- Content Type:** application/json\
**-- Custom Headers:**\
Key: x-api-key\
Value: add "Webhook API Key Value" from right side panel\
**--To:**\
Copy webhook URL from "Webhook URL" in right side panel\
**--Payload:**\
Copy below to **Payload** section

```
{
  "INCIDENT.INCIDENT_ID": "${{INCIDENT.INCIDENT_ID}}",
  "INCIDENT.INCIDENT_NAME": "${{INCIDENT.INCIDENT_NAME}}",
  "INCIDENT.CURRENT_PHASE": "${{INCIDENT.CURRENT_PHASE}}",
  "INCIDENT.ENTITY_TYPE": "${{INCIDENT.ENTITY_TYPE}}",
  "INCIDENT.SERVICE": "${{INCIDENT.SERVICE}}",
  "INCIDENT.ENTITY_STATE": "${{INCIDENT.ENTITY_STATE}}",
  "INCIDENT.POLICIES_PAGED.0.POLICY.NAME": "${{INCIDENT.POLICIES_PAGED.0.POLICY.NAME}}",
  "INCIDENT.POLICIES_PAGED.0.TEAM.NAME": "${{INCIDENT.POLICIES_PAGED.0.TEAM.NAME}}",
  "INCIDENT.MONITOR_TYPE": "${{INCIDENT.MONITOR_TYPE}}",
  "INCIDENT.MONITOR_NAME": "${{INCIDENT.MONITOR_NAME}}"
}
```

Instructions to get Fylamynt **"Webhook API Key value":**\
Under Authorize Fylamynt, choose one of the **Webhook API Key Name** from the dropdown, and the corresponding **Webhook API Key Value** should be shown. If no options are available for the **Webhook API Key Name**, first go to **Settings** --> API Keys --> **Manage Keys** to Create a New API Key

## Integration Actions <a href="#integration-actions" id="integration-actions"></a>

You can add these actions in the Fylamynt workflow builder, as part of your workflow.

1. [Splunk On-Call Alert Trigger](#splunk-on-call-alert-trigger)
2. [Splunk On-Call Reroute Incident](#splunk-on-call-reroute-incidents)
3. [Splunk On-Call Resolve Incident](#splunk-on-call-resolve-incidents)

### **Splunk On-Call Alert Trigger**

The integration node triggers the automatic execution of a workflow from a combined selection of a **Splunk On-Call Team** and **Escalation Policy.**

When creating a workflow, you are presented with a wizard to select the trigger type to use.

* On the workflow page, select **New Workflow**
* Enter the name of the Workflow.
* Select the **Splunk On-Call** trigger type.
* Click **Create Workflow**
* ![](/files/Jgcp1xFyQ30BT5n48wu7)

#### Configure the automatic execution of a workflow <a href="#fylamynt-task-management" id="fylamynt-task-management"></a>

To automatically run workflows with the Splunk On-Call Alert trigger, the incident type and assignment need to be configured. Follow the step-by-step instructions provided on the[ Incident Management - Automatic workflow execution](https://docs.fylamynt.com/getting-started-1/7.-incident-management-automatic-workflow-execution) page.

### **Splunk On-Call Reroute Incidents**

Integration node to re-route selected Splunk On-Call incidents

**Input**

| **Parameter Name** | **Description**                                             | **Required** |
| ------------------ | ----------------------------------------------------------- | ------------ |
| Select Username    | Select Username to re-route incidents                       | True         |
| incident\_numbers  | Select one or more incidents to re-route                    | True         |
| target\_users      | Select one or more users to re-route incident               | False \*     |
| target\_policies   | Select one or more escalation policies to re-route incident | False \*     |

\*target\_policies and/or target\_policies have to be selected as mandatory for Reroute incidents action.

**Output**

| **Parameter Name** | **Type** | **Description**                                    |
| ------------------ | -------- | -------------------------------------------------- |
| execution\_message | Object   | JSON of Splunk On-Call re-route incident execution |
| execution\_status  | String   | Status of node execution                           |

**Action Example**

* Drag and drop the Splunk On-call Reroute Action node onto the Workflow Editor Canvas&#x20;
* Select the Action node&#x20;
* Add the Incident Numbers
* Select the Username
* Select either or both of the following:
  * Select one or more target users to re-route the Splunk On-Call incident
  * Select one or more escalation policies to re-route the Splunk On-Call incident

![](/files/zdlGa7wCx8SuqrYe4MKx)

### **Splunk On-Call Resolve Incidents**

Integration node to resolve selected Splunk On-Call incidents

**Input**

| **Parameter Name** | **Description**                         | **Required** |
| ------------------ | --------------------------------------- | ------------ |
| Username           | Select Username to resolve incidents    | True         |
| incident\_numbers  | Select one or more incidents to resolve | True         |

**Output**

| **Parameter Name** | **Type** | **Description**                                   |
| ------------------ | -------- | ------------------------------------------------- |
| execution\_message | Object   | JSON of Splunk On-Call resolve incident execution |
| execution\_status  | String   | Status of node execution                          |

**Action Example**

* Drag and drop the Splunk On-call Resolve Action node onto the Workflow Editor Canvas&#x20;
* Select the Action node&#x20;
* Add the Incident Numbers
* Select the Username

![](/files/KI7uNefRCtfqPlq3N4fz)

## &#x20;<a href="#integration-actions" id="integration-actions"></a>


# Spot by Netapp

Use the Spot integration to automate infrastructure for autoscaling applications.

## Overview <a href="#overview" id="overview"></a>

Spot by NetApp automates and optimizes your cloud infrastructure in AWS, Azure, and Google Cloud to deliver SLA-backed availability and performance at the lowest possible cost.

Fylamynt supports both Elastigroup and Spot Ocean actions:

* Spot Elastigroup simplifies and automates cloud infrastructure for scale-out applications running in AWS, Azure, and GCP, freeing operations teams from the burdens of infrastructure management. Elastigroup continuously analyzes your resource usage and provides autoscaling groups that optimize compute resources to ensure availability and meet resource demands using the lowest-cost compute options.
* Spot Ocean automates cloud infrastructure for containers. It continuously analyzes how your containers are using infrastructure, automatically scaling compute resources to maximize utilization and availability, and utilizing the optimal blend of spot, reserved, and on-demand compute instances.

## Use Cases <a href="#use-cases" id="use-cases"></a>

The integration between Fylamynt and Spot lets you:

1. Scale up the Elastrigroup cluster by adding instances to your cluster.
2. Scale down the Elastrigroup cluster by removing instances from your cluster.
3. Update auto-headroom percentage for an Ocean cluster.

## Configure Spot by Netapp in Fylamynt

* Navigate to **Settings** > **Integrations** > **Spot by NetApp**
* Configure a new integration instance

**Instruction to setup Spot by NetApp integration**

Follow the steps listed below in your **Spot by NetApp Account** and get the desired parameters to enter in **Fylamynt**.

* Login to your Spot by NetApp account
* Click the user profile
* ![](/files/SE32NPL3nZFtg9OwU1qD)
* Select **My Organization**
* Select **Accounts**&#x20;
* ![](/files/lcdLAQ8K1kvvB93NqpXM)
* Copy the **Spot Account ID and** paste it into the **Spot Account ID** field on the Authorize Fylamynt card on the integration settings page.
* Select the **API** tab
* ![](/files/ThxNMzHS4ylnEpE2Mtci)
* Click **GENERATE TOKEN** or use an existing token
  * Enter a Token name
  * Click **GENERATE**
  * ![](/files/Ei5ui8JX5pAqvUZb3oUG)
* Copy the **Token** and paste it into the **Spot API Token** field on the Authorize Fylamynt card on the integration settings page.
* Click Authorize

## Integration Actions <a href="#integration-actions" id="integration-actions"></a>

You can add the following actions in the Fylamynt workflow builder, as part of your workflow.

1. [Elastigroup AWS Scale Up](#elastigroup-aws-scale-up)
2. [Elastigroup AWS Scale Down](#elastigroup-aws-scale-down)
3. [Ocean AWS Update AutoHeadroom](#ocean-aws-update-autoheadroom)

### Elastigroup AWS Scale Up

Fylamynt action to add instances to your Elastigroup AWS

**Input**

| **Parameter Name**    | **Description**                                   | **Required** |
| --------------------- | ------------------------------------------------- | ------------ |
| Spot Elastigroup Name | Spot Elastigroup you want to Scale Up             | True         |
| Adjustment            | The number of instances to add to the Elastigroup | True         |

**Output**

| **Parameter Name** | **Type**   | **Description**                        |
| ------------------ | ---------- | -------------------------------------- |
| new\_instance\_ids | StringList | Instance Ids added to Spot Elastigroup |

**Action Example**

* Select **Spot Elastigroup Name** and **Adjustment** value

![](/files/fDBOcGCqV9nJKajsDIFz)

### **Elastigroup AWS Scale Down**

Fylamynt action to remove instances from your Elastigroup AWS

**Input**

| **Parameter Name**    | **Description**                                        | **Required** |
| --------------------- | ------------------------------------------------------ | ------------ |
| Spot Elastigroup Name | Spot Elastigroup you want to Scale Down                | True         |
| Adjustment            | The number of instances to remove from the Elastigroup | True         |

**Output**

| **Parameter Name**     | **Type**   | **Description**                            |
| ---------------------- | ---------- | ------------------------------------------ |
| removed\_instance\_ids | StringList | Instance Ids removed from Spot Elastigroup |

**Action Example**

* Select **Spot Elastigroup Name** and **Adjustment** value

![](/files/B6JmVUDNmptjqLkzZRIU)

### **Ocean AWS Update AutoHeadroom**

Fylamynt action to update overall Ocean AWS cluster capacity percent, provide values from 0-50

**Input**

| **Parameter Name**       | **Description**                                          | **Required** |
| ------------------------ | -------------------------------------------------------- | ------------ |
| Spot Ocean Cluster Name  | Spot Ocean Cluster name you want to adjust auto headroom | True         |
| Auto Headroom Percentage | Provide values from 0-50                                 | True         |

**Output**

| **Parameter Name**         | **Type** | **Description**                           |
| -------------------------- | -------- | ----------------------------------------- |
| updated\_time              | String   | Time of updated auto headroom percentage  |
| ocean\_cluster\_name       | String   | Spot Ocean Cluster name                   |
| auto\_headroom\_percentage | Integer  | Value of updated auto headroom percentage |

**Action Example**

* Select **Spot Ocean Cluster Name** and **Auto Headroom Percentage** value

![](/files/jW14ZcCrd1FhG30I4C59)


# Squadcast

Use the integration to enhance incident management process with automated incident response.

## Overview <a href="#overview" id="overview"></a>

Squadcast is an incident management platform built on DevOps & SRE best practices to help you adopt the same to simplify incident management, get meaningful notifications, and enable faster incident resolution in collaboration.

## Use Cases <a href="#use-cases" id="use-cases"></a>

The integration between Fylamynt and Squadcast lets you:

* Trigger Fylamynt workflow on a Squadcast incident
* Acknowledge a Squadcast incident
* Resolve a Squadcast incident

## Configure Squadcast in Fylamynt

* Navigate to **Settings** > **Integrations** > **Squadcast**
* Configure a new integration instance

Details needed to set up **Squadcast instance** in **Fylamynt**:

| **Parameter**          | **Description**                                      |
| ---------------------- | ---------------------------------------------------- |
| Squadcast API Token    | API Token obtained from Squadcast                    |
| Fylamynt API Key name  | Fylamynt API Key name                                |
| Fylamynt API Key value | Fylamynt API Key value                               |
| Fylamynt Webhook URL   | Fylamynt Webhook URL to be used by Squadcast service |

**Instructions to setup Squadcast Integration**

* Login to your Squadcast account.&#x20;
* Navigate to your **profile** settings and copy the **API Refresh Token**
* Paste the copied **API Refresh Token** to the **Squadcast API Token** field in the Authorize Fylamynt card on the Squadcast Integration settings page.
* Configure the Fylamynt webhook in Squadcast&#x20;
  * Navigate to Settings -> Webhooks
  * Click **+** to add a new webhook
  * Enter the webhook name
  * Click Create
* Complete the webhook configuration&#x20;
  * *URL:*&#x20;
  * Select **POST** Method
  * Copy the **Squadcast Webhook URL** from the Authorize Fylamynt card and paste it into the **URL** field next to POST.&#x20;
  * *Additional headers:*&#x20;
  * Enter **x-api-key** as the **header key**
  * From the Authorize Fylamynt card, choose one of the Webhook API Key Name from the dropdown, and the corresponding Webhook API Key Value should be shown
    * If no options are available for the Webhook API Key Name, first go to **Settings --> Resources -> API Keys** to create a New API Key
  * Copy the **Webhook API Key Value** and paste it into the **header value** field
  * *Filters :*
  * **Do not** configure or add any Filters to this webhook
  * Click **Update**

## Integration Actions

You can add the following actions in the Fylamynt workflow builder, as part of your workflow.

1. [Squadcast Acknowledge Incident](#squadcast-acknowledge-incident)
2. [Squadcast Alert Trigger](#squadcast-alert-trigger)
3. [Squadcast Resolve Incident](#squadcast-resolve-incident)

### **Squadcast Acknowledge Incident**

Acknowledge a Squadcast incident

**Input**

| **Parameter Name**    | **Description**                                | **Required** |
| --------------------- | ---------------------------------------------- | ------------ |
| Squadcast Incident Id | The ‘id’ of Squadcast incident to acknowledge. | True         |

**Output**

| **Parameter Name** | **Type** | **Description** |
| ------------------ | -------- | --------------- |

| **Parameter Name** | **Type** | **Description**                                           |
| ------------------ | -------- | --------------------------------------------------------- |
| incident\_id       | String   | The ‘id’ of Squadcast incident successfully acknowledged. |

**Action Example**

![](/files/lIxPztq4Sn6FoxocJ1Vo)

### **Squadcast Alert Trigger**

The integration node triggers the automatic execution of a workflow from a selected **Squadcast Service**. &#x20;

When creating a workflow, you are presented with a wizard to select the trigger type to use.

* On the workflow page, select **New Workflow**
* Enter the name of the Workflow.
* Select the **Squadcast** trigger type.
* Click **Create Workflow**
* ![](/files/At3L4e5BtTltyTRqURgt)

#### Configure the automatic execution of a workflow <a href="#fylamynt-task-management" id="fylamynt-task-management"></a>

To automatically run workflows with the Squadcast alert trigger, the incident type and assignment need to be configured. Follow the step-by-step instructions provided on the[ Incident Management - Automatic workflow execution](https://docs.fylamynt.com/getting-started-1/7.-incident-management-automatic-workflow-execution) page.

### **Squadcast Resolve Incident**

Resolve a Squadcast incident

**Input**

| **Parameter Name**    | **Description**                            | **Required** |
| --------------------- | ------------------------------------------ | ------------ |
| Squadcast Incident Id | The ‘id’ of Squadcast incident to resolve. | True         |

**Output**

| **Parameter Name** | **Type** | **Description**                                       |
| ------------------ | -------- | ----------------------------------------------------- |
| incident\_id       | String   | The ‘id’ of Squadcast incident successfully resolved. |

**Action Example**

![](/files/xlzDcxJWfNm1f3yjKMaM)


# Sumo Logic

Use the integration to search and retrieve data from Sumo Logic in Fylamynt.

## Overview <a href="#overview" id="overview"></a>

This integration is built for users who would like to interact with the data from Sumo Logic in their automation workflows.

## Use Cases <a href="#use-cases" id="use-cases"></a>

The integration between Fylamynt and Sumo Logic lets you:

* Retrieve data from Sumo Logic based on a query described in Sumo Logic [query syntax](https://help.sumologic.com/05Search/Search-Query-Language).

## Configure Sumo Logic in Fylamynt

* Navigate to **Settings** > **Integrations** > **Sumo Logic**
* Configure a new integration instance

![](/files/mpAITJhXBR3j0Is4dALg)

Details needed to set up **Sumo Logic instance** in **Fylamynt**:

<table data-header-hidden><thead><tr><th>Parameters</th><th width="380.3333333333333">Description</th><th>Required</th></tr></thead><tbody><tr><td><strong>Parameters</strong></td><td><strong>Description</strong></td><td><strong>Required</strong></td></tr><tr><td>Sumo Logic Access Id</td><td>Unique access_id to access your Sumo Logic account</td><td>True</td></tr><tr><td>Sumo Logic Access Key</td><td>API key for authorization</td><td>True</td></tr></tbody></table>

Follow the steps listed below in your **Sumo Logic Account** and get the desired parameters to enter in **Fylamynt**

* Login to your **Sumo Logic Account**
* Click on your **Name** (left side bottom)
  * ![](/files/ZbGoiYimmOMbKVNs8iSq)
* Click Administration -> Security
  * ![](/files/6yRYYn1q23iONEQUeWzm)
* Click on **Add Access Key**
  * ![](/files/96m11eIqetkiJmzQ7A62)
* Enter the Access Key name
* Click Save
* ![](/files/ehzgLdQEmqYJocqYPF9F)
* Copy the **Access ID** and paste it into the Sumo Logic Access ID field on the Authorize Fylamynt card
* Copy the **Access Key** and paste it into the Sumo Logic Access Key field on the Authorize Fylamynt card
* Click Authorize

## Integration Actions <a href="#integration-actions" id="integration-actions"></a>

You can add these actions in the Fylamynt workflow builder, as part of your workflow.

1. [SumoLogic Search](#sumologic-search)

### SumoLogic Search <a href="#sumologic-search" id="sumologic-search"></a>

Integration node to run Sumo Logic Search

**Input**

| **Parameter Name** | **Description**                          | **Required** |
| ------------------ | ---------------------------------------- | ------------ |
| alias              | AWS assume role alias                    | True         |
| from\_time         | Start Time to query from                 | True         |
| to\_time           | End Time to query to                     | True         |
| query              | Query to run                             | True         |
| s3\_bucket         | S3 bucket name to store query and result | False        |

**Output**

| **Parameter Name**    | **Type** | **Description**                                               |
| --------------------- | -------- | ------------------------------------------------------------- |
| execution\_status     | String   | Status of run (ie: S\_OK / E\_FAIL)                           |
| result                | String   | Query result                                                  |
| is\_result\_truncated | Boolean  | Boolean value which denotes if the result is truncated or not |
| result\_bucket\_key   | String   | Name of the file where result is written                      |
| s3\_bucket            | String   | Name of the bucket                                            |

**Note:**

* AWS SSM automation has a restriction on the size of the response object (\~100 KB), so if a query has a result greater than this value then truncated result would be returned and if **S3 Bucket Name** is provided then the whole result would be written to the bucket.

**Action Example**

* Drag and drop the Sumo Logic Search Action node onto the Workflow Editor Canvas
* Select the Action node&#x20;
* Enter the Query
* Set the From time
* Set the To time
* Optionally, select the AWS Target Account Alias and S3 bucket name for the query output.

![](/files/vvGu7bTNITUQE6Gd64Sk)


# Teleport

Use the Teleport integration to securely authenticate and access your SSH servers for automation.

## Overview

Teleport is a Certificate Authority and an Access Plane for your infrastructure. With Teleport you can:

* Set up Single Sign-On and have one place to access your SSH servers, Kubernetes, Databases, and Web Apps.

With this integration you could access your SSH servers remotely by authenticating first into Teleport and then running SSH command with workflow automation.

## Configure Teleport in Fylamynt

* Navigate to **Settings** > **Integrations** > **Teleport**
* Configure a new integration instance

Details needed to set up **Teleport** in **Fylamynt**:

<table data-header-hidden><thead><tr><th>Parameter</th><th width="386.3333333333333">Description</th><th>Required</th></tr></thead><tbody><tr><td><strong>Parameter</strong></td><td>Description</td><td><strong>Required</strong></td></tr><tr><td>Proxy Hostname</td><td>Hostname proxy to access the Teleport server from outside</td><td>True</td></tr><tr><td>User Certificate</td><td>User certificate to grant access to Teleport server with role-based access control</td><td>True</td></tr></tbody></table>

Follow the steps listed below in your **Teleport Account** to complete the configuration in **Fylamynt:**

* [ ] As you can see in the Fylamynt configuration panel, you need to enter Proxy Hostname, User Certificate and Username for Teleport authentication.
* [ ] Enter the 'Proxy Hostname' and 'Username' that was created while setting up the Teleport server.

To generate user certificate please look at the following details:

1. Create a file called 'fylamyntbot.yaml' on your local machine and copy & paste this into it:

   ```
    kind: role
    version: v3
    metadata:
      name: fylamyntbot
    spec:
      # SSH options used for user sessions 
      options:
        # max_session_ttl defines the TTL (time to live) of SSH certificates 
        # issued to the users with this role.
        max_session_ttl: 1200h

      # allow section declares a list of resource/verb combinations that are
      # allowed for the users of this role. by default nothing is allowed.
      allow:
        logins:
          - root
          - ubuntu
          - ec2-user
        node_labels:
          '*': '*'
    ---
    kind: user
    version: v2
    metadata:
      name: fylamyntbot
    spec:
      roles: ['fylamyntbot']
   ```

   * Download and edit fylamyntbot.yaml to your local machine.
   * You likely want to change the 'login' and 'allow' sections of the role to match your environment.
   * You can also change the name to whatever you want.
   * If you want to use an existing Teleport user, skip to step 4.
   * See the Teleport Resources Reference for more detailed information.

2. Upload your fylamntbot.yaml to your Teleport proxy/auth server:

   ```
    $ tsh scp --login=root fylamyntbot.yaml youruser@yourteleportproxy.example.com:/home/youruser/resources                                                             
    fylamyntbot.yaml (584)
   ```

3. Create a new role & user (on your Teleport auth host):

   ```
    $ tctl create -f fylamyntbot.yaml
    role 'fylamyntbot' has been created
    user "fylamyntbot" has been created
   ```

4. Generate a new .pem certificate file for the fylamyntbot user. (on your Teleport auth host):

   ```
    $ tctl --auth-server=ec2-52-26-37-93.us-west-2.compute.amazonaws.com:3025 auth sign --user=fylamyntbot --format=file --out=fylamyntbot.pem --overwrite --ttl=1000h

    The credentials have been written to fylamyntbot.pem
   ```

5. Download the pem file lo your local machine:

   ```
    $ tsh scp --login=youruser youruser@yourteleportproxy.example.com:/home/youruser/resources/fylamyntbot.pem .   
    fylamyntbot.pem (7142)
   ```

6. Open the pem file in an editor, select all, and copy the text.

7. Paste the text into the "User Certificate" field in the Fylamynt integration panel.

8. Click "Authorize" to complete the setup.


# Terraform Cloud

Use the Terraform Cloud integration to reach the desired state of the configuration with automation.

## Overview <a href="#overview" id="overview"></a>

Terraform is an open-source infrastructure as code software tool that provides a consistent CLI workflow to manage hundreds of cloud services. Terraform codifies cloud APIs into declarative configuration files.

This integration will help automate, manage and orchestrate your cloud infrastructure processes with the help of easy-to-create workflows.

## Use Cases <a href="#use-cases" id="use-cases"></a>

The integration between Fylamynt and Terraform Cloud lets you:

* Plan a terraform module.
* Apply a Terraform plan created in a workspace.
* Discard a Terraform plan in a workspace if it has not been applied. Unlocks the workspace.
* Show the output in a Workspace.
* Modify Variables in a Workspace

## Configure Terraform Cloud in Fylamynt

* Navigate to **Settings > Integrations > Terraform**
* Configure a new integration instance

Details needed to set up **Terraform Cloud instance** in **Fylamynt**:

<table data-header-hidden><thead><tr><th>Parameter Name</th><th width="378.3333333333333">Description</th><th>Required</th></tr></thead><tbody><tr><td><strong>Parameter Name</strong></td><td><strong>Description</strong></td><td><strong>Required</strong></td></tr><tr><td>Organization</td><td>The Terraform Cloud organization to be used for actions.</td><td>True</td></tr><tr><td>Token</td><td>A Terraform Cloud API token for a user in this Organization</td><td>True</td></tr></tbody></table>

Follow the steps listed below in your **Terraform Cloud** account and get the desired parameters to enter in **Fylamynt**.

* In a separate browser window or tab, Sign into Terraform Cloud
* Click on **User Settings**

![](/files/-MaapVBEfQlsyFKL-Ptc)

* Click on **Organizations**

<div align="left"><img src="/files/-MaapYIv8PrThDuJMymc" alt=""></div>

* Copy the organization name into the **Organization** text field in the Fylamynt UI.
* In the **Terraform** session, click on **Tokens**

![](/files/-MaapdSaZIf7oT9j137K)

* Click on **Create an API token**
* Add a **Description**

![](/files/-Maapg0VnL1Co4S5WaDv)

* Click on **Create API token**
* Copy the new token into the **Token** text field in the Fylamynt UI

## Integration Actions

1. [Terraform Apply](#terraform-apply)
2. [Terraform Discard](#terraform-discard)
3. [Terraform Plan](#terraform-plan)
4. [Terraform Show](#terraform-show)
5. [Terraform Update Vars](#terraform-update-vars)

### Terraform Apply

Apply a Terraform plan created in a workspace.

**Input**

| **Parameter Name** | **Description**                        | **Required** |
| ------------------ | -------------------------------------- | ------------ |
| alias              | Target account for running this action | True         |
| run\_id            | Run id from a previous Terraform Plan  | True         |

**Output**

| **Parameter Name** | **Type** | **Description**                               |
| ------------------ | -------- | --------------------------------------------- |
| apply\_result      | String   | Status of the Apply action                    |
| workspace\_id      | String   | The workspace Id in which the action occurred |

### Terraform Discard

Discard a Terraform plan in a workspace if it has not been applied. Unlocks the workspace. Either **run\_id** or **workspace\_id** should be specified.

**Input**

| **Parameter Name** | **Description**                           | **Required** |
| ------------------ | ----------------------------------------- | ------------ |
| alias              | Target account for running this action    | True         |
| run\_id            | Run id from a previous Terraform Plan run | False        |
| workspace\_id      | Id of locked Workspace                    | False        |

**Output**

| **Parameter Name** | **Type** | **Description**                                                             |
| ------------------ | -------- | --------------------------------------------------------------------------- |
| run\_id            | String   | The run id that was discarded. Can be None if the workspace was not locked. |

### Terraform Plan

Plan a terraform module. This action does not apply the plan automatically.

**Input**

| **Parameter Name** | **Description**                                                      | **Required** |
| ------------------ | -------------------------------------------------------------------- | ------------ |
| workspace\_id      | Id picked from the list of workspaces available to this organization | True         |

**Output**

| **Parameter Name** | **Type** | **Description**                                |
| ------------------ | -------- | ---------------------------------------------- |
| run\_id            | String   | The run id for this action.                    |
| run\_status        | String   | The status of the run when the action finishes |
| run\_data          | String   | JSON object containing the data of the plan.   |

### Terraform Show

Show the output in a Workspace.

**Input**

| **Parameter Name** | **Description**                                                      | **Required** |
| ------------------ | -------------------------------------------------------------------- | ------------ |
| workspace\_id      | Id picked from the list of workspaces available to this organization | True         |
| alias              | Target account for running this action                               | True         |
| bucket             | S3 bucket for storing the output                                     | False        |

**Output**

| **Parameter Name** | **Type** | **Description**                                                                                      |
| ------------------ | -------- | ---------------------------------------------------------------------------------------------------- |
| is\_truncated      | Boolean  | True if the output in showhad to be truncated.                                                       |
| bucket             | String   | The name of the output bucket if provided in the **inputs**                                          |
| key                | String   | The S3 key for the output if a bucket was provided in the **inputs.** This will have all the output. |
| show               | String   | The output (or the last 100 KB if truncated)                                                         |

### Terraform Update Vars

Modify **Variables** in a Workspace

**Input**

| **Parameter Name** | **Description**                                                      | **Required** |
| ------------------ | -------------------------------------------------------------------- | ------------ |
| workspace\_id      | Id picked from the list of workspaces available to this organization | True         |
| variables          | List of JSON dictionaries for variables set up for this workspace    | True         |

**Output**

| **Parameter Name** | **Type**                   | **Description**                |
| ------------------ | -------------------------- | ------------------------------ |
| variables          | List of JSON dictionaries. | Variables updated by the user. |

**Action Example**

![](/files/-MaarCjZRtWh8etHedAe)


# Terraform CLI

Use the integration to execute Terraform templates and connect the execution with other integrations that Fylamynt offers.

## Overview

This document describes the Terraform CLI integration, not to be confused with our support for the Terraform Cloud integration.

SREs run multiple types of code (e.g. Terraform templates, Ansible playbooks, Python scripts) to automate their tasks. Currently, ad-hoc mechanisms to manage secrets, pass data, collect logs, and manage users are being developed. We built this integration, specifically to support the execution of Terraform templates.

## Configure Terraform CLI in Fylamynt

Details needed to set up **Terraform CLI instance** in **Fylamynt**:

The module code is expected to be in a GitHub or S3 Bucket Resource.

* Navigate to **Settings > Resources > Terraform Modules**

<table data-header-hidden><thead><tr><th>Parameter Name</th><th width="386.3333333333333">Description</th><th>Required</th></tr></thead><tbody><tr><td><strong>Parameter Name</strong></td><td><strong>Description</strong></td><td><strong>Required</strong></td></tr><tr><td>Module Name</td><td>Reference name for the module. This will be used by action nodes.</td><td>True</td></tr><tr><td>Target Account</td><td>The target account against which Terraform CLI actions will be run</td><td>True</td></tr><tr><td>Root</td><td>The base of the terraform module tree, defaults to the root directory</td><td>False</td></tr></tbody></table>

* Click on **Manage Modules**
* Click on **Add New**![](blob:https://fylamynt.atlassian.net/0e8eb96e-3c95-4e25-8e70-9e6e2eafab04#media-blob-url=true\&id=1079b457-80e8-444d-aa76-cfad0069eeb2\&collection=contentId-590381076\&contextId=590381076\&mimeType=image%2Fpng\&name=Screen%20Shot%202021-05-21%20at%201.17.50%20PM.png\&size=73294\&width=1089\&height=352)

![](/files/-MaZqUieDB_JhPLAijNY)

* Enter a **Module Name** for reference. This will be used by Terraform CLI action nodes.
* **Select Target Account** against which Terraform CLI actions will be executed.![](blob:https://fylamynt.atlassian.net/586ec7b0-12b9-4961-a25c-7cbd071dc9bf#media-blob-url=true\&id=d8292c5e-7a99-42d8-9017-2c3f85f7447d\&collection=contentId-590381076\&contextId=590381076\&mimeType=image%2Fpng\&name=Screen%20Shot%202021-05-21%20at%201.28.14%20PM.png\&size=98018\&width=1089\&height=413)

![](/files/-MaZqXBYP7ZeQvFe1LTI)

* **Select Input** source type, either a Git Repo or S3 bucket![](blob:https://fylamynt.atlassian.net/4d436f89-b9ef-4215-8a97-4f522a12c6aa#media-blob-url=true\&id=e30755fe-da97-438d-b062-8e3bf4a2e561\&collection=contentId-590381076\&contextId=590381076\&mimeType=image%2Fpng\&name=Screen%20Shot%202021-05-21%20at%201.29.40%20PM.png\&size=104585\&width=1089\&height=413)

![](/files/-MaZqZhllKlxMD_QLOv1)

* Select the actual module from the list![](blob:https://fylamynt.atlassian.net/5909908d-a41d-48b2-b6fd-2a11c850af3d#media-blob-url=true\&id=98125a25-aa4d-4530-b469-d0e07c4320e6\&collection=contentId-590381076\&contextId=590381076\&mimeType=image%2Fpng\&name=Screen%20Shot%202021-05-21%20at%202.19.47%20PM.png\&size=110484\&width=1174\&height=492)

![](/files/-MaZqaea9blmKE8huqMJ)

## Integration Actions

All Terraform CLI Actions run asynchronously, and the results are stored in **log\_bucket** under **log\_key** once they finish. All actions are configured the same way:

1. **Terraform\_CLI\_Plan** - runs terraform plan on the specified module.
2. **Terraform\_CLI\_Apply** - runs terraform apply on the specified module, does not wait for confirmation.
3. **Terraform\_CLI\_Show** - runs terraform show on the specified module.
4. **Terraform\_CLI\_Destroy** - runs terraform destroy on the specified module, does not wait for confirmation.

![](/files/-MaZq5y4JgbDkWinApts)

**Input**

| **Parameter Name** | **Description**                                         | **Required** |
| ------------------ | ------------------------------------------------------- | ------------ |
| alias              | Target account alias for executing Terraform CLI action | True         |
| module             | Terraform module configured as Resource                 | True         |
| log\_bucket        | S3 bucket for log files                                 | True         |
| extra\_args        | Extra arguments to terraform executable                 | False        |
| version            | terraform version to use, defaults to 0.13              | False        |
| workspace          | Terraform workspace to use                              | False        |

**Output**

| **Parameter Name** | **Type** | **Description**                               |
| ------------------ | -------- | --------------------------------------------- |
| log\_bucket        | String   | S3 bucket for log files                       |
| log\_key           | String   | S3 log file created by action                 |
| task\_arn          | String   | ARN of asynchronous action                    |
| task\_status       | String   | Status of Terraform task when action finished |
| execution\_status  | String   | Status of action when it exited.              |


# Twilio

Use the integration to automatically send SMS to any phone number/address based on a workflow output or workflow step output.

## Overview <a href="#overview" id="overview"></a>

SMS communication is a fundamental form of mobile communication used by people globally. This is useful for things such as internal alert messages (confirmations, issues, etc.).&#x20;

With Fylamynt's automation engine you can control the internal messaging by adding checks and confirmations in your workflows directly.

## Use Cases <a href="#use-cases" id="use-cases"></a>

The integration between Fylamynt and Twilio lets you:

* Connect your Twilio account to Fylamynt.
* Configure SMS content from Workflow Editor where you create your workflow
  * Select ‘From’ Number from dropdown - Retrieved from users Twilio account
  * Recipient or Recipients (multiple)
  * Content (SMS Message - Text Only)
    * Plain Text
    * Injection of Variables (previous step outputs)

## Configure Twilio in Fylamynt

* Navigate to **Settings** > **Integrations** > **Twilio**
* Configure a new integration instance

Details needed to set up **Twilio instance** in **Fylamynt**:

Follow the steps listed below in your **Twilio Account** and get the desired parameters to enter in **Fylamynt**

* Login to your Twilio Account. And you should land on the **Dashboard** if not, navigate to dashboard
* Go to **Settings** --> **General**
* From the **Live Credentials** section copy the **Account SID** and **Auth Token** and paste it into the respective input fields.

## Integration Actions <a href="#integration-actions" id="integration-actions"></a>

You can add these actions in the Fylamynt workflow builder, as part of your workflow.

1. [Twilio Send SMS](#twilio-send-sms)

### Twilio Send SMS <a href="#twilio-send-sms" id="twilio-send-sms"></a>

Integration node to run and send SMS

**Input**

| **Parameter Name**              | **Description**                             | **Required** |
| ------------------------------- | ------------------------------------------- | ------------ |
| Recipients Number               | List of numbers to receive SMS              | True         |
| Message                         | Message body                                | True         |
| Select 'Send From' Phone Number | Number which should be used to send message | True         |

**Output**

| **Parameter Name** | **Type** | **Description**                     |
| ------------------ | -------- | ----------------------------------- |
| execution\_status  | String   | Status of run (ie: S\_OK / E\_FAIL) |

**Action Example**

* Drag and drop the Twilio Send SMS Action node onto the Workflow Editor Canvas&#x20;
* Select the Action node&#x20;
* Select the Sender Number from the dropdown
* Set the Recipients numbers
* Enter the message to send

![](/files/wtvoR1Jty2KM9h2vLplC)


# Zoom

Use the Zoom integration to easily add a meeting to your incidents in Fylamynt.

## Overview <a href="#overview" id="overview"></a>

Zoom is a secure and reliable video platform powering all of your communication needs. Integrate your Zoom account with Fylamynt to launch instant meetings for incident response collaboration.

## Use Cases <a href="#use-cases" id="use-cases"></a>

#### Why?

Collaboration is required when an on-call responder is investigating an incident in Fylamynt. Simplifying administration of Zoom with automated and centralized meeting creation, takes off the redundant burden of bringing the right team together for incident response.

#### What?

With Zoom's Fylamynt add-on, you can easily collaborate and enhance your incident management by adding a Zoom meeting directly to your incidents in Fylamynt. On-call responders and relevant stakeholders can then be invited to investigate the incident at hand.

#### How?

After installing the Zoom app:

* Automated Approach: Use the collaboration settings in Fylamynt to automatically assign a Zoom meeting to your triggered incidents. The specific meeting URL will be posted on the incident details page.
* Manual Approach: Use the Zoom button displayed on the incident details page to instantly start a meeting with one click.

The integration between Fylamynt and Zoom lets you:

* Create a Zoom meeting and assign it to a specific incident

## Configure Zoom in Fylamynt <a href="#configure-zoom-in-fylamynt" id="configure-zoom-in-fylamynt"></a>

* Navigate to **Settings** > **Integrations** > **Zoom**
* Click **Connect Zoom**
* You will be redirected to app installation page

![](/files/uxIX0yiKQe1Dpv9F2QNv)

* Click on **Authorize** to setup Fylamynt app on Zoom
* You should be redirected to Fylamynt settings page after authorizing the Fylamynt app
* Fylamynt App installation is completed

## Remove Zoom Integration

* Login to your Zoom account and navigate to the Zoom App Marketplace
* Click **Manager > Installed Apps** or search for the **Fylamynt** app
* Click the **Fylamynt** app
* Click **Uninstall**
* If you already logged into your Fylamynt account, reload **Settings** page to observe that Zoom integration was disconnected

## Integration Actions <a href="#integration-actions" id="integration-actions"></a>

You can add the following action in the Fylamynt workflow builder, as part of your workflow.

1. [Zoom Create Meeting](#zoom-create-meeting)

### Zoom Create Meeting

Fylamynt action to create a Zoom meeting

**Input**

| **Parameter Name** | **Description**                         | **Required** |
| ------------------ | --------------------------------------- | ------------ |
| Meeting agenda     | Meeting agenda for instant Zoom meeting | True         |

**Output**

| **Parameter Name** | **Type** | **Description**                                     |
| ------------------ | -------- | --------------------------------------------------- |
| meeting\_id        | String   | Unique identifier of the Zoom meeting               |
| topic              | String   | Meeting topic                                       |
| agenda             | String   | Meeting agenda                                      |
| join\_url          | String   | URL for participants to join the meeting            |
| password           | String   | Meeting password                                    |
| timezone           | String   | Timezone to format start\_time                      |
| created\_at        | String   | The date and time at which this meeting was created |

**Action Example**

![](/files/GMBEJtPkp7cuN5snu7Mh)


# EC2

Use the AWS Elastic Compute Cloud (EC2) integration to manage EC2 compute platform.

## Overview

Fylamynt EC2 actions allow you to perform targeted operations against EC2 resources.

## Integration Actions

You can add these actions in Fylamynt workflow builder, as part of your workflow.

1. [EC2 Get Sizing Recommendations](#ec2-get-sizing-recommendations)
2. [EC2 Resize Instances](#ec2-resize-instances)

### EC2 Get Sizing Recommendations

Integration node to fetch EC2 sizing recommendations from AWS Trusted Advisor

#### **Input**

| **Parameter Name**   | **Description**                                                 | **Required** |
| -------------------- | --------------------------------------------------------------- | ------------ |
| Target Account Alias | Target account alias to be used to fetch sizing recommendations | True         |
| Region Name          | AWS Region Name for filtering Trusted Advisor checks            | False        |

#### **Output**

| **Parameter Name** | **Type** | **Description**                     |
| ------------------ | -------- | ----------------------------------- |
| recommendations    | MapList  | A list of sizing recommendations    |
| execution\_status  | String   | Status of run (ie: S\_OK / E\_FAIL) |

#### Action Example

![](/files/-MkyXA1a1CON3s93Pd7E)

![](/files/-MkyXNfWi_5qeueKTmWe)

### EC2 Resize Instances

Integration node to modify instance type of EC2 instances

#### **Input**

| **Parameter Name**   | **Description**                                                                                                                                     | **Required** |
| -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
| Target Account Alias | Target account alias to be used to resize instances                                                                                                 | True         |
| Update Config        | <p>A maplist of update config. Example update config in the list:</p><p>{'recommended\_instance\_type': 't3.nano', instance\_id': 'i-abcd1234'}</p> | True         |
| DryRun               | Indicate whether this is a dry run                                                                                                                  | False        |

#### **Output**

| **Parameter Name** | **Type** | **Description**                     |
| ------------------ | -------- | ----------------------------------- |
| instances          | MapList  | A list of updated EC2 instances     |
| execution\_status  | String   | Status of run (ie: S\_OK / E\_FAIL) |

#### Action Example

![](/files/-MkyXcSbkhIIL3bQYHzU)

![](/files/-MkyXmmxxb_iL-AcT2wG)


# Service Health

Use this integration to obtain the latest operational status of AWS services.

## Overview

The **AWS System Status** action node queries the [AWS Service Health Dashboard](https://status.aws.amazon.com/) for information regarding a user-supplied list of services in a region and returns the most up-to-date information available on the status of that service in JSON format. The AWS Service Health Dashboard is a public facing website which doesn't require login credentials, so it can be a good choice for situations when authentication/authorization systems might be experiencing issues.

For more detailed information about specific AWS services, and the ability to trigger workflows from service outage events, see the **AWS Health Alert** action node and the [AWS Personal Health Dashboard](https://docs.aws.amazon.com/health/latest/ug/getting-started-api.html).

## What it does

The AWS Service Health Dashboard is, at its core, a list of RSS feeds providing information on the status of most AWS services. Given a service name and a region, it's possible to go directly to the feed of any given service to see if there are issues or outages being tracked. The **AWS System Status** action node does exactly that, retrieving the most recent item in the service's feed, evaluating the title of the item to see if there is currently an issue with the service. The action will return a simplified status field based on what it sees in the most recent item's header, as well as the age of the item.

The status returned will be one of the following:

| Status    | Description                                                                                                                                           |
| --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| Ok        | The service is operating normally.                                                                                                                    |
| Degraded  | There is something going on with the service that is leading to degraded performance or issues in a subset of the availiblity zones for that service. |
| Disrupted | There is something wrong resulting in significant outages for that service.                                                                           |
| Unknown   | The action node could not determine the status of the service                                                                                         |

## Integration Actions

You can add these actions in Fylamynt workflow builder, as part of your workflow.

1. [AWS System Status](#aws-system-status)

### AWS System Status

Insert a **AWS System Status** action node into your workflow. In the right hand configuration pane, you can select a single AWS region, and multiple services to evaluate. **Note:** Many of the service names on the AWS Service Health Dashboard are different from the names used in places like the AWS Console or AWS CLI. When in doubt, double check on the [AWS Service Health Dashboard](https://status.aws.amazon.com/).

#### **Input**

| **Parameter Name** | **Description**                   | **Required** |
| ------------------ | --------------------------------- | ------------ |
| Services           | AWS services. Select one or more. | True         |
| Region Name        | AWS Region Name                   | True         |

#### **Output**

| **Parameter Name** | **Type** | **Description**                     |
| ------------------ | -------- | ----------------------------------- |
| output             | Object   | Status of services in JSON          |
| execution\_status  | String   | Status of run (ie: S\_OK / E\_FAIL) |

The output for the **AWS System Status** action node is a JSON dict called "output", and is in the following format:

```
{
  "AWS Region": { # e.g. 'us-west-1'
    "your service": {  # 
      "status": "string", # Status computed from looking at the below fields. 
      "title": "string",  # The title of the most recent entry in the RSS for the service
      "description": null, # The description for the most recent entry. 
      "last_update": "Thu, 04 Oct 2018 08:04:44 PDT", # Formatted date string for the most recent update. 
      "error": null,  # Any errors reported in the most recent entry.
      "message": ""   # The message included in the most recent entry.
    }
  }
}
```

A real-world example. This is the result from a query on US-WEST-2 for the AWS Secrets Manager service. You'll note that "status" field is "OK", because the most recent incident item in the RSS feed is marked "\[RESOLVED]" and is (at the time of this writing) several years old.

```
{
  "us-west-2": {
    "secretsmanager": {
      "status": "OK",
      "title": "Service is operating normally: [RESOLVED] Elevated latencies and API Error Rates",
      "description": null,
      "last_update": "Thu, 04 Oct 2018 08:04:44 PDT",
      "error": null,
      "message": "Between 2:04 AM and 7:50 AM PDT we experienced increased API error rates and latencies in the US-WEST-2 Region. The issue has been resolved and the service is operating normally."
    }
  }
}
```

The best way to make use of this information is using a **JSONPath** node with a JSON Path Expression like:

```
$.us-west-2.secretsmanager.status
```

and feeding the output of that to a conditional node.

#### Action Example

![](/files/WZ6C9hBOCKd5ff1mALhm)


# API Keys

API keys are unique to your organization. An API key is required by the webhook to send events to Fylamynt.

## To Configure an API Key in Fylamynt

### **Add an API Key**

* Navigate to Settings > Resources > API Keys > Manage Keys > Add New

![](/files/-MaZojxAQnfu3hc8lQJc)

### **Delete an API Key**

* Navigate to Settings > Resources > API Keys > Manage Keys

![](/files/-MaZolxI8l1veJup8ZHt)

* Confirm deletion of API Key

![](/files/-MaZoo4qJR31FQsaq7wc)

## Where would you use the API Key resource?

### API Keys are used for authorization of webhook type Integrations with Fylamynt

* API Keys created in Resources will be listed in **Webhook API Key Name** in Fylamynt Webhook type integrations.

![](/files/-MaZoqkn5PXceCnTJePO)


# CloudFormation Templates

## Configure CloudFormation in Fylamynt

* Navigate to **Settings** > **Resources** > **CloudFormation**
* Click **Manage Resource** to create and configure a new integration instance
* Click on **Add New**

Details needed to set up **CloudFormation instance** in **Fylamynt**:

| **Parameters** | **Description**                         | **Required** |
| -------------- | --------------------------------------- | ------------ |
| Template Id    | Unique human readable name for resource | True         |
| Repo Id        | Github repo id                          | True         |
| Ref            | Github commit ref, (ie: main/master)    | False        |
| File Path      | Absolute filepath of template file      | True         |

**Note:**

Here Repo Id is a drop down and values populate from the **Git Resources**, please click [here](https://docs.fylamynt.com/resources/github-repos) to learn more about Git resources

Follow the steps listed below to get the desired parameters to enter in **Fylamynt**

* Template Id parameter is the unique human readable name for resource, any string could be provided, Since this is unique identifier 2 resources can not have the same template id
* Login to your **Github Account**
* Open your Repository

![](/files/-MbIdwL93fOLhcvYbzIA)

* In above picture after username attribute is Repo Id (ie: \<username>/\<repoId>), copy the repo id
* Here parameter Ref is any branch or any commit, (**Note:** If not provided default branch would be used)
* Here File Path parameter is the absolute path of template json file (with respect to root of the Repo), In below image as can be seen the aws\_ec2.json is the template file, hence file path would be **mydir/aws\_ec2.json**

![](/files/-MbIdzAM7goqHiV7BllM)

## Integration Actions <a href="#integration-actions" id="integration-actions"></a>

You can add these actions in Fylamynt workflow builder, as part of your workflow.

1. [CloudFormation Run Template](#cloudformation-run-template)

### CloudFormation Run Template

Integration node to run CloudFormation Run Template

#### **Input**

| **Parameter Name** | **Description**                                   | **Required** |
| ------------------ | ------------------------------------------------- | ------------ |
| Select Alias       | AWS assume role alias                             | True         |
| Select Template    | Template Id of configured cloudformation resource | True         |
| Parameters         | Parameters for your CF template                   | False        |

**Note:** Make parameters dynamic for user, a template JSON file may or may not contain the parameters, but if template file does not contain the parameters then this should be provided at runtime or run would fail

#### **Output**

| **Parameter Name** | **Type** | **Description**                     |
| ------------------ | -------- | ----------------------------------- |
| execution\_status  | String   | Status of run (ie: S\_OK / E\_FAIL) |
| stack\_id          | String   | Newly created ID of stack           |

#### Action Example

![](/files/-MbIe1fDkWN9LMk0L-wy)


# CloudWatch Targets

## Overview

The integration with CloudWatch is defined to retrieve alerts from your target account. (Instructions to create your target account -> [AWS](/integrations/aws)) and respond to them automatically by assigning Fylamynt workflows.

Please go through the following instructions to set up your CloudWatch resource in Fylamynt.

## To Configure a CloudWatch Resource

1. &#x20;In Fylamynt Settings → Resources → CloudWatch Targets
2. &#x20;Click on Manage Targets
3. Top right button (Add New +)
4. From the right menu targets drop down: Select AWS target you want to configure\
   (that should help with AWS account ID and other constants needed for the configuration)
5. In another tab, Login to your AWS console (the account you are trying to configure) and navigate to [CloudWatch](https://console.aws.amazon.com/cloudwatch)
6. In [CloudWatch](https://console.aws.amazon.com/cloudwatch) from the left menu, Events > Rules and click Create rule button.
7. On Event Source select Event Pattern and then select Events by Service.
8. In service name field select CloudWatch\
   and for Event Type select CloudWatch Alarm State Change
9. On Targets Select Event bus in another AWS account.
10. For Account ID\* set \[YOUR AWS ACCOUNT ID]
11. For "CloudWatch Events needs permission to send events .." select Create a new role for this specific resource.

![](/files/-Majcc4u5k8CAAc-pjfq)

12\. Click Configure details button

13\. Navigate to Step 2: Configure rule details and add name/description and make sure state is enabled or checked.

14\. Click Create rule and follow AWS instructions.

15\. Navigate to [AWS IAM](https://console.aws.amazon.com/iam)

16\. Find your account alias added in fylamynt AWS Cloud Services

17\. If cloudwatch:DescribeAlarms permission does not exists, click Attach policies > Create policy and in the JSON editor paste the following after updating with your AWS account ID:`1{ 2 "Action": [ 3 "cloudwatch:DescribeAlarms" 4 ], 5 "Resource": "arn:aws:cloudwatch:*:[ACCOUNT_ID]:alarm:*", 6 "Effect": "Allow" 7}`

18\. Next Tags > Next Review: name your new policy and select Create policy

19\. Finally, go back to fylamynt and Click Authorize button to test and configure the integration.


# EKS Permissions

EKS actions require some additional IAM configuration to create a cluster and access it.

## **Overview**

* EKS clusters need an associated *service-linked* **EKS Role** to access other AWS services. If such a role does not already exist in the account, **Create EKS Role** provides instructions on how to create it.
* The Target Account requires some privileges beyond PowerUserAccess to use EKS actions. **Add Inline Policy to Target Account** provides instructions on how to add these privileges.[ ![](https://docs.aws.amazon.com/assets/images/favicon.ico)Using Service-Linked Roles for Amazon EKS - Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/using-service-linked-roles.html) provides more detail on this requirement.

### Managing existing Kubernetes cluster with Fylamynt

* If you want to use an existing Kubernetes (k8s) cluster, you must allow one of your Fylamynt [Target Accounts](/integrations/aws) (AWS account configured) to access the k8s cluster. This can be done by associating a [Target Account](/integrations/aws) (AWS account configured) role ARN with a list of K8s groups (i.e. system:masters, system:basic-user). Please follow the instruction in[ ![](https://docs.aws.amazon.com/assets/images/favicon.ico)Managing users or IAM roles for your cluster - Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/add-user-role.html) to complete this process.

## **Prerequisites**

1. [Create Role for EKS Control](/resources/eks#create-role-for-eks-control)
2. [Add Inline Policy to Target Account](/resources/eks#add-inline-policy-to-target-account)

### **Create Role for EKS Control**

* In the IAM Console, click on \`Create role\`![](blob:https://fylamynt.atlassian.net/41ed068c-b6c6-4a7e-a5fa-a275b8d2d3bb#media-blob-url=true\&id=fc203638-3696-4434-a74e-2f66bdb95f68\&collection=contentId-427556952\&contextId=427556952\&mimeType=image%2Fpng\&name=Screen%20Shot%202021-03-16%20at%2010.48.50%20AM.png\&size=115159\&width=707\&height=314)

![](/files/-MaFe-DeehXQlMCdTI3j)

* Select AWS service on the next screen![](blob:https://fylamynt.atlassian.net/1b8869f4-4ce5-4ffe-89e9-53d2cc6604e6#media-blob-url=true\&id=e73664b8-475b-4867-9fec-b4fcd1d876ec\&collection=contentId-427556952\&contextId=427556952\&mimeType=image%2Fpng\&name=Screen%20Shot%202021-03-16%20at%2010.49.27%20AM.png\&size=177713\&width=550\&height=508)

![](/files/-MaFdyWf-jHWo8Fg6fHE)

* Pick EKS as the **service**![](blob:https://fylamynt.atlassian.net/b90208dc-7ef5-474a-900b-de66b950368a#media-blob-url=true\&id=36e53713-e7ac-40ed-aa34-997b188a0210\&collection=contentId-427556952\&contextId=427556952\&mimeType=image%2Fpng\&name=Screen%20Shot%202021-03-16%20at%2010.52.46%20AM.png\&size=203962\&width=550\&height=508)

![](/files/-MaFdwIVmm6g98uWmgmN)

* Pick **EKS - Cluster** as the specific use case in the lower half of the page![](blob:https://fylamynt.atlassian.net/8b44b36c-1bf7-4956-90d8-fc88e3640084#media-blob-url=true\&id=3c5f2ecc-cea4-490b-ab83-ee209c58e9f5\&collection=contentId-427556952\&contextId=427556952\&mimeType=image%2Fpng\&name=Screen%20Shot%202021-03-16%20at%2010.53.47%20AM.png\&size=63038\&width=550\&height=204)

![](/files/-MaFdu9KTh8VeI7nV_n3)

* Click on Next: Tags and add any tags that you want![](blob:https://fylamynt.atlassian.net/f396eedf-5232-4219-a19a-c9b4808f826e#media-blob-url=true\&id=1dba4c3b-62f4-4f2f-b723-336b9e8d80d5\&collection=contentId-427556952\&contextId=427556952\&mimeType=image%2Fpng\&name=Screen%20Shot%202021-03-16%20at%2010.54.29%20AM.png\&size=24693\&width=415\&height=159)

![](/files/-MaFdsA6wenw3EU6Mdf3)

* Add a **Role name**, save.![](blob:https://fylamynt.atlassian.net/b4253bc5-55bc-4da5-b3e2-130351a2ee4a#media-blob-url=true\&id=e78f2410-e27d-4758-aff0-a159930d02b7\&collection=contentId-427556952\&contextId=427556952\&mimeType=image%2Fpng\&name=Screen%20Shot%202021-03-16%20at%2010.55.38%20AM.png\&size=124231\&width=678\&height=414)

![](/files/-MaFdo7DtqIIYmaKbRYt)

* Search for the **Role name** on the next screen and click on it![](blob:https://fylamynt.atlassian.net/31c47ae7-f200-4810-8e41-43f376fec25f#media-blob-url=true\&id=d5f42190-537a-47d7-bc0a-d62208a5dca5\&collection=contentId-427556952\&contextId=427556952\&mimeType=image%2Fpng\&name=Screen%20Shot%202021-03-16%20at%2010.58.39%20AM.png\&size=61948\&width=709\&height=274)

![](/files/-MaFdlOlBVnNkQlJZ2SG)

* Note down the **Role ARN**

![](/files/-MaFdgCiWy2RCXF7qmq2)

### **Add Inline Policy to Target Account**

* Find the target account in the **IAM** console:![](blob:https://fylamynt.atlassian.net/c08d0b09-190c-4434-b34c-28420cf3ba99#media-blob-url=true\&id=bd0419d8-06a3-4bb0-a8cd-658450ecb9d1\&collection=contentId-427556952\&contextId=427556952\&mimeType=image%2Fpng\&name=Screen%20Shot%202021-03-17%20at%2012.03.55%20PM.png\&size=221736\&width=1046\&height=526)

![](/files/-MaFd_hALRSwrPkoMABn)

* Click on **Add inline policy**![](blob:https://fylamynt.atlassian.net/0d9d8aa8-dd00-4829-935a-4e679d15123c#media-blob-url=true\&id=a8ffaa1a-3680-41a8-823d-615ce635d0bd\&collection=contentId-427556952\&contextId=427556952\&mimeType=image%2Fpng\&name=Screen%20Shot%202021-03-17%20at%2012.04.17%20PM.png\&size=173530\&width=1124\&height=535)

![](/files/-MaFdcNmG7zv3zJkmZvM)

* Click on **Choose a service**, enter *IAM* in the search box, then select **IAM**![](blob:https://fylamynt.atlassian.net/d400f417-8c41-406e-99a1-31acb30c0b1f#media-blob-url=true\&id=141635d8-79e0-4535-afa9-89c8090fc2e5\&collection=contentId-427556952\&contextId=427556952\&mimeType=image%2Fpng\&name=Screen%20Shot%202021-03-17%20at%2012.04.39%20PM.png\&size=190290\&width=1124\&height=535)

![](/files/-MaFdWpx62XooBrFb6BA)

* Click on the Chevron for **Write**, select **PassRole**![](blob:https://fylamynt.atlassian.net/fb209d7f-8cd9-4a69-b2a1-ac91ccbdb593#media-blob-url=true\&id=ff36ef13-e3dc-4221-9924-ef820e9245ca\&collection=contentId-427556952\&contextId=427556952\&mimeType=image%2Fpng\&name=Screen%20Shot%202021-03-17%20at%2012.05.10%20PM.png\&size=308505\&width=1124\&height=535)

![](/files/-MaFdUWb5X26ki3rlSdu)

* Once **PassRole** is selected, specify the **role** resource ARN by clicking on the **Resources** chevron

![](/files/-MaFdDlfFbnTfX1lA6Xa)

* Click on **Add ARN**![](blob:https://fylamynt.atlassian.net/3db7a7a6-644a-4d6e-9082-e364ee9689ad#media-blob-url=true\&id=9df6f2c8-d632-45b7-92cb-13297d9a8704\&collection=contentId-427556952\&contextId=427556952\&mimeType=image%2Fpng\&name=Screen%20Shot%202021-03-17%20at%2012.07.15%20PM.png\&size=163247\&width=1124\&height=535)

![](/files/-MaFd9miavcMHGDccAmx)

* Enter the full ARN from the **Role ARN** noted earlier, click on **Add.**![](blob:https://fylamynt.atlassian.net/7be03340-9a97-4fcb-9a11-3b12acd3d320#media-blob-url=true\&id=70229985-5411-4c50-bd20-fa33ec8ae848\&collection=contentId-427556952\&contextId=427556952\&mimeType=image%2Fpng\&name=Screen%20Shot%202021-03-17%20at%2012.07.44%20PM.png\&size=257937\&width=1124\&height=535)

![](/files/-MaFd7mSBotSyP4QHeNN)

* Click on **Review policy**![](blob:https://fylamynt.atlassian.net/401aeaa2-b9e9-469d-ba6e-918200a9a19a#media-blob-url=true\&id=34c031dc-ca5f-4a9b-b906-d0bb26b1923e\&collection=contentId-427556952\&contextId=427556952\&mimeType=image%2Fpng\&name=Screen%20Shot%202021-03-17%20at%2012.07.58%20PM.png\&size=182413\&width=1124\&height=535)

![](/files/-MaFd5lmph3ypqwDRw6o)

* Click on **Create policy**![](blob:https://fylamynt.atlassian.net/d4f4d024-24fb-4e07-b1da-3b019ad1dd7c#media-blob-url=true\&id=72498181-dee3-4512-ae5f-f924121189dc\&collection=contentId-427556952\&contextId=427556952\&mimeType=image%2Fpng\&name=Screen%20Shot%202021-03-17%20at%2012.08.26%20PM.png\&size=146815\&width=1124\&height=535)

![](/files/-MaFd3YMwddFNPrMx6Mz)

## Configure the Resource

* Navigate to **Settings** > **Resource** > **EKS Permissions**.
* Click **Manage EKS Permissions** to create an integration instance.
* Click on **Add New**

Details needed to provide **EKS Permissions** to **Fylamynt**:

| **Parameter**   | Description                                                                           | **Required** |
| --------------- | ------------------------------------------------------------------------------------- | ------------ |
| Account Alias   | Target account in which to perform EKS operations                                     | True         |
| Name            | Reference name for this instance. This will show up in resource menus for EKS actions | True         |
| Assume Role ARN | The **Role ARN** from **Create Role for EKS Control**                                 | True         |

&#x20;Sample EKS Permission:![](blob:https://fylamynt.atlassian.net/7049a0d2-1525-49ca-9ddd-4e0db3e7ebbd#media-blob-url=true\&id=e909fd49-9734-415e-b5f1-fa0acef6a289\&collection=contentId-427556952\&contextId=427556952\&mimeType=image%2Fpng\&name=Screen%20Shot%202021-05-21%20at%2010.33.48%20AM.png\&size=49626\&width=1143\&height=194)

![](/files/-MaFcqcqr8VLnWTdYPVg)

## Integration Actions

1. [Deploy Cluster](#deploy-cluster)

### Deploy Cluster

The action can be used to create/deploy an EKS Cluster.

![](/files/-MaFcnAoKNFniHPfutjQ)

The role\_arn parameter should match the one from **Create Role for EKS Control.** The alias should match an alias with the additional inline policy applied.


# S3 Buckets

Use the resource to capture, re-use, or persist output data from a given step in a workflow. Or to read pre-existing data stored in an S3 bucket for a given step in a workflow.

## Use Cases

* Store the response body of an API call to an S3 bucket without writing a custom snippet.
* Send output of a given action to an S3 bucket for logging purposes.
* Store file-like data to an S3 bucket for downstream steps to access or manipulate.

## To Configure an S3 bucket in Fylamynt

* Navigate to **Settings > Resource > S3 Buckets.**
* Click on **Manage Buckets.**
* Click on **Add New.**

![](/files/-MaZwBFUvYet2s5OXH96)

* **Select Target Account** from the drop-down list.

![](/files/-MaZwEVWb_ODggbt92bG)

* **Select S3 Bucket** from the new drop-down list.

![](/files/-MaZwHjlHvUC9kfle8-O)

## Where would you use the S3 resource?

The list of configured S3 buckets will be made available for various action node e.g. Pick\_S3\_Bucket:

![](/files/-MaZwKLu3xQpYq4Gxe-E)


# SSH Targets

Use the resource to execute commands over SSH as part of your remediation workflows.

## Use Cases

* Ability to execute a command over SSH and collect logs.
* Ability to configure SSH keys to be used to execute commands on target VMs. (Private keys provided to Fylamynt are securely managed.)

## To Configure an SSH Target in Fylamynt

* Navigate to **Settings** > **Resources** > **SSH Targets**
* Click **Manage Resource** to create and configure a new integration instance
* Click on **Add New**

Details needed to set up an **SSH Target Instance** in **Fylamynt**:

| **Parameters**  | **Description**                                              | **Required** |
| --------------- | ------------------------------------------------------------ | ------------ |
| Target Name     | Unique human readable name for resource                      | True         |
| Host Identifier | Identifier to target machine such as (hostname, public IPv4) | True         |
| Private Key     | Private RSA key to run command without username/password     | True         |

Follow the steps listed below to get the desired parameters to enter in **Fylamynt**

* Target Name parameter is the unique human readable name for resource, any string could be provided, Since this is unique identifier 2 resources can not have the same target name
* Host Identifier parameter is needed to communicate with your target, generally this is either a **IPv4** or **Domain Name**
* Priavte Key this parameter is needed for authentication / authorization, this is a Private RSA Key

![](/files/-MbgxjMITmIInSa-3g8Y)

## Integration Actions <a href="#integration-actions" id="integration-actions"></a>

You can add these actions in Fylamynt workflow builder, as part of your workflow.

1. [SSH Execute](#ssh-execute)

### SSH Execute

Integration node to run SSH Execute Template

#### **Input**

| **Parameter Name** | **Description**                                   | **Required** |
| ------------------ | ------------------------------------------------- | ------------ |
| alias              | AWS assume role alias                             | True         |
| target\_name       | Template Id of configured CloudFormation resource | True         |
| user\_name         | Username, against which command would be executed | True         |
| command            | Command to be executed                            | True         |
| bucket\_name       | S3 bucket name to store logs                      | True         |

**Note:** Make sure to add correct target\_name (which has been configured from Settings Page)

#### **Output**

| **Parameter Name** | **Type** | **Description**                     |
| ------------------ | -------- | ----------------------------------- |
| execution\_status  | String   | Status of run (ie: S\_OK / E\_FAIL) |
| result             | String   | SSH command execution result        |

#### Action Example

![](/files/-MbgxmdcHh_aj-bjf1tj)


# Stop or Terminate underutilized AWS resources

Cost Optimization Featured Workflow

### **Category**:

AWS Cost Optimization

### **Workflow name**:

Stop or Terminate underutilized AWS resources

### **Description**:

If you have an underutilized EC2 instance, chances are you’re paying for nonproductive resources. AWS Trusted Advisor provides recommendations for different services that are either idle, unused, or over-provisioned. We found that even though AWS and other Cost management tools make it easy to identify these resources, the problem however is taking action on the recommendations.  With Fylamynt we can automate the process of stopping or terminating these services.

![](/files/W7aj2D5igDRKXt95w2Og)

### **Integrations**:

Before we review the workflow let’s look at the different tools and integration required to make this happen. First off an [AWS Target account](https://docs.fylamynt.com/integrations/aws#configure-aws-in-fylamynt) has to be configured which provides no-code drag and drop ability to use AWS [Execution action node](https://docs.fylamynt.com/integrations/aws#aws-execution-action) and allows you to call any AWS API endpoint supported by the boto3 library. And lastly, we require a [Slack integration](https://docs.fylamynt.com/integrations/slack) that provides the ability to send messages and approval requests to your Slack Team.

![](/files/RvQJrvfMcNoBiEB6tm7n)

&#x20;

### **Workflow review:**

![](/files/UH4KE7rQVrleocRT88Ry)

Our example workflow retrieves all the recommendations, in JSON format, for services to be stopped or terminated from the Cost Optimization category of AWS Trusted Advisor however this Action Node can also be replaced by your favorite Cost Management Tool if it has the appropriate APIs available to retrieve this information.&#x20;

![](/files/vIdzGfSKHXbTk6cdSXSG)

The JSON output from Trusted Advisor is then used as the input for the JSONPATH action node which extracts the recommendations for each service using a Path Expression.&#x20;

![](/files/DRkrLA1kP4iPnD4Ydnl9)

The workflow then transforms the JSON to string, and a message is sent to a specified Slack channel with variables listing the EC2 instance names that were identified with low utilization.

An approval request is then sent to a Slack channel to either stop or terminates the identified services based on the subsequent action node.  In our workflow we monitoring the following services for cost savings however this can easily be replaced with other recommendations that might be applicable to your environment.

* Stopping EC2 instances with low utilization
  * ![](/files/FN2m31uOvuYkULpeZy3w)
* Deleting of EBS volumes with low utilization with an EC2 volume snapshot taken prior to termination
  * ![](/files/G2TG62uTZC57GfQjagAT)
  * ![](/files/Pih0KCSjpCBCEpC4BS2X)
* Deleting all Elastic IPs with low utilization
  * ![](/files/t1Qb6sDh2aI2sc6YYaKy)
* Stopping all idle RDS DB instances
  * ![](/files/9b1JBpUYV8l8Irl72xDk)

If a user approves the request in the Slack channel the workflow executes the task against the recommended instances.\
Our example workflow does not have a trigger to automatically execute it, but through Fylamynt’s Task Manager a recurring schedule can be configured.


# Rightsizing EC2 instances

Cost Optimization Featured Workflow

### **Category**:

AWS Cost Optimization

### **Workflow name**:

Rightsize EC2 on AWS RightSizing Recommendation

### **Description**:

If you have overprovisioned EC2 instances, chances are you’re paying for resources you do not need. AWS Cost Management provides rightsizing recommendations for greater cost and usage efficiencies by reviewing your historical EC2 usage. We found that even though AWS and Cost Management Tools make it easy to identify the new EC2 instance types, the problem however is taking action on the recommendations. When rightsizing EC2 there are many factors to take into consideration and we love to work with you defining those for your specific situation.

![](/files/tUaqu27r0hLR9fvIytEM)

### **Integrations**:

Before we review the workflow let’s look at the different tools and integration required to make this happen. First off an [AWS Target account](https://docs.fylamynt.com/integrations/aws#configure-aws-in-fylamynt) has to be configured which provides no-code drag and drop ability to use AWS [Execution action node](https://docs.fylamynt.com/integrations/aws#aws-execution-action) and allows you to call any AWS API endpoint supported by the boto3 library. And lastly, we require a [Slack integration](https://docs.fylamynt.com/integrations/slack) that provides the ability to send messages and approval requests to your Slack Team.

![](/files/RvQJrvfMcNoBiEB6tm7n)

### **Workflow review:**

![](/files/AOSo7mfbIJmZg2MASNbE)

Our example workflow retrieves all the EC2 rightsizing recommendations from AWS Cost Management however this can also be replaced by your favorite Cost Management Solutions if it has the appropriate APIs available to retrieve this information.

![](/files/KPzagcURlJ9Wih9UhH5P)

The recommendations MapList output from Trusted Advisor is then used as the input for the JSONPATH action node which extracts the instance ID and recommended new instance type for each EC2 instance using a Path Expression.

![](/files/OVVyND4xmlXWxYsbYMEN)

The workflow then transforms the JSON to string, and a message is sent to a specified Slack channel with variables listing the EC2 recommendations and recommended sizes.

An approval request is then sent to a Slack channel to resize the instance.

![](/files/RivUfDUSUX1tFZqT6KuV)

If a user approves the request the workflow stops the EC2 instance using the [AWS Execution action node](https://docs.fylamynt.com/integrations/aws).

![](/files/rOnp64R8EucQlHDvHQ02)

The workflow then waits for the stop process to complete, and using the [EC2 Resize Instances action](https://docs.fylamynt.com/aws-services/ec2) node the instance type of the EC2 is changes to the recommended type.

The workflow succeeds if the execution status of the resize action node returns an OK condition.

Our example workflow does not have a trigger to automatically execute it, but through Fylamynt’s Task Manager a recurring schedule can be configured.


# Incident Response Automation

Incident Response Featured Workflow

### **Category**:

Incident Response Automation

### **Workflow name**:

Restart Linux service on memory utilization alert

### **Description**:

The following example workflow will show how Fylamynt can automate the remediation of an alert received from your existing performance monitoring or logging tools.

The use case we are addressing is where Linux-based servers are monitored for high memory utilization due to perhaps an application that experiences memory leaks. When an alert is received for a specific server, the remediation process taken is to SSH to that Linux server that sits in an isolated network or behind a firewall and restarts the service. This might sound straightforward, but what if this incident occurs at 2 am in the morning, or how does the SRE get access to the isolated environment to authenticate and execute commands on the Linux server in question…

![](/files/Trdfc1ICPPNjXicB5fFP)

### **Integrations:**

Before we review the workflow in Fylamynt, let's look at the different tools and integrations required to make this happen. First off we are using [New Relic](https://docs.fylamynt.com/integrations/new_relic) to monitoring the EC2 instance for memory utilization however for this particular workflow New Relic can very easily be replaced by other APM tools like [Datadog](https://docs.fylamynt.com/integrations/datadog) or [Sumo Logic](https://docs.fylamynt.com/integrations/sumologic) for which we have integrations available as well.  The Policy in New Relic has a notification channel configured that sends the incident to a PagerDuty service. For the [PagerDuty ](https://docs.fylamynt.com/integrations/pagerduty)service, we configure a webhook integration to Fylamynt which allows us to monitor the incident generation on the service and trigger workflow automatically. Our [Teleport ](https://docs.fylamynt.com/integrations/teleport)integration is then used to authenticate and execute the SSH command on the specific EC2 Linux-based instance. And lastly, we require a [Slack integration](https://docs.fylamynt.com/integrations/slack) that provides the ability to send messages and approval notifications to your Slack Team.

![](/files/xwq0WohbWOuxZoj4678h)

&#x20;

### **Workflow review:**

![](/files/gI3zU5MVT5LysTT3DffE)

Our example workflow is triggered from a PagerDuty Alert which retrieves the alert body, in JSON format, from the PagerDuty service.

&#x20;![](/files/uA6O8Zu3DizVf6ycwPli)

The alert body output from PagerDuty is then used as the input for the JSONPATH action node which extracts only the hostname of the Linux server with the memory utilization alert using a path expression.

An approval request is then sent to a Slack channel to execute the SSH command on the affected server.

![](/files/RcxYcqMgkS5Ij6ldCzC7)

The Teleport SSH Execute Action node takes the output of the JSONPATH node, which contains the matched hostname, as the SSH Target Host, and executes the command provided to restart the service.

![](/files/wdZTdOXoI6UtkComIySa)

The workflow then transforms the JSON to string, and a message is sent to a specified Slack channel, with the hostname as a variable, notifying the team that the service for the host was successfully restarted.

&#x20;![](/files/BI8H0arqsXZq0rHjYTxL)

The alert body output from PagerDuty is used again as the input for the JSONPATH action node which extracts the PagerDuty Incident ID.

&#x20;![](/files/jF9BxIIj7LO6mFcMr1eR)

Lastly, the workflow uses the retrieved Incident ID to automatically resolve the PagerDuty incident that triggered this workflow.

&#x20;


# Application Performance Monitoring

Application Performance Monitoring Featured Workflow

### **Category**:

Application Performance Monitoring

### **Workflow name**:

Restart Linux service on memory utilization alert

### **Description**:

The following example workflow is monitoring a SaaS application for performance-related issues, and notify as well as provide remediation.

The use case we are addressing is where we are running a synthetic smoke API test within Datadog, against a SaaS application, and trigger an alert notification to Fylamynt webhook on failures. The workflow will then retrieve the following error metrics and based on the conditional will either create a Jira ticket or remediate the issue with an approval request.

* Lambda errors
* ApiGateway Latency errors
* DynamoDB ReadThrottleEvents
* AWS API Gateway 5XXError
* API Gateway Count

<div align="center"><img src="/files/0A7lhVRtol2xyhIwPScw" alt=""></div>

### **Integrations:**

Before we review the workflow in Fylamynt, let's look at the different tools and integrations required to make this happen. First off we are using a [Datadog ](https://docs.fylamynt.com/integrations/datadog)monitor to trigger the workflow based on the Synthetic Test alert condition. This trigger can very easily be replaced by your own APM tools like Sumo Logic, New Relic or an AWS native solution. We then configure an [AWS Target account](https://docs.fylamynt.com/integrations/aws#configure-aws-in-fylamynt) which provides no-code drag and drop ability to use AWS [Execution action node](https://docs.fylamynt.com/integrations/aws#aws-execution-action) and allows calling any AWS API endpoint supported by the boto3 library, in this case using Cloudwatch Get Metric Statistics for different services. The workflow also integrates with [Jira ](https://docs.fylamynt.com/integrations/jira)to create issues, [Slack ](https://docs.fylamynt.com/integrations/slack)to send messages, and lastly [Twilio ](https://docs.fylamynt.com/integrations/twilio)to send urgent SMS to users related to the issue at hand.

![](/files/87Es2Hz5GuqUR5PRkAP6)

&#x20;

### **Workflow review:**

![](/files/vLWMA7nMgvan8AeCA5R1)

Our example workflow is triggered from a Datadog Alert which retrieves the alert body, in JSON format, from the preconfigured Datadog Monitor.

![](/files/U7BSiQqVeq6toreYcdAw)

The API results are retrieved from Datadog and presented to the team via a Slack message which summarized the workflow. The summary information is sent out at the end of the workflow.

&#x20;![](/files/wGimhO5RdR23waxGUUfq)

The first metric retrieved across a specified date range is the AWS Lambda errors using the [AWS Execution action node](https://docs.fylamynt.com/integrations/aws).

&#x20;![](/files/OtDxVMNCdtUrCvUpat84)

The output of AWS Lambda error metrics is then used as the input for the conditional node and compared to the comparison value. If the value is greater then a Jira issue is created.

&#x20;

&#x20;![](/files/lVJIryEeepNFBNjHuWBF)

The next error metric retrieved across a specified date range is the AWS ApiGateway latency metrics using the [AWS Execution action node](https://docs.fylamynt.com/integrations/aws).

The output of AWS ApiGateway latency metrics is then used as the input for the conditional node and compared to the comparison value. If the value is greater then a Jira issue is created which corresponds to this observation.

&#x20;![](/files/CltD54EgX21ndKNQVAz9)

The next error metric retrieved across a specified date range is the AWS DynamoDB Read Throttle Events metrics for a specific table using the [AWS Execution action node](https://docs.fylamynt.com/integrations/aws).

&#x20;![](/files/X4CgMuMMAEvsOB2dm3v6)

The output of AWS DynamoDB Read Throttle events is then used as the input for the conditional node and compared to the comparison value. If the value is greater then an SMS message is sent to a specific recipient using the Twilio action node.

&#x20;![](/files/4bhKr3kgigp6sbnjLVPB)

Next, an approval request is sent to a Slack channel to increase the ReadCapacityUnits to 5 to unblock the table.

&#x20;![](/files/FGHzyJc0GXubfRtuSK2E)

If the request is approved, the [AWS Execution action node](https://docs.fylamynt.com/integrations/aws) is used to increase the ReadCapacityUnits to 5.

A message is also sent to a Slack Channel to inform the team of the DynamoDB table change that was made.

&#x20;![](/files/3X4XjOHtsl8TkUj2gs3x)

The last error metric retrieved is the AWS ApiGateway for 5XXError using the [AWS Execution action node](https://docs.fylamynt.com/integrations/aws).

&#x20;

The output of AWS ApiGateway 5XX Error is then used as the input for the conditional node and compared to the comparison value. If the value is greater a Slack message is sent to notify the team that Api Gateway 500 errors exceeded the default ratio.

&#x20;![](/files/i09qM5JpUqtkr4uUGn7Q)

The final step in the workflow is to send a summary of all the information collected.<br>


# What's new?

Stay tuned for more updates!


# Contact Fylamynt

## Contact Sales

Thank you for your interest in Fylamynt. If you'd like to speak to a sales representative, please take a moment to fill in the brief form. A Fylamynt representative will contact you shortly.\
Note: All fields are required.

### <https://www.fylamynt.com/contact>

To know more about our pricing model - <https://www.fylamynt.com/pricing>

## Looking for Support?

You can:

{% tabs %}
{% tab title="Create & manage support cases" %}
*Please email us at <support@fylamynt.com>*
{% endtab %}

{% tab title="Get knowledge & answers to questions" %}
*Please email us at <support@fylamynt.com>*
{% endtab %}
{% endtabs %}


