Skip to content
This repository was archived by the owner on May 7, 2024. It is now read-only.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

56 Commits

Repository files navigation

Overview

Candlestack is an open source tool for monitoring dynamic infrastructure deployed via AWS. It is capable of automatically detecting infrastructure changes while utilizing a combination of open source tools to collect, visualize, monitor, and alert on various metrics.

How does it work?

At the heart of the system sits the Candlestack server which runs the Candlestack Java application and Nagios core. The Candlestack Java application performs two main roles:

  1. Monitor the supported AWS services for any changes that requires us to either start or stop monitoring pieces of infrastructure. In the event something has changed it will update the Nagios configuration as applicable.
  2. Collect certain metric data from the AWS CloudWatch service and/or AWS service API and feed it into Elasticsearch via Filebeat and Logstash so that it can be used for monitoring and visualization.

Meanwhile the Nagios core provides the support for monitoring and alerting via a well known industry tool. To send alert emails it utilizes AWS SES but it could also easily utilize SMTP or any other means supported by Nagios core.

Looking beyond the Candlestack server we have an Elasticsearch server or cluster that aggregates and stores the various metrics being collected. These metrics can then be accessed via Kibana to visualize things such as CPU utilization over time. It is also accessed by Nagios as part of its monitoring routine.

Beyond that we have the applications themselves which in some cases will be running tools such as MetricBeat to collect other metric data about the EC2 instance resources such as CPU, disk, and memory.

AWS Support

AWS offers a large number of services, some of which do not make sense to monitor from a systems perspective. That being said Candlestack currently supports the monitoring of the following AWS services with more services to be supported down the road.

EC2

EC2 is the back bone for most dynamic infrastructure in the AWS ecosystem since it provides a variety of on demand hardware for running various applications. Currently Candlestack is able to monitor CPU utilization, network in, and network out for any EC2 instance out of the box thanks to CloudWatch. It is also possible to monitor disk utilization and memory utilization if other services are installed on the EC2 instance such as the munin-node agent.

Elastic Beanstalk

Elastic Beanstalk provides an easy way to deploy applications to AWS EC2 instances along with load balancing and system scaling. Currently Candlestack is able to perform monitoring of the Elastic Beanstalk environment health along with the EC2 instance monitoring mentioned above.

SQS

SQS provides a message queueing service that is often used in place of other JMS providers such as ActiveMQ when deploying infrastructure to AWS. Currently Candlestack is able to monitor on a per queue basis the approximate number of messages, approximate age of oldest message, number of messages received, number of messages sent, and last modified.

RDS

RDS provides a variety of relational database technologies that can be easily spun up with out you needing to know the intricacies of that databases hardware setup. Since each of the database technologies in RDS have different CloudWatch metrics Candlestack currently only supports MariaDB and AuroraDB databases. For a MariaDB database it is able to monitor CPU utilization, number of database connections, and free storage space. As for an AuroraDB database it is able to monitor CPU utilization, number of database connections, volume bytes used, replica lag, and number of active transactions.

S3

S3 provides virtually unlimited storage potential for any files that need to be persisted or accessed via different systems. Since a common use of S3 is to store backups of databases or servers Candlestack currently supports monitoring specific S3 files last modified for staleness.

Installation

To help with the installation of the Candlestack server we have provided an example Docker image file and Elastic Beanstalk template. The Docker image file example located here includes all of the dependencies needed by the Candlestack server to properly function, which includes:

The Elastic Beanstalk template example located here demonstrates the various files that need to be provided and how to start the various components. Throughout the files you will come across variables that are prefixed with $TODO_, which represent places in the script you should replace the variable with a value applicable for your system. You can find a complete list of these variables below along with an explanation of each one.

VariableFile(s)Description
$TODO_DOCKER_IMAGE_LOCATIONDockerfileThe URL to retrieve the base Docker image created by the Docker image file mentioned above
$TODO_NAGIOS_ADMINDockerfileThe desired Nagios admin username
$TODO_NAGIOS_PASSWORDDockerfileThe desired Nagios admin password
$TODO_LOGSTASH_HOSTfilebeat.yml and 00-munin.configThe URL of the Logstash server to be used by Candlestack for sending logs or metric data (Note: you may need to alter the ports depending on your Logstash configuration)
$TODO_FROM_EMAIL_ADDRESSnotify-host-by-email.sh and notify-service-by-email.shThe from email address Nagios should use when sending notification emails
$TODO_REPOSITORYpom.xmlThe maven repository URL to be used when building the deployment
$TODO_SSL_CERTIFICATEelb.configThe SSL certificate ARN to be used by Candlestack server

Configuration

Candlestack has been built to be highly configurable since everyone's infrastructure is different and thus so are their monitoring requirements.

Candlestack Java Application

Outlined below you will find all of the configuration properties for the Java application explained and a sample configuration file has been provided here to get you started.

PropertyRequiredDefaultDescription
metrics.writer.dirtrueN/AThe directory where metrics data collected by Candlestack should be written so that it can be picked up by filebeat. Metric files will always have the filename format candlestack_metrics_yyyy-MM-ddTHH:mm:ss.SSSZ.log and contain lines of JSON with the metric data.
scripts.dirfalse/opt/candlestack/scripts/The directory where the script files for Nagios checks are located. Please see a table below that outlines the various script files that are expected.
nagios.updater.sleep.interval.minfalse10The amount of time in minutes Candlestack should wait between checking the various AWS infrastructure for changes that require alteration of the Nagios configuration files.
nagios.updater.restart.cmdtrueN/AThe system command Candlestack should execute to restart the Nagios process for it to pick up changes to the Nagios configuration files. In most cases this is going to be something like /etc/init.d/nagios restart
nagios.object.definition.dirfalse/var/tmp/nagios/objects/The directory where Candlestack should output the Nagios configuration files it generates based off the detected AWS infrastructure. Be sure to have Nagios configured to look at this directory as well.
nagios.object.definition.user. timeperiodsfalseN/AAn optional setting that allows a user to define custom time periods that can be used alongside the standard ones provided by Candlestack. If provided the value must point to a valid Nagios object definition file, otherwise Nagios will fail to start.
nagios.object.definition.user. checksfalseN/AAn option setting that allows a user to define custom Nagios checks. This is useful for instances when you want Nagios to monitor things that don't fall under Candlestack's radar. If provided the value must point to a valid Nagios object definition file, otherwise Nagios will fail to start.
nagios.command.commandnamefalseN/AIn some instances you may want to define static Nagios command objects. Simply replace the commandname in this variable with a meaningful name and provide the command line to be used as the value. A good example of when this would be used is to define the host and service notification commands.
nagios.contact.default. host.notifications.enabledtrueN/ADefines a default value for the host_notifications_enabled directive for any contact definitions created by Candlestack for Nagios.
nagios.contact.default. host.notification.optionstrueN/ADefines a default value for the host_notification_options directive for any contact definitions created by Candlestack for Nagios.
nagios.contact.default. host.notification.commandstrueN/ADefines a default value for the host_notification_commands directive for any contact definitions created by Candlestack for Nagios.
nagios.contact.default. host.notification.periodtrueN/ADefines a default value for the host_notification_period directive for any contact definitions created by Candlestack for Nagios. Currently only the value 24x7 is supported.
nagios.contact.default. service.notifications.enabledtrueN/ADefines a default value for the service_notifications_enabled directive for any contact definitions created by Candlestack for Nagios.
nagios.contact.default. service.notification.optionstrueN/ADefines a default value for the service_notification_options directive for any contact definitions created by Candlestack for Nagios.
nagios.contact.default. service.notification.commandstrueN/ADefines a default value for the service_notification_commands directive for any contact definitions created by Candlestack for Nagios.
nagios.contact.default. service.notification.periodtrueN/ADefines a default value for the service_notification_period directive for any contact definitions created by Candlestack for Nagios. Currently only the value 24x7 is supported.
nagios.contact.contactname.aliasfalse""Defines the value for the alias directive for this specific contact definition. Simply replace the contactname in this variable with the value of the contact_name directive that should be used when defining the contact.
nagios.contact.contactname.emailtrueN/ADefines the value for the email directive for this specific contact definition. Simply replace the contactname in this variable with the value of the contact_name directive that should be used when defining the contact.
nagios.contact.contactname. host.notifications.enabledfalsenagios.contact. default.host. notifications.enabledDefines the value for the host_notifications_enabled directive for this specific contact definition that should be used instead of the default. Simply replace the contactname in this variable with the value of the contact_name directive that should be used when defining the contact.
nagios.contact.contactname. host.notification.optionsfalsenagios.contact. default.host. notification.optionsDefines the value for the host_notification_options directive for this specific contact definition that should be used instead of the default. Simply replace the contactname in this variable with the value of the contact_name directive that should be used when defining the contact.
nagios.contact.contactname. host.notification.commandsfalsenagios.contact. default.host. notification.commandsDefines the value for the host_notification_commands directive for this specific contact definition that should be used instead of the default. Simply replace the contactname in this variable with the value of the contact_name directive that should be used when defining the contact.
nagios.contact.contactname. host.notification.periodfalsenagios.contact.default. host.notification.periodDefines the value for the host_notification_period directive for this specific contact definition that should be used instead of the default. Simply replace the contactname in this variable with the value of the contact_name directive that should be used when defining the contact. Currently only the value 24x7 is supported.
nagios.contact.contactname. service.notifications.enabledfalsenagios.contact. default.service. notifications.enabledDefines the value for the service_notifications_enabled directive for this specific contact definition that should be used instead of the default. Simply replace the contactname in this variable with the value of the contact_name directive that should be used when defining the contact.
nagios.contact.contactname. service.notification.optionsfalsenagios.contact. default.service. notification.optionsDefines the value for the service_notification_options directive for this specific contact definition that should be used instead of the default. Simply replace the contactname in this variable with the value of the contact_name directive that should be used when defining the contact.
nagios.contact.contactname. service.notification.commandsfalsenagios.contact. default.service. notification.commandsDefines the value for the service_notification_commands directive for this specific contact definition that should be used instead of the default. Simply replace the contactname in this variable with the value of the contact_name directive that should be used when defining the contact.
nagios.contact.contactname. service.notification.periodfalsenagios.contact. default.service. notification.periodDefines the value for the service_notification_period directive for this specific contact definition that should be used instead of the default. Simply replace the contactname in this variable with the value of the contact_name directive that should be used when defining the contact. Currently only the value 24x7 is supported.
nagios.contactgroup. contactgroupname.aliasfalseN/ADefines the value for the alias directive for this specific contact group definition. Simply replace the contactgroupname in this variable with the value of the contactgroup_name directive that should be used when defining the contact group.
nagios.contactgroup. contactgroupname.membersfalseN/ADefines the value for the alias directive for this specific contact group definition. Simply replace the contactgroupname in this variable with the value of the contactgroup_name directive that should be used when defining the contact group.
aws.regiontrueN/AThe AWS region Candlestack should monitor.
aws.logs.hosttrueN/AThe host to use when accessing Elasticsearch for metric data. This value will be used by the Nagios check scripts and is what will be provided as the host property for those scripts (see below for check script properties).
aws.logs.authtokentrueN/AThe authtoken to use when accessing Elasticsearch for metric data. This value will be used by the Nagios check scripts and is what will be provided as the authtoken property for those scripts (see below for check script properties).
aws.cloudwatch.detailed. monitoring.enabledfalsefalseThis flags tells Candlestack whether or not your infrastructure is utilizing detailed CloudWatch monitoring. This allows Candlestack to more accurately target the CloudWatch request period since detailed monitoring results in a data point each minute as opposed to every 5 minutes.
aws.ec2.enabledfalsefalseThis flag tells Candlestack whether or not it should monitor your EC2 infrastructure.
aws.ec2.name.prefixfalse""Currently Candlestack identifies the EC2 instances to monitor via the Name tag associated to the instance. If this property is provided an EC2 instance Name must start with the provided prefix string to be monitored. It is also important to note that EC2 instances created by Elastic Beanstalk will be ignored, to monitor those enable Elastic Beanstalk monitoring.
aws.ec2.name.regexfalse""Currently Candlestack identifies the EC2 instances to monitor via the Name tag associated to the instance. If this property is provided an EC2 instance Name must match the provided regex pattern to be monitored. It is also important to note that EC2 instances created by Elastic Beanstalk will be ignored, to monitor those enable Elastic Beanstalk monitoring.
aws.ec2.metrics.fetcher.sleep.minfalse5The amount of time Candlestack should wait between fetching new metric data for the EC2 instances being monitored. The default value should only be lowered if you have detailed monitoring enabled otherwise you will incur unnecessary CloudWatch API requests.
aws.ec2.metricbeat.metrics.monitorfalse""If you have installed the Metricbeat agent on your EC2 instance then you are able to enable the following metrics to be monitored by Nagios for each EC2 instance. Possible values are CPUUtilization, DiskUtilization, FreeMemory, NetworkIn, and NetworkOut, simply provide a comma separated list of these values if you want multiple enabled.
aws.ec2.metricbeat.metric. warning.default.CPUUtilizationtrueN/AIf you have enabled the CPUUtilization metric you must provide a default warning alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.ec2.metricbeat.metric. critical.default.CPUUtilizationtrueN/AIf you have enabled the CPUUtilization metric you must provide a default critical alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.ec2.metricbeat.metric. warning.default.DiskUtilizationtrueN/AIf you have enabled the DiskUtilization metric you must provide a default warning alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.ec2.metricbeat.metric. critical.default.DiskUtilizationtrueN/AIf you have enabled the DiskUtilization metric you must provide a default critical alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.ec2.metricbeat.metric. warning.default.FreeMemorytrueN/AIf you have enabled the FreeMemory metric you must provide a default warning alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.ec2.metricbeat.metric. critical.default.FreeMemorytrueN/AIf you have enabled the FreeMemory metric you must provide a default critical alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.ec2.metricbeat.metric. warning.default.NetworkIntrueN/AIf you have enabled the NetworkIn metric you must provide a default warning alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.ec2.metricbeat.metric. critical.default.NetworkIntrueN/AIf you have enabled the NetworkIn metric you must provide a default critical alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.ec2.metricbeat.metric. warning.default.NetworkOuttrueN/AIf you have enabled the NetworkOut metric you must provide a default warning alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.ec2.metricbeat.metric. critical.default.NetworkOuttrueN/AIf you have enabled the NetworkOut metric you must provide a default critical alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.ec2.metricbeat.metric. warning.instanceid.CPUUtilizationfalseaws.ec2.metricbeat. metric.warning.default. CPUUtilizationIf you have enabled the CPUUtilization metric you can override the default warning alert value to be used by the corresponding Nagios check script for the specified EC2 instanceid. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.ec2.metricbeat.metric. critical.instanceid.CPUUtilizationfalseaws.ec2.metricbeat. metric.critical.default. CPUUtilizationIf you have enabled the CPUUtilization metric you can override the default critical alert value to be used by the corresponding Nagios check script for the specified EC2 instanceid. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.ec2.metricbeat.metric. warning.instanceid.DiskUtilizationfalseaws.ec2.metricbeat. metric.warning.default. DiskUtilizationIf you have enabled the DiskUtilization metric you can override the default warning alert value to be used by the corresponding Nagios check script for the specified EC2 instanceid. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.ec2.metricbeat.metric. critical.instanceid.DiskUtilizationfalseaws.ec2.metricbeat. metric.critical.default. DiskUtilizationIf you have enabled the DiskUtilization metric you can override the default critical alert value to be used by the corresponding Nagios check script for the specified EC2 instanceid. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.ec2.metricbeat.metric. warning.instanceid.FreeMemoryfalseaws.ec2.metricbeat. metric.warning.default. FreeMemoryIf you have enabled the FreeMemory metric you can override the default warning alert value to be used by the corresponding Nagios check script for the specified EC2 instanceid. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.ec2.metricbeat.metric. critical.instanceid.FreeMemoryfalseaws.ec2.metricbeat. metric.critical.default. FreeMemoryIf you have enabled the FreeMemory metric you can override the default critical alert value to be used by the corresponding Nagios check script for the specified EC2 instanceid. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.ec2.metricbeat.metric. warning.instanceid.NetworkInfalseaws.ec2.metricbeat. metric.warning.default. NetworkInIf you have enabled the NetworkIn metric you can override the default warning alert value to be used by the corresponding Nagios check script for the specified EC2 instanceid. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.ec2.metricbeat.metric. critical.instanceid.NetworkInfalseaws.ec2.metricbeat. metric.critical.default. NetworkInIf you have enabled the NetworkIn metric you can override the default critical alert value to be used by the corresponding Nagios check script for the specified EC2 instanceid. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.ec2.metricbeat.metric. warning.instanceid.NetworkOutfalseaws.ec2.metricbeat. metric.warning.default. NetworkOutIf you have enabled the NetworkOut metric you can override the default warning alert value to be used by the corresponding Nagios check script for the specified EC2 instanceid. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.ec2.metricbeat.metric. critical.instanceid.NetworkOutfalseaws.ec2.metricbeat. metric.critical.default. NetworkOutIf you have enabled the NetworkOut metric you can override the default critical alert value to be used by the corresponding Nagios check script for the specified EC2 instanceid. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.ec2.cloudwatch.metrics.fetchfalse""Enables certain CloudWatch metrics to be fetched by Candlestack but not necessarily monitored by Nagios. Possible values are CPUUtilization, NetworkIn, and NetworkOut, simply provide a comma separated list of these values if you want multiple enabled.
aws.ec2.cloudwatch. metrics.monitorfalse""Enables certain CloudWatch metrics to be monitored by Nagios. It is important that any metrics enabled for monitoring are also enabled for fetching otherwise Nagios alerts will fail due to no data being available for the checks. Possible values are CPUUtilization, NetworkIn, and NetworkOut, simply provide a comma separated list of these values if you want multiple enabled.
aws.ec2.cloudwatch.metric. warning.default.CPUUtilizationtrueN/AIf you have enabled the CPUUtilization metric you must provide a default warning alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.ec2.cloudwatch.metric. critical.default.CPUUtilizationtrueN/AIf you have enabled the CPUUtilization metric you must provide a default critical alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.ec2.cloudwatch.metric. warning.default.NetworkIntrueN/AIf you have enabled the NetworkIn metric you must provide a default warning alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.ec2.cloudwatch.metric. critical.default.NetworkIntrueN/AIf you have enabled the NetworkIn metric you must provide a default critical alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.ec2.cloudwatch.metric. warning.default.NetworkOuttrueN/AIf you have enabled the NetworkOut metric you must provide a default warning alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.ec2.cloudwatch.metric. critical.default.NetworkOuttrueN/AIf you have enabled the NetworkOut metric you must provide a default critical alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.ec2.cloudwatch.metric. warning.instanceid.CPUUtilizationfalseaws.ec2.cloudwatch. metric.warning.default. CPUUtilizationIf you have enabled the CPUUtilization metric you can override the default warning alert value to be used by the corresponding Nagios check script for the specified EC2 instanceid. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.ec2.cloudwatch.metric. critical.instanceid.CPUUtilizationfalseaws.ec2.cloudwatch. metric.critical.default. CPUUtilizationIf you have enabled the CPUUtilization metric you can override the default critical alert value to be used by the corresponding Nagios check script for the specified EC2 instanceid. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.ec2.cloudwatch.metric. warning.instanceid.NetworkInfalseaws.ec2.cloudwatch. metric.warning.default. NetworkInIf you have enabled the NetworkIn metric you can override the default warning alert value to be used by the corresponding Nagios check script for the specified EC2 instanceid. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.ec2.cloudwatch.metric. critical.instanceid.NetworkInfalseaws.ec2.cloudwatch. metric.critical.default. NetworkInIf you have enabled the NetworkIn metric you can override the default critical alert value to be used by the corresponding Nagios check script for the specified EC2 instanceid. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.ec2.cloudwatch.metric. warning.instanceid.NetworkOutfalseaws.ec2.cloudwatch. metric.warning.default. NetworkOutIf you have enabled the NetworkOut metric you can override the default warning alert value to be used by the corresponding Nagios check script for the specified EC2 instanceid. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.ec2.cloudwatch.metric. critical.instanceid.NetworkOutfalseaws.ec2.cloudwatch. metric.critical.default. NetworkOutIf you have enabled the NetworkOut metric you can override the default critical alert value to be used by the corresponding Nagios check script for the specified EC2 instanceid. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.ec2.service.notification.period. instanceidfalsenagios.contact.default. service.notification. periodAllows you to override the notification period for a particular EC2 instance.
aws.eb.enabledfalsefalseThis flag tells Candlestack whether or not it should monitor your Elastic Beanstalk infrastructure.
aws.eb.environment.name.prefixfalse""Currently Candlestack identifies the Elastic Beanstalk environments to monitor via the environment's name. If this property is provided an Elastic Beanstalk environment name must start with the provided prefix string to be monitored.
aws.eb.environment.name.regexfalse""Currently Candlestack identifies the Elastic Beanstalk environments to monitor via the environment's name. If this property is provided an Elastic Beanstalk environment name must match the provided regex to be monitored.
aws.eb.metrics.fetcher.sleep.minfalse5The amount of time Candlestack should wait between fetching new metric data for the Elastic Beanstalk environments being monitored. The default value should only be lowered if you have detailed monitoring enabled otherwise you will incur unnecessary CloudWatch API requests.
aws.eb.cloudwatch.metrics.fetchfalse""Enables certain CloudWatch metrics to be fetched by Candlestack but not necessarily monitored by Nagios. The only possible value is EnvironmentHealth at this time.
aws.eb.cloudwatch. metrics.monitorfalse""Enables certain CloudWatch metrics to be monitored by Nagios. It is important that any metrics enabled for monitoring are also enabled for fetching otherwise Nagios alerts will fail due to no data being available for the checks. The only possible value is EnvironmentHealth at this time.
aws.eb.cloudwatch.metric. warning.default. EnvironmentHealthtrueN/AIf you have enabled the EnvironmentHealth metric you must provide a default warning alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.eb.cloudwatch.metric. critical.default. EnvironmentHealthtrueN/AIf you have enabled the EnvironmentHealth metric you must provide a default critical alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.eb.cloudwatch.metric. warning.environmentname. EnvironmentHealthfalseaws.eb.cloudwatch. metric.warning.default. EnvironmentHealthIf you have enabled the EnvironmentHealth metric you can override the default warning alert value to be used by the corresponding Nagios check script for the specified Elastic Beanstalk environmentname. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.eb.cloudwatch.metric. critical.environmentname. EnvironmentHealthfalseaws.eb.cloudwatch. metric.critical.default. EnvironmentHealthIf you have enabled the EnvironmentHealth metric you can override the default critical alert value to be used by the corresponding Nagios check script for the specified Elastic Beanstalk environmentname. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.eb.service.notification.period. environmentnamefalsenagios.contact.default. service.notification. periodAllows you to override the notification period for a particular Elastic Beanstalk environment.
aws.sqs.enabledfalsefalseThis flag tells Candlestack whether or not it should monitor your SQS infrastructure.
aws.sqs.queue.name.prefixfalse""Currently Candlestack identifies the SQS queues to monitor via the queue's name. If this property is provided an SQS queue name must start with the provided prefix string to be monitored.
aws.sqs.queue.name.regexfalse""Currently Candlestack identifies the SQS queues to monitor via the queue's name. If this property is provided an SQS queue name must match the provided regex string to be monitored.
aws.sqs.monitor.deadletterfalsetrueFlag for whether or not the SQS dead letter queue should be monitored regardless of the queue name prefix or regex properties.
aws.sqs.metrics.fetcher.sleep.minfalse5The amount of time Candlestack should wait between fetching new metric data for the SQS queues being monitored. The default value should only be lowered if you have detailed monitoring enabled otherwise you will incur unnecessary CloudWatch API requests.
aws.sqs.queue.attributes.fetchfalse""Enables certain SQS queue attributes to be fetched by Candlestack but not necessarily monitored by Nagios. Possible values are ApproximateNumberOfMessages and LastModifiedTimestamp, simply provide a comma separated list of these values if you want multiple enabled.
aws.sqs.queue.attributes.monitorfalse""Enables certain SQS queue attributes to be monitored by Nagios. It is important that any queue attributes enabled for monitoring are also enabled for fetching otherwise Nagios alerts will fail due to no data being available for the checks. Possible values are ApproximateNumberOfMessages and LastModifiedTimestamp, simply provide a comma separated list of these values if you want multiple enabled.
aws.sqs.queue.attribute. warning.default. ApproximateNumberOfMessagetrueN/AIf you have enabled the ApproximateNumberOfMessages attribute you must provide a default warning alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.sqs.queue.attribute. critical.default. ApproximateNumberOfMessagetrueN/AIf you have enabled the ApproximateNumberOfMessages attribute you must provide a default critical alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.sqs.queue.attribute. warning.default. LastModifiedTimestamptrueN/AIf you have enabled the LastModifiedTimestamp attribute you must provide a default warning alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.sqs.queue.attribute. critical.default. LastModifiedTimestamptrueN/AIf you have enabled the LastModifiedTimestamp attribute you must provide a default critical alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.sqs.queue.attribute. warning.queuename. ApproximateNumberOfMessagefalseaws.sqs.queue.attribute. warning.default. ApproximateNumber OfMessageIf you have enabled the ApproximateNumberOfMessages attribute you can override the default warning alert value to be used by the corresponding Nagios check script for the specified SQS queuename. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.sqs.queue.attribute. critical.queuename. ApproximateNumberOfMessagefalseaws.sqs.queue.attribute. critical.default. ApproximateNumber OfMessageIf you have enabled the ApproximateNumberOfMessages attribute you can override the default critical alert value to be used by the corresponding Nagios check script for the specified SQS queuename. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.sqs.queue.attribute. warning.queuename. LastModifiedTimestampfalseaws.sqs.queue.attribute. warning.default. LastModifiedTimestampIf you have enabled the LastModifiedTimestamp attribute you can override the default warning alert value to be used by the corresponding Nagios check script for the specified SQS queuename. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.sqs.queue.attribute. critical.queuename. LastModifiedTimestampfalseaws.sqs.queue.attribute. critical.default. LastModifiedTimestampIf you have enabled the LastModifiedTimestamp attribute you can override the default critical alert value to be used by the corresponding Nagios check script for the specified SQS queuename. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.sqs.cloudwatch.metrics.fetchfalse""Enables certain CloudWatch metrics to be fetched by Candlestack but not necessarily monitored by Nagios. Possible values are ApproximateAgeOfOldestMessage, NumberOfMessagesReceived, and NumberOfMessagesSent, simply provide a comma separated list of these values if you want multiple enabled.
aws.sqs.cloudwatch. metrics.monitorfalse""Enables certain CloudWatch metrics to be monitored by Nagios. It is important that any metrics enabled for monitoring are also enabled for fetching otherwise Nagios alerts will fail due to no data being available for the checks. Possible values are ApproximateAgeOfOldestMessage, NumberOfMessagesReceived, and NumberOfMessagesSent, simply provide a comma separated list of these values if you want multiple enabled.
aws.sqs.cloudwatch.metric. warning.default. ApproximateAgeOfOldestMessagetrueN/AIf you have enabled the ApproximateAgeOfOldestMessage metric you must provide a default warning alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.sqs.cloudwatch.metric. critical.default. ApproximateAgeOfOldestMessagetrueN/AIf you have enabled the ApproximateAgeOfOldestMessage metric you must provide a default critical alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.sqs.cloudwatch.metric. warning.default. NumberOfMessagesReceivedtrueN/AIf you have enabled the NumberOfMessagesReceived metric you must provide a default warning alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.sqs.cloudwatch.metric. critical.default. NumberOfMessagesReceivedtrueN/AIf you have enabled the NumberOfMessagesReceived metric you must provide a default critical alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.sqs.cloudwatch.metric. warning.default. NumberOfMessagesSenttrueN/AIf you have enabled the NumberOfMessagesSent metric you must provide a default warning alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.sqs.cloudwatch.metric. critical.default. NumberOfMessagesSenttrueN/AIf you have enabled the NumberOfMessagesSent metric you must provide a default critical alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.sqs.cloudwatch.metric. warning.queuename. ApproximateAge OfOldestMessagefalseaws.sqs.cloudwatch. metric.warning.default. ApproximateAge OfOldestMessageIf you have enabled the ApproximateAgeOfOldestMessage metric you can override the default warning alert value to be used by the corresponding Nagios check script for the specified SQS queuename. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.sqs.cloudwatch.metric. critical.queuename. ApproximateAgeOfOldestMessagefalseaws.sqs.cloudwatch. metric.critical.default. ApproximateAge OfOldestMessageIf you have enabled the ApproximateAgeOfOldestMessage metric you can override the default critical alert value to be used by the corresponding Nagios check script for the specified SQS queuename. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.sqs.cloudwatch.metric. warning.queuename. NumberOfMessagesReceivedfalseaws.sqs.cloudwatch. metric.warning.default. NumberOf MessagesReceivedIf you have enabled the NumberOfMessagesReceived metric you can override the default warning alert value to be used by the corresponding Nagios check script for the specified SQS queuename. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.sqs.cloudwatch.metric. critical.queuename. NumberOfMessagesReceivedfalseaws.sqs.cloudwatch. metric.critical.default. NumberOf MessagesReceivedIf you have enabled the NumberOfMessagesReceived metric you can override the default critical alert value to be used by the corresponding Nagios check script for the specified SQS queuename. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.sqs.cloudwatch.metric. warning.queuename. NumberOfMessagesSentfalseaws.sqs.cloudwatch. metric.warning.default. NumberOfMessagesSentIf you have enabled the NumberOfMessagesSent metric you can override the default warning alert value to be used by the corresponding Nagios check script for the specified SQS queuename. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.sqs.cloudwatch.metric. critical.queuename. NumberOfMessagesSentfalseaws.sqs.cloudwatch. metric.critical.default. NumberOfMessagesSentIf you have enabled the NumberOfMessagesSent metric you can override the default critical alert value to be used by the corresponding Nagios check script for the specified SQS queuename. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.sqs.service.notification.period. queuenamefalsenagios.contact.default. service.notification. periodAllows you to override the notification period for a particular SQS queue.
aws.rds.enabledfalsefalseThis flag tells Candlestack whether or not it should monitor your RDS infrastructure.
aws.rds.dbinstance.prefixfalse""Currently Candlestack identifies the RDS database instances to monitor via the database instance's name. If this property is provided an RDS database instance name must start with the provided prefix string to be monitored.
aws.rds.dbinstance.regexfalse""Currently Candlestack identifies the RDS database instances to monitor via the database instance's name. If this property is provided an RDS database instance name must match the provided regex string to be monitored.
aws.rds.metrics.fetcher.sleep.minfalse5The amount of time Candlestack should wait between fetching new metric data for the RDS database instances being monitored. The default value should only be lowered if you have detailed monitoring enabled otherwise you will incur unnecessary CloudWatch API requests.
aws.rds.cloudwatch.metrics.fetchfalse""Enables certain CloudWatch metrics to be fetched by Candlestack but not necessarily monitored by Nagios. Possible values are CPUUtilization, DatabaseConnections, FreeStorageSpace, VolumeBytesUsed, AuroraReplicaLag, and ActiveTransactions, simply provide a comma separated list of these values if you want multiple enabled.
aws.rds.cloudwatch. metrics.monitorfalse""Enables certain CloudWatch metrics to be monitored by Nagios. It is important that any metrics enabled for monitoring are also enabled for fetching otherwise Nagios alerts will fail due to no data being available for the checks. Possible values are CPUUtilization, DatabaseConnections, FreeStorageSpace, VolumeBytesUsed, AuroraReplicaLag, and ActiveTransactions, simply provide a comma separated list of these values if you want multiple enabled.
aws.rds.cloudwatch.metric. warning.default.CPUUtilizationtrueN/AIf you have enabled the CPUUtilization metric you must provide a default warning alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.rds.cloudwatch.metric. critical.default.CPUUtilizationtrueN/AIf you have enabled the CPUUtilization metric you must provide a default critical alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.rds.cloudwatch.metric. warning.default. DatabaseConnectionstrueN/AIf you have enabled the DatabaseConnections metric you must provide a default warning alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.rds.cloudwatch.metric. critical.default. DatabaseConnectionstrueN/AIf you have enabled the DatabaseConnections metric you must provide a default critical alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.rds.cloudwatch.metric. warning.default. FreeStorageSpacetrueN/AIf you have enabled the FreeStorageSpace metric you must provide a default warning alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.rds.cloudwatch.metric. critical.default.FreeStorageSpacetrueN/AIf you have enabled the FreeStorageSpace metric you must provide a default critical alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.rds.cloudwatch.metric. warning.default.VolumeBytesUsedtrueN/AIf you have enabled the VolumeBytesUsed metric you must provide a default warning alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.rds.cloudwatch.metric. critical.default.VolumeBytesUsedtrueN/AIf you have enabled the VolumeBytesUsed metric you must provide a default critical alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.rds.cloudwatch.metric. warning.default.AuroraReplicaLagtrueN/AIf you have enabled the AuroraReplicaLag metric you must provide a default warning alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.rds.cloudwatch.metric. critical.default.AuroraReplicaLagtrueN/AIf you have enabled the AuroraReplicaLag metric you must provide a default critical alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.rds.cloudwatch.metric. warning.default. ActiveTransactionstrueN/AIf you have enabled the ActiveTransactions metric you must provide a default warning alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.rds.cloudwatch.metric. critical.default.ActiveTransactionstrueN/AIf you have enabled the ActiveTransactions metric you must provide a default critical alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.rds.cloudwatch.metric. warning.dbinstance.CPUUtilizationfalseaws.rds.cloudwatch. metric.warning.default. CPUUtilizationIf you have enabled the CPUUtilization metric you can override the default warning alert value to be used by the corresponding Nagios check script for the specified RDS dbinstance. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.rds.cloudwatch.metric. critical.dbinstance.CPUUtilizationfalseaws.rds.cloudwatch. metric.critical.default. CPUUtilizationIf you have enabled the CPUUtilization metric you can override the default critical alert value to be used by the corresponding Nagios check script for the specified RDS dbinstance. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.rds.cloudwatch.metric. warning.dbinstance. DatabaseConnectionsfalseaws.rds.cloudwatch. metric.warning.default. DatabaseConnectionsIf you have enabled the DatabaseConnections metric you can override the default warning alert value to be used by the corresponding Nagios check script for the specified RDS dbinstance. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.rds.cloudwatch.metric. critical.dbinstance. DatabaseConnectionsfalseaws.rds.cloudwatch. metric.critical.default. DatabaseConnectionsIf you have enabled the DatabaseConnections metric you can override the default critical alert value to be used by the corresponding Nagios check script for the specified RDS dbinstance. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.rds.cloudwatch.metric. warning.dbinstance. FreeStorageSpacefalseaws.rds.cloudwatch. metric.warning.default. FreeStorageSpaceIf you have enabled the FreeStorageSpace metric you can override the default warning alert value to be used by the corresponding Nagios check script for the specified RDS dbinstance. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.rds.cloudwatch.metric. critical.dbinstance. FreeStorageSpacefalseaws.rds.cloudwatch. metric.critical.default. FreeStorageSpaceIf you have enabled the FreeStorageSpace metric you can override the default critical alert value to be used by the corresponding Nagios check script for the specified RDS dbinstance. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.rds.cloudwatch.metric. warning.dbinstance. VolumeBytesUsedfalseaws.rds.cloudwatch. metric.warning.default. VolumeBytesUsedIf you have enabled the VolumeBytesUsed metric you can override the default warning alert value to be used by the corresponding Nagios check script for the specified RDS dbinstance. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.rds.cloudwatch.metric. critical.dbinstance. VolumeBytesUsedfalseaws.rds.cloudwatch. metric.critical.default. VolumeBytesUsedIf you have enabled the VolumeBytesUsed metric you can override the default critical alert value to be used by the corresponding Nagios check script for the specified RDS dbinstance. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.rds.cloudwatch.metric. warning.dbinstance. AuroraReplicaLagfalseaws.rds.cloudwatch. metric.warning.default. AuroraReplicaLagIf you have enabled the AuroraReplicaLag metric you can override the default warning alert value to be used by the corresponding Nagios check script for the specified RDS dbinstance. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.rds.cloudwatch.metric. critical.dbinstance. AuroraReplicaLagfalseaws.rds.cloudwatch. metric.critical.default. AuroraReplicaLagIf you have enabled the AuroraReplicaLag metric you can override the default critical alert value to be used by the corresponding Nagios check script for the specified RDS dbinstance. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.rds.cloudwatch.metric. warning.dbinstance. ActiveTransactionsfalseaws.rds.cloudwatch. metric.warning.default. ActiveTransactionsIf you have enabled the ActiveTransactions metric you can override the default warning alert value to be used by the corresponding Nagios check script for the specified RDS dbinstance. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.rds.cloudwatch.metric. critical.dbinstance. ActiveTransactionsfalseaws.rds.cloudwatch. metric.critical.default. ActiveTransactionsIf you have enabled the ActiveTransactions metric you can override the default critical alert value to be used by the corresponding Nagios check script for the specified RDS dbinstance. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.rds.service.notification.period. dbinstancefalsenagios.contact.default. service.notification. periodAllows you to override the notification period for a particular RDS database.
aws.s3.enabledfalsefalseThis flag tells Candlestack whether or not it should monitor files residing on S3.
aws.s3.metrics.fetcher.sleep.minfalse5The amount of time Candlestack should wait between fetching new metric data for the S3 files being monitored.
aws.s3.locationsfalse""This specified the S3 file locations that should be monitored by Candlestack. The value for this property is a JSON string using the following format: [{"id":"","name":"","bucket":"","key":""},...]
aws.s3.metadata.metrics.fetchfalse""Enables certain S3 metadata metrics to be fetched by Candlestack but not necessarily monitored by Nagios. The only possible value is LastModified at this time.
aws.s3.metadata.metrics.monitorfalse""Enables certain S3 metadata metrics to be monitored by Nagios. It is important that any metrics enabled for monitoring are also enabled for fetching otherwise Nagios alerts will fail due to no data being available for the checks. The only possible value is LastModified at this time.
aws.s3.metadata.metric. warning.default.LastModifiedtrueN/AIf you have enabled the LastModified metric you must provide a default warning alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.s3.metadata.metric. critical.default.LastModifiedtrueN/AIf you have enabled the LastModified metric you must provide a default critical alert value to be used by the corresponding Nagios check script. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.s3.metadata.metric. warning.locationid.LastModifiedfalseaws.s3.metadata. metric.warning.default. LastModifiedIf you have enabled the LastModified metric you can override the default warning alert value to be used by the corresponding Nagios check script for the specified S3 locationid. This value will be passed to the Nagios check script via the warning property (see below for check script properties).
aws.s3.metadata.metric. critical.locationid.LastModifiedfalseaws.s3.metadata. metric.critical.default. LastModifiedIf you have enabled the LastModified metric you can override the default critical alert value to be used by the corresponding Nagios check script for the specified S3 locationid. This value will be passed to the Nagios check script via the critical property (see below for check script properties).
aws.s3.service.notification.period. locationidfalsenagios.contact.default. service.notification. periodAllows you to override the notification period for a particular S3 location.

Nagios Check Scripts

Depending on the metrics you have enabled for monitoring via the Candlestack Java application configuration you will need to provide a corresponding Nagios check script. Example check scripts can be found here and in most cases can be used by your application with very little to no modifications. Below you will find a table that outlines the parameters a check script will always receive and another table that maps the monitor metric to script file name.

Check Script Properties

Order NumberProperty NameDescription
1hostThe Elasticsearch host containing the metric data to be checked
2authtokenThe authtoken to use when accessing Elasticsearch
3instanceidThe particular "id" that identifies the specific instance of a resource that is being checked (an example would be for EC2 instance check this would be the EC2 instance id)
4warningThe value that has been provided as the warning level for metric checks
5criticalThe value that has been provided as the critical level for metric checks

Monitor Metric to Check Script Mapping

Monitor MetricCheck Script File Name
Elastic Beanstalk Environment Healthcheck-aws-eb-environment-health-via-es.sh
EC2 CPU Utilizationcheck-aws-ec2-cpu-via-es-cw.sh and/or check-aws-ec2-cpu-via-es-mb.sh depending on if using CloudWatch and/or Metricbeat
EC2 Disk Utilizationcheck-aws-ec2-disk-utilization-via-es-mb.sh
EC2 Free Memorycheck-aws-ec2-free-memory-via-es-mb.sh
EC2 Network Incheck-aws-ec2-network-in-via-es-cw.sh and/or check-aws-ec2-network-in-via-es-mb.sh depending on if using CloudWatch and/or Metricbeat
EC2 Network Outcheck-aws-ec2-network-out-via-es-cw.sh and/or check-aws-ec2-network-out-via-es-mb.sh depending on if using CloudWatch and/or Metricbeat
RDS Active Transactionscheck-aws-rds-active-transactions-via-es.sh
RDS CPU Utilizationcheck-aws-rds-cpu-via-es.sh
RDS Database Connectionscheck-aws-rds-db-connections-via-es.sh
RDS Free Storagecheck-aws-rds-free-storage-via-es.sh
RDS Aurora Replica Lagcheck-aws-rds-replica-lag-via-es.sh
RDS Storage Usedcheck-aws-rds-storage-used-via-es.sh
S3 Last Modifiedcheck-aws-s3-last-modified-via-es.sh
SQS Last Modifiedcheck-aws-sqs-queue-last-modified-via-es.sh
SQS Message Agecheck-aws-sqs-queue-message-age-via-es.sh
SQS Messages Receivedcheck-aws-sqs-queue-messages-received-via-es.sh
SQS Messages Sentcheck-aws-sqs-queue-messages-sent-via-es.sh
SQS Queue Sizecheck-aws-sqs-queue-size-via-es.sh

About

A monitoring service that shines some light on your AWS stack

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages