Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/stdevel/check_pakfire
A Nagios / Icinga plugin for checking IPFire pakfire updates
https://github.com/stdevel/check_pakfire
icinga icinga-plugin ipfire nagios nrpe pakfire-updates
Last synced: about 1 month ago
JSON representation
A Nagios / Icinga plugin for checking IPFire pakfire updates
- Host: GitHub
- URL: https://github.com/stdevel/check_pakfire
- Owner: stdevel
- License: gpl-3.0
- Created: 2016-07-12T14:40:27.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2021-11-28T10:12:03.000Z (about 3 years ago)
- Last Synced: 2024-04-26T00:16:37.472Z (8 months ago)
- Topics: icinga, icinga-plugin, ipfire, nagios, nrpe, pakfire-updates
- Language: Python
- Size: 42 KB
- Stars: 3
- Watchers: 4
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# check_pakfire
`check_pakfire` is a Nagios / Icinga plugin for checking [IPFire](http://www.ipfire.org) Pakfire updates and required reboots.
## Requirements
I successfully tested the plugin with **IPFire 2.x**. I'm not sure whether IPFire 3.x comes with a new Pakfire architecture - so, use this on newer versions at your own risk. ;-)
No additional Python packages are required - just deploy the script and use it.
**Note:** Beginning with plugin version **1.4**, Python 3 is the only supported version. If you're using an older IPFire release, you will need to use plugin version **1.3**.
## Usage
By default, the script checks for core updates and also packages upgrades - it is also possible to only check core updates (*`-e` / `--exclude-packages` parameters*). Gathering performance data (*outdated packages*) can be useful when monitoring a big amount of IPFire systems.
The following parameters can be specified:
| Parameter | Description |
|:----------|:------------|
| `-d` / `--debug` | enable debugging outputs (*default: no*) |
| `-h` / `--help` | shows help and quits |
| `-e` / `--exclude-packages` | disables checking for package updates (*default: no*) |
| `-m` / `--mirror` | defines one or multiple mirrors (*default: system mirror list*) |
| `-n` / `--need-reboot` | defines exit level if reboot is required (*default: w*) |
| `-P` / `--show-perfdata` | enables performance data (*default: no*) |
| `-w` / `--packages-warning` | defines warning threshold for outdated packages (*default: 1*) |
| `-c` / `--packages-critical` | defines warning threshold for outdated packages (*default: 5*) |
| `-W` / `--core-warning` | defines warning threshold for outdated core (*default: 1*) |
| `-C` / `--core-critical` | defines warning threshold for outdated core (*default: 3*) |
| `--version` | prints programm version and quits |### Examples
The following example checks for core updates only:
```shell
$ ./check_pakfire.py -e
OK: Core update (124) up2date
```A IPFire host with some outdated packages:
```shell
$ ./check_pakfire.py
WARNING: Core update (124) up2date, packages outdated (linue-pae, lcd4linux)
```An updated IPFire host with performance data:
```shell
$ ./check_pakfire.py
WARNING: Core update (124) up2date, packages outdated (linue-pae, lcd4linux) | 'system_updates'=0;;;; 'outdated_packages'=2.0;1.0;5.0;;
```An outdated host with a pending reboot:
```shell
$ ./check_pakfire.py
CRITICAL: Core update (128) outdated (130), packages up2date, system reboot required
```## Installation
To install the plugin, move the Python script into the appropriate directory and create a **configuration**.
## Configuration
### Nagios / Icinga 1.x
Within Nagios / Icinga you will need to configure a remote check command, e.g. for NRPE:
```text
# check_nrpe_pakfire
define command{
command_name check_nrpe_pakfire
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c check_pakfire -a $ARG1$
}
```Configure the check for a particular host, e.g.:
```text
# DIAG: Updates
define service{
use generic-service
host_name st-ipfire03
service_description DIAG: Updates
check_command check_nrpe_pakfire!-P
}
```### Icinga2
Define a service like this:
```text
apply Service "DIAG: Updates" {
import "generic-service"
check_command = "by_ssh"
vars.by_ssh_command = [ "/opt/check_pakfire.py", "-P" ]
vars.by_ssh_port = host.vars.ssh_port
vars.by_ssh_logname = "icinga"
assign where host.vars.os == "Linux" && host.vars.app == "router"
}
```Define SSH port and application for your IPFire host:
```text
object Host "st-ipfire03.stankowic.loc" {
import "generic-host"address = "xxx"
vars.os = "Linux"
vars.app = "router"vars.ssh_port = 222
}
```Validate the configuration and reload the Icinga2 daemon:
```shell
# icinga2 daemon -C
# service icinga2 reload
```