Compare commits

..

No commits in common. "master" and "8.2.1.01" have entirely different histories.

12 changed files with 5310 additions and 8443 deletions

5
.env
View file

@ -1 +1,4 @@
CURRENT_USER=1000:1000 GF_ADMIN_USER=admin
GF_ADMIN_PASSWORD=mikrotik
CURRENT_USER=root
MIKROTIK_IP=192.168.88.1

View file

@ -14,7 +14,7 @@ jobs:
with: with:
path: "run.sh" path: "run.sh"
severity: "warning, error" severity: "warning, error"
test: test:
name: test name: test
needs: lint needs: lint
@ -22,12 +22,13 @@ jobs:
steps: steps:
- name: deploy with sh script - name: deploy with sh script
run: curl -fsSL https://raw.githubusercontent.com/IgorKha/Grafana-Mikrotik/master/run.sh | bash -s -- run: curl -fsSL https://raw.githubusercontent.com/IgorKha/Grafana-Mikrotik/master/run.sh | bash -s --
- name: Test Grafana - name: Test Grafana
run: sleep 10 && curl -GLsS --retry 5 --retry-connrefused --retry-delay 2 'http://localhost:3000/api/health' run: sleep 5 && curl -ILsS --retry 5 --retry-delay 2 "http://localhost:3000/login"
- name: Test Prometheus - name: Test Prometheus
run: curl -GLsS --retry 5 --retry-delay 2 "http://localhost:9090/-/ready" run: curl -ILsS --retry 5 --retry-delay 2 "http://localhost:9090"
- name: Test snmp_exporter - name: Test snmp_exporter
run: curl -ILsS --retry 5 --retry-delay 2 "http://localhost:9116" run: curl -ILsS --retry 5 --retry-delay 2 "http://localhost:9116"

View file

@ -1,3 +0,0 @@
GF_SECURITY_ADMIN_USER=admin
GF_SECURITY_ADMIN_PASSWORD=mikrotik
GF_USERS_ALLOW_SIGN_UP=false

View file

@ -1 +0,0 @@
MIKROTIK_IP=192.168.88.1

File diff suppressed because it is too large Load diff

View file

@ -1,26 +1,22 @@
# Grafana-Mikrotik # Grafana-Mikrotik
![logo](https://repository-images.githubusercontent.com/366494855/c62052b8-17c2-47f2-a3ae-0e397a3ef074)
![visitors](https://visitor-badge.laobi.icu/badge?page_id=IgorKha.Grafana-Mikrotik) ![visitors](https://visitor-badge.laobi.icu/badge?page_id=IgorKha.Grafana-Mikrotik)
![example branch parameter](https://github.com/IgorKha/Grafana-Mikrotik/actions/workflows/action.yml/badge.svg?branch=master) ![example branch parameter](https://github.com/IgorKha/Grafana-Mikrotik/actions/workflows/action.yml/badge.svg?branch=master)
![mikrotikOS](https://img.shields.io/badge/Mikrotik_ROS-v7.4-blue) ![mikrotikOS](https://img.shields.io/badge/Mikrotik_ROS-v6.49-blue)
![Grafana](https://img.shields.io/badge/Grafana-v9.0.5-orange?logo=grafana) ![Grafana](https://img.shields.io/badge/Grafana-v8.2.1-orange?logo=grafana)
![Prometheus](https://img.shields.io/badge/Prometheus-v2.37.0-red?logo=prometheus) ![Prometheus](https://img.shields.io/badge/Prometheus-v2.30.3-red?logo=prometheus)
![snmp_exporter](https://img.shields.io/badge/snmp__exporter-v0.20.0-red?logo=prometheus) ![snmp_exporter](https://img.shields.io/badge/snmp__exporter-v0.20.0-red?logo=prometheus)
[![Donate using Liberapay](https://liberapay.com/assets/widgets/donate.svg)](https://liberapay.com/~1772367/donate) [![Donate using Liberapay](https://liberapay.com/assets/widgets/donate.svg)](https://liberapay.com/~1772367/donate)
--- -----------
## 🐳 Deploy with docker-compose ## 🐳 Deploy with docker-compose
### Deploy with bash script ### Deploy with bash script
```console ```console
git clone https://github.com/IgorKha/Grafana-Mikrotik.git curl -fsSL https://raw.githubusercontent.com/IgorKha/Grafana-Mikrotik/master/run.sh | bash -s -- --config
cd ./Grafana-Mikrotik
bash ./run.sh --config
``` ```
```console ```console
@ -28,7 +24,7 @@ bash ./run.sh --config
--config: change the user and password to grafana and specify the mikrotik IP address --config: change the user and password to grafana and specify the mikrotik IP address
--stop: stop docker containers stop: stop docker containers
--help --help
``` ```
@ -36,7 +32,7 @@ bash ./run.sh --config
For example: For example:
```console ```console
bash run.sh --config sh run.sh --config
``` ```
[![asciicast](https://asciinema.org/a/nOhuc7LvI6bRWbg7dcvqFQ4Kc.png)](https://asciinema.org/a/nOhuc7LvI6bRWbg7dcvqFQ4Kc) [![asciicast](https://asciinema.org/a/nOhuc7LvI6bRWbg7dcvqFQ4Kc.png)](https://asciinema.org/a/nOhuc7LvI6bRWbg7dcvqFQ4Kc)
@ -53,13 +49,13 @@ docker-compose up -d
3.Open [localhost:3000](http://localhost:3000) 3.Open [localhost:3000](http://localhost:3000)
* Grafana login: `admin` * Grafana login: `admin`
* Password: `mikrotik` * Password: `mikrotik`
If you want to change the credentials, then edit the ".env" file If you want to change the credentials, then edit the ".env" file
--- -----------
## Manual deploy ## Manual deploy
@ -86,9 +82,9 @@ If you want to change the credentials, then edit the ".env" file
3.Add dashboard <https://grafana.com/grafana/dashboards/14420> 3.Add dashboard <https://grafana.com/grafana/dashboards/14420>
--- -----------
### Docker snmp_exporter (deprecated) ### Docker snmp_exporter
[![Docker Pulls](https://img.shields.io/docker/pulls/mashinkopochinko/snmp_exporter_mikrotik?logo=docker)](https://hub.docker.com/repository/docker/mashinkopochinko/snmp_exporter_mikrotik) [![Docker Pulls](https://img.shields.io/docker/pulls/mashinkopochinko/snmp_exporter_mikrotik?logo=docker)](https://hub.docker.com/repository/docker/mashinkopochinko/snmp_exporter_mikrotik)
@ -98,5 +94,5 @@ If you want to change the credentials, then edit the ".env" file
sudo docker run -d -p 9116:9116 mashinkopochinko/snmp_exporter_mikrotik:latest sudo docker run -d -p 9116:9116 mashinkopochinko/snmp_exporter_mikrotik:latest
``` ```
--- -----------
![img1](/readme/screen.png) ![img1](/readme/screen.png)

View file

@ -2,23 +2,25 @@ version: '3.9'
services: services:
grafana: grafana:
image: grafana/grafana:9.0.5 image: grafana/grafana:8.2.1
env_file:
- .grafana
container_name: mk_grafana container_name: mk_grafana
restart: always restart: always
volumes: volumes:
- ./grafana/provisioning/:/etc/grafana/provisioning/ - ./grafana/provisioning/:/etc/grafana/provisioning/
ports: ports:
- "3000:3000" - "3000:3000"
environment:
- GF_SECURITY_ADMIN_USER=${GF_ADMIN_USER}
- GF_SECURITY_ADMIN_PASSWORD=${GF_ADMIN_PASSWORD}
- GF_USERS_ALLOW_SIGN_UP=false
prometheus: prometheus:
image: prom/prometheus image: prom/prometheus
env_file:
- .prometheus
user: ${CURRENT_USER} user: ${CURRENT_USER}
container_name: mk_prometheus container_name: mk_prometheus
restart: always restart: always
environment:
- MIKROTIK_IP=${MIKROTIK_IP}
volumes: volumes:
- ./prometheus/:/etc/prometheus - ./prometheus/:/etc/prometheus
- ./prometheus/data/:/prometheus - ./prometheus/data/:/prometheus
@ -26,12 +28,10 @@ services:
- "9090:9090" - "9090:9090"
snmp_exporter: snmp_exporter:
image: prom/snmp-exporter image: mashinkopochinko/snmp_exporter_mikrotik
container_name: mk_snmp_exporter container_name: mk_snmp_exporter
restart: always restart: always
volumes:
- ./snmp/:/etc/snmp_exporter/
ports: ports:
- "9116:9116" - "9116:9116"
depends_on: depends_on:
- prometheus - prometheus

File diff suppressed because it is too large Load diff

View file

@ -28,15 +28,14 @@ scrape_configs:
- job_name: 'prometheus' - job_name: 'prometheus'
# Override the global default and scrape targets from this job every 5 seconds. # Override the global default and scrape targets from this job every 5 seconds.
scrape_interval: 10s scrape_interval: 5s
scrape_timeout: 10s scrape_timeout: 5s
tls_config:
insecure_skip_verify: true
# metrics_path defaults to '/metrics' # metrics_path defaults to '/metrics'
# scheme defaults to 'http'. # scheme defaults to 'http'.
#static_configs: static_configs:
#- targets: ['localhost:9090'] - targets: ['localhost:9090']
- job_name: Mikrotik - job_name: Mikrotik
static_configs: static_configs:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 287 KiB

After

Width:  |  Height:  |  Size: 246 KiB

Before After
Before After

38
run.sh
View file

@ -4,10 +4,10 @@
# You can also pass some arguments to script to set some these options: # You can also pass some arguments to script to set some these options:
# #
# --config: change the user and password to grafana and specify the mikrotik IP address # --config: change the user and password to grafana and specify the mikrotik IP address
# --stop: stop docker containers # stop: stop docker containers
# #
# For example: # For example:
# bash run.sh --config # sh run.sh --config
# #
############################################################################ ############################################################################
@ -15,8 +15,6 @@ set -e
REPO=Grafana-Mikrotik REPO=Grafana-Mikrotik
ENV_FILE=${ENV_FILE:-.env} ENV_FILE=${ENV_FILE:-.env}
ENV_FILE_GF=${ENV_FILE_GF:-.grafana}
ENV_FILE_PROMETHEUS=${ENV_FILE_PROMETHEU:-.prometheus}
#? Colors #? Colors
RED='\033[31m' RED='\033[31m'
@ -96,7 +94,7 @@ clone_git() {
router_ip() { router_ip() {
if [[ "${CONFIG}" = yes ]]; then if [[ "${CONFIG}" = yes ]]; then
IP=$(grep -R 'MIKROTIK_IP' "${ENV_FILE_PROMETHEUS}" 2>&1 | cut -d= -f2) IP=$(grep -R 'MIKROTIK_IP' "${ENV_FILE}" | cut -d= -f2)
echo -e "\n${BLUE}====================================" echo -e "\n${BLUE}===================================="
echo -e "\n${BOLD}Prometheus${RESET}\n" echo -e "\n${BOLD}Prometheus${RESET}\n"
if ask "Change target mikrotik IP address ? (current ${IP})" Y; then if ask "Change target mikrotik IP address ? (current ${IP})" Y; then
@ -104,12 +102,12 @@ router_ip() {
if [ -d "./${REPO}" ]; then if [ -d "./${REPO}" ]; then
sed -ri -e '/mikrotik_ip/s/(- ).*( #.*)/\1'"${IP}"'\2/g' \ sed -ri -e '/mikrotik_ip/s/(- ).*( #.*)/\1'"${IP}"'\2/g' \
${REPO}/prometheus/prometheus.yml ${REPO}/prometheus/prometheus.yml
sed -ri -e 's/^(MIKROTIK_IP=)(.*)$/\1'"$IP"'/g' "${ENV_FILE_PROMETHEUS}" sed -ri -e 's/^(MIKROTIK_IP=)(.*)$/\1'"$IP"'/g' "${ENV_FILE}"
echo -e "\n${GREEN}... Prometheus target IP changed to ${IP}" echo -e "\n${GREEN}... Prometheus target IP changed to ${IP}"
else else
sed -ri -e '/mikrotik_ip/s/(- ).*( #.*)/\1'"${IP}"'\2/g' \ sed -ri -e '/mikrotik_ip/s/(- ).*( #.*)/\1'"${IP}"'\2/g' \
./prometheus/prometheus.yml ./prometheus/prometheus.yml
sed -ri -e 's/^(MIKROTIK_IP=)(.*)$/\1'"${IP}"'/g' "${ENV_FILE_PROMETHEUS}" sed -ri -e 's/^(MIKROTIK_IP=)(.*)$/\1'"${IP}"'/g' "${ENV_FILE}"
echo -e "\n${GREEN}... Prometheus target IP changed to ${IP}" echo -e "\n${GREEN}... Prometheus target IP changed to ${IP}"
fi fi
return return
@ -147,8 +145,8 @@ grafana_credentials() {
read -rp 'Enter grafana Username: ' GF_USER read -rp 'Enter grafana Username: ' GF_USER
read -rsp 'Enter grafana Password: ' GF_PASSWD read -rsp 'Enter grafana Password: ' GF_PASSWD
sed -ri -e 's/^(GF_SECURITY_ADMIN_USER=)(.*)$/\1'"${GF_USER}"'/g' "${ENV_FILE_GF}" sed -ri -e 's/^(GF_ADMIN_USER=)(.*)$/\1'"${GF_USER}"'/g' "${ENV_FILE}"
sed -ri -e 's/^(GF_SECURITY_ADMIN_PASSWORD=)(.*)$/\1'"${GF_PASSWD}"'/g' "${ENV_FILE_GF}" sed -ri -e 's/^(GF_ADMIN_PASSWORD=)(.*)$/\1'"${GF_PASSWD}"'/g' "${ENV_FILE}"
else else
echo -e "Default Grafana: echo -e "Default Grafana:
User: ${YELLOW}admin${RESET} User: ${YELLOW}admin${RESET}
@ -158,19 +156,19 @@ grafana_credentials() {
fi fi
} }
docker-cmd() { docker() {
if [[ "${STOP}" = yes ]]; then if [[ "${STOP}" = yes ]]; then
if [ -d "./${REPO}" ]; then if [ -d "./${REPO}" ]; then
cd ${REPO} && docker compose down cd ${REPO} && docker-compose down
else else
docker compose down docker-compose down
fi fi
else else
if [[ -d "./${REPO}" ]]; then if [[ -d "./${REPO}" ]]; then
cd ${REPO} && docker compose up -d cd ${REPO} && docker-compose up -d
print_success print_success
else else
docker compose up -d docker-compose up -d
print_success print_success
fi fi
fi fi
@ -189,7 +187,7 @@ main() {
case $1 in case $1 in
--help) HELP=yes ;; --help) HELP=yes ;;
--config) CONFIG=yes ;; --config) CONFIG=yes ;;
--stop) STOP=yes ;; stop) STOP=yes ;;
esac esac
shift shift
done done
@ -197,18 +195,14 @@ main() {
help help
command_exists git command_exists git
command_exists docker command_exists docker-compose
#? init #? init
if [[ -d "./${REPO}" ]]; then if [[ -d "./${REPO}" ]]; then
ENV_FILE=${REPO}/.env ENV_FILE=${REPO}/.env
ENV_FILE_GF=${REPO}/.grafana
ENV_FILE_PROMETHEUS=${REPO}/.prometheus
elif [[ ! -e ${ENV_FILE} ]]; then elif [[ ! -e ${ENV_FILE} ]]; then
clone_git clone_git
ENV_FILE=${REPO}/.env ENV_FILE=${REPO}/.env ;
ENV_FILE_GF=${REPO}/.grafana
ENV_FILE_PROMETHEUS=${REPO}/.prometheus
fi fi
router_ip router_ip
@ -218,7 +212,7 @@ main() {
# Change UID:GID prometheus container to current user # Change UID:GID prometheus container to current user
sed -ri -e 's/^(CURRENT_USER=)(.*)$/\1'"$(id -u)\:$(id -g)"'/g' "${ENV_FILE}" sed -ri -e 's/^(CURRENT_USER=)(.*)$/\1'"$(id -u)\:$(id -g)"'/g' "${ENV_FILE}"
docker-cmd docker
} }
main "$@" main "$@"

File diff suppressed because it is too large Load diff