Upgrade & Secure Your Future with DevOps, SRE, DevSecOps, MLOps!

We spend hours on Instagram and YouTube and waste money on coffee and fast food, but won’t spend 30 minutes a day learning skills to boost our careers.
Master in DevOps, SRE, DevSecOps & MLOps!

Learn from Guru Rajesh Kumar and double your salary in just one year.


Get Started 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.
Subscribe
Notify of
guest
0 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments

Certification Courses

DevOpsSchool has introduced a series of professional certification courses designed to enhance your skills and expertise in cutting-edge technologies and methodologies. Whether you are aiming to excel in development, security, or operations, these certifications provide a comprehensive learning experience. Explore the following programs:

DevOps Certification, SRE Certification, and DevSecOps Certification by DevOpsSchool

Explore our DevOps Certification, SRE Certification, and DevSecOps Certification programs at DevOpsSchool. Gain the expertise needed to excel in your career with hands-on training and globally recognized certifications.

0
Would love your thoughts, please comment.x
()
x