petersem/monocker

By petersem

Updated over 1 year ago

MONitor dOCKER container status, and send alerts on change

Image
Monitoring & observability
7

500K+

petersem/monocker repository overview

Monocker

Monitors Docker (MONitors dOCKER) containers and alerts on 'state' change.

image

Features

  • Monitors 'state' changes for all containers
  • Specific inclusions or exclusions of containers to monitor
  • Optionally, only alert on state changes to (paused, exited, running (unhealthy), or dead)
  • In-built Docker healthcheck
Integration with
  • Telegram
  • Pushbullet
  • Pushover
  • Discord
  • Ntfy
  • Slack
  • Gotify
  • Matrix
  • Apprise

Future Considerations

  • Additional messaging platform support

Installation

services:
  monocker:
    container_name: monocker
    image: petersem/monocker
    environment:
      #DOCKER_HOST: tcp://docker-socket-proxy:2375
      SERVER_LABEL: 'Your server name'
      SERVER_AVATAR: 'https://content.invisioncic.com/u329766/monthly_2024_05/monocker.png.ba5ffdb390b627097d2a53645cf87350.png'
      MESSAGE_PLATFORM: 'gotify@server@app_token'
      ONLY_OFFLINE_STATES: 'false'
      EXCLUDE_EXITED: 'false'      
      PERIOD: 30
      DISABLE_STARTUP_MSG: 'false'
      #CUSTOM_NTFY_SERVER: 'https://custom.ntfy.com' 
      #NTFY_USER: 'user' 
      #NTFY_PASS: 'password' 
      SHA: 'false'
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
    restart: unless-stopped

Environment Options

ItemRequiredDescription
DOCKER_HOSTFalseUse a docker interface other than the default. (E.G DOCKER_HOST: tcp://docker-socket-proxy:2375)
  • This can be a UNIX socket (unix://), Windows named pipe (npipe://) or TCP connection (tcp://). If it's a pipe or socket, be sure to mount the connection as a volume. If the connection is proxied, ensure that GET requests are allowed on the /containers endpoint.
  • By default, this value is unset and the connection will use /var/run/docker.sock.
ItemRequiredDescription
SERVER_LABELFalseLabel to preface messages. Handy if you are running multiple versions of Monocker.
SERVER_AVATARFalseAvatar image URL to add to messages. Handy if you are running Monocker on different machines (discord, ntfy mobile, and slack)
ONLY_OFFLINE_STATESFalseWhen true, only notify when a container state changes to paused, exited, running (unhealthy), or dead. Otherwise, all state changes are notified (false)
EXCLUDE_EXITEDFalseRegardless of any other settings, you can ignore or include the status of 'exited'. (false includes exited)
PERIODFalseSet the poll period in seconds. Default/Minimum is 10 seconds, recommended 30 seconds, to minimise messages sent.
DISABLE_STARTUP_MSGFalseSuppresses startup messages from being sent. Default is false
SHAFalseWill include the container SHA ID in sent messages
MESSAGE_PLATFORMTrueSpecify 'ONE' messaging platform.
  • 'pushbullet@your_api_key@your_device_id'
  • 'pushover@your_user_key@your_app_api_token'
  • 'discord@webhook_url'
  • 'ntfy@topic_title'
  • 'slack@bot_user_oauth_token@your_chat_id'
  • 'gotify@server_url@app_token'
  • 'telegram@your_bot_id@your_chat_id'
  • 'apprise@apprise_url@config_id@tag' (Only one tag is supported, and server_avatar is not currently supported)
  • 'matrix@https://matrix.org@user:matrix.org@access-token@room-id:matrix.org' (For Matrix, add the userid 'without' the leading @ sign. Values are server, userid, access-token, room-id)
Advanced NTFY Setting

Use these settings if you host your own Ntfy server, or otherwise require authentication to connect.

ItemRequiredDescription
CUSTOM_NTFY_SERVERFalseThe URL for your self-hosted Ntfy server (Else will use https://nttp.sh)
NTFY_USERFalseThe username to login (on ntfy.sh or your own server. Optional if you have your own server open)
NTFY_PASSFalseThe password to login (on ntfy.sh or your own server)
ItemRequiredDescription
LABEL_ENABLEFalseIncludes or excludes specified containers, if labelled. (defaults to false)

This feature allows you to specify (with labels in your yaml) 'either' to monitor or exclude specific containers.

  • If it is set to false, then all containers will be monitored, except for any containers with the following label:
   labels:
     monocker.enable: 'false'
  • If it is set to true, only containers with the following label will be monitored
   labels:
     monocker.enable: 'true'
  • If you just want to monitor everything, then set LABEL_ENABLE: 'false' or just leave it out altogether, and dont worry about labelling any other containers.

Help with MESSAGE_PLATFORM values

Thank you!

If you like my work, you can make a dontation to say thanks! Donate

Primary support on Discord Link to code on GitHub

This application uses semantic versioning. See here for more details.

Tag summary

Content type

Image

Digest

sha256:6e6ced4bc

Size

37.6 MB

Last updated

over 1 year ago

docker pull petersem/monocker