From 8c76ccff1cdaa974b27ef52e97534c6f640f37cc Mon Sep 17 00:00:00 2001 From: Kelly Date: Fri, 21 Aug 2020 14:38:04 -0700 Subject: [PATCH] roll over Platform troubleshooting docs PR --- content/platform/troubleshooting/_index.md | 34 +++++ .../platform/troubleshooting/disk-usage.md | 112 +++++++++++++++ .../platform/troubleshooting/hhq-buildup.md | 12 ++ content/platform/troubleshooting/iops.md | 12 ++ .../platform/troubleshooting/log-analysis.md | 12 ++ content/platform/troubleshooting/oom-loops.md | 133 ++++++++++++++++++ .../troubleshooting/read-write-volume.md | 12 ++ .../runaway-series-cardinality.md | 12 ++ .../platform/troubleshooting-disk-usage.png | Bin 0 -> 17093 bytes .../img/platform/troubleshooting-oom-loop.png | Bin 0 -> 26402 bytes 10 files changed, 339 insertions(+) create mode 100644 content/platform/troubleshooting/_index.md create mode 100644 content/platform/troubleshooting/disk-usage.md create mode 100644 content/platform/troubleshooting/hhq-buildup.md create mode 100644 content/platform/troubleshooting/iops.md create mode 100644 content/platform/troubleshooting/log-analysis.md create mode 100644 content/platform/troubleshooting/oom-loops.md create mode 100644 content/platform/troubleshooting/read-write-volume.md create mode 100644 content/platform/troubleshooting/runaway-series-cardinality.md create mode 100644 static/img/platform/troubleshooting-disk-usage.png create mode 100644 static/img/platform/troubleshooting-oom-loop.png diff --git a/content/platform/troubleshooting/_index.md b/content/platform/troubleshooting/_index.md new file mode 100644 index 000000000..681114d44 --- /dev/null +++ b/content/platform/troubleshooting/_index.md @@ -0,0 +1,34 @@ +--- +title: Troubleshooting issues using InfluxData Platform monitoring +description: placeholder +menu: + platform: + name: Troubleshooting issues + weight: 25 +--- + +With a [monitored TICK stack](/platform/monitoring), identifying, diagnosing, and resolving problems is much easier. +This section walks through recognizing and solving important issues that commonly appear in the recommended monitored metrics. + +## [Out-of-memory loops](/platform/troubleshooting/oom-loops) + +How to identify and resolve out-of-memory (OOM) loops in your TICK stack. + + + +## [Disk usage](/platform/troubleshooting/disk-usage) + +How to identify and resolve high disk usage in your TICK stack. + + diff --git a/content/platform/troubleshooting/disk-usage.md b/content/platform/troubleshooting/disk-usage.md new file mode 100644 index 000000000..680fe3083 --- /dev/null +++ b/content/platform/troubleshooting/disk-usage.md @@ -0,0 +1,112 @@ +--- +title: Troubleshooting disk usage +description: How to identify and troubleshoot high disk usage when using InfluxData's TICK stack. +menu: + platform: + name: Disk usage + parent: Troubleshooting issues + weight: 4 +--- + +It's very important that components of your TICK stack do not run out of disk. +A machine with 100% disk usage will not function properly. + +In a [monitoring dashboard](/platform/monitoring/monitoring-dashboards), high disk usage +will appear in the **Disk Utilization %** metric and look similar to the following: + +![High disk usage](/img/platform/troubleshooting-disk-usage.png) + +## Potential causes + +### Old data not being downsampled + +InfluxDB uses retention policies and continuous queries to downsample older data and preserve disk space. +If using an infinite retention policy or one with a lengthy duration, high resolution +data will use more and more disk space. + +### Log data not being dropped + + +Log data is incredibly useful in your monitoring solution, but can also require +more disk space than other types of time series data. +Many times, log data is stored in an infinite retention policy (the default retention +policy duration), meaning it never gets dropped. +This will inevitably lead to high disk utilization. + +## Solutions + +### Remove unnecessary data + +The simplest solution to high disk utilization is removing old or unnecessary data. +This can be done by brute force (deleting/dropping data) or in a more graceful +manner by tuning the duration of your retention policies and adjusting the downsampling +rates in your continuous queries. + +#### Log data retention policies + +Log data should only be stored in a finite +[retention policy](/influxdb/latest/query_language/database_management/#retention-policy-management). +The duration of your retention policy is determined by how long you want to keep +log data around. + +Whether or not you use a [continuous query](/influxdb/latest/query_language/continuous_queries/) +to downsample log data at the end of its retention period is up to you, but old log +data should either be downsampled or dropped altogether. + +### Scale your machine's disk capacity + +If removing or downsampling data isn't an option, you can always scale your machine's +disk capacity. How this is done depends on your hardware or virtualization configuration +and is not covered in this documentation. + +## Recommendations + +### Set up a disk usage alert + +To preempt disk utilization issues, create a task that alerts you if disk usage +crosses certain thresholds. The example TICKscript [below](#example-tickscript-alert-for-disk-usage) +sets warning and critical disk usage thresholds and sends a message to Slack +whenever those thresholds are crossed. + +_For information about Kapacitor tasks and alerts, see the [Kapacitor alerts](/kapacitor/latest/working/alerts/) documentation._ + +#### Example TICKscript alert for disk usage +``` +// Disk usage alerts +// Alert when disks are this % full +var warn_threshold = 80 +var crit_threshold = 90 + +// Use a larger period here, as the telegraf data can be a little late +// if the server is under load. +var period = 10m + +// How often to query for the period. +var every = 20m + +var data = batch + |query(''' + SELECT last(used_percent) FROM "telegraf"."default".disk + WHERE ("path" = '/influxdb/conf' or "path" = '/') + ''') + .period(period) + .every(every) + .groupBy('host', 'path') + +data + |alert() + .id('Alert: Disk Usage, Host: {{ index .Tags "host" }}, Path: {{ index .Tags "path" }}') + .warn(lambda: "last" > warn_threshold) + .message('{{ .ID }}, Used Percent: {{ index .Fields "last" | printf "%0.0f" }}%') + .details('') + .stateChangesOnly() + .slack() + +data + |alert() + .id('Alert: Disk Usage, Host: {{ index .Tags "host" }}, Path: {{ index .Tags "path" }}') + .crit(lambda: "last" > crit_threshold) + .message('{{ .ID }}, Used Percent: {{ index .Fields "last" | printf "%0.0f" }}%') + .details('') + .slack() +``` diff --git a/content/platform/troubleshooting/hhq-buildup.md b/content/platform/troubleshooting/hhq-buildup.md new file mode 100644 index 000000000..fa81e0992 --- /dev/null +++ b/content/platform/troubleshooting/hhq-buildup.md @@ -0,0 +1,12 @@ +--- +title: Troubleshooting Hinted Handoff Queue buildup +description: placeholder +draft: true +menu: + platform: + name: Hinted Handoff Queue buildup + parent: Troubleshooting issues + weight: 3 +--- + +_PLACEHOLDER_ diff --git a/content/platform/troubleshooting/iops.md b/content/platform/troubleshooting/iops.md new file mode 100644 index 000000000..4708bdf7f --- /dev/null +++ b/content/platform/troubleshooting/iops.md @@ -0,0 +1,12 @@ +--- +title: Troubleshooting IOPS +description: placeholder +draft: true +menu: + platform: + name: IOPS + parent: Troubleshooting issues + weight: 5 +--- + +_PLACEHOLDER_ diff --git a/content/platform/troubleshooting/log-analysis.md b/content/platform/troubleshooting/log-analysis.md new file mode 100644 index 000000000..61c9ec056 --- /dev/null +++ b/content/platform/troubleshooting/log-analysis.md @@ -0,0 +1,12 @@ +--- +title: Troubleshooting with log analysis +description: placeholder +draft: true +menu: + platform: + name: Log analysis + parent: Troubleshooting issues + weight: 6 +--- + +_PLACEHOLDER_ diff --git a/content/platform/troubleshooting/oom-loops.md b/content/platform/troubleshooting/oom-loops.md new file mode 100644 index 000000000..08f44f34e --- /dev/null +++ b/content/platform/troubleshooting/oom-loops.md @@ -0,0 +1,133 @@ +--- +title: Troubleshooting out-of-memory loops +description: How to identify and troubleshoot out-of-memory (OOM) loops when using InfluxData's TICK stack. +menu: + platform: + name: Out-of-memory loops + parent: Troubleshooting issues + weight: 1 +--- + +Out-of-memory (OOM) loops occur when a running process consumes an increasing amount +of memory until the operating system is forced to kill and restart the process. +When the process is killed, memory allocated to the process is released, but after +restarting, it continues to use more and more RAM until the cycle repeats. + +In a [monitoring dashboard](/platform/monitoring/monitoring-dashboards), an OOM loop +will appear in the **Memory Usage %** metric and look similar to the following: + +![OOM Loop](/img/platform/troubleshooting-oom-loop.png) + +## Potential causes + +The causes of OOM loops can vary widely and depend on your specific use case of +the TICK stack, but the following is the most common: + +### Unoptimized queries + +What is queried and how it's queried can drastically affect the memory usage and performance of InfluxDB. +An OOM loop will occur as a result of a repeated issuance of a query which exhausts memory. +For example, a dashboard cell with which is set to refresh every 30s. + +#### Selecting a measurement without specifying a time range + +When selecting from a measurement without specifying a time range, InfluxDB attempts +to pull data points from the beginning of UNIX epoch time (00:00:00 UTC on 1 January 1970), +storing the returned data in memory until it's ready for output. +The operating system will eventually kill the process due to high memory usage. + +###### Example of selecting a measurement without a time range + +```sql +SELECT * FROM "telegraf"."autogen"."cpu" +``` + +## Solutions + +### Identify and update unoptimized queries + +The most common cause of OOM loops in InfluxDB is unoptimized queries, but it can +be challenging to identify what queries could be better optimized. +InfluxQL includes tools to help identify the "cost" of queries and gain insight +into what queries have room for optimization. + +#### View your InfluxDB logs + +If a query is killed, it is logged by InfluxDB. +View your [InfluxDB logs](/influxdb/latest/administration/logs/) for hints as to what queries are being killed. + +#### Estimate query cost + +InfluxQL's [`EXPLAIN` statement](/influxdb/latest/query_language/spec#explain) +parses and plans a query, then outputs a summary of estimated costs. +This allows you to estimate how resource-intensive a query may be before having to +run the actual query. + +###### Example EXPLAIN statement + +``` +> EXPLAIN SELECT * FROM "telegraf"."autogen"."cpu" + +QUERY PLAN +---------- +EXPRESSION: +AUXILIARY FIELDS: cpu::tag, host::tag, usage_guest::float, usage_guest_nice::float, usage_idle::float, usage_iowait::float, usage_irq::float, usage_nice::float, usage_softirq::float, usage_steal::float, usage_system::float, usage_user::float +NUMBER OF SHARDS: 12 +NUMBER OF SERIES: 108 +CACHED VALUES: 38250 +NUMBER OF FILES: 1080 +NUMBER OF BLOCKS: 10440 +SIZE OF BLOCKS: 23252999 +``` + +> `EXPLAIN` will only output what iterators are created by the query engine. +> It does not capture any other information within the query engine such as how many points will actually be processed. + +#### Analyze actual query cost + +InfluxQL's [`EXPLAIN ANALYZE` statement](/influxdb/latest/query_language/spec/#explain-analyze) +actually executes a query and counts the costs during runtime. + +###### Example EXPLAIN ANALYZE statement + +``` +> EXPLAIN ANALYZE SELECT * FROM "telegraf"."autogen"."cpu" WHERE time > now() - 1d + +EXPLAIN ANALYZE +--------------- +. +└── select + ├── execution_time: 104.608549ms + ├── planning_time: 5.08487ms + ├── total_time: 109.693419ms + └── build_cursor + ├── labels + │   └── statement: SELECT cpu::tag, host::tag, usage_guest::float, usage_guest_nice::float, usage_idle::float, usage_iowait::float, usage_irq::float, usage_nice::float, usage_softirq::float, usage_steal::float, usage_system::float, usage_user::float FROM telegraf.autogen.cpu + └── iterator_scanner + ├── labels + │   └── auxiliary_fields: cpu::tag, host::tag, usage_guest::float, usage_guest_nice::float, usage_idle::float, usage_iowait::float, usage_irq::float, usage_nice::float, usage_softirq::float, usage_steal::float, usage_system::float, usage_user::float + └── create_iterator + ├── labels + │   ├── measurement: cpu + │   └── shard_id: 317 + ├── cursors_ref: 0 + ├── cursors_aux: 90 + ├── cursors_cond: 0 + ├── float_blocks_decoded: 450 + ├── float_blocks_size_bytes: 960943 + ├── integer_blocks_decoded: 0 + ├── integer_blocks_size_bytes: 0 + ├── unsigned_blocks_decoded: 0 + ├── unsigned_blocks_size_bytes: 0 + ├── string_blocks_decoded: 0 + ├── string_blocks_size_bytes: 0 + ├── boolean_blocks_decoded: 0 + ├── boolean_blocks_size_bytes: 0 + └── planning_time: 4.523978ms +``` + +### Scale available memory + +If possible, increase the amount of memory available to InfluxDB. +This is easier if running in a virtualized or cloud environment where resources can be scaled on the fly. +In environments with a fixed set of resources, this can be a very difficult challenge to overcome. diff --git a/content/platform/troubleshooting/read-write-volume.md b/content/platform/troubleshooting/read-write-volume.md new file mode 100644 index 000000000..29d6e133a --- /dev/null +++ b/content/platform/troubleshooting/read-write-volume.md @@ -0,0 +1,12 @@ +--- +title: Troubleshooting the volume of reads and writes +description: placeholder +draft: true +menu: + platform: + name: Volume of reads and writes + parent: Troubleshooting issues + weight: 7 +--- + +_PLACEHOLDER_ diff --git a/content/platform/troubleshooting/runaway-series-cardinality.md b/content/platform/troubleshooting/runaway-series-cardinality.md new file mode 100644 index 000000000..8277f43a4 --- /dev/null +++ b/content/platform/troubleshooting/runaway-series-cardinality.md @@ -0,0 +1,12 @@ +--- +title: Troubleshooting runaway series cardinality +description: placeholder +draft: true +menu: + platform: + name: Runaway series cardinality + parent: Troubleshooting issues + weight: 2 +--- + +_PLACEHOLDER_ diff --git a/static/img/platform/troubleshooting-disk-usage.png b/static/img/platform/troubleshooting-disk-usage.png new file mode 100644 index 0000000000000000000000000000000000000000..6dde0a5284310f932076f4882c4bdc747ed5eee1 GIT binary patch literal 17093 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 literal 0 HcmV?d00001 diff --git a/static/img/platform/troubleshooting-oom-loop.png b/static/img/platform/troubleshooting-oom-loop.png new file mode 100644 index 0000000000000000000000000000000000000000..693bac5469b501f0d08a856341bdd72ad0085401 GIT binary patch literal 26402 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 z%0Do=B*G(s`PW|0U@i&|(`x{Nf>)BImECqxb!vgOKtjw@lLct2; z9u+R!5@djXhO8tzYv|x0_UKiAA_}SVH`|LAG$Ay0bo4@G%n8)YOA-<$n>kmL(^2s0o{XA6BRIX42gZ>AiEW5P; literal 0 HcmV?d00001