diff --git a/README b/README index 87ed309cc719ea383964552ae57bf99135cef410..e1279f38246c0529f9a2cb53e11228474fde089b 100644 --- a/README +++ b/README @@ -1,3 +1,14 @@ +#For Docker +cp config.sample.py config.py +Modify : + - BBB_API_URL (end with /bigbluebutton/api) + - BBB_SECRET_KEY + +cd docker +docker-compose up --build --detach + + +#Complete Installation #INSTALL python3 -m venv .venv source .venv/bin/activate @@ -13,4 +24,5 @@ python getMeetings.py * * * * * BBBStats/run.sh >> BBBStats/run.log #AGIMUS -You can find an export of agimus (Kibana) dashboard in folder agimus \ No newline at end of file +You can find an export of agimus (Kibana) dashboard in folder agimus + diff --git a/docker/.env b/docker/.env new file mode 100644 index 0000000000000000000000000000000000000000..0561a75f8b55e0d372e07b82952fc6fbee6121b1 --- /dev/null +++ b/docker/.env @@ -0,0 +1,8 @@ +ELASTICSEARCH_SERVER=elasticsearch +ELASTICSEARCH_INPORT=9200 +ELASTICSEARCH_OUTPORT=9200 +KIBANA_SERVER=kibana +KIBANA_INPORT=5601 +KIBANA_OUTPORT=5601 +ELASTIC_STACK_VERSION=7.17.27 +ELASTIC_DATA=./elasticsearch-data \ No newline at end of file diff --git a/docker/Dockerfile-python b/docker/Dockerfile-python new file mode 100644 index 0000000000000000000000000000000000000000..745bf01f343c783f8a0a6835741903c742b5ecdc --- /dev/null +++ b/docker/Dockerfile-python @@ -0,0 +1,27 @@ +FROM python:3.13.1-alpine +RUN apk update +RUN apk add \ + build-base \ + curl \ + jq + +RUN mkdir /app +WORKDIR /app + +COPY --from=src config.py . +COPY --from=src agimus/export.ndjson kibana-object.ndjson +COPY --from=src requirements.txt . +COPY run-docker.sh run.sh + +RUN pip install -r requirements.txt +ENV PYTHONUNBUFFERED 1 + +COPY --from=src bbbtools.py . +COPY --from=src estools.py . +COPY --from=src getMeetings.py . + +RUN chmod +x run.sh + + +WORKDIR /app +CMD ["/app/run.sh"] \ No newline at end of file diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml new file mode 100644 index 0000000000000000000000000000000000000000..612c6dca23711a7aa3f4f886405067de1aa347b9 --- /dev/null +++ b/docker/docker-compose.yml @@ -0,0 +1,47 @@ + +services: + python: + build: + context: ./ + additional_contexts: + src: ../ + dockerfile: Dockerfile-python + env_file: + - ./.env + restart: always + depends_on: + - elasticsearch + - kibana + elasticsearch: + image: elasticsearch:${ELASTIC_STACK_VERSION} + restart: always + ports: + - ${ELASTICSEARCH_OUTPORT}:${ELASTICSEARCH_INPORT} + env_file: + - ./.env + environment: + - discovery.type=single-node + - xpack.security.enabled=false + - XPACK_SECURITY_ENABLED=false + ulimits: + memlock: + soft: -1 + hard: -1 + nofile: + soft: 65536 + hard: 65536 + cap_add: + - IPC_LOCK + volumes: + - ${ELASTIC_DATA}:/usr/share/elasticsearch/data + kibana: + image: kibana:${ELASTIC_STACK_VERSION} + restart: always + env_file: + - ./.env + environment: + - ELASTICSEARCH_HOSTS=http://${ELASTICSEARCH_SERVER}:${ELASTICSEARCH_INPORT} + ports: + - ${KIBANA_OUTPORT}:${KIBANA_INPORT} + depends_on: + - elasticsearch diff --git a/docker/run-docker.sh b/docker/run-docker.sh new file mode 100644 index 0000000000000000000000000000000000000000..1af4efd3ac34005550925485ca215480998dfd15 --- /dev/null +++ b/docker/run-docker.sh @@ -0,0 +1,37 @@ +#!/bin/sh + +#Wait ES up +until nc -z ${ELASTICSEARCH_SERVER} ${ELASTICSEARCH_INPORT} +do + echo "$(date) - Waiting for elasticsearch on ${ELASTICSEARCH_SERVER}:${ELASTICSEARCH_INPORT}"; + sleep 3; +done +echo "$(date) - Elasticsearch on ${ELASTICSEARCH_SERVER}:${ELASTICSEARCH_INPORT} is ready" + +#Wait Kibana start +until nc -z ${KIBANA_SERVER} ${KIBANA_INPORT} +do + echo "$(date) - Waiting for kibana on ${KIBANA_SERVER}:${KIBANA_INPORT}"; + sleep 3; +done +echo "$(date) - Kibana on ${KIBANA_SERVER}:${KIBANA_INPORT} is ready" + + +#Wait Kibana ready +until curl -s -f -o /dev/null "http://${KIBANA_SERVER}:${KIBANA_INPORT}/api/status" +do + echo "$(date) - Waiting for kibana on ${KIBANA_SERVER}:${KIBANA_INPORT} is ready"; + sleep 3 +done + +#Create Kibana objects +echo -n "$(date) - Create Kibana dashboard success:" +curl -s -X POST http://${KIBANA_SERVER}:${KIBANA_INPORT}/api/saved_objects/_import?overwrite=true -H "kbn-xsrf: true" --form file=@kibana-object.ndjson | jq .success +echo "" + +while true +do + echo "$(date) - GetMettings" + python /app/getMeetings.py + sleep 180 +done