You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

532 lines
29 KiB

<form script="base_page_common.js" version="1.1">
<label>ELB Instances - AWS</label>
<fieldset submitButton="false">
<input type="multiselect" token="accountId" id="ip1" searchWhenChanged="true">
<label>Account ID</label>
<choice value="*">All</choice>
<search>
<query>
<![CDATA[ |aclinputlookup all_account_ids | mvcombine delim=", " name | nomv name | eval title=account_id." (".name.")" ]]>
</query>
</search>
<prefix> (</prefix>
<suffix>) </suffix>
<valuePrefix>aws_account_id="</valuePrefix>
<valueSuffix>"</valueSuffix>
<delimiter> OR </delimiter>
<fieldForValue>account_id</fieldForValue>
<fieldForLabel>title</fieldForLabel>
</input>
<input type="multiselect" token="region" id="ip2" searchWhenChanged="true">
<label>Regions</label>
<choice value="*">All</choice>
<search>
<query>
<![CDATA[ |inputlookup regions ]]>
</query>
</search>
<prefix>(</prefix>
<suffix>)</suffix>
<valuePrefix>region="</valuePrefix>
<valueSuffix>"</valueSuffix>
<delimiter> OR </delimiter>
<fieldForValue>region</fieldForValue>
<fieldForLabel>label</fieldForLabel>
</input>
<input type="dropdown" token="elbType" searchWhenChanged="true">
<label>ELB Type</label>
<default>elb</default>
<choice value="elb">All</choice>
<choice value="clb">Classic Load Balancer</choice>
<choice value="alb">Application Load Balancer</choice>
<change>
<condition value="Classic Load Balancer">
<set token="form.elbType">clb</set>
</condition>
<condition value="Application Load Balancer">
<set token="form.elbType">alb</set>
</condition>
<condition value="elb">
<set token="cloudwatchSource">*</set>
<set token="elbInstances"></set>
<unset token="clbInstances"></unset>
<unset token="albInstances"></unset>
</condition>
<condition value="clb">
<set token="cloudwatchSource">source="*:AWS/ELB"</set>
<set token="clbInstances"></set>
<unset token="elbInstances"></unset>
<unset token="albInstances"></unset>
</condition>
<condition value="alb">
<set token="cloudwatchSource">source="*:AWS/ApplicationELB"</set>
<set token="albInstances"></set>
<unset token="elbInstances"></unset>
<unset token="clbInstances"></unset>
</condition>
</change>
</input>
<input type="time" searchWhenChanged="true">
<label>Time Range</label>
<default>Last 7 days</default>
</input>
</fieldset>
<row>
<panel>
<single>
<title>Total ELBs</title>
<search>
<query>
<![CDATA[
`aws-metadata-$elbType$($accountId$, $region$)`
| stats dc(uniq_id) as count
| nadefault count
]]>
</query>
<earliest>-1d</earliest>
<latest>now</latest>
</search>
<drilldown>
<link target="_blank">
<![CDATA[
search?q=search `aws-metadata-$elbType$($accountId$, $region$)`
| rename AccountId as account_id, SourceSecurityGroup.GroupName as "source_security_group.name"
| table name, account_id, region, dns_name, vpc_id, source_security_group.name&earliest=$earliest$&latest=$latest$
]]>
</link>
</drilldown>
<option name="field">count</option>
</single>
</panel>
<panel>
<single>
<title>Total Requests</title>
<search>
<query>
<![CDATA[
`aws-cloudwatch-elb($accountId$, $region$)` $cloudwatchSource$ metric_name=RequestCount
| stats sum(Sum) as count
| nadefault count
]]>
</query>
<earliest>$earliest$</earliest>
<latest>$latest$</latest>
</search>
<drilldown>
<link target="_blank">
<![CDATA[
search?q=search `aws-cloudwatch-elb($accountId$, $region$)` $cloudwatchSource$ metric_name=RequestCount
| stats sum(Sum) as count by metric_dimensions
| nadefault count&earliest=$earliest$&latest=$latest$
]]>
</link>
</drilldown>
<option name="field">count</option>
</single>
</panel>
<panel>
<single depends="$elbInstances$">
<title>Unhealthy EC2 Instances</title>
<search>
<query>
<![CDATA[
`aws-metadata-clb($accountId$, $region$)`
| eval instances=mvzip('instances{}.InstanceId', 'instances{}.State')
| fields - _raw
| mvexpand instances
| rex field=instances "(?<instance_id>[^,]+),(?<instance_state>[^,]+)"
| dedup instance_id
| stats count(instance_id) as total, count(eval(instance_state="OutOfService")) as count
| append [search `aws-metadata-alb($accountId$, $region$)`
| eval targets=mvzip('TargetGroups{}.TargetHealthDescriptions{}.Target.Id', 'TargetGroups{}.TargetHealthDescriptions{}.TargetHealth.State')
| fields - _raw
| mvexpand targets
| rex field=targets "(?<instance_id>[^,]+),(?<instance_state>[^,]+)"
| dedup instance_id
| stats count(instance_id) as total, count(eval(instance_state!="healthy")) as count ]
| stats sum(total) as total, sum(count) as count
| nadefault total count
| eval _total_name="EC2 Instances", _total_field=total
]]>
</query>
<earliest>-1d</earliest>
<latest>now</latest>
</search>
<drilldown>
<link target="_blank">
<![CDATA[
search?q=search `aws-metadata-clb($accountId$, $region$)` | eval instances=mvzip('instances{}.InstanceId', 'instances{}.State'), type="Classic Load Balancer" | fields - _raw | mvexpand instances | rex field=instances "(%3F<instance_id>[^,]%2B),(%3F<instance_state>[^,]%2B)" | dedup instance_id | search instance_state="OutOfService" | append [ search `aws-metadata-alb($accountId$, $region$)` | eval targets=mvzip('TargetGroups{}.TargetHealthDescriptions{}.Target.Id', 'TargetGroups{}.TargetHealthDescriptions{}.TargetHealth.State'), type="Application Load Balancer" | fields - _raw | mvexpand targets | rex field=targets "(%3F<instance_id>[^,]%2B),(%3F<instance_state>[^,]%2B)" | dedup instance_id | search instance_state!="healthy" ] | table name, type, instance_id, instance_state | rename type as "Load Balancer Type", name as "Load Balancer Name", instance_id as "Instance ID", instance_state as "Instance State"&amp;earliest=$earliest$&amp;latest=$latest$
]]>
</link>
</drilldown>
<option name="field">count</option>
<option name="useColors">1</option>
<option name="colorBy">value</option>
<option name="colorMode">none</option>
<option name="rangeColors">["0x555","0xd93f3c"]</option>
<option name="rangeValues">[0]</option>
</single>
<single depends="$albInstances$">
<title>Unhealthy EC2 Instances</title>
<search>
<query>
<![CDATA[
`aws-metadata-alb($accountId$, $region$)`
| eval targets=mvzip('TargetGroups{}.TargetHealthDescriptions{}.Target.Id', 'TargetGroups{}.TargetHealthDescriptions{}.TargetHealth.State')
| fields - _raw
| mvexpand targets
| rex field=targets "(?<instance_id>[^,]+),(?<instance_state>[^,]+)"
| dedup instance_id
| stats count(instance_id) as total, count(eval(instance_state!="healthy")) as count
| nadefault total count
| eval _total_name="EC2 Instances", _total_field=total
]]>
</query>
<earliest>-1d</earliest>
<latest>now</latest>
</search>
<drilldown>
<link target="_blank">
<![CDATA[
search?q=search `aws-metadata-alb($accountId$, $region$)` | eval targets=mvzip('TargetGroups{}.TargetHealthDescriptions{}.Target.Id', 'TargetGroups{}.TargetHealthDescriptions{}.TargetHealth.State') | fields - _raw | mvexpand targets | rex field=targets "(%3F<instance_id>[^,]%2B),(%3F<instance_state>[^,]%2B)" | dedup instance_id | search instance_state!="healthy" | table name, instance_id, instance_state | rename name as "Load Balancer Name", instance_id as "Instance ID", instance_state as "Instance State"&amp;earliest=$earliest$&amp;latest=$latest$
]]>
</link>
</drilldown>
<option name="field">count</option>
<option name="useColors">1</option>
<option name="colorBy">value</option>
<option name="colorMode">none</option>
<option name="rangeColors">["0x555","0xd93f3c"]</option>
<option name="rangeValues">[0]</option>
</single>
<single depends="$clbInstances$">
<title>Unhealthy EC2 Instances</title>
<search>
<query>
<![CDATA[
`aws-metadata-clb($accountId$, $region$)`
| eval instances=mvzip('instances{}.InstanceId', 'instances{}.State')
| fields - _raw
| mvexpand instances
| rex field=instances "(?<instance_id>[^,]+),(?<instance_state>[^,]+)"
| dedup instance_id
| stats count(instance_id) as total, count(eval(instance_state="OutOfService")) as count
| nadefault total count
| eval _total_name="EC2 Instances", _total_field=total
]]>
</query>
<earliest>-1d</earliest>
<latest>now</latest>
</search>
<drilldown>
<link target="_blank">
<![CDATA[
search?q=search `aws-metadata-clb($accountId$, $region$)` | eval instances=mvzip('instances{}.InstanceId', 'instances{}.State') | fields - _raw | mvexpand instances | rex field=instances "(%3F<instance_id>[^,]%2B),(%3F<instance_state>[^,]%2B)" | dedup instance_id | search instance_state="OutOfService" | table name, instance_id, instance_state | rename name as "Load Balancer Name", instance_id as "Instance ID", instance_state as "Instance State"&amp;earliest=$earliest$&amp;latest=$latest$
]]>
</link>
</drilldown>
<option name="field">count</option>
<option name="useColors">1</option>
<option name="colorBy">value</option>
<option name="colorMode">none</option>
<option name="rangeColors">["0x555","0xd93f3c"]</option>
<option name="rangeValues">[0]</option>
</single>
</panel>
</row>
<row>
<panel>
<table>
<title>ELB List</title>
<search>
<query>
<![CDATA[
`aws-metadata-$elbType$($accountId$, $region$)`
| eval type=if(Type="application", "Application", "Classic")
| table AccountId, region, name, type, dns_name, vpc_id
| rename AccountId as "Account ID", region as Region, name as "ELB Name", type as "ELB Type", dns_name as "DNS Name", vpc_id as VPC
]]>
</query>
<earliest>-1d</earliest>
<latest>now</latest>
</search>
<option name="count">5</option>
<option name="drilldown">row</option>
</table>
</panel>
</row>
<row>
<panel>
<single>
<title>ELB Error Requests</title>
<search>
<query>
<![CDATA[
`aws-cloudwatch-elb($accountId$, $region$)` $cloudwatchSource$ (metric_name=HTTPCode_ELB_4XX OR metric_name=HTTPCode_ELB_5XX OR metric_name=HTTPCode_ELB_4XX_Count OR metric_name=HTTPCode_ELB_5XX_Count)
| stats sum(Sum) as count
| nadefault count
]]>
</query>
<earliest>$earliest$</earliest>
<latest>$latest$</latest>
</search>
<drilldown>
<link target="_blank">
<![CDATA[
search?q=search `aws-cloudwatch-elb($accountId$, $region$)` $cloudwatchSource$ (metric_name=HTTPCode_ELB_4XX OR metric_name=HTTPCode_ELB_5XX OR metric_name=HTTPCode_ELB_4XX_Count OR metric_name=HTTPCode_ELB_5XX_Count)
| stats sum(Sum) as count by metric_name, metric_dimensions
| nadefault count&earliest=$earliest$&latest=$latest$
]]>
</link>
</drilldown>
<option name="field">count</option>
<option name="useColors">1</option>
<option name="colorBy">value</option>
<option name="colorMode">none</option>
<option name="rangeColors">["0x555","0xd93f3c"]</option>
<option name="rangeValues">[0]</option>
</single>
</panel>
<panel>
<single>
<title>Backend 4XX Responses</title>
<search>
<query>
<![CDATA[
`aws-cloudwatch-elb($accountId$, $region$)` $cloudwatchSource$ (metric_name=HTTPCode_Backend_4XX OR metric_name=HTTPCode_Target_4XX_Count)
| stats sum(Sum) as count
| nadefault count
]]>
</query>
<earliest>$earliest$</earliest>
<latest>$latest$</latest>
</search>
<drilldown>
<link target="_blank">
<![CDATA[
search?q=search `aws-cloudwatch-elb($accountId$, $region$)` $cloudwatchSource$ (metric_name=HTTPCode_Backend_4XX OR metric_name=HTTPCode_Target_4XX_Count)
| stats sum(Sum) as count by metric_name, metric_dimensions
| nadefault count&earliest=$earliest$&latest=$latest$
]]>
</link>
</drilldown>
<option name="field">count</option>
<option name="useColors">1</option>
<option name="colorBy">value</option>
<option name="colorMode">none</option>
<option name="rangeColors">["0x555","0xd93f3c"]</option>
<option name="rangeValues">[0]</option>
</single>
</panel>
<panel>
<single>
<title>Backend 5XX Responses</title>
<search>
<query>
<![CDATA[
`aws-cloudwatch-elb($accountId$, $region$)` $cloudwatchSource$ (metric_name=HTTPCode_Backend_5XX OR metric_name=HTTPCode_Target_5XX_Count)
| stats sum(Sum) as count
| nadefault count
]]>
</query>
<earliest>$earliest$</earliest>
<latest>$latest$</latest>
</search>
<drilldown>
<link target="_blank">
<![CDATA[
search?q=search `aws-cloudwatch-elb($accountId$, $region$)` $cloudwatchSource$ (metric_name=HTTPCode_Backend_5XX OR metric_name=HTTPCode_Target_5XX_Count)
| stats sum(Sum) as count by metric_name, metric_dimensions
| nadefault count&earliest=$earliest$&latest=$latest$
]]>
</link>
</drilldown>
<option name="field">count</option>
<option name="useColors">1</option>
<option name="colorBy">value</option>
<option name="colorMode">none</option>
<option name="rangeColors">["0x555","0xd93f3c"]</option>
<option name="rangeValues">[0]</option>
</single>
</panel>
</row>
<row>
<panel>
<chart>
<title>ELBs by Region</title>
<search>
<query>
<![CDATA[
`aws-metadata-$elbType$($accountId$, $region$)`
| stats dc(uniq_id) as count by region
| lookup regions region OUTPUT label as Region
| fields Region,count
]]>
</query>
<earliest>-1d</earliest>
<latest>now</latest>
</search>
<option name="charting.chart">pie</option>
<option name="charting.drilldown">all</option>
<drilldown>
<link target="_blank">
<![CDATA[
search?q=search `aws-metadata-$elbType$($accountId$, $region$)`
| stats dc(uniq_id) as count by region
| lookup regions region OUTPUT label as Region
| fields Region,count
| search Region="$click.value$"&latest=$latest$&earliest=$earliest$
]]>
</link>
</drilldown>
</chart>
</panel>
<panel>
<chart>
<title>Requests by ELB</title>
<search>
<query>
<![CDATA[
`aws-cloudwatch-elb($accountId$, $region$)` $cloudwatchSource$ metric_name=RequestCount
| `aws-cloudwatch-dimension-rex("LoadBalancerName", "name")`
| rex field=metric_dimensions "([ ,]|^)LoadBalancer=\[app/(?<name>.*?)/"
| `aws-resource-uniqLabel`
| stats sum(Sum) as count by uniq_label
| rename uniq_label as "ELB Name"
]]>
</query>
<earliest>$earliest$</earliest>
<latest>$latest$</latest>
</search>
<option name="charting.chart">pie</option>
<option name="charting.drilldown">all</option>
<drilldown>
<link target="_blank">
<![CDATA[
individual_elb_usage?form.elb_names=$click.value$&earliest=$earliest$&latest=$latest$&form.region=$form.region$&form.accountId=$form.accountId$
]]>
</link>
</drilldown>
</chart>
</panel>
<panel>
<chart>
<title>Requests by HTTP Backend Code</title>
<search>
<query>
<![CDATA[
`aws-cloudwatch-elb($accountId$, $region$)` $cloudwatchSource$ (metric_name=HTTPCode_Backend_2XX OR metric_name=HTTPCode_Backend_3XX OR metric_name=HTTPCode_Backend_4XX OR metric_name=HTTPCode_Backend_5XX OR metric_name=HTTPCode_Target_2XX_Count OR metric_name=HTTPCode_Target_3XX_Count OR metric_name=HTTPCode_Target_4XX_Count OR HTTPCode_Target_5XX_Count)
| eval status_code = case(metric_name == "HTTPCode_Backend_2XX" OR metric_name == "HTTPCode_Target_2XX_Count", "2XX", metric_name == "HTTPCode_Backend_3XX" OR metric_name == "HTTPCode_Target_3XX_Count", "3XX", metric_name == "HTTPCode_Backend_4XX" OR metric_name == "HTTPCode_Target_4XX_Count", "4XX", metric_name == "HTTPCode_Backend_5XX" OR metric_name == "HTTPCode_Target_5XX_Count", "5XX")
| stats sum(Sum) as count by status_code
| rename status_code as "HTTP Backend Code"
]]>
</query>
<earliest>$earliest$</earliest>
<latest>$latest$</latest>
</search>
<option name="charting.chart">pie</option>
<option name="charting.drilldown">all</option>
<drilldown>
<link target="_blank">
<![CDATA[
search?q=search `aws-cloudwatch-elb($accountId$, $region$)` $cloudwatchSource$ (metric_name=HTTPCode_Backend_2XX OR metric_name=HTTPCode_Backend_3XX OR metric_name=HTTPCode_Backend_4XX OR metric_name=HTTPCode_Backend_5XX OR metric_name=HTTPCode_Target_2XX_Count OR metric_name=HTTPCode_Target_3XX_Count OR metric_name=HTTPCode_Target_4XX_Count OR HTTPCode_Target_5XX_Count)
| eval status_code = case(metric_name == "HTTPCode_Backend_2XX" OR metric_name == "HTTPCode_Target_2XX_Count", "2XX", metric_name == "HTTPCode_Backend_3XX" OR metric_name == "HTTPCode_Target_3XX_Count", "3XX", metric_name == "HTTPCode_Backend_4XX" OR metric_name == "HTTPCode_Target_4XX_Count", "4XX", metric_name == "HTTPCode_Backend_5XX" OR metric_name == "HTTPCode_Target_5XX_Count", "5XX")
| stats sum(Sum) as count by status_code
| search status_code="$click.value$"&latest=$latest$&earliest=$earliest$
]]>
</link>
</drilldown>
</chart>
</panel>
</row>
<row>
<panel>
<chart>
<title>Latency per ELB Over Time</title>
<search>
<query>
<![CDATA[
`aws-cloudwatch-elb($accountId$, $region$)` $cloudwatchSource$ (metric_name=Latency OR metric_name=TargetResponseTime)
| eval latency=Average*1000
| `aws-cloudwatch-dimension-rex("LoadBalancerName", "name")`
| rex field=metric_dimensions "([ ,]|^)LoadBalancer=\[app/(?<name>.*?)/"
| `aws-resource-uniqLabel`
| timechart avg(latency) by uniq_label
]]>
</query>
<earliest>$earliest$</earliest>
<latest>$latest$</latest>
</search>
<option name="charting.axisLabelsX.majorLabelStyle.overflowMode">ellipsisNone</option>
<option name="charting.axisLabelsX.majorLabelStyle.rotation">0</option>
<option name="charting.axisTitleX.visibility">collapsed</option>
<option name="charting.axisTitleY.text">Latency (ms)</option>
<option name="charting.axisTitleY.visibility">visible</option>
<option name="charting.axisTitleY2.visibility">visible</option>
<option name="charting.axisX.scale">linear</option>
<option name="charting.axisY.scale">linear</option>
<option name="charting.axisY2.enabled">0</option>
<option name="charting.axisY2.scale">inherit</option>
<option name="charting.chart">line</option>
<option name="charting.chart.bubbleMaximumSize">50</option>
<option name="charting.chart.bubbleMinimumSize">10</option>
<option name="charting.chart.bubbleSizeBy">area</option>
<option name="charting.chart.nullValueMode">connect</option>
<option name="charting.chart.showDataLabels">none</option>
<option name="charting.chart.sliceCollapsingThreshold">0.01</option>
<option name="charting.chart.stackMode">default</option>
<option name="charting.chart.style">shiny</option>
<option name="charting.drilldown">all</option>
<option name="charting.layout.splitSeries">0</option>
<option name="charting.layout.splitSeries.allowIndependentYRanges">0</option>
<option name="charting.legend.labelStyle.overflowMode">ellipsisMiddle</option>
<option name="charting.legend.placement">right</option>
</chart>
</panel>
<panel>
<chart>
<title>Requests per ELB Over Time</title>
<search>
<query>
<![CDATA[
`aws-cloudwatch-elb($accountId$, $region$)` $cloudwatchSource$ metric_name=RequestCount
| `aws-cloudwatch-dimension-rex("LoadBalancerName", "name")`
| rex field=metric_dimensions "([ ,]|^)LoadBalancer=\[app/(?<name>.*?)/"
| `aws-resource-uniqLabel`
| timechart sum(Sum) by uniq_label
]]>
</query>
<earliest>$earliest$</earliest>
<latest>$latest$</latest>
</search>
<option name="charting.axisLabelsX.majorLabelStyle.overflowMode">ellipsisNone</option>
<option name="charting.axisLabelsX.majorLabelStyle.rotation">0</option>
<option name="charting.axisTitleX.visibility">collapsed</option>
<option name="charting.axisTitleY.visibility">collapsed</option>
<option name="charting.axisTitleY2.visibility">visible</option>
<option name="charting.axisX.scale">linear</option>
<option name="charting.axisY.scale">linear</option>
<option name="charting.axisY2.enabled">0</option>
<option name="charting.axisY2.scale">inherit</option>
<option name="charting.chart">line</option>
<option name="charting.chart.bubbleMaximumSize">50</option>
<option name="charting.chart.bubbleMinimumSize">10</option>
<option name="charting.chart.bubbleSizeBy">area</option>
<option name="charting.chart.nullValueMode">connect</option>
<option name="charting.chart.showDataLabels">none</option>
<option name="charting.chart.sliceCollapsingThreshold">0.01</option>
<option name="charting.chart.stackMode">default</option>
<option name="charting.chart.style">shiny</option>
<option name="charting.drilldown">all</option>
<option name="charting.layout.splitSeries">0</option>
<option name="charting.layout.splitSeries.allowIndependentYRanges">0</option>
<option name="charting.legend.labelStyle.overflowMode">ellipsisMiddle</option>
<option name="charting.legend.placement">right</option>
</chart>
</panel>
</row>
</form>