Limited Time Offer!

For Less Than the Cost of a Starbucks Coffee, Access All DevOpsSchool Videos on YouTube Unlimitedly.
Master DevOps, SRE, DevSecOps Skills!

Enroll Now

icinga tutorials: How to monitor Docker using icinga agent

Monitoring Docker containers on an Ubuntu server using Icinga involves setting up the Icinga agent to execute Docker-specific monitoring checks and configuring the Icinga server to process and display these checks. Here is a step-by-step guide to achieve this.

Step 1: Install Docker Monitoring Plugin

On the Icinga Agent Server: You need to have a plugin that can monitor Docker. One common choice is the check_docker plugin, which can be found on GitHub. You will have to manually download and install this plugin.

$ cd /usr/lib/nagios/plugins
$ sudo wget https://exchange.icinga.com/elacheche/Docker%20containers%20check/files/12915/docker_check.py
$ sudo chmod +x docker_check.py

Install Python and Docker SDK for Python: The check_docker plugin requires Python and the Docker SDK for Python.

$ sudo apt-get update
$ sudo apt-get install python3 python3-pip
$ sudo pip3 install docker

Step 2: Configure Icinga Agent

Add Command Definitions: You need to define a command in Icinga for the Docker check. Create or edit a configuration file in the Icinga agent:

sudo nano /etc/icinga2/conf.d/commands.conf
Add the following definition:

object CheckCommand "docker_check" {
    command = [ "/usr/bin/python3", "/usr/lib/nagios/plugins/docker_check.py" ]
    arguments = {
        "--containers" = "$docker_containers$"
        "--stats" = "$docker_stats$"
    }
}

Step 3: Configure Icinga Server

Define Host Object: If not already done, define the host object for the Docker server in your Icinga server configuration:

object Host "docker-server" {
    import "generic-host"
    address = "docker-agent-ip"
    check_command = "hostalive"
}

Define Service for Docker Monitoring: Create a service definition to monitor Docker:

apply Service "docker-status" {
    import "generic-service"
    check_command = "docker_check"
    vars.docker_containers = "all"
    vars.docker_stats = "true"
    assign where host.name == "docker-server"
}

Reload Icinga 2: After configuring the service and command, reload Icinga 2 to apply the changes:

$ sudo systemctl reload icinga2

Step 4: Verify the Configuration

Icinga Web 2: Log into Icinga Web 2 and check the 'Services' section. You should see your new service for monitoring Docker. Ensure that it is reporting the status of Docker containers as expected.

Troubleshooting: If the checks aren't working as expected, look at the logs in /var/log/icinga2/icinga2.log for any errors. Check the permissions of the check_docker.py script and ensure that the Icinga user can execute it and has access to Docker via the Docker group.
Rajesh Kumar
Follow me
Latest posts by Rajesh Kumar (see all)
Subscribe
Notify of
guest
0 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x