此内容没有您所选择的语言版本。

Monitoring Ceph for Ubuntu with Nagios


Red Hat Ceph Storage 3

Monitoring Ceph for Ubuntu with Nagios Core.

Red Hat Ceph Storage Documentation Team

Abstract

This document provides instructions for installing and configuring Nagios to monitor an Ubuntu-based Ceph Storage cluster.

Chapter 1. Introduction

Nagios Core is an open source solution for monitoring hosts. Large Ceph Storage clusters benefit from distributed monitoring systems such as Nagios Core that check each host in a cluster, including the health of the underlying operating system, as well as the health of the Ceph Storage Cluster daemons.

To deploy Nagios Core with Ceph requires:

  • A running Ceph cluster.
  • A running Nagios core server.

In lieu of Nagios Core, you may also substitute the more feature rich commercial version, Nagios XI.

Important

Red Hat does not provide the Nagios packages.

Important

Red Hat works with our technology partners to provide this documentation as a service to our customers. However, Red Hat does not provide support for this product. If you need technical assistance for this product, then contact Nagios for support.

Chapter 2. Installing Nagios Core

Installing Nagios Core involves downloading the Nagios Core source code; then, configuring, making and installing it on the host that will run Nagios Core instance.

The following sections describe the process for Ubuntu 16.04 and later releases.

For Ubuntu 16.04, execute all commands as root:

Copy to Clipboard Toggle word wrap
[user@nagios]$ sudo -i

2.1. Installing Nagios Prerequisites

Install the prerequisites.

Copy to Clipboard Toggle word wrap
[user@nagios]# yum install -y httpd php php-cli gcc glibc glibc-common gd gd-devel net-snmp openssl openssl-devel wget unzip
Copy to Clipboard Toggle word wrap
[user@nagios]# apt-get install wget build-essential apache2 php apache2-mod-php7.0 openssl libssl-dev gcc make php-gd libgd-dev unzip

Open port 80 for httpd.

Copy to Clipboard Toggle word wrap
[user@nagios]# firewall-cmd --zone=public --add-port=80/tcp
[user@nagios]# firewall-cmd --zone=public --add-port=80/tcp --permanent

Open port 80 for apache2:

Copy to Clipboard Toggle word wrap
[user@nagios]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
[user@nagios]# apt-get install iptables-persistent

2.2. Creating a Nagios User and Group

Create a user and group for Nagios Core.

Copy to Clipboard Toggle word wrap
[user@nagios]# useradd nagios
[user@nagios]# passwd nagios
[user@nagios]# groupadd nagcmd
[user@nagios]# usermod -a -G nagcmd nagios

Then, execute the following:

Copy to Clipboard Toggle word wrap
[user@nagios]# usermod -a -G nagcmd apache
Copy to Clipboard Toggle word wrap
[user@nagios]# usermod -a -G nagios,nagcmd www-data

2.3. Download Nagios Source Code and Plug-ins

Download the latest version of Nagios Core and Plug-ins.

Copy to Clipboard Toggle word wrap
[user@nagios]# wget --inet4-only https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.3.1.tar.gz
[user@nagios]# wget --inet4-only http://www.nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz
[user@nagios]# tar zxf nagios-4.3.1.tar.gz
[user@nagios]# tar zxf nagios-plugins-2.2.1.tar.gz
[user@nagios]# cd nagios-4.3.1

2.4. Make and Install Nagios Core

To make and install Nagios Core, first run ./configure.

Copy to Clipboard Toggle word wrap
[user@nagios]# ./configure --with-command-group=nagcmd
Copy to Clipboard Toggle word wrap
[user@nagios]# ./configure --with-command-group=nagcmd --with-httpd-conf=/etc/apache2/

After running ./configure, compile the Nagios Core source code.

Copy to Clipboard Toggle word wrap
[user@nagios]# make all

After making Nagios Core, install it.

Copy to Clipboard Toggle word wrap
[user@nagios]# make install
[user@nagios]# make install-init
[user@nagios]# make install-config
[user@nagios]# make install-commandmode
[user@nagios]# make install-webconf

Copy the event handlers and change their ownership.

Copy to Clipboard Toggle word wrap
[user@nagios]# cp -R contrib/eventhandlers/ /usr/local/nagios/libexec/
[user@nagios]# chown -R nagios:nagios /usr/local/nagios/libexec/eventhandlers

Finally, run the pre-flight check.

Copy to Clipboard Toggle word wrap
[user@nagios]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

2.5. Make and Install Nagios Core Plug-ins

Make and install the Nagios Core plug-ins.

Copy to Clipboard Toggle word wrap
[user@nagios]# cd ../nagios-plugins-2.2.1
[user@nagios]# ./configure --with-nagios-user=nagios --with-nagios-group=nagios
[user@nagios]# make
[user@nagios]# make install

2.6. Create a Default Nagios Core User

Create a user for the Nagios Core user interface.

Copy to Clipboard Toggle word wrap
[user@nagios]$ sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
Important

If adding a user other than nagiosadmin, ensure the /usr/local/nagios/etc/cgi.cfg file gets updated with the username too.

Also modify the /usr/local/nagios/etc/objects/contacts.cfg file with the user name, full name and email address as needed.

2.7. Start Nagios

Add Nagios Core as a service and enable it. Then start the Nagios Core daemon and Apache.

Copy to Clipboard Toggle word wrap
[user@nagios]# chkconfig --add nagios
[user@nagios]# chkconfig --level 35 nagios on
[user@nagios]# systemctl start nagios
[user@nagios]# systemctl enable httpd
[user@nagios]# systemctl start httpd
Copy to Clipboard Toggle word wrap
[user@nagios]# a2ensite nagios
[user@nagios]# a2enmod rewrite cgi
[user@nagios]# sudo cp /etc/init.d/skeleton /etc/init.d/nagios

Then, edit the initialization file:

Copy to Clipboard Toggle word wrap
[user@nagios]# vi /etc/init.d/nagios

Add the following lines:

Copy to Clipboard Toggle word wrap
DESC="Nagios"
NAME=nagios
DAEMON=/usr/local/nagios/bin/$NAME
DAEMON_ARGS="-d /usr/local/nagios/etc/nagios.cfg"
PIDFILE=/usr/local/nagios/var/$NAME.lock

Finally, start Nagios:

Copy to Clipboard Toggle word wrap
[user@nagios]# systemctl restart apache2
[user@nagios]# systemctl start nagios

2.8. Log in to Nagios Core

With Nagios up and running, log in to the web user interface.

Copy to Clipboard Toggle word wrap
http://<ip-address>/nagios

Nagios Core will prompt for a user name and password. Input the login and password of the default Nagios Core user.

Chapter 3. Installing Nagios Remote Plug-in Executor (NRPE)

To monitor Ceph Storage cluster hosts, install Nagios Plug-ins, the Ceph plug-ins and the NRPE add-on to each of the Ceph cluster’s hosts.

For demonstration purposes, this section adds NRPE to a Ceph monitor node with the hostname mon. Repeat the remaining procedures on all Ceph nodes that Nagios should monitor.

3.1. Install Prerequisites

NRPE requires OpenSSL. Install the following libraries first.

Execute the following:

Copy to Clipboard Toggle word wrap
[user@host]# yum install openssl openssl-devel gcc make git
Copy to Clipboard Toggle word wrap
[user@host]# apt install openssl libssl-dev gcc make git

3.2. Create a Nagios User

NRPE installation requires a Nagios user. So create the user first.

Copy to Clipboard Toggle word wrap
[user@mon]# useradd nagios
[user@mon]# passwd nagios

3.3. Download, Make and Install the Nagios Plug-ins

Download the latest version of the Nagios plug-ins. Then, make and install them.

Copy to Clipboard Toggle word wrap
[user@mon]# wget http://www.nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz
[user@mon]# tar zxf nagios-plugins-2.2.1.tar.gz
[user@mon]# cd nagios-plugins-2.2.1
[user@mon]# ./configure
[user@mon]# make
[user@mon]# make install

3.4. Download, Make and Install the Nagios Ceph Plug-ins

Download the latest verion of the Ceph plug-ins. See https://github.com/valerytschopp/ceph-nagios-plugins for details.

Copy to Clipboard Toggle word wrap
[user@mon]# cd ~
[user@mon]# git clone --recursive https://github.com/valerytschopp/ceph-nagios-plugins.git
[user@mon]# cd ceph-nagios-plugins
[user@mon]# make dist
[user@mon]# make install

3.5. Install xinetd

NRPE uses xinetd for communication. Install it before installing the NRPE module. Execute the following:

Copy to Clipboard Toggle word wrap
[user@mon]# yum install xinetd
Copy to Clipboard Toggle word wrap
[user@mon]# apt install xinetd

3.6. Download, Make and Install Nagios NRPE

Copy to Clipboard Toggle word wrap
[user@mon]# cd ~
[user@mon]# wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-3.1.0/nrpe-3.1.0.tar.gz
[user@mon]# tar xvfz nrpe-3.1.0.tar.gz
[user@mon]# cd nrpe-3.1.0
[user@mon]# ./configure
[user@mon]# make all
[user@mon]# make install-groups-users
[user@mon]# make install
[user@mon]# make install-config
[user@mon]# make install-init

Then, add nrpe 5666/tcp to the /etc/services file.

3.7. Enable, Restart and Reload xinetd.

Copy to Clipboard Toggle word wrap
[user@mon]# systemctl enable xinetd
[user@mon]# systemctl restart xinetd
[user@mon]# systemctl reload xinetd

3.8. Enable and Start NRPE

Copy to Clipboard Toggle word wrap
[user@mon]# systemctl enable nrpe
[user@mon]# systemctl start nrpe

3.9. Open Port 5666

Open port 5666 to allow communication with NRPE.

Copy to Clipboard Toggle word wrap
[user@mon]# firewall-cmd --zone=public --add-port=5666/tcp
[user@mon]# firewall-cmd --zone=public --add-port=5666/tcp --permanent
Copy to Clipboard Toggle word wrap
[user@mon]# iptables -A INPUT -p tcp --dport 5666 -j ACCEPT
[user@mon]# apt-get install iptables-persistent

3.10. Add the Nagios Core Server IP Address

In order for the Nagios Core server to access NRPE on a remote machine, the remote machine’s xinetd and NRPE configurations must be updated with the IP address of the Nagios Core server.

Edit the xinetd configuration with the Nagios server’s IP address.

Copy to Clipboard Toggle word wrap
[user@mon]# vim /etc/xinetd.d/nrpe
Copy to Clipboard Toggle word wrap
# default: off
# description: NRPE (Nagios Remote Plugin Executor)
service nrpe
{
    disable         = yes
    socket_type     = stream
    port            = 5666
    wait            = no
    user            = nagios
    group           = nagios
    server          = /usr/local/nagios/bin/nrpe
    server_args     = -c /usr/local/nagios/etc/nrpe.cfg --inetd
    only_from       = 127.0.0.1,<ip-address-of-nagios-core>
    log_on_success  =
}

Add the IP address of the Nagios Core server to the only_from setting. Then, restart xinetd.

Copy to Clipboard Toggle word wrap
[user@mon]# systemctl restart xinetd

Edit the NRPE configuration with the Nagios server’s IP address.

Copy to Clipboard Toggle word wrap
[user@mon]# vim /usr/local/nagios/etc/nrpe.cfg
Copy to Clipboard Toggle word wrap
allowed_hosts=127.0.0.1,<ip-address-of-nagios-core>

Add the IP address of the Nagios Core server to the allowed_hosts setting. Then, restart nrpe.

Copy to Clipboard Toggle word wrap
[user@mon]# systemctl restart nrpe

3.11. Test the Installation

Ensure that the make and install procedures worked.

Copy to Clipboard Toggle word wrap
[user@host]# /usr/local/nagios/libexec/check_nrpe -H localhost

The check should echo NRPE v3.1.0-rc1 if it is working correctly.

Chapter 4. Configure the Nagios Core Server

After configuring NRPE on a Ceph host, configure the Nagios Core Server to recognize and monitor the host.

4.1. Install the check_nrpe Plug-in

Copy to Clipboard Toggle word wrap
[user@nagios]# cd ~
[user@nagios]# wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-3.1.0/nrpe-3.1.0.tar.gz
[user@nagios]# tar xvfz nrpe-3.1.0.tar.gz
[user@nagios]# cd nrpe-3.1.0
[user@nagios]# ./configure
[user@nagios]# make check_nrpe
[user@nagios]# make install-plugin

4.2. Check to Ensure Connectivity

Ensure that the make and install procedures worked and that there is connectivity between the Nagios Core server and the remote host containing NRPE.

Copy to Clipboard Toggle word wrap
[user@nagios]# /usr/local/nagios/libexec/check_nrpe -H <IP-address-of-remote-host>

It should echo NRPE v3.1.0-rc1 if it is working correctly.

4.3. Create a Configuration for the Remote Host

Copy to Clipboard Toggle word wrap
[user@nagios]# cd /usr/local/nagios/etc/objects
[user@nagios]# cp localhost.cfg mon.cfg

Replace localhost with the hostname of the remote host, and the loopback IP address with the IP address of the remote host. Finally, delete or comment out the Host Group definition.

Change the file ownership to nagios.

Copy to Clipboard Toggle word wrap
[user@nagios]# chown nagios:nagios mon.cfg

Add a cfg_file= reference to the mon.cfg file in /usr/local/nagios/etc/nagios.cfg.

Copy to Clipboard Toggle word wrap
[user@nagios]# vim /usr/local/nagios/etc/nagios.cfg

For example:

Copy to Clipboard Toggle word wrap
cfg_file=/usr/local/nagios/etc/objects/mon.cfg

Then, restart the Nagios server.

Copy to Clipboard Toggle word wrap
[user@nagios]# systemctl restart nagios

Chapter 5. Configure Ceph Plug-ins

There are some open source Ceph plug-ins provided at https://github.com/valerytschopp/ceph-nagios-plugins. They include:

  • check_ceph_df: This plug-in outputs messages related to ceph df for the entire cluster or for individual pools. This plug-in only needs to run on Ceph monitor hosts. Multiple instances may be configured to monitor individual pools.
  • check_ceph_health: This plug-in outputs the result of ceph health. This plug-in only needs to run on Ceph monitor hosts.
  • check_ceph_mon: This plug-in checks a single monitor and returns OK if the monitor is up and running or WARN if it is down or missing. This plug-in only needs to run on Ceph monitor hosts.
  • check_ceph_osd: This plug-in checks an OSD host or a single OSD and returns OK if the OSD is up and running or WARN if it is down. This plug-in only needs to run on Ceph OSD hosts.
  • check_ceph_rgw: This plug-in checks a single Ceph Object Gateway and returns OK and the buckets and data usage if it is up and running or WARN if it is down or missing. This plug-in only needs to run on Ceph Object Gateway hosts.
  • check_ceph_mds: This plug-in checks a single metadata server and returns OK if it is up and running, WARN if it is laggy and Error if it is down or missing. This plug-in only needs to run on Ceph metadata server hosts. These plug-ins get installed on the appropriate Ceph hosts. The following sections describe how to configure the ceph health plug-in on a monitor host.

5.1. Create Keyring and Key

Log in to the monitor server and create a Ceph key and keyring for Nagios.

Copy to Clipboard Toggle word wrap
[user@mon]# ssh mon
[user@mon]# cd /etc/ceph
[user@mon]# ceph auth get-or-create client.nagios mon 'allow r' > client.nagios.keyring

Each plug-in will require authentication. Repeat this procedure for each host that contains a plug-in.

5.2. Test the Ceph Plug-in Installation

Before proceeding with additional configuration, ensure that the plug-ins are working. For example:

Copy to Clipboard Toggle word wrap
[user@mon]# /usr/lib/nagios/plugins/check_ceph_health --id nagios --keyring /etc/ceph/client.nagios.keyring

The check_ceph_health plug-in performs the the equivalent of:

Copy to Clipboard Toggle word wrap
[user@mon]# ceph health

5.3. Add a Command for the Ceph Plug-in

Add a command for the check_ceph_health plug-in.

Copy to Clipboard Toggle word wrap
[user@mon]# vim /usr/local/nagios/etc/nrpe.cfg

For example:

Copy to Clipboard Toggle word wrap
command[check_ceph_health]=/usr/lib/nagios/plugins/check_ceph_health --id nagios --keyring /etc/ceph/client.nagios.keyring

Save and restart NRPE.

Copy to Clipboard Toggle word wrap
[user@mon]# systemctl restart nrpe

Repeat this procedure for each Ceph plug-in applicable to the host. See https://github.com/valerytschopp/ceph-nagios-plugins for usage.

5.4. Define the check_nrpe Command

Return to the Nagios server and define a check_nrpe command for the NRPE plug-in.

Copy to Clipboard Toggle word wrap
[user@nagios]# cd /usr/local/nagios/etc/objects
[user@nagios]# vi commands.cfg
Copy to Clipboard Toggle word wrap
define command{
 command_name check_nrpe
 command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

5.5. Define a Service for the Plug-in

On the Nagios server, edit the configuration file for the host and add a service for the Ceph plug-in. For example:

Copy to Clipboard Toggle word wrap
[user@nagios]# vim /usr/local/nagios/etc/objects/mon.cfg
Copy to Clipboard Toggle word wrap
define service {
  use                   generic-service
  host_name             mon
  service_description   Ceph Health Check
  check_command         check_nrpe!check_ceph_health
}

Note that the check_command setting uses check_nrpe!` before the Ceph plug-in name. This tells NRPE to execute the check_ceph_health command on the remote host.

Repeat this procedure for each plug-in applicable to the host.

Then, restart the Nagios server.

Copy to Clipboard Toggle word wrap
[user@nagios]# systemctl restart nagios

Chapter 6. Summary

After completing the foregoing procedures, return to the Nagios web user interface and click on the "Hosts" link. The host should appear in the list of hosts. Click on the host to see additional details. Click on the View Status Detail hyperlink. It should display the checks it performs. In the instant example, there should be a Ceph Health Check service with status information on the Ceph cluster.

Legal Notice

Copyright © 2021 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat, Inc.