From 013b5509291a16a5ae55e3cbed604b829c2ca441 Mon Sep 17 00:00:00 2001 From: Ildar Iskhakov Date: Thu, 9 Jun 2022 11:17:14 +0300 Subject: [PATCH 01/17] Add docker compose stack --- deploy/docker-compose/README.md | 28 ++++ deploy/docker-compose/docker-compose.yml | 189 +++++++++++++++++++++++ 2 files changed, 217 insertions(+) create mode 100644 deploy/docker-compose/README.md create mode 100644 deploy/docker-compose/docker-compose.yml diff --git a/deploy/docker-compose/README.md b/deploy/docker-compose/README.md new file mode 100644 index 00000000..2bc768cb --- /dev/null +++ b/deploy/docker-compose/README.md @@ -0,0 +1,28 @@ +Download docker-compose.yaml +```angular2html +curl https://github.com/... -o docker-compose.yaml +``` + +Start docker-compose stack +```bash +DOMAIN=localhost \ +SECRET_KEY=my_random_secret_must_be_more_than_32_characters_long \ +RABBITMQ_PASSWORD=rabbitmq_secret_pw \ +MYSQL_PASSWORD=mysql_secret_pw \ +COMPOSE_PROFILES=with_grafana \ +GRAFANA_USER=admin \ +GRAFANA_PASSWORD=grafana_secret_pw \ +docker-compose -f docker-compose.yml up --build -d +``` + +Get the instructions and credentials +```bash +DOMAIN=localhost \ +SECRET_KEY=my_random_secret_must_be_more_than_32_characters_long \ +RABBITMQ_PASSWORD=rabbitmq_secret_pw \ +MYSQL_PASSWORD=mysql_secret_pw \ +COMPOSE_PROFILES=with_grafana \ +GRAFANA_USER=admin \ +GRAFANA_PASSWORD=grafana_secret_pw \ +docker-compose -f docker-compose.yml run engine python manage.py issue_invite_for_the_frontend --override +``` diff --git a/deploy/docker-compose/docker-compose.yml b/deploy/docker-compose/docker-compose.yml new file mode 100644 index 00000000..7f7d998c --- /dev/null +++ b/deploy/docker-compose/docker-compose.yml @@ -0,0 +1,189 @@ +services: + engine: + # TODO: change to the public image once it's public + # image: ... + build: ../../engine + command: > + sh -c "uwsgi --ini uwsgi.ini" + environment: + BASE_URL: https://$DOMAIN + SECRET_KEY: $SECRET_KEY + RABBITMQ_USERNAME: "rabbitmq" + RABBITMQ_PASSWORD: $RABBITMQ_PASSWORD + RABBITMQ_HOST: "rabbitmq" + RABBITMQ_PORT: "5672" + RABBITMQ_DEFAULT_VHOST: "/" + MYSQL_PASSWORD: $MYSQL_PASSWORD + MYSQL_DB_NAME: oncall_hobby + MYSQL_USER: ${MYSQL_USER:-root} + MYSQL_HOST: ${MYSQL_HOST:-mysql} + MYSQL_PORT: 3306 + REDIS_URI: redis://redis:6379/0 + DJANGO_SETTINGS_MODULE: settings.hobby + depends_on: + mysql: + condition: service_healthy + oncall_db_migration: + condition: service_completed_successfully + rabbitmq: + condition: service_started + redis: + condition: service_started + + celery: + # TODO: change to the public image once it's public + build: ../../engine + command: sh -c "./celery_with_exporter.sh" + environment: + BASE_URL: https://$DOMAIN + SECRET_KEY: $SECRET_KEY + RABBITMQ_USERNAME: "rabbitmq" + RABBITMQ_PASSWORD: $RABBITMQ_PASSWORD + RABBITMQ_HOST: "rabbitmq" + RABBITMQ_PORT: "5672" + RABBITMQ_DEFAULT_VHOST: "/" + MYSQL_PASSWORD: $MYSQL_PASSWORD + MYSQL_DB_NAME: oncall_hobby + MYSQL_USER: ${MYSQL_USER:-root} + MYSQL_HOST: ${MYSQL_HOST:-mysql} + MYSQL_PORT: 3306 + REDIS_URI: redis://redis:6379/0 + DJANGO_SETTINGS_MODULE: settings.hobby + CELERY_WORKER_QUEUE: "default,critical,long,slack,telegram,webhook" + CELERY_WORKER_CONCURRENCY: "1" + CELERY_WORKER_MAX_TASKS_PER_CHILD: "100" + CELERY_WORKER_SHUTDOWN_INTERVAL: "65m" + CELERY_WORKER_BEAT_ENABLED: "True" + depends_on: + mysql: + condition: service_healthy + oncall_db_migration: + condition: service_completed_successfully + rabbitmq: + condition: service_started + redis: + condition: service_started + + oncall_db_migration: + build: ../../engine + command: python manage.py migrate --noinput + environment: + BASE_URL: https://$DOMAIN + SECRET_KEY: $SECRET_KEY + RABBITMQ_USERNAME: "rabbitmq" + RABBITMQ_PASSWORD: $RABBITMQ_PASSWORD + RABBITMQ_HOST: "rabbitmq" + RABBITMQ_PORT: "5672" + RABBITMQ_DEFAULT_VHOST: "/" + MYSQL_PASSWORD: $MYSQL_PASSWORD + MYSQL_DB_NAME: oncall_hobby + MYSQL_USER: ${MYSQL_USER:-root} + MYSQL_HOST: ${MYSQL_HOST:-mysql} + MYSQL_PORT: 3306 + REDIS_URI: redis://redis:6379/0 + DJANGO_SETTINGS_MODULE: settings.hobby + depends_on: + mysql: + condition: service_healthy + + mysql: + image: mysql:5.7 + platform: linux/x86_64 + mem_limit: 500m + cpus: 0.5 + command: --default-authentication-plugin=mysql_native_password + restart: always + ports: + - 3306:3306 + volumes: + - dbdata:/var/lib/mysql + environment: + MYSQL_ROOT_PASSWORD: $MYSQL_PASSWORD + MYSQL_DATABASE: oncall_hobby + healthcheck: + test: "mysql -uroot -p$MYSQL_PASSWORD oncall_hobby -e 'select 1'" + timeout: 20s + retries: 10 + + redis: + image: redis + mem_limit: 100m + cpus: 0.1 + restart: always + ports: + - 6379:6379 + + rabbitmq: + image: "rabbitmq:3.7.15-management" + hostname: rabbitmq + mem_limit: 1000m + cpus: 0.5 + volumes: + - rabbitmqdata:/var/lib/rabbitmq + environment: + RABBITMQ_DEFAULT_USER: "rabbitmq" + RABBITMQ_DEFAULT_PASS: $RABBITMQ_PASSWORD + RABBITMQ_DEFAULT_VHOST: "/" + + mysql_to_create_grafana_db: + image: mysql:5.7 + platform: linux/x86_64 + command: bash -c "mysql -h ${MYSQL_HOST:-mysql} -uroot -p${MYSQL_PASSWORD:?err} -e 'CREATE DATABASE IF NOT EXISTS grafana CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;'" + depends_on: + mysql: + condition: service_healthy + profiles: + - with_grafana + + grafana: + image: "grafana/grafana:8.3.2" + mem_limit: 500m + cpus: 0.5 + environment: + GF_DATABASE_TYPE: mysql + GF_DATABASE_HOST: ${MYSQL_HOST:-mysql} + GF_DATABASE_USER: ${MYSQL_USER:-root} + GF_DATABASE_PASSWORD: ${MYSQL_PASSWORD:?err} + GF_SECURITY_ADMIN_USER: ${GRAFANA_USER:-admin} + GF_SECURITY_ADMIN_PASSWORD: ${GRAFANA_PASSWORD:?err} + GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS: grafana-oncall-app + GF_INSTALL_PLUGINS: grafana-oncall-app + GF_SERVER_ROOT_URL: http://$DOMAIN/grafana/ + GF_SERVER_SERVE_FROM_SUB_PATH: "true" + volumes: + - ../../grafana-plugin:/var/lib/grafana/plugins/grafana-plugin + depends_on: + mysql_to_create_grafana_db: + condition: service_completed_successfully + mysql: + condition: service_healthy + profiles: + - with_grafana + + caddy: + image: caddy + volumes: + - caddy_data:/data + - caddy_config:/config + ports: + - 80:80 + - 443:443 + command: + - sh + - '-c' + - | + cat < /etc/caddy/Caddyfile + {\$$CADDY_DOMAIN} { + reverse_proxy /grafana/* grafana:3000 + reverse_proxy /* engine:8080 + } + EOF + caddy run --config=/etc/caddy/Caddyfile + environment: + CADDY_DOMAIN: $DOMAIN + +volumes: + dbdata: + rabbitmqdata: + caddy_data: + caddy_config: \ No newline at end of file From b1fe53ca68c794d29a3889dec0fa3876ae48f6d0 Mon Sep 17 00:00:00 2001 From: Ildar Iskhakov Date: Thu, 9 Jun 2022 11:26:09 +0300 Subject: [PATCH 02/17] Add settings file for hobby --- deploy/docker-compose/README.md | 2 +- engine/settings/hobby.py | 55 +++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 engine/settings/hobby.py diff --git a/deploy/docker-compose/README.md b/deploy/docker-compose/README.md index 2bc768cb..41e77bd8 100644 --- a/deploy/docker-compose/README.md +++ b/deploy/docker-compose/README.md @@ -1,5 +1,5 @@ Download docker-compose.yaml -```angular2html +```bash curl https://github.com/... -o docker-compose.yaml ``` diff --git a/engine/settings/hobby.py b/engine/settings/hobby.py new file mode 100644 index 00000000..aa7ad6b2 --- /dev/null +++ b/engine/settings/hobby.py @@ -0,0 +1,55 @@ +import sys +from random import randrange + +from .prod_without_db import * # noqa + +# Workaround to use pymysql instead of mysqlclient +import pymysql +pymysql.install_as_MySQLdb() + +DATABASES = { + "default": { + "ENGINE": "django.db.backends.mysql", + "NAME": os.environ.get("MYSQL_DB_NAME"), + "USER": os.environ.get("MYSQL_USER"), + "PASSWORD": os.environ["MYSQL_PASSWORD"], + "HOST": os.environ.get("MYSQL_HOST"), + "PORT": os.environ.get("MYSQL_PORT"), + "OPTIONS": { + "charset": "utf8mb4", + "connect_timeout": 1, + }, + }, +} + +RABBITMQ_USERNAME=os.environ.get("RABBITMQ_USERNAME") +RABBITMQ_PASSWORD=os.environ.get("RABBITMQ_PASSWORD") +RABBITMQ_HOST=os.environ.get("RABBITMQ_HOST") +RABBITMQ_PORT=os.environ.get("RABBITMQ_PORT") + +CELERY_BROKER_URL = f"amqp://{RABBITMQ_USERNAME}:{RABBITMQ_PASSWORD}@{RABBITMQ_HOST}:{RABBITMQ_PORT}" + +MIRAGE_SECRET_KEY = SECRET_KEY +MIRAGE_CIPHER_IV = "1234567890abcdef" # use default + +APPEND_SLASH = False +SECURE_SSL_REDIRECT = False + +# TODO: OSS: Add these setting to oss settings file. Add Version there too. +OSS_INSTALLATION_FEATURES_ENABLED = True + +INSTALLED_APPS += ["apps.oss_installation"] # noqa + +CELERY_BEAT_SCHEDULE["send_usage_stats"] = { # noqa + "task": "apps.oss_installation.tasks.send_usage_stats_report", + "schedule": crontab(hour=0, minute=randrange(0, 59)), # Send stats report at a random minute past midnight # noqa + "args": (), +} # noqa + +CELERY_BEAT_SCHEDULE["send_cloud_heartbeat"] = { # noqa + "task": "apps.oss_installation.tasks.send_cloud_heartbeat", + "schedule": crontab(minute="*/3"), # noqa + "args": (), +} # noqa + +SEND_ANONYMOUS_USAGE_STATS = True From bd923936575bed2a92cfbc5b7e348d9ca4ce1e3d Mon Sep 17 00:00:00 2001 From: Matvey Kukuy Date: Thu, 9 Jun 2022 15:49:14 +0300 Subject: [PATCH 03/17] Updating a lot... --- README.md | 54 ++++++++------------ deploy/docker-compose/README.md | 28 ---------- deploy/docker-compose/docker-compose.yml | 32 +++--------- docs/sources/integrations/webhooks/_index.md | 2 +- 4 files changed, 28 insertions(+), 88 deletions(-) diff --git a/README.md b/README.md index aa8300dc..e89ee533 100644 --- a/README.md +++ b/README.md @@ -11,57 +11,45 @@ Developer-friendly, incident response management with brilliant Slack integratio ![Grafana OnCall Screenshot](screenshot.png) ## Getting Started -OnCall consists of two parts: -1. OnCall backend -2. "Grafana OnCall" plugin you need to install in your Grafana -### How to run OnCall backend -1. An all-in-one image of OnCall is available on docker hub to run it: +### Launch "hobby" environment + +Download docker-compose.yaml: ```bash -docker run -it --name oncall-backend -p 8000:8000 grafana/oncall-all-in-one +curl https://github.com/... -o docker-compose.yaml ``` -2. When the image starts up you will see a message like this: +Set environment: ```bash -👋 This script will issue an invite token to securely connect the frontend. -Maintainers will be happy to help in the slack channel #grafana-oncall: https://slack.grafana.com/ -Your invite token: , use it in the Grafana OnCall plugin. +export DOMAIN=http://localhost +export SECRET_KEY=my_random_secret_must_be_more_than_32_characters_long +export RABBITMQ_PASSWORD=rabbitmq_secret_pw +export MYSQL_PASSWORD=mysql_secret_pw +export COMPOSE_PROFILES=with_grafana +export GRAFANA_USER=admin +export GRAFANA_PASSWORD=admin ``` -3. If you started your container detached with -d check the log: +Launch stack: ```bash -docker logs oncall-backend +docker-compose -f docker-compose.yml up --build -d ``` -### How to install "Grafana OnCall" Plugin and connect with a backend -1. Open Grafana in your browser and login as an Admin -2. Navigate to Configuration → Plugins -3. Type Grafana OnCall into the "Search Grafana plugins" field -4. Select the Grafana OnCall plugin and press the "Install" button -5. On the Grafana OnCall Plugin page Enable the plugin and go to the Configuration tab you should see a status field with the message -``` -OnCall has not been setup, configure & initialize below. -``` -6. Fill in configuration fields using the token you got from the backend earlier, then press "Install Configuration" -``` -OnCall API URL: (The URL & port used to access OnCall) -http://host.docker.internal:8000 - -OnCall Invitation Token (Single use token to connect Grafana instance): -Invitation token from docker startup - -Grafana URL (URL OnCall will use to talk to this Grafana instance): -http://localhost:3000 (or http://host.docker.internal:3000 if your grafana is running in Docker locally) +Get the instructions and the token: +```bash +docker-compose -f docker-compose.yml run engine python manage.py issue_invite_for_the_frontend --override ``` -## Getting Help +^ follow instructions and enjoy! + +## Join our comminuty - `#grafana-oncall` channel at https://slack.grafana.com/ - Grafana Labs community forum for OnCall: https://community.grafana.com - File an [issue](https://github.com/grafana/oncall/issues) for bugs, issues and feature suggestions. ## Production Setup -Looking for the production instructions? We're going to release them soon. Please join our Slack channel to be the first to know about them. +For production setup check [PRODUCTION.md](PRODUCTION.md). ## Further Reading - *Documentation* - [Grafana OnCall](https://grafana.com/docs/grafana-cloud/oncall/) diff --git a/deploy/docker-compose/README.md b/deploy/docker-compose/README.md index 41e77bd8..e69de29b 100644 --- a/deploy/docker-compose/README.md +++ b/deploy/docker-compose/README.md @@ -1,28 +0,0 @@ -Download docker-compose.yaml -```bash -curl https://github.com/... -o docker-compose.yaml -``` - -Start docker-compose stack -```bash -DOMAIN=localhost \ -SECRET_KEY=my_random_secret_must_be_more_than_32_characters_long \ -RABBITMQ_PASSWORD=rabbitmq_secret_pw \ -MYSQL_PASSWORD=mysql_secret_pw \ -COMPOSE_PROFILES=with_grafana \ -GRAFANA_USER=admin \ -GRAFANA_PASSWORD=grafana_secret_pw \ -docker-compose -f docker-compose.yml up --build -d -``` - -Get the instructions and credentials -```bash -DOMAIN=localhost \ -SECRET_KEY=my_random_secret_must_be_more_than_32_characters_long \ -RABBITMQ_PASSWORD=rabbitmq_secret_pw \ -MYSQL_PASSWORD=mysql_secret_pw \ -COMPOSE_PROFILES=with_grafana \ -GRAFANA_USER=admin \ -GRAFANA_PASSWORD=grafana_secret_pw \ -docker-compose -f docker-compose.yml run engine python manage.py issue_invite_for_the_frontend --override -``` diff --git a/deploy/docker-compose/docker-compose.yml b/deploy/docker-compose/docker-compose.yml index 7f7d998c..a07bb72e 100644 --- a/deploy/docker-compose/docker-compose.yml +++ b/deploy/docker-compose/docker-compose.yml @@ -3,6 +3,8 @@ services: # TODO: change to the public image once it's public # image: ... build: ../../engine + ports: + - 8080:8080 command: > sh -c "uwsgi --ini uwsgi.ini" environment: @@ -49,7 +51,7 @@ services: MYSQL_PORT: 3306 REDIS_URI: redis://redis:6379/0 DJANGO_SETTINGS_MODULE: settings.hobby - CELERY_WORKER_QUEUE: "default,critical,long,slack,telegram,webhook" + CELERY_WORKER_QUEUE: "celery" CELERY_WORKER_CONCURRENCY: "1" CELERY_WORKER_MAX_TASKS_PER_CHILD: "100" CELERY_WORKER_SHUTDOWN_INTERVAL: "65m" @@ -138,6 +140,8 @@ services: grafana: image: "grafana/grafana:8.3.2" mem_limit: 500m + ports: + - 3000:3000 cpus: 0.5 environment: GF_DATABASE_TYPE: mysql @@ -148,8 +152,6 @@ services: GF_SECURITY_ADMIN_PASSWORD: ${GRAFANA_PASSWORD:?err} GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS: grafana-oncall-app GF_INSTALL_PLUGINS: grafana-oncall-app - GF_SERVER_ROOT_URL: http://$DOMAIN/grafana/ - GF_SERVER_SERVE_FROM_SUB_PATH: "true" volumes: - ../../grafana-plugin:/var/lib/grafana/plugins/grafana-plugin depends_on: @@ -160,30 +162,8 @@ services: profiles: - with_grafana - caddy: - image: caddy - volumes: - - caddy_data:/data - - caddy_config:/config - ports: - - 80:80 - - 443:443 - command: - - sh - - '-c' - - | - cat < /etc/caddy/Caddyfile - {\$$CADDY_DOMAIN} { - reverse_proxy /grafana/* grafana:3000 - reverse_proxy /* engine:8080 - } - EOF - caddy run --config=/etc/caddy/Caddyfile - environment: - CADDY_DOMAIN: $DOMAIN - volumes: dbdata: rabbitmqdata: caddy_data: - caddy_config: \ No newline at end of file + caddy_config: diff --git a/docs/sources/integrations/webhooks/_index.md b/docs/sources/integrations/webhooks/_index.md index 026458a8..c5a92ffe 100644 --- a/docs/sources/integrations/webhooks/_index.md +++ b/docs/sources/integrations/webhooks/_index.md @@ -9,4 +9,4 @@ You can use webhooks to send alert group notifications, and also to receive aler Follow these links to learn more about using webhooks for OnCall alert notifications: -{{< section >}} \ No newline at end of file +{{< section >}} From f74e9565bcc2dd16b76d492e9ee6c2a9ee1d627c Mon Sep 17 00:00:00 2001 From: Matvey Kukuy Date: Thu, 9 Jun 2022 15:58:10 +0300 Subject: [PATCH 04/17] Update README.md --- README.md | 35 ++++++++++++----------------------- 1 file changed, 12 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index e89ee533..b3b229e9 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,20 @@ -# Grafana OnCall Incident Response -Grafana OnCall, cloud version of Grafana OnCall: https://grafana.com/products/cloud/ +# Grafana OnCall Developer-friendly, incident response management with brilliant Slack integration. -- Connect monitoring systems -- Collect and analyze data -- On-call rotation -- Automatic escalation -- Never miss alerts with calls and SMS +- Collect and analyze alerts from multiple monitoring systems +- On-call rotations based on schedules +- Automatic escalations +- Phone calls, SMS, Slack, Telegram notifications ![Grafana OnCall Screenshot](screenshot.png) ## Getting Started -### Launch "hobby" environment +### Production environment + +For production setup check [PRODUCTION.md](PRODUCTION.md). + +### Hobby environment Download docker-compose.yaml: ```bash @@ -30,35 +32,22 @@ export GRAFANA_USER=admin export GRAFANA_PASSWORD=admin ``` -Launch stack: +Launch services: ```bash docker-compose -f docker-compose.yml up --build -d ``` -Get the instructions and the token: +Issue invite token and get further instructions: ```bash docker-compose -f docker-compose.yml run engine python manage.py issue_invite_for_the_frontend --override ``` -^ follow instructions and enjoy! - ## Join our comminuty - `#grafana-oncall` channel at https://slack.grafana.com/ - Grafana Labs community forum for OnCall: https://community.grafana.com - File an [issue](https://github.com/grafana/oncall/issues) for bugs, issues and feature suggestions. -## Production Setup - -For production setup check [PRODUCTION.md](PRODUCTION.md). - ## Further Reading - *Documentation* - [Grafana OnCall](https://grafana.com/docs/grafana-cloud/oncall/) - *Blog Post* - [Announcing Grafana OnCall, the easiest way to do on-call management](https://grafana.com/blog/2021/11/09/announcing-grafana-oncall/) - *Presentation* - [Deep dive into the Grafana, Prometheus, and Alertmanager stack for alerting and on-call management](https://grafana.com/go/observabilitycon/2021/alerting/?pg=blog) - -## FAQ - -- How do I generate a new invitation token to connect plugin with a backend? -```bash -docker exec oncall-backend python manage.py issue_invite_for_the_frontend --override -``` From ae52729f0f23644d41b8c6b3ac255b77a86bbcbb Mon Sep 17 00:00:00 2001 From: Matvey Kukuy Date: Thu, 9 Jun 2022 16:02:38 +0300 Subject: [PATCH 05/17] Update README.md --- README.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index b3b229e9..bf5d9a18 100644 --- a/README.md +++ b/README.md @@ -42,10 +42,8 @@ Issue invite token and get further instructions: docker-compose -f docker-compose.yml run engine python manage.py issue_invite_for_the_frontend --override ``` -## Join our comminuty -- `#grafana-oncall` channel at https://slack.grafana.com/ -- Grafana Labs community forum for OnCall: https://community.grafana.com -- File an [issue](https://github.com/grafana/oncall/issues) for bugs, issues and feature suggestions. +## Join our comminuty 👋 + ## Further Reading - *Documentation* - [Grafana OnCall](https://grafana.com/docs/grafana-cloud/oncall/) From 17def87fab1571610c00af85d3a3b743944b20c6 Mon Sep 17 00:00:00 2001 From: Matvey Kukuy Date: Thu, 9 Jun 2022 16:06:21 +0300 Subject: [PATCH 06/17] Readme --- README.md | 6 ++++-- docs/img/GH_discussions.png | Bin 0 -> 3742 bytes docs/img/community_call.png | Bin 0 -> 4468 bytes 3 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 docs/img/GH_discussions.png create mode 100644 docs/img/community_call.png diff --git a/README.md b/README.md index bf5d9a18..4a01522d 100644 --- a/README.md +++ b/README.md @@ -42,8 +42,10 @@ Issue invite token and get further instructions: docker-compose -f docker-compose.yml run engine python manage.py issue_invite_for_the_frontend --override ``` -## Join our comminuty 👋 - +## Join our community 👋 +| | | +|-------------|-------------| +| ![](docs/img/community_call.png) | ![](docs/img/GH_discussions.png) | ## Further Reading - *Documentation* - [Grafana OnCall](https://grafana.com/docs/grafana-cloud/oncall/) diff --git a/docs/img/GH_discussions.png b/docs/img/GH_discussions.png new file mode 100644 index 0000000000000000000000000000000000000000..9d38a610d0c1228416483de60e1bf36835bef4ab GIT binary patch literal 3742 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 ac1bk=O@^TbPMEoDNb2Rt> literal 0 HcmV?d00001 diff --git a/docs/img/community_call.png b/docs/img/community_call.png new file mode 100644 index 0000000000000000000000000000000000000000..32b6a3a3470264dec9ce054c720b8aa8efec5017 GIT binary patch literal 4468 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 Ut?GLBNka5mRa>P}$ui{s08!eT(*OVf literal 0 HcmV?d00001 From 5cf63637b69d4971d73ca8a7203dc4035ced1447 Mon Sep 17 00:00:00 2001 From: Matvey Kukuy Date: Thu, 9 Jun 2022 16:18:18 +0300 Subject: [PATCH 07/17] New images --- docs/img/GH_discussions.png | Bin 3742 -> 9780 bytes docs/img/community_call.png | Bin 4468 -> 13035 bytes docs/img/slack.png | Bin 0 -> 9704 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/img/slack.png diff --git a/docs/img/GH_discussions.png b/docs/img/GH_discussions.png index 9d38a610d0c1228416483de60e1bf36835bef4ab..d3a1798a0e477b29cc8d512bc09f1c61903cfb88 100644 GIT binary patch literal 9780 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ౡ(I<@*fzM~D8k7<468F#`c*kb+U z#Ew(;9qs7lTl>I?ba9MhQF*kYq-j51_ix3X&W*If_0>JBWNa*52mBW;UBUbf94KJi z)wvz@%Lg?$dTtLzm3yW93dq{+i$=REP!K0ro+&iZ6rMOD(9jdkK@#ms~wUcm= zMV20DHt#63m?D40MxT>Iw;#Ry8Y?!S_hAG0Cq+rmsBGsj3XY zwDkLvI$SHNXZ+UQt>SYsM24MguDTcsqB%DGAxCXM#CIr3KzO0xL`(QB38RzdRo=mc zhyQW&t|TN0nAf_(24qW1W42C6&XmC5NTVO4f0&9z-V!aKORb{uz415dPV=pE38~VN ze_ZpP&7N5lFQhZ&KcQP{FNw7|+gc9}aN>h#($A@vu%HA@Xw6vzCT8iD8#uhH2qeq) zA=3wFO^na1R7sPV|IUd>X&*~fjn6yb?ehYxt$lXwNZK$_cu|!S_~wt_Df&7=Ivj5^ zuJzP$g`wx1kd3s#kCvh@R}F8IWUd-WvOjq`J}O0Kj_N+RD1W?#yon3xmV@}i>2ULnc zZ-~;7Gtc9E0?NBwLPMfd(2GMW$1*(bmFAGIwyZewR?{u9H;a z0fqcyIkJKEJ83yOdV^vymR)?KWS2TIZfwLJ>+TyFg|jLxQ_MAQz?-jrc=o2W$BADAZiB1Z)`@-qsSfD>Z;oqa$c$wR_#}bSOeke+j{1FoxXsksW;ICx=GTYmP~hggExcTYF&vr16GSFZ&g|&VuJGU1sSX3w9WSt(2Y6eeaA6@&3| z`K1GAb5Gs7UT-{-);yNZ;8Y0{BJ-Zt=d-ghXNLMgDXJ$wNcfRi%b_CK-n3M-jeX;V3@sC_ zZr(dg21pDO+nRC%BRS6`Hv8LK6_?;NkxoF4IH!Ed?IsC(-%Ox^*Kw^?k@08!32$MV z#VQw}qwkQo^K3o_^H*haU1n6HBC#F5WxQ55;*4Np3(O<1)a%{!>+^T#gTiiFWH+8T zFI#5H!Fk36t(2eXVC8#@o#ISm)DpM^=|r>g8S1y+dw2v;8F0p78rej}14h8$KLZ0a zNe&3(liECLmkJBRl}bZ27>jIb|6Ctl{%BtAL;t^^cr5Q=JA^zC2>kh>$2-Kb%X?A8 zHUawCa=(pI7e+((ac97==UIuKCwmnhMBK z+z!8o)cK=3{z1%}pe!17F1K(@vau4u0TUE$pwdezQC6&|Rw8xZwRWrQ# zCDA^A^X+73im3aj*Fq=39nIIv=cPWn*pvI|&F-ADL?D$f4oy0gk@&%(%R+UQ^Onh0 zK^q>*rk22C@K@q&h~LN9Q~7q=(fypwrnOfpcjk0VKuhN{2>y}wS88X%@OE?!r)_?e zMMP5$(a~ya>kJgbDEfJ&s; zDSQ%uVlhRC>~bl#vE&Xdb48w7YDoX9FhN{+5@z{-OU2^dN+z8p8V{M=jS43dt!vcJM31xc4)y!aDZAMgM9QCou6SLP~Y#<b%7 literal 3742 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 ac1bk=O@^TbPMEoDNb2Rt> diff --git a/docs/img/community_call.png b/docs/img/community_call.png index 32b6a3a3470264dec9ce054c720b8aa8efec5017..22692fade5e35b84af93a154c21e8360af69bfda 100644 GIT binary patch literal 13035 zcmdVBWkVcI6E2Jf7GK;6?ry=|3GVI^+=9EiFTn|}i!Tld?(P~axCghx{k(tR{dmrY znd8Y#wnrIaz8B`=fBq%5-R5@8mH7F<;>5p_A;-`;uCc9O}hX6Rs>bgNe z;Zpy1K+CC7U49foyQ#^DLxCrWk3KSR)?#19prGm#kzY*Vp`bW|E}yrEq~h>Bs4MA04A7e8i*zsvQY5Ya5(t|6cToJp<-S&B5R`aU?;}&&`!dgk zpL1T%niq}MFwvQrZ?+i7Pr5*1EUHc!$mC%d;=?C^wM|F;2E*B(J!cme-UBbAv#fg9 z6br_6;@9;5)j-UIU8dMda#sWtzXf!9h5;p$Ej3@one1vlu91h0Q=5o2>^g;hL9!IC zc!QAw{@3O&)wC#iN%&<$Nr`zIPJ=P-e>Ic%;&LIIxZsMa=LqU1T;NBUMS^(=CHWXc z3G@G}fF`}CU*m8F`Crc%0Kot5?^3`<@t+}gc(o?l>jy-M?YeKdL$yAOf`R5jP+-hbF^ z90o%$egRaiPY6;_{yK8xq&RFw9mTNrt^b=rfui({=6$mgRk4;LgC%xs6w0kE2ghdw zzcjR z<6Pre_wR+MQ>ytZ*2q2+N#S-&WF~6GYSdx_TFRSy3E(Xm$C5}iON;!~fc{#zJ=*|X zzdryz^9kX{OSgqDp3`AgMluNCh$8>#! z>{HU+DBnAjOWm*+Dv#koPcpyvuXsQ$WLQg!LazOd^`%I-)}R>lJvo9?ivKRQd9P=` z|4}4eAJoNQ%~F-_WM7d&QoG`wnf%La4WeHb%J&xA8-*cmm4v&X|JLhWbp6Kpsn|y| zayUi=D>D#0D~NimZ;2yMzF9~?8E3-m+FQas61R^SSg*mw=;EHadQ_pd;hJH986c@O zUX`pYGR>rXrX2m%LlP#cgsC85yd{+2M%q+z7`wseHhOX^S0EoK-pS+u7+GQ^2Dxo< zFfCq<8bY2@DY%g}PT101Qu!P?1wo7)wL<_(E^_D85)KfR%;z?Wib_?B{adpIrgSX3 zi*$h#AIsf9$S6qLK86xgHfJUoVh4|kZ^;@rjp5-@1DY&R$h}V<4mv&CWc0oN-snQX zIjE-jPTKlDG`o^n5vflaC=Tv^qEzyyYE)KNPvzp}P3%gPq~Ksl-i5O zX`ltCG3RPcsyy-@eUyDJiX&0NJjjje`pPg6QsX5l2!B z!%{U9sp$4(DlL|!T?PCwy?<=Fl;$B6MaiXN{5ZN)+|i+rn91VUdBtg7h-k0k@lPTn zQ04q#=>jp+|Ltv2e@}w!>Cf_W$HiN>L0}&(ZMElfOE*0cPY&N5=~P1P`W<&BlCY1w z9*dBNN^kC%6v#MbMsP&h@Q#{Px01hFINt0xuBNe7dYWypi2O9#d`^Xxa(FLM|2xLbI0LNTduBx)E`yN% zt2S)|DKaL3n;J&_;*GX4di-MNIC~s-oB5=Gq7okAKKO4g&peN()*_T)ig*DYGuZML z=PJ?s!oWt8#4o&>0;AJTr%FqQ?x=xc<}rJsBQ??`0}L^ zSeDVvQq>-+y6p@r65I-N8q73=UE~!j8AFy?X~p2phQ%i|7u;WW2m#TtGl zZGi#~@bh|bqtf`l`(ICtUljp`cE#9l(zk~_&l`bLjHQV5;X~<`v&hw$E3NOeA|T2x zA@i|#?DJZE!b%C(jaAc%?AokgG?czt^+8ffOKbV7%33kv->$~p=7wa@Vv z8)s_g-8oAVnfJ&_n09Y|ZLSkZ)%Hbf6x1qa&Gks@Y*^;lg4wFNt+Sn1L^R34&?{}` zWv430JA9x0Fx=ogvom5@eaePgBtPcqRCrRwUV=dP?!1T&-POIX=N6>^{;o838LQlg zfHp(@>>`U=iwf0GCjM2azbGTxuXA-ihChuW#WU}1896PC*Qv287&4_LnaKq>i)l*? ztVcBd*52qb1MXS7jlDvcbRX>6?)HB8UH34CKa$Cje<>O?(AK8!m2!gKHrK^EW1T#B zKpz5_tkyJONCy-mh8%tz8Va`xc4B!QtN^Sd;a(aB`tf*alR zpStHWi^AZjVX{RVi=ZCW(17XO>`NqbULbB2*i&yP-E8KGXK?mLB@)et-A0n*C+p zuInXch4xrm9fpXxTo9Ifb{*Z)GT;(Khwy)gM=XC%6_-pNnamZ~udEW`IOjxJ+jzLL zE5XKqO1SCWIx1c^KfK8TyU|;1acWA>iSgz8s?b5Y$L|8lkhu^}aA_=zLVd26=v33x zVyM|GLBLx*<`Lk5haPi}{~^5h{)$AyaciAB3+~F(Fk^%738NWp1cwIgWQ^YJejQhWQJY^pS@Os?Vy~#I`o+mt&mPz|kx#?(y!U(p0 zquRb%y=)@zitPEa(3Qm#)q0rOD*I**p5qea+99Ko?4LBdSh3QzYI#g*G}Z{Lk;mprWUPlx{W*!E)KM1FX6Lvh({(DC9EGF zndICo-jt4;A=QVt^(=SED5~HA?KI^_QF1}B=NAC*Kg{#4Oq%LyfvQzZOtmgo{b(%4 zXzxi5ENlMr#?kSuWm);WtpHhE=B8q3*r0FB``vYxOAu1s`chSfreK+~i-iLp%fsP1 z_i^+JBL_X)ik@fRPbE&q`CLqP*wK}FB1|#>PdS?0%{D__`k|KoVg?Q7F!yF{s|G%?|Oe*>)l_=9wW<1>rzKWGt@rl0oM`zdN_zicl#D zv%w3re^HVa;te6DOE%@7BPIbt_FK1`P8sIfXJhl#%Ve|XOP;zLOgfA&u8z4YwWXL7eY6ih)4^SXF9Vs z0wFZHN(ywPVXE@}KM*a~4Tp`3B~|uJ6h9?OTE2B6+3NEd6Zl|a5`1AoxI>fk^O9t! zlu$ZJQA5?e2Mbr!*;m+CXTT3Z5mss;z8E6Gp;4qBQP) z0}4KlRdHeqBESK{q69y5rLCta%+$yOT49s?3{dD^WBGZu#W9Fs@h>2SgXr+15vcxA%JZT>WSO$0R_NP>pYN= zSqZh@+w;Yc(!OcSgY9g{>T}S4!jt(d z3yWN~ zX&K^nUrP6jC!8yy{pauQE|xD`f_1`~@yXrNE2BeGU&FV28-2*afWcqz`YAS?UukJ` zI<_tr#GXr(fTl`fF7L{qgvLGlfXnU9=kSuD>g@2=IhJ;>PPUb5Cgs$w#A%mHy`K#W zGHH}yN!}uqR>R8G<~>HLVGjc9c$-g!W4+ZU1MVO==NZgYEMgo?6;wVdi|#<)f<_CdPkKc;8?hj_<4VlOEK zUWUWvymg#Yh~!)hHk}hUv+TqxKjNbP@o+sJPP#GWh=4v%s%l5cUK)uQEdAAWhZo1r zHnR~j&}(_D6_|1 zeoA#Wv}M~axRtZqiO;DJoy}CWnY1>KkC+)gyqMh{e^Yzn961%(zx!wE(lDDqr%;A* z;xLkI^Y#Pt`e}%xQOR1BhYz+aeyWDJ>PyF^u9z|aQ)AQ$b0zcF+H(YVu}bpKQ1h=y z^>O2A)YU364ws?d-v(5M+xkcj2ka(tF|_*>PFrNz5&q}=^n?ICQUB{k{P^rxW-qu!v%Lv94lG=R+GZPTQoJlYt|mi68FS*x zr*q%1Bzg&C6!rdRcvD}QF0nmjt+*h-{V`a8JRo}ub!mHzZHxglS;F!Sa3wvgH{&@L|5bKuw zv`s5ZF~>$HZf!V~u~tRAykRY;Ohtv9m8zz$PEJl8!$9&ijiAy%mk882sYAEbeowvf z-siaDte0IaYNs8w1sJHT1AjFB$k$YfwP5O9G{T(!Ud= z$kU|p(c>z}S+Ftph^QpjGbHmV2abb4m2vx47k~PbUh09?pfjRKu7YC?b<1VlGLiFC zHVtKQM%}(f)GyKYzfUh)*)CNa(T3Ta#I3OQ)Ov^69DuXuTyA?Ao?KZ=@VuIex35t@ zU$wE5s5B20VFu#bb8Mf|sLO^b(>1q$pd``|D**q7qeiBfX-09H)kx^3@)&i=2Q)oW zKmHCpOMUk_EpTV4Odp6nE;cu9b;B2{v9Of$JVW z@En}(tCZ?Qq@$0`DXeu=`r>keMWQOeh;kd(17_%`qr;bVI@|IUVCTY6Dy<^8xMOct zm9FzKR(<-lH!qd%BA%jmr1&X#_vmuNlR6;#+-My@v3xUgifFgxgc;urvx0@#H_3?9 zP_-IGDDJKwZ+%*`veAVWYAFkvv(7JO1RC+$Tdrbj?zSS171>;@&bs^z0@_0wefXfIZLtdL+i>97kQ1R@XeTu^xV z`V~{cRaPfX0}Bf>rv@LJoSx!rrcwPCRlEy`Mvs?w(2Q@8jP5V8jUG~0Tj&=3hUYmv zwq~5Fe@>FLsHfk3*DcSt|D*2ZZyPxhWeS$QHJF8u(<86$w4T6De&hWg=Hd3!A+)a) zpjvoM`Vm5yc>Xig=4DP2&}UaKQIvhcZ(h8EQ;TJ)AUApyCHifB(to;OoQ6)SJiVnX}Pf=jY(yD-u#Cgz}0YU~V~)7)hHJ3B+>j zJk9S<{--?zWt7n)TAopD;YF5aR1iwfca>vY*0eiLZTZ{60kxG`mak)k`UIW4cG(J6-*MaU4V)ocv_B4-z#jgSZ|hUL4&&)42-iu z%S95`*6&3UEFw50CC~@fHLrKqO1IfH6Tm}ZEmhK8<;|M+C=?<)Ux^{RQTeV{db?l1Sa>JNO}Rbcm? zqgN>Ic8gw4x2>=2BVZMm%AIF*1hryH!ur!k56vox4_d&edlysTC|6SNcShj%9y|oN zf1yt9Zk=bY#H#{RbMDkY)J~6^!iWehRhL|kNFe)F_oN`1mZ7~++VUm5)$2AlOmSHj z;m*f8!FmxE^e#b$i&wcs?6I-{H`(sSD&up1Z&Bf=2Rq%x2E#F6Wk2-0eWAMEU z1vgC(MPvUk5573#8T+}<e&ZwhPy^ILl!m50CX%jFPGny7+@tm_I9FG6UZf95os!m3WED`P^RXY;UG5*AzKle@ zP-x&b6L#v$%#cx2l|K22y8X$#;VeB(@E?q!EfudXLW=81ATDbZ*G3=Uv6sxp4Qzfu zc*irA7S1-ynfn|~sZ!2IQi#~-aRA$E)s^aUZ?g_dc&P96s~xQQpKvwwO$*n?HVk|<{`B-@ z?B%D%lV>&7%dY@AOBhKEbdg2-PL|T-8c#o$@a0vF+7&YtNN|3Zy4~FrSDE)D8@R43 zjj&M2BwHi_AaF5GL@Dn{9={Kj+2NSa2W^J}qh)-k`3TjK4V>h^(0dxZzZrQSW;|Pt zO_n!>tGg}`?Oq3Kx>W4XZ(Bgvt&r+rzZCSG(j3M{=y2@ov0$Q5TI&yfJ$iO%HwagUCVi@RmtEBtcbyqo zXt?UNTJgGqIkKrqoflP{Ro$PIU#du-fA@#IUj0~>FCbjQB4_qV6I0q_cX-U+s%>5E z9aytPAlPTDhCpNSyHmMQPS%or?J4cyKtXld_qrO@JU>?ria>s>+& zxw4}j9mjjeypenByY{-X#aW-L3^>P1St zt@bT*Z-@D(1w;thHR&G@!c;n}Irc*05IQ_TR+$v|4r;+4jQ|@%^)&u?>d@282zaf^ zkAFr9u`8{ie|p2u@X+6gEivLeML*{w35y^9hwjs`fRHI~iTw>+Z<#kM;(%(Z+cgYI z%_z2`NLS^U_YKj_8LSQZW4Jb+0d zAufh$*1aToWxp*p(etlf-(jfxDyRhg6!cm3t~V;FEx|K@y`T0szeI>k`ZweRr>`UJ z<|(ty{UF(SkW5}pQkf6Kwx-)OpOI_48Dwxms^o4ZC*>yL>+tm>1uI$oUd1cU^~-kM zXJ{UBvEACuFUrDQ-|{|d&h~UI(;EBzO@agXWCQ5Ua}0#@6qnSw;SuR`?a`{dpvqi`2_!L0D8O||e74 z+C~K*s5WR~k@xf2A zqKiYM$6|Beh|Q#oD*V{hr$INg4ND`i+8HwAP{tBR96|r+{)0jih5S+eA31{sTl)XE zgp0eoL-Sr5xJUrdy;?RDn<@LW%ik5teT`>@L*(l5D@xAY+5b?hh1~9Y^wl137pC9bc z#0wzdRV z(q4v!hLrU>O$821bf#erT+Q6vm{gzFK^23@g4c(A-91&(uSPe#*s+`6O$z?`k7GX> z*ja7!i;152;9^7DE^3e6kW|Z^Z2Gm|_+((FtVqu3WNIN)om;~$y}jJ9xEo!lngt9c zoP7+uQOqPfIb&`ymnG5R(Q@;4dYD-sVi1BN39N>O>ZwrqEmKOWqwVewh+%tbd3TGf zR=*|D>fIpS4n+$A3p{k|*r}AYL$(`t=$Xy`6{Fv>eIyC!bj_5Qg! z$u7Az?)r>%P51>ecar6SkpH+aV2`aP6AL{w^yZBA^e|v#9dtIaWpH?rHU1j(>e+s7 zZ(o&RKQy!NXoP;Vyt$Qo;VUld4CrL*?Nb`U&;7o7#1}pjgF_pqn|{f5ZTHf7((`(T z#~%!)QN4BEXup+P+1YLH6Rv%iq^WzX9}1vXW=s`HhfI3 zUut=K#iJ&w`;qIhs6R9ix5uw6qND~!g7bj2&tRT@Jo`p+w)k+QeBl;g{_`Q1_E392 zh-1VPOlREVy4pyKC7D-qwOYUwUQQOk&K=N$vwvPg_SC+E-|~LLON9sWaQE-;w_kNX z2=f4I3{88C)e>J3v3C4(J-DSz6g-8KhrPK!;jjO;54Z+GNvP1Gs-#IbLt}VzF48 zTjxjRacEb^t#s(}=tO{(3~*0utl1I@a{bL+C`v)~0JoWr>qZn9v`oA)b|WFuN#RJD zgUnTY(PM9B4t*)w*LPDyw((=m{~)ehEk1t>mM}h|g`5!w&Q7A*i-_Dm&*^)p%S~{E z`hB^Z?jnEuRw&e#xLD>>F0ClvuE9;Z9OSy+`eE|I$Do>Uq%l4Mv1i79{WB?;3+_+@ zN@0++C0U~DUmo6Zgl>yT%~hccNr=$gyvdH>izJY)B*83@?0H#QhG`x@7sIgDImfen zQu?PygU)9gXTQdTA4`NiNAhGd$p3_DrIK6n4jtS!ZVc^SE(XwwbyO@f&qzhvMBxrj zs)6EG`3=q`KgE^`5#pnbYmr0bL|#lsMsA@(roXIhkdY>cyle|8C8F1^Z6FwQeEW!U zNQ|rTjE%}uvzS!|uQwejS^JvkSvDoj9mJa6LvAh39fCB zRypci=_4KeJQ*Zjv(*l1VVZE|3fB-G=ZJ6ZGB+%xLr9}fhz5pY)C4R|*9w}_2Wz6o zYsPlG^6a+kw9>X&0!}E*+?s}eU9m_=l!Hs|^=x7>)Zo2pIK!_)FynpP$=|YqXN{oI z$&YJf^n!4A82X!kg}i=aq&)WSh6a>dFTa<5-94c@MjxHmXLg*UCkmhZX|6Po$@+d8nam3G>;_r!{~D_B@$p7+Jd?Zb!VI*B%i?z7Rl zR=gOUU;E}=VffwOr?CWyj38gD;e1$8UbRJAOj+i~d-&M~MkCf1ILnFj`SYYp^)kK4TQ@%RWChwyC`0!AX}gUy&H?QeKlQT6eZ{EE#ex3v&xUg4 zsGeq<|K~Wld{XUb=iLJuYKs*EI6T_+Yxd_bEvp2}LDWn$64X*${5ebJ*@p$yMpA5b z7H3Oy-w$q0J4@-MSl9fsRIUN2uU#LBQ8V+H+gwJ*eMir3iRV{+S1#qc#22S| zfRoT~&%Z7WKL=X6@mvIN0wU{V+TuF2HM{2F{QH^6i{qqAjv^D!Ju(kBDSm}AWWawq zfpk#7pv(1013)-#lG9mC1X1-}TlM2Qi50^Wsb33DH*Q9kPZI8W!)A;m>VEVUahKv0 zO@CUmv%F@+@{7Pn;UZjv2xs1|zd*Qa2sU#xK1PQVR=5SR>JwV)Sqy2oSd9WcbQ^Shx9W->hAIeA7pmF_OT&Z3qL`Xd22U zL&q0)W@am2#Kwa|j&LX;Rq8OEzY-DM6E4bU!?r|^T~QTOl{|%4n^q$@V}pYffF+4Q z$cy-A()RpkUsl-|CNfyA4Cof-D%p3`T0P%(=+p6S|KAW^a45oyp}W-vJvVeEX^kc5 zJ}Y%`)V<&yT}2rwlchvR##+pn^=wDa7G-@{N;reoEd{9dmKM(j!#3B4x*H$M77D)M z=3s_L8{z56MsmTT`ra1Lr(=~?WJ|Et-dv|D^~+wxs>oE-P?YD;ax7!YtJK;_w->W0 zoPr5n2~(OEcf_69Ha5lfHzS_PX4Jmz#o>?oYn~JQQ80D}_Fb@Dy2C#T^01%=OzA@h z-_W`)u_Y>zRm&2?Bz}DNaJvCI8mDRd(CsCB+u|9@_|Njv$+a@Cxs@})0R=ft)QxjE z(u@Xp2@u(DCq+qvpKAGnGZ zb9d1iSY+(=S;WH9s*kr{t5-I$a#sCYftZNH#!RF$ISXKpId#n4F>70G!%e*OfUiWh4Rn3Tkjja5II9*QnNoJDR;@veS zbC{+~rmB$?JBtjfuh1-DHMUy%9j}<&?g8SjWeBof%pO*TAFhJoD9wYO`6p9K<0w+G z6xKsMbKzm_zr*|HpN7sSfUz3jAHQ2{#$yN;4hB$!Cp1f=ki}rRHF4oNwJ`$FVO+c7 zHxzZCjGWEORA@UI(sms^NzxJ_bhg_1Z6@Dw|9rcxqMhRg)=dVXxyBQY4RV;P{4QFd zaYS3Tm_8)nQDF<&pJcKd9i366N2L<-yf;8tu$( z{kA3*@Ej0>gygp67{~l~ISc!FKX#@MSlG$vGl^IC_>ZRVQ&jMtw)cYi%n z@w!%|M{HXt;S?coDHx^sZ~wNwJXY|>%Hjo`S+xrS$bT1~h5;`>eJVOIj7#rx$02_t zByI4bJN^RX#Qm8@k9E!Nn1w-&>pYI5o?~8yVZ=sgC$v*G|06>tPLPdGePjBE<+0GY z1v@8;1XcDTA@RMR`L|Sq=jlT`RmD)Gai-eC)N}5>j zLEI9UAwZibpPEdJbE3I~Gv@CZN`+N`CN;B}HxM%3Xvq7mxDAj{-XO4-H zBsJ`o7a!|u_Sy%zo309<5|uQ`YG=UAnq0<-Gz6i`m&?LyxV!J*_hB_JD)dGj+u@BT z6QVp0oV&D3qw0ocp-phrFw>l;HNb0-e_*@|gl<4avK(h#7#w;ln@H7P z@2VT0b76QDM*dF+DU)#mdA;UuIcKd3uX*ynXSJQ!rV^)20kH~}1G9rBMtJK=k`_Vo zptl`!qTI(P(RiR@o^qU(L?S=@QvlaNn?xqLZs88 zGnjS~u8Er)rJE)!t!!Y}UgPqTv4mYFG{(XyK%Knc;7K-t>U%2uL7cyD>NZYRmrvz% zd~@j!deIlr%);PFkPXn1e?c58xG9QYW=Ik?eh@spyZ!WjDYKg@QRu?72(vp;e5(Da zw8Wl6Y)Lll2uF-l(=!JyR~n5yttGFp4-k+a_9fKoHwTN?=B`#~(C@C)voF3I0RJvr zfv#L*LbTS=vJ)fPurx9)JN*u3H)75xJoL#o0+c8z*f==fBI&;ynf*B}4s)dfW%gx*sjd~_@H#aNL?QhSzF|c zys1PCaV~6Ww;W}^9d#v2jhN>TgoWtcr3zw~ws8G*7GlKF0F~Xh@qx^e+R(yhh+!SW z68+tGTc>ggRyoFgDSlA@6%jrjRB(ESbd35KACPDQizNedN_9 zKhWX_%m`~uvm~YbFOhT<^dCnXk-R_r|8fc6Yx7~H50%HgPtVBp_k{oV<3i@H4#k=T zX2SMLvl= z(Df5}=(;o>?;~#$U}s&t|1x7X{nBHviI8;(BD4@%@$^Xs1_o7%pZ0A&no%kONELt3 zdt9dG4*!%y)Sp=x8V(|z7iaElKp5-S@9W^XIkVf{@{+RL$v|MpQ;Lw!a&J@qNeQp$ zE6eEK!uI?Zob^o0vr+!H^hBBw{nwNBne1I!X&x~0_|86zh)Vc(uapY>-^MK*d7Km> zPgiLkv)zR`+@dz_6op^+qdOJe-l61D_=xJBMJqr31KIkZ!r zYQdBidyFsH*A(iUEmI8?5GK?1S`I}&T-mfhS`vUk6g1Ii6gaSXC@013S2|<*jH;L= z@>`RT7()w#7#Pc9xnkG0b{*he9`<8?v-^&ZoCm?1>hi`;kvc+{#@WKbVd_*QmV&g; zV-5<6SLX_GKcgn)poKL15wd+axJU_Y!EC+veDHaHaHsdyjQ);=1pb{KjyT>lM6n+; zk*=G?`K4BLy5^+M*1-xV*$fd9q z@J;{4I2Iq7SKc0X+ib(my#3)D4AiYqdvbUjdoT)R;AB|!(&m{2sH|)mPBy_9iZq~L zsP)tov0|Fwl9&w`D?YkfDYvf%hVs}^wID@J2&#sq;lTM(WQeBQn>{L8!CQzc@?GP0LBaO~Yi#0yNW!(^}6c^{RSI~!NQig1`)qUTh|;@D>ZU5AKn>B*ZS0!Y62rxV7d^e}BpmZwku zIo5sQ;vy`Q+mMM-D()I`MFQ=7uU?6%_gaP{)0C~ zbJE-DZdE{3PMveh;TOkdh9OUn)G8x$Erh5GFukjKBQuqnShY|?WsDblSbDCvSPH%g z>-_!HKfyf0$?YQQq^4!^P;wqL{Hfu7^4V!~YB#ek45YjzR!ogHMQB71nNrk+-kz%v zt*L@$7p8Zcg1VC)jFpWH-nM!7)ksQlPBDpa{$M#A0i&0G2Sln}kGfQ~=i$>ce^no_ zSb*Qp2sk3_agAQ4uCpa=?Kj0Do8l4`gW>}D*!`JPmLU052xkd(5iK(y2iFK4by<<8 z$6rGR1%9)xzr#x`q)6(V&R=GW_*o-Pb^|<2rvN9jO>(lTqyYhWJVvck*n1=>8hTh^-M>Qg*hN4v(A~fQv4?D+}Y*T z*DBQIQI_rH2`WwwyB^6t=E}ov(-(J%-V1(xit&R41+{9Uyt@1(Ffv#R{PW~qL^kk? zwr2kqe}m7B^WH9FO*v}=S6XO!6UhOV{s`;Np-+CPQ6;Jmsv4nW90O#dTagtv*>gV|T(Z!4`7|X@Sm*zd3f`O0GwM3QqI6%i zTG+4ju~*Lg@aqh6u!k_W=rPrQXUT5G?ILfv)@phINjeox+AQj|YfCCsX=G7(;&Uu0 z!c^@CCpElsXQ3XqU}l})bXh=W^e(i&H|}P36W8&^myb(rEc<@~2hB&7&EQ}dT~BR+ z+yI|r5i2k2-qjIiuX#Tp{{y7^LLeDjqGZP;kedZ5Z zj|Ote4m8)@s|Hh&Rwd7*LkV8Btx0gdc5popr}U7g`0k;aVS=CyMsP5Y76+f`87lVK z+_o~4GwajudDCFa^^Pd>NbDN%jzKV^c&q?Ys^i8QFHrt5s)AaX_$|WpIIvq!utJa& z1ODSf_gf~LaalxjK376H*FYXG4+Mr;pG{D`_Q`nVeOaePl`K~Q5J2Qm|EM)3>0XeD zp_L)*_A(kWixlr?v}!SvwEpU)VJhs&DG;MUNF{pG(DVy?fZ9MA5h8nJ>+w=@ZdVbD z-!}_F@yXGPpVtc%S0x&c;HjbzaqZsU63@Z(=9@=nBRN5^qsF7gfE_vxYyVp^u@E>0 zpM_te^IGp8Q!V?`I+`wM_XoP@qyHA?@ml0Ix(U_6$nYLVLwTCjT;b;-28i-}D6~6l90koOu1R(TZf3h}vW^=<3vaNPv>b=;TXM^XUr@Ad^k$JC;wQ zk|#kWCwQ2w-uDQbjZO5h!m|-4vE*^D9%J;F3_-G?^6d*=MHiDTk;pXC!4`TLzk-@$^liua4U1Stg$v$@MNV`|PQL2P~21aW$u$VR4Vuzs5;vap66ndPmZ3jq2&kk$}{wHs-EzC$cnX? zYXf9GH*1%RwsZ07(f!CuMa)#0knu;PSrdtc$!-0&ai#z?-mFN?B%5A4W&9~CS{Q(| zEa6IcX{sMCffrKpf zDyO9vAn#S1${AN$G;wa{<#)TyJmF|{ZSmjht@eLa0Cn|L^IMyq1VVtH3)G$GfOuB;0WYeiB; z3{Up_6kl#yiz$-JiTdV8z=V38*y9xizA4bgxJ@g74Yc)aF8kg#iZ@qz9bKPIKncrD z_n?6C3}jp08#+UBz^kAKsj0_H6Mq$+RRx!K27k*&)+;JFR^S-7cEj5-Pe!)*sp$rK zoZKQj_Gx-}`I2-)m}1wSJTx->`QO~uaVaF4uBE>=-L zdLG0sMp9s(VJ@>EvMz2w-7KkRfb+YrC*FrBl~naY3Wk1 z8^XB<@x4%EV-J!HGDkV^K$BeG)YXq5Ns*0iw0 zgvwMGgolC5UFwaG4s;(`F9Fp2FGm<+I?DJ}qo<1njms0#yNM)Qe7Hh%#(oqGLDn`; zi2ujVB-`B8fZb4sTF{XvAme?|*|oNuGNyeX69zW6SIKlwV#t7DD_D7+E|(!c^7#%^ zaQ9(d3ePb`H1K*^$tyo&c)~P4f2}RxHZ4#L7&ti+25-*qYLLH*G8ff|wyKbiz~1;? z(*7WehJlt7?=D2xOk}9mN+lD~pw0x2Sj`}RJO~4AxBHXZ@duo?2~P`6zQyPO@tk%T zIou!$LQY%I`P(%IcP-326aE+`n%?l^q{~K&5nU;FZFzJS&{@z=@X30VC^=Ux>Ey=6 z824`SVn+IcQ<7hEJZz6uLPvi?SuiiGN<86lDdI#=sn4B!&j zntM~V4o!F-&>iUt79QPjDP)HmRguqo8O+%D6z0s7TkQ&ohd)96q|0RJ|K&u&> z{do}G{ZRT8b3kW{OvB!41i4^~Ul)=}_VOS(hEv0ReHj9lin+M(a2cd{h%hc$|F~K~ zS{EK&?0b0XleCI#q*P+&We#kdkk=HO$vr52(>3b;*nRK`)qbFK9CSJcZkuUw4vGn) z1owYtX3`7f*H~`kW>mJUd_+E9f1sAC(^Uw4{B0j-s$Y70xXoD=CXZHd_p0}9dgZ}e z5bT4v$#;a8&knWAh6&olZcucQN?Yi3>tP|;w6tN)iX$?4Dv`m{UtLcv5wVv!an%rakh`sLj4!o};;hrZxZPI0 zwkh=gBDJy#_zuf|u>60}cxc`c=nmFNIq;Ld?Hvg=EdL4gWJA15TW;=6s-{Li{|ig* z|J;DMHr;m)0}VMjmE>x-Ar7iNR|0yLLF{*D3i-_D{JnymTgEL+347|%vp}4>bk78q Ut?GLBNka5mRa>P}$ui{s08!eT(*OVf diff --git a/docs/img/slack.png b/docs/img/slack.png new file mode 100644 index 0000000000000000000000000000000000000000..d5ec5e6da150b7f9c3eb80c3f7d30e0b5e8d0627 GIT binary patch literal 9704 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 literal 0 HcmV?d00001 From cd8b7e44659914e20a9571d9d7f28721b45f6a59 Mon Sep 17 00:00:00 2001 From: Matvey Kukuy Date: Thu, 9 Jun 2022 16:19:06 +0300 Subject: [PATCH 08/17] Update README.md --- README.md | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 4a01522d..ac592477 100644 --- a/README.md +++ b/README.md @@ -43,9 +43,16 @@ docker-compose -f docker-compose.yml run engine python manage.py issue_invite_fo ``` ## Join our community 👋 -| | | -|-------------|-------------| -| ![](docs/img/community_call.png) | ![](docs/img/GH_discussions.png) | + + + + + + + + + +
## Further Reading - *Documentation* - [Grafana OnCall](https://grafana.com/docs/grafana-cloud/oncall/) From 37856427c3b5fb290d2c51448019576897f8ed0e Mon Sep 17 00:00:00 2001 From: Matvey Kukuy Date: Thu, 9 Jun 2022 16:27:45 +0300 Subject: [PATCH 09/17] Update README.md --- README.md | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index ac592477..73f53f90 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,10 @@ Developer-friendly, incident response management with brilliant Slack integratio - Automatic escalations - Phone calls, SMS, Slack, Telegram notifications + + + + ![Grafana OnCall Screenshot](screenshot.png) ## Getting Started @@ -42,18 +46,6 @@ Issue invite token and get further instructions: docker-compose -f docker-compose.yml run engine python manage.py issue_invite_for_the_frontend --override ``` -## Join our community 👋 - - - - - - - - - -
- ## Further Reading - *Documentation* - [Grafana OnCall](https://grafana.com/docs/grafana-cloud/oncall/) - *Blog Post* - [Announcing Grafana OnCall, the easiest way to do on-call management](https://grafana.com/blog/2021/11/09/announcing-grafana-oncall/) From e8f176d660610da8abbbf792798a0f8c6b523e9a Mon Sep 17 00:00:00 2001 From: Matvey Kukuy Date: Thu, 9 Jun 2022 16:29:14 +0300 Subject: [PATCH 10/17] Update README.md --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 73f53f90..4e2782c7 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,9 @@ # Grafana OnCall Developer-friendly, incident response management with brilliant Slack integration. + + + - Collect and analyze alerts from multiple monitoring systems - On-call rotations based on schedules - Automatic escalations @@ -10,8 +13,6 @@ Developer-friendly, incident response management with brilliant Slack integratio -![Grafana OnCall Screenshot](screenshot.png) - ## Getting Started ### Production environment From 20e68752b18eae5c195f6c96ec71ac621d0e648d Mon Sep 17 00:00:00 2001 From: Matvey Kukuy Date: Thu, 9 Jun 2022 16:29:43 +0300 Subject: [PATCH 11/17] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4e2782c7..d37ca43c 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Developer-friendly, incident response management with brilliant Slack integration. - + - Collect and analyze alerts from multiple monitoring systems - On-call rotations based on schedules From 04d1de939e23cf2f4bf0b3edbc5a48803032982f Mon Sep 17 00:00:00 2001 From: Matvey Kukuy Date: Thu, 9 Jun 2022 16:33:27 +0300 Subject: [PATCH 12/17] Logo --- docs/img/logo.png | Bin 0 -> 50860 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/img/logo.png diff --git a/docs/img/logo.png b/docs/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ec11fc3a4a0f52d598af8b176327a6b1e31cae3d GIT binary patch literal 50860 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⪚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 E01 Date: Thu, 9 Jun 2022 16:33:49 +0300 Subject: [PATCH 13/17] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d37ca43c..4c1da07a 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Grafana OnCall + Developer-friendly, incident response management with brilliant Slack integration. From 98decfd7221df09eee1dc1249105b1dd7fd23a94 Mon Sep 17 00:00:00 2001 From: Matvey Kukuy Date: Thu, 9 Jun 2022 16:35:04 +0300 Subject: [PATCH 14/17] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4c1da07a..7c852218 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ - + Developer-friendly, incident response management with brilliant Slack integration. From 4f26b357c0c16c372602e976a0e325dce8e519e6 Mon Sep 17 00:00:00 2001 From: Matvey Kukuy Date: Thu, 9 Jun 2022 16:35:47 +0300 Subject: [PATCH 15/17] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7c852218..4dae5bdc 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Developer-friendly, incident response management with brilliant Slack integration. - + - Collect and analyze alerts from multiple monitoring systems - On-call rotations based on schedules From 14a4f4984078996c521cbea99a98348d9b3edf4d Mon Sep 17 00:00:00 2001 From: Matvey Kukuy Date: Thu, 9 Jun 2022 17:01:46 +0300 Subject: [PATCH 16/17] Up --- README.md | 5 +++-- engine/settings/hobby.py | 13 +++++++------ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 4c1da07a..a9fd2fd1 100644 --- a/README.md +++ b/README.md @@ -15,9 +15,10 @@ Developer-friendly, incident response management with brilliant Slack integratio ## Getting Started -### Production environment +### Environments: -For production setup check [PRODUCTION.md](PRODUCTION.md). +Production: [PRODUCTION.md](PRODUCTION.md). +Developer: [DEVELOPER.md](DEVELOPER.md). ### Hobby environment diff --git a/engine/settings/hobby.py b/engine/settings/hobby.py index aa7ad6b2..7495ede9 100644 --- a/engine/settings/hobby.py +++ b/engine/settings/hobby.py @@ -1,10 +1,11 @@ import sys from random import randrange -from .prod_without_db import * # noqa - # Workaround to use pymysql instead of mysqlclient import pymysql + +from .prod_without_db import * # noqa + pymysql.install_as_MySQLdb() DATABASES = { @@ -22,10 +23,10 @@ DATABASES = { }, } -RABBITMQ_USERNAME=os.environ.get("RABBITMQ_USERNAME") -RABBITMQ_PASSWORD=os.environ.get("RABBITMQ_PASSWORD") -RABBITMQ_HOST=os.environ.get("RABBITMQ_HOST") -RABBITMQ_PORT=os.environ.get("RABBITMQ_PORT") +RABBITMQ_USERNAME = os.environ.get("RABBITMQ_USERNAME") +RABBITMQ_PASSWORD = os.environ.get("RABBITMQ_PASSWORD") +RABBITMQ_HOST = os.environ.get("RABBITMQ_HOST") +RABBITMQ_PORT = os.environ.get("RABBITMQ_PORT") CELERY_BROKER_URL = f"amqp://{RABBITMQ_USERNAME}:{RABBITMQ_PASSWORD}@{RABBITMQ_HOST}:{RABBITMQ_PORT}" From cdf22c36815582beb68ebdca92baee866dc3b469 Mon Sep 17 00:00:00 2001 From: Matvey Kukuy Date: Thu, 9 Jun 2022 17:18:40 +0300 Subject: [PATCH 17/17] Flake --- engine/settings/hobby.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/engine/settings/hobby.py b/engine/settings/hobby.py index 7495ede9..4b2a4e8f 100644 --- a/engine/settings/hobby.py +++ b/engine/settings/hobby.py @@ -1,4 +1,5 @@ -import sys +# flake8: noqa: F405 + from random import randrange # Workaround to use pymysql instead of mysqlclient