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 мы исправим это.