Memcached

Memcached

Memcached is a general-purpose distributed memory-caching system. It is often used to speed up dynamic database-driven websites by caching data and objects in RAM to reduce the number of times an external data source (such as a database or API) must be read.

Available solutions




Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/memcached


Template App Memcached

Overview

For Zabbix version: 5.0
The template to monitor Memcached server by Zabbix that work without any external scripts. Most of the metrics are collected in one go, thanks to Zabbix bulk data collection.

Template App Memcached — collects metrics by polling zabbix-agent2.

This template was tested on:

  • Memcached, version 1.4, 1.5, 1.6

Setup

Setup and configure zabbix-agent2 compiled with the Memcached monitoring plugin (ZBXNEXT-5767-4.5).

Test availability: zabbix_get -s memcached-host -k memcached.ping

Zabbix configuration

No specific Zabbix configuration is required.

Macros used

Name Description Default
{$MEMCACHED.CONN.PRC.MAX.WARN}

Maximum percentage of connected clients

80
{$MEMCACHED.CONN.QUEUED.MAX.WARN}

Maximum number of queued connections per second

1
{$MEMCACHED.CONN.THROTTLED.MAX.WARN}

Maximum number of throttled connections per second

1
{$MEMCACHED.CONN.URI}

Connection string in the URI format (password is not used). This param overwrites a value configured in the "Plugins.Memcached.Uri" option of the configuration file (if it's set), otherwise, the plugin's default value is used: "tcp://localhost:11211"

tcp://localhost:11211
{$MEMCACHED.MEM.PUSED.MAX.WARN}

Maximum percentage of memory used

90

Template links

There are no template links in this template.

Discovery rules

Items collected

Group Name Description Type Key and additional info
Memcached Memcached: Ping ZABBIX_PASSIVE memcached.ping["{$MEMCACHED.CONN.URI}"]

Preprocessing:

- DISCARD_UNCHANGED_HEARTBEAT: 10m

Memcached Memcached: Max connections

Max number of concurrent connections

DEPENDENT memcached.connections.max

Preprocessing:

- JSONPATH: $.max_connections

- DISCARD_UNCHANGED_HEARTBEAT: 30m

Memcached Memcached: Maximum number of bytes

Maximum number of bytes allowed in cache. You can adjust this setting via a config file or the command line while starting your Memcached server.

DEPENDENT memcached.config.limit_maxbytes

Preprocessing:

- JSONPATH: $.limit_maxbytes

- DISCARD_UNCHANGED_HEARTBEAT: 30m

Memcached Memcached: CPU sys

System CPU consumed by the Memcached server

DEPENDENT memcached.cpu.sys

Preprocessing:

- JSONPATH: $.rusage_system

Memcached Memcached: CPU user

User CPU consumed by the Memcached server

DEPENDENT memcached.cpu.user

Preprocessing:

- JSONPATH: $.rusage_user

Memcached Memcached: Queued connections per second

Number of times that memcached has hit its connections limit and disabled its listener

DEPENDENT memcached.connections.queued.rate

Preprocessing:

- JSONPATH: $.listen_disabled_num

- CHANGE_PER_SECOND

Memcached Memcached: New connections per second

Number of connections opened per second

DEPENDENT memcached.connections.rate

Preprocessing:

- JSONPATH: $.total_connections

- CHANGE_PER_SECOND

Memcached Memcached: Throttled connections

Number of times a client connection was throttled. When sending GETs in batch mode and the connection contains too many requests (limited by -R parameter) the connection might be throttled to prevent starvation.

DEPENDENT memcached.connections.throttled.rate

Preprocessing:

- JSONPATH: $.conn_yields

- CHANGE_PER_SECOND

Memcached Memcached: Connection structures

Number of connection structures allocated by the server

DEPENDENT memcached.connections.structures

Preprocessing:

- JSONPATH: $.connection_structures

Memcached Memcached: Open connections

The number of clients presently connected

DEPENDENT memcached.connections.current

Preprocessing:

- JSONPATH: $.curr_connections

Memcached Memcached: Commands: FLUSH per second

The flush_all command invalidates all items in the database. This operation incurs a performance penalty and shouldn’t take place in production, so check your debug scripts.

DEPENDENT memcached.commands.flush.rate

Preprocessing:

- JSONPATH: $.cmd_flush

- CHANGE_PER_SECOND

Memcached Memcached: Commands: GET per second

Number of GET requests received by server per second.

DEPENDENT memcached.commands.get.rate

Preprocessing:

- JSONPATH: $.cmd_get

- CHANGE_PER_SECOND

Memcached Memcached: Commands: SET per second

Number of SET requests received by server per second.

DEPENDENT memcached.commands.set.rate

Preprocessing:

- JSONPATH: $.cmd_set

- CHANGE_PER_SECOND

Memcached Memcached: Process id

PID of the server process

DEPENDENT memcached.process_id

Preprocessing:

- JSONPATH: $.pid

- DISCARD_UNCHANGED_HEARTBEAT: 1d

Memcached Memcached: Memcached version

Version of the Memcached server

DEPENDENT memcached.version

Preprocessing:

- JSONPATH: $.version

- DISCARD_UNCHANGED_HEARTBEAT: 1d

Memcached Memcached: Uptime

Number of seconds since Memcached server start

DEPENDENT memcached.uptime

Preprocessing:

- JSONPATH: $.uptime

Memcached Memcached: Bytes used

Current number of bytes used to store items.

DEPENDENT memcached.stats.bytes

Preprocessing:

- JSONPATH: $.bytes

Memcached Memcached: Written bytes per second

The network's read rate per second in B/sec

DEPENDENT memcached.stats.bytes_written.rate

Preprocessing:

- JSONPATH: $.bytes_written

- CHANGE_PER_SECOND

Memcached Memcached: Read bytes per second

The network's read rate per second in B/sec

DEPENDENT memcached.stats.bytes_read.rate

Preprocessing:

- JSONPATH: $.bytes_read

- CHANGE_PER_SECOND

Memcached Memcached: Hits per second

Number of successful GET requests (items requested and found) per second.

DEPENDENT memcached.stats.hits.rate

Preprocessing:

- JSONPATH: $.get_hits

- CHANGE_PER_SECOND

Memcached Memcached: Misses per second

Number of missed GET requests (items requested but not found) per second.

DEPENDENT memcached.stats.misses.rate

Preprocessing:

- JSONPATH: $.get_misses

- CHANGE_PER_SECOND

Memcached Memcached: Evictions per second

"An eviction is when an item that still has time to live is removed from the cache because a brand new item needs to be allocated.

The item is selected with a pseudo-LRU mechanism.

A high number of evictions coupled with a low hit rate means your application is setting a large number of keys that are never used again."

DEPENDENT memcached.stats.evictions.rate

Preprocessing:

- JSONPATH: $.evictions

- CHANGE_PER_SECOND

Memcached Memcached: New items per second

Number of new items stored per second.

DEPENDENT memcached.stats.total_items.rate

Preprocessing:

- JSONPATH: $.total_items

- CHANGE_PER_SECOND

Memcached Memcached: Current number of items stored

Current number of items stored by this instance.

DEPENDENT memcached.stats.curr_items

Preprocessing:

- JSONPATH: $.curr_items

Memcached Memcached: Threads

Number of worker threads requested

DEPENDENT memcached.stats.threads

Preprocessing:

- JSONPATH: $.threads

Zabbix_raw_items Memcached: Get status ZABBIX_PASSIVE memcached.stats["{$MEMCACHED.CONN.URI}"]

Triggers

Name Description Expression Severity Dependencies and additional info
Memcached: Service is down

-

{TEMPLATE_NAME:memcached.ping["{$MEMCACHED.CONN.URI}"].last()}=0 AVERAGE

Manual close: YES

Memcached: Failed to fetch info data (or no data for 30m)

Zabbix has not received data for items for the last 30 minutes

{TEMPLATE_NAME:memcached.cpu.sys.nodata(30m)}=1 WARNING

Manual close: YES

Depends on:

- Memcached: Service is down

Memcached: Too many queued connections (over {$MEMCACHED.CONN.QUEUED.MAX.WARN} in 5m)

The max number of connections is reachedand and a new connection had to wait in the queue as a result.

{TEMPLATE_NAME:memcached.connections.queued.rate.min(5m)}>{$MEMCACHED.CONN.QUEUED.MAX.WARN} WARNING
Memcached: Too many throttled connections (over {$MEMCACHED.CONN.THROTTLED.MAX.WARN} in 5m)

Number of times a client connection was throttled is too hight.

When sending GETs in batch mode and the connection contains too many requests (limited by -R parameter) the connection might be throttled to prevent starvation.

{TEMPLATE_NAME:memcached.connections.throttled.rate.min(5m)}>{$MEMCACHED.CONN.THROTTLED.MAX.WARN} WARNING
Memcached: Total number of connected clients is too high (over {$MEMCACHED.CONN.PRC.MAX.WARN}% in 5m)

When the number of connections reaches the value of the "max_connections" parameter, new connections will be rejected.

{TEMPLATE_NAME:memcached.connections.current.min(5m)}/{Template App Memcached:memcached.connections.max.last()}*100>{$MEMCACHED.CONN.PRC.MAX.WARN} WARNING
Memcached: Version has changed (new version: {ITEM.VALUE})

Memcached version has changed. Ack to close.

{TEMPLATE_NAME:memcached.version.diff()}=1 and {TEMPLATE_NAME:memcached.version.strlen()}>0 INFO

Manual close: YES

Memcached: has been restarted (uptime < 10m)

Uptime is less than 10 minutes

{TEMPLATE_NAME:memcached.uptime.last()}<10m INFO

Manual close: YES

Memcached: Memory usage is too high (over {$MEMCACHED.MEM.PUSED.MAX.WARN} in 5m)

-

{TEMPLATE_NAME:memcached.stats.bytes.min(5m)}/{Template App Memcached:memcached.config.limit_maxbytes.last()}*100>{$MEMCACHED.MEM.PUSED.MAX.WARN} WARNING

Feedback

Please report any issues with the template at https://support.zabbix.com

Articles and documentation

+ Propose new article
Add your solution