Sign inSign up

petersem/monocker

By petersem

•Updated almost 2 years 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

almost 2 years ago

docker pull petersem/monocker