"first" commit
This commit is contained in:
parent
1b555ca360
commit
20646001d0
6 changed files with 20 additions and 155 deletions
21
.drone.yml
21
.drone.yml
|
@ -14,7 +14,8 @@ steps:
|
||||||
- hadolint --version
|
- hadolint --version
|
||||||
- hadolint Dockerfile
|
- hadolint Dockerfile
|
||||||
|
|
||||||
- name: docker_build_and_push
|
# Bauen, taggen und pushen
|
||||||
|
- name: docker_build_and_push_master
|
||||||
image: plugins/docker
|
image: plugins/docker
|
||||||
settings:
|
settings:
|
||||||
username:
|
username:
|
||||||
|
@ -26,9 +27,27 @@ steps:
|
||||||
tags:
|
tags:
|
||||||
- latest
|
- latest
|
||||||
- ${DRONE_COMMIT_SHA:0:8}
|
- ${DRONE_COMMIT_SHA:0:8}
|
||||||
|
- ${DRONE_COMMIT_BRANCH}
|
||||||
when:
|
when:
|
||||||
branch:
|
branch:
|
||||||
- master
|
- master
|
||||||
event:
|
event:
|
||||||
exclude:
|
exclude:
|
||||||
- pull_request
|
- pull_request
|
||||||
|
|
||||||
|
- name: docker_build_and_push
|
||||||
|
image: plugins/docker
|
||||||
|
settings:
|
||||||
|
username:
|
||||||
|
from_secret: DOCKERHUB_USER
|
||||||
|
password:
|
||||||
|
from_secret: DOCKERHUB_PASS
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
repo: quotengrote/munin-server
|
||||||
|
tags:
|
||||||
|
- ${DRONE_COMMIT_SHA:0:8}
|
||||||
|
- ${DRONE_COMMIT_BRANCH}
|
||||||
|
when:
|
||||||
|
event:
|
||||||
|
exclude:
|
||||||
|
- pull_request
|
||||||
|
|
|
@ -35,9 +35,6 @@ COPY munin.conf /etc/munin/munin.conf
|
||||||
COPY ssmtp.conf /etc/ssmtp/ssmtp.conf
|
COPY ssmtp.conf /etc/ssmtp/ssmtp.conf
|
||||||
COPY revaliases /etc/ssmtp/revaliases
|
COPY revaliases /etc/ssmtp/revaliases
|
||||||
COPY munin_mail.conf /etc/munin/munin-conf.d/munin_mail.conf
|
COPY munin_mail.conf /etc/munin/munin-conf.d/munin_mail.conf
|
||||||
COPY slack_munin.sh /usr/local/bin/notify_slack_munin
|
|
||||||
RUN chmod +x /usr/local/bin/notify_slack_munin
|
|
||||||
COPY munin_slack.conf /etc/munin/munin-conf.d/munin_slack.conf
|
|
||||||
|
|
||||||
# copy launcher
|
# copy launcher
|
||||||
COPY run.sh /usr/local/bin/run
|
COPY run.sh /usr/local/bin/run
|
||||||
|
|
74
README.md
74
README.md
|
@ -1,74 +0,0 @@
|
||||||
# Munin (master)
|
|
||||||
|
|
||||||
**UNMAINTAINED** This repository is not maintained anymore, please use <https://github.com/ethersys/ethersys-docker-munin> and report issues on it.
|
|
||||||
|
|
||||||
## Quickstart
|
|
||||||
|
|
||||||
Munin stats aggregator and reporting, based on lrivallain (<https://github.com/lrivallain>) and Arcus (<http://arcus.io>) work.
|
|
||||||
Update base image (ubuntu 20.04) and munin (2.0.56) and add easily configurable mail and Slack notifications.
|
|
||||||
|
|
||||||
### Build
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git clone https://github.com/occitech/docker.git
|
|
||||||
docker build -t munin ./munin
|
|
||||||
docker run -p 80 munin
|
|
||||||
```
|
|
||||||
|
|
||||||
### Or pull
|
|
||||||
|
|
||||||
```bash
|
|
||||||
docker pull occitech/munin
|
|
||||||
docker run -p 80 occitech/munin:latest
|
|
||||||
```
|
|
||||||
|
|
||||||
## How it works
|
|
||||||
|
|
||||||
### Ports
|
|
||||||
|
|
||||||
* 80
|
|
||||||
|
|
||||||
### Volumes
|
|
||||||
|
|
||||||
* `/var/lib/munin` : Databases files
|
|
||||||
* `/var/log/munin` : Logs
|
|
||||||
* `/var/cache/munin` : Where are generated graphs
|
|
||||||
|
|
||||||
### Environment Variables
|
|
||||||
|
|
||||||
* `NODES`: Space separated list of `<name>:<host>` munin node pairs. (i.e. `foo.local:127.0.0.1 bar.remote:1.2.3.4`)
|
|
||||||
* `CRONDELAY`: Change the cron settings to update charts every X minutes (default: 5)
|
|
||||||
* `TZ`: Customize the timezone according to your place: (i.e. `Europe/London`) (default: `Europe/Paris`)
|
|
||||||
* `THISNODENAME`: Customize the displayed node name for local host (default: `munin`)
|
|
||||||
* `THISNODEIP`: Customize the node IP for local host (default: `127.0.0.1`)
|
|
||||||
* `DISABLELOCALNODE`: Disable local munin node (default: `no`)
|
|
||||||
* `MAILCONTACT`: Recipient of the mail alert (i.e. `alert@example.test`, needed for mail alert)
|
|
||||||
* `MAILSERVER`: Address of your mail server (i.e. `mail.example.test`, needed for mail alert)
|
|
||||||
* `MAILPORT`: Port of your SMTP mail server (i.e. `25`, needed for mail alert)
|
|
||||||
* `MAILUSER`: User to Auth on your mail server (i.e. `user@example.test`, needed for mail alert)
|
|
||||||
* `MAILPASSWORD`: Password of your mail server (needed for mail alert)
|
|
||||||
* `MAILFROM`: Where the mail seems to come from (i.e. `munin@example.test`, needed for mail alert)
|
|
||||||
* `MAILNAME`: Friendly sender name displayed for recipiend
|
|
||||||
* `MAILDOMAIN`: Domain of your mail server (i.e. `example.test`, needed for mail alert)
|
|
||||||
* `SLACKCHANNEL`: Name of your Slack channel (i.e. `hosting`, needed for Slack alert)
|
|
||||||
* `SLACKWEBHOOKURL`: URL of your Slack webhook (i.e. `https://hooks.slack.com/services/XXXXX/YYYYYYY/ZZZZZZZ`, needed for Slack alert)
|
|
||||||
* `SLACKUSER`: Username of munin bot on your Slack
|
|
||||||
* `SLACKICON`: Icon of munin bot on your Slack
|
|
||||||
* `VIRTUAL_HOST`: FQDN of your munin website
|
|
||||||
|
|
||||||
## Persistent example
|
|
||||||
|
|
||||||
```bash
|
|
||||||
docker run \
|
|
||||||
-d \
|
|
||||||
--name=munin \
|
|
||||||
-p 127.0.0.1:8080:80 \
|
|
||||||
-e THISNODENAME="munin.example.com" \
|
|
||||||
-e TZ="Europe/London" \
|
|
||||||
-e CRONDELAY=2 \
|
|
||||||
-e NODES="anothernode.example.com:1.2.3.4 anothernode2.example.com:5.6.7.8" \
|
|
||||||
-v /data/munin/db:/var/lib/munin \
|
|
||||||
-v /data/munin/logs:/var/log/munin \
|
|
||||||
-v /data/munin/cache:/var/cache/munin \
|
|
||||||
munin
|
|
||||||
```
|
|
|
@ -1,2 +0,0 @@
|
||||||
# notify slack
|
|
||||||
contact.slack.command MUNIN_SERVICESTATE="${var:worst}" MUNIN_HOST="${var:host}" MUNIN_SERVICE="${var:graph_title}" MUNIN_GROUP=${var:group} MUNIN_IMAGE="https://muninurl/${var:group}/${var:host}/${var:plugin}-day.png" /usr/local/bin/notify_slack_munin
|
|
17
run.sh
17
run.sh
|
@ -54,23 +54,6 @@ else
|
||||||
rm /etc/munin/munin-conf.d/munin_mail.conf /etc/ssmtp/ssmtp.conf
|
rm /etc/munin/munin-conf.d/munin_mail.conf /etc/ssmtp/ssmtp.conf
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# configure Slack notification
|
|
||||||
|
|
||||||
if [[ -n "$SLACKCHANNEL" && -n "$SLACKWEBHOOKURL" ]] ; then
|
|
||||||
SLACKCHANNEL=${SLACKCHANNEL:="hosting"}
|
|
||||||
sed -i "s/slackchannel/$SLACKCHANNEL/g" /usr/local/bin/notify_slack_munin
|
|
||||||
SLACKWEBHOOKURL=${SLACKWEBHOOKURL:="https://hooks.slack.com/services/XXXXX/YYYYYYY/ZZZZZZZ"}
|
|
||||||
sed -i "s,slackwebhookurl,$SLACKWEBHOOKURL,g" /usr/local/bin/notify_slack_munin
|
|
||||||
SLACKUSER=${SLACKUSER:="munin"}
|
|
||||||
sed -i "s/slackuser/$SLACKUSER/g" /usr/local/bin/notify_slack_munin
|
|
||||||
SLACKICON=${SLACKICON:=":bomb:"}
|
|
||||||
sed -i "s/slackicon/$SLACKICON/g" /usr/local/bin/notify_slack_munin
|
|
||||||
sed -i "s/muninurl/$VIRTUAL_HOST/g" /usr/local/bin/notify_slack_munin
|
|
||||||
sed -i "s/muninurl/$VIRTUAL_HOST/g" /etc/munin/munin-conf.d/munin_slack.conf
|
|
||||||
else
|
|
||||||
rm /etc/munin/munin-conf.d/munin_slack.conf
|
|
||||||
fi
|
|
||||||
|
|
||||||
# generate node list
|
# generate node list
|
||||||
NODES=${NODES:-}
|
NODES=${NODES:-}
|
||||||
for NODE in $NODES
|
for NODE in $NODES
|
||||||
|
|
|
@ -1,58 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Slack notification script for Munin
|
|
||||||
# Mark Matienzo (@anarchivist)
|
|
||||||
#
|
|
||||||
# To use:
|
|
||||||
# 1) Create a new incoming webhook for Slack
|
|
||||||
# 2) Edit the configuration variables that start with "SLACK_" below
|
|
||||||
# 3) Add the following to your munin configuration:
|
|
||||||
#
|
|
||||||
# # -- Slack contact configuration
|
|
||||||
# contact.slack.command MUNIN_SERVICESTATE="${var:worst}" MUNIN_HOST="${var:host}" MUNIN_SERVICE="${var:graph_title}" MUNIN_GROUP=${var:group} MUNIN_IMAGE="http://munin.example.org/${var:group}/${var:host}/${var:plugin}-day.png" /usr/local/bin/notify_slack_munin
|
|
||||||
# contact.slack.always_send warning critical
|
|
||||||
# # note: This has to be on one line for munin to parse properly
|
|
||||||
# contact.slack.text ${if:cfields \u000A* CRITICALs:${loop<,>:cfields ${var:label} is ${var:value} (outside range [${var:crange}])${if:extinfo : ${var:extinfo}}}.}${if:wfields \u000A* WARNINGs:${loop<,>:wfields ${var:label} is ${var:value} (outside range [${var:wrange}])${if:extinfo : ${var:extinfo}}}.}${if:ufields \u000A* UNKNOWNs:${loop<,>:ufields ${var:label} is ${var:value}${if:extinfo : ${var:extinfo}}}.}${if:fofields \u000A* OKs:${loop<,>:fofields ${var:label} is ${var:value}${if:extinfo : ${var:extinfo}}}.}
|
|
||||||
|
|
||||||
|
|
||||||
SLACK_CHANNEL="slackchannel"
|
|
||||||
SLACK_WEBHOOK_URL="slackwebhookurl"
|
|
||||||
SLACK_USERNAME="slackuser"
|
|
||||||
SLACK_ICON_EMOJI="slackicon"
|
|
||||||
|
|
||||||
# Url to link from slack notifications
|
|
||||||
MUNIN_URL="http://muninurl/problems.html"
|
|
||||||
|
|
||||||
input=`cat`
|
|
||||||
|
|
||||||
#Set the message icon based on service state
|
|
||||||
if [ "$MUNIN_SERVICESTATE" = "CRITICAL" ]
|
|
||||||
then
|
|
||||||
ICON=":exclamation:"
|
|
||||||
COLOR="danger"
|
|
||||||
elif [ "$MUNIN_SERVICESTATE" = "WARNING" ]
|
|
||||||
then
|
|
||||||
ICON=":warning:"
|
|
||||||
COLOR="warning"
|
|
||||||
elif [ "$MUNIN_SERVICESTATE" = "ok" ]
|
|
||||||
then
|
|
||||||
ICON=":white_check_mark:"
|
|
||||||
COLOR="good"
|
|
||||||
elif [ "$MUNIN_SERVICESTATE" = "OK" ]
|
|
||||||
then
|
|
||||||
ICON=":white_check_mark:"
|
|
||||||
COLOR="good"
|
|
||||||
elif [ "$MUNIN_SERVICESTATE" = "UNKNOWN" ]
|
|
||||||
then
|
|
||||||
ICON=":question:"
|
|
||||||
COLOR="#00CCCC"
|
|
||||||
else
|
|
||||||
ICON=":white_medium_square:"
|
|
||||||
COLOR="#CCCCCC"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Generate the JSON payload
|
|
||||||
PAYLOAD="{\"channel\": \"${SLACK_CHANNEL}\", \"username\": \"${SLACK_USERNAME}\", \"attachments\": [{\"image_url\": \"${MUNIN_IMAGE}\", \"color\": \"${COLOR}\", \"fallback\": \"Munin alert - ${MUNIN_SERVICESTATE}: ${MUNIN_SERVICE} on ${MUNIN_HOST}\", \"pretext\": \"${ICON} Munin alert - ${MUNIN_SERVICESTATE}: ${MUNIN_SERVICE} on ${MUNIN_HOST} in ${MUNIN_GROUP} - <${MUNIN_URL}|View Munin>\", \"fields\": [{\"title\": \"Severity\", \"value\": \"${MUNIN_SERVICESTATE}\", \"short\": \"true\"}, {\"title\": \"Service\", \"value\": \"${MUNIN_SERVICE}\", \"short\": \"true\"}, {\"title\": \"Host\", \"value\": \"${MUNIN_HOST}\", \"short\": \"true\"}, {\"title\": \"Current Values\", \"value\": \"${input}\", \"short\": \"false\"}]}]}"
|
|
||||||
|
|
||||||
#Send message to Slack
|
|
||||||
curl -sX POST -o /dev/null --data "payload=${PAYLOAD}" $SLACK_WEBHOOK_URL
|
|
Reference in a new issue