From 17326aff816555e075d3408a793f47ac3ab73359 Mon Sep 17 00:00:00 2001 From: Alexander Rozhdestvensky <1690271+webngt@users.noreply.github.com> Date: Thu, 17 Jun 2021 13:01:55 +0300 Subject: [PATCH] Update step2.md --- prometheus-client/step2.md | 73 +------------------------------------- 1 file changed, 1 insertion(+), 72 deletions(-) diff --git a/prometheus-client/step2.md b/prometheus-client/step2.md index da11b7fd..cabc9ac6 100644 --- a/prometheus-client/step2.md +++ b/prometheus-client/step2.md @@ -1,73 +1,3 @@ - - -Напишем и запустим сервис, который будет эмулировать работу реального приложения. А в следующем шаге инструментируем, чтобы он отдавал метрики для Prometheus. - -Сервис напишем на Python. По пути /probe этот сервис будет отвечать с некоторой задержкой, эмулирующей работу. Длительность задержки будет определяться с помощью некоторого распределения вероятностей, и также с некоторой вероятностью приложения иногда будет отдавать 500ый статус код HTTP. - -Откройте закладку файла app.py в редакторе и введите в него код на Python ниже, либо нажмите кнопку "Copy to Editor". Это основной файл нашего приложения. - -
-import os
-import json
-import random
-import time
-
-from flask import Flask, abort
-
-app = Flask(__name__)
-
-FAIL_RATE=float(os.environ.get('FAIL_RATE', '0.05'))
-SLOW_RATE=float(os.environ.get('SLOW_RATE', '0.00'))
-
-def do_staff():
-    time.sleep(random.gammavariate(alpha=1.5, beta=.1))
-
-def do_slow():
-    time.sleep(random.gammavariate(alpha=30, beta=0.3))
-
-@app.route('/probe')
-def probe():
-    if random.random() < FAIL_RATE:
-        abort(500)
-    if random.random() < SLOW_RATE:
-        do_slow()
-    else:
-        do_staff()
-    return "OK"
-
-if __name__ == '__main__':
-    app.run(host='0.0.0.0', port='8000', debug=True)
-
- -Теперь давайте запустим этот сервис с помощью Docker. Для этого нам понадобится файл с описанием зависимостей для Python и Dockerfile. - - -Откройте вкладку файла ./app/Dockefile в редакторе и введите в него код ниже, либо нажмите кнопку "Copy to Editor". - -
-FROM python:3.7-slim
-COPY requirements.txt /requirements.txt
-COPY pip.conf /etc/pip.conf
-RUN pip install --no-cache-dir -r requirements.txt
-COPY . /app
-CMD ["python", "/app/app.py"]
-
- -Откройте вкладку файла ./app/requirements.txt в редакторе и введите в него код ниже, либо нажмите кнопку "Copy to Editor". Это файл с описанием зависимостей для сервиса - -
-Flask==1.1.2
-prometheus-client==0.7.1
-
- -Откройте вкладку файла ./app/pip.conf в редакторе и введите в него код ниже, либо нажмите кнопку "Copy to Editor". Это файл с описанием откуда брать зависимости - -
-[global]
-index-url = http://nexus:8081/repository/pypi/simple
-trusted-host = nexus
-
- С помощью команды docker build собираем локальный образ с меткой app:v1. Докер образ будет хранится локально. ``` @@ -87,6 +17,5 @@ docker run -d --net=host --name=app-v1 app:v1 curl localhost:8000/probe ```{{execute}} -Наш сервис должен ответить текстом "ОК" в консоли. +Наш сервис должен вывести счет матча в консоли -Пока наш сервис не предоставляет никаких метрик в Prometheus, но в шаге 3 мы исправим это.