Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/imixs/muluk
https://github.com/imixs/muluk
Last synced: about 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/imixs/muluk
- Owner: imixs
- License: gpl-3.0
- Created: 2021-08-24T18:16:41.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2022-10-27T20:57:49.000Z (almost 2 years ago)
- Last Synced: 2024-07-11T10:47:15.465Z (2 months ago)
- Language: Java
- Size: 1.63 MB
- Stars: 11
- Watchers: 3
- Forks: 1
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Muluk-Monintor
Muluk is a super simple to use WebService Monitor. Muluk watches your web services and applications and notifies you if something went wrong. It is independent form any other service, needs no database and no painful installation. You simply start with docker and one single configuration file.
Of course, you can run Muluk also in a cluster to ensure a high reliability of your monitoring solution.## Web Frontend
Muluk provides a Web front-end and a Rest API. The Web service is listening on port 8080. The default login data is: user='admin' password='adminadmin'
## Notification & Alerting
Muluk automatically notifies you via E-Mail if one of your services or monitors goes down. In addition Muluk sends out a daily morning E-Mail just to tell you that everything is fine.
# How to Start
Muluk is hosted on Docker-Hub. So you simply can start Muluk with Docker:
$ docker run \
-e TZ="CET" \
-e LANG="en_US.UTF-8" \
-v $PWD/config.xml:/opt/jboss/config.xml \
-p "8080:8080" \
imixs/muluk:latest## The Configuration
All you need is a configuration file defining your cluster and the targets to monitor.
http://localhost:8080
https://www.imixs.org
Imixs-Workflow
https://foo.com/
my-data
yyy
xxx
### The Object ConfigurationEach object to be monitored is defined by an Object Configuraiton inside the *config.xml* file. An Object defines the target URL and a pattern to match the content. Also you can define optional authentication settings to monitor secured web services and applications.
https://foo.com/
my-data
yyy
xxx
| Element | Description | Example |
|-------------|-------------------------------------------------------|-----------------------|
| target | the URL to be monitored | https://www.foo.com |
| pattern | a string or a regular expression to test the content | 'hello world' |
| auth | optional authentication object. The type attribute defines the authentication method (basic,form,jwt,cookie) | basic |
| user | the UserId used for authentication (only for type 'basic' and 'form') | my-userid |
| password | the password used for authentication or a valid jwt token | |### The Mail Configuration
Muluk is automatically sending notifications and alerts via E-Mail if one of your services or monitors goes down. You can define the mail server in the *config.xml* file in the section
[email protected],[email protected]
| Element | Description |
|-------------|---------------------------------------------------------|
| host | host name of you mail sever |
| port | imap port (default 465) |
| user | imap mail user for authentication |
| password | imap password for authentication |
| recipients | comma separated list of mail recipients |## Security
The Web interface is protected with a BASIC authentication security realm. You can use the default user 'admin' with the default password 'adminadmin'.
To change the user/password you simply need to create/edit the files '*muluk-users.properties*' and '*muluk-roles.properties*' and map these files into your docker container.
The files '*muluk-users.properties*' contains the user and password for authentication.
$ docker run \
-e TZ="CET" \
-e LANG="en_US.UTF-8" \
-v $PWD/config.xml:/opt/jboss/config.xml \
-v $PWD/muluk-users.properties:/opt/jboss/wildfly/standalone/configuration/muluk-users.properties \
-v $PWD/muluk-roles.properties:/opt/jboss/wildfly/standalone/configuration/muluk-roles.properties \
-p "8080:8080" \
imixs/muluk:latest## The Rest API
The Muluk Web Monitor also provides a Rest API to request the current config state. You can access he Rest API from the following endpoint:
http://localhos:8080/api/config
This will return the XML object including the latest monitoring data.## Kubernetes
To run Muluk in a Kubernetes Cluster you can use the following directory structure:
muluk/
├── 010-deployment.yaml
└── config
├── config.xml
└── muluk-users.propertiesIn the the subdirectoy *config/* you can place the *config.xm* and the file *muluk-users.properties* containing your access password.
From your config/ directory first create a config-map
$ kubectl create namespace muluk
$ kubectl create configmap muluk-config --from-file=./muluk/config/ -n mulukThe files are mapped in the deployment.ymal file:
apiVersion: apps/v1
kind: Deployment
metadata:
name: imixs-muluk
namespace: muluk
labels:
app: imixs-muluk
spec:
replicas: 1
selector:
matchLabels:
app: imixs-muluk
strategy:
type: Recreate
template:
metadata:
labels:
app: imixs-muluk
spec:
containers:
- image: imixs/muluk:latest
name: imixs-muluk
imagePullPolicy: Always
env:
- name: TZ
value: Europe/Berlin
- name: LANG
value: "en_US.UTF-8"
ports:
- name: web
containerPort: 8080
volumeMounts:
- name: muluk-configmap-volume
mountPath: /opt/jboss/config.xml
subPath: config.xml
- name: muluk-configmap-volume
mountPath: /opt/jboss/wildfly/standalone/configuration/muluk-users.properties
subPath: muluk-users.properties
restartPolicy: Always
volumes:
- name: muluk-configmap-volume
configMap:
name: muluk-config
You should add a Service and Ingress object acording to your Kubernetes environment to access the Web Frontend.
# DevelopmentThe Imixs-Muluk project is open source and you are invited to join the development on [Github](https://github.com/imixs/muluk). If you have questions please use the [Discussion Forum](https://github.com/imixs/muluk/discussions).
Muluk is a Maven Project developed in Java and based on Jakarta EE. We use Docker to provide a single container to run the tool. If you like, you can also deploy Muluk as a war file in a Jakarta EE Web Server. But for simplicity we use the Docker way in the examples here.
## How To Build form Sources
To build the Muluk from sources you simply run the Maven command:
$ mvn clean install -Pdocker
to start the container run:$ docker run \
-e TZ="CET" \
-e LANG="en_US.UTF-8" \
-v $PWD/docker/configuration/config.xml:/opt/jboss/config.xml \
-p "8080:8080" \
imixs/muluk:latest## Local Development
During development you can build a development version providing debugging mode. To build the development version run:
$ mvn clean install -Pdebug
to start the container in dev mode run:
$ docker run \
-e TZ="CET" \
-e LANG="en_US.UTF-8" \
-v $PWD/docker/deployments:/opt/jboss/wildfly/standalone/deployments/ \
-v $PWD/docker/configuration/config.xml:/opt/jboss/config.xml \
-p "8080:8080" \
-p "8787:8787" \
imixs/muluk:latest