InfluxDB, Grafana, Telegraf를 학습하여 Python 응용 프로그램의 행동을 모니터링
그럼, 우리는 도대체 여기서 무엇을 합니까?최종 목표는 무엇입니까?
docker compose 파일을 만들고 다음 서비스를 실례화합니다.
Grafana, 좋은 대시보드를 만들고 이 모든 정보를 표시하는 데 사용됩니다.
Telegraf/InfluxDB 듀오는 곤혹스러울 수 있습니다.Telegraf가 성능(cpu 사용률, 메모리 사용률 등)에 대한 데이터를 InfluxDB에 기록하는 것을 고려할 수 있습니다단, 응용 프로그램 내용과 관련된 일을 기록하고 싶다면, (어떤 단점에 대한 요청, 함수가 몇 번 호출되었는지, 몇 번의 오류가 발생했는지...)애플리케이션에서 InfluxDB에 사전 예방적으로 저장해야 합니다.우리는 기대해 볼 것이다.
입문
이 작업을 보다 쉽게 수행하려면 재구매 계약을 복제하거나 Dell이 진행하는 동안 직접 구축할 수 있습니다.
https://github.com/rubenwap/metrics-stack
항목 설정
응용 프로그램
이 작업에 사용할 프로그램을 포함하는 폴더로 이동하거나 클론의repo를 보십시오.중요한 것은 Dockerfile
을 실행해야 한다는 것이다. 실행하면 프로그램을 독립적으로 시작할 것이다.
빈 docker-compose.yaml
파일을 계속 만듭니다.
version: "3"
services:
metricsweb:
container_name: metricsweb
build: .
ports:
- 5000:5000
depends_on:
- influxdb
보시다시피, 우리는 서비스를 추가하는 것부터 시작합니다. 우리의 응용 프로그램입니다.내 예에서, 그것은 Flask 응용 프로그램이어서, 나는 포트 5000을 열었다.이 서비스는 향후 서비스 influxdb
에 따라 달라집니다.build
매개변수를 참고하십시오.작업을 수행하려면 같은 디렉토리에 Dockerfile
이 있어야 합니다.내 모습은 이렇다.
FROM python:3.7.4-slim-stretch
COPY . /app
WORKDIR /app
EXPOSE 5000
RUN pip install -r requirements.txt
ENTRYPOINT python /app/main.py
그라파나
Grafana는 소스 분석 및 시각화 솔루션으로 많은 데이터베이스와 호환됩니다.이 예에서는 InfluxDB를 사용합니다. 시간 시퀀스 데이터가 매우 빠르고 최적화되어 있기 때문입니다. 예를 들어 SQL 데이터베이스에서 Grafana를 읽을 수 있습니다.
자세한 내용은 visit their website으로 문의하십시오.
이것은 docker-compose
에 추가해야 할 관련 비트입니다.
grafana:
container_name: grafana
image: grafana/grafana:latest
ports:
- 3000:3000
volumes:
- ./grafana/data:/var/lib/grafana
아주 간단해요.Grafana는 웹 응용 프로그램에 포트 3000을 사용합니다.우리는 잠시 후에 이것에 대해 설정할 것이다.
InfluxDB
Influx website을 보면 너는 그것의 기능을 이해할 수 있을 것이다.스택에 추가하려면 docker compose 파일에 다음을 추가해야 합니다.
influxdb:
container_name: influxdb
image: influxdb:latest
ports:
- 8086:8086
env_file:
- 'env.influxdb'
volumes:
- ./influxdb/data:/var/lib/influxdb
몇 가지 중요한 일:
https://github.com/rubenwap/metrics-stack
응용 프로그램
이 작업에 사용할 프로그램을 포함하는 폴더로 이동하거나 클론의repo를 보십시오.중요한 것은
Dockerfile
을 실행해야 한다는 것이다. 실행하면 프로그램을 독립적으로 시작할 것이다.빈
docker-compose.yaml
파일을 계속 만듭니다.version: "3"
services:
metricsweb:
container_name: metricsweb
build: .
ports:
- 5000:5000
depends_on:
- influxdb
보시다시피, 우리는 서비스를 추가하는 것부터 시작합니다. 우리의 응용 프로그램입니다.내 예에서, 그것은 Flask 응용 프로그램이어서, 나는 포트 5000을 열었다.이 서비스는 향후 서비스 influxdb
에 따라 달라집니다.build
매개변수를 참고하십시오.작업을 수행하려면 같은 디렉토리에 Dockerfile
이 있어야 합니다.내 모습은 이렇다.FROM python:3.7.4-slim-stretch
COPY . /app
WORKDIR /app
EXPOSE 5000
RUN pip install -r requirements.txt
ENTRYPOINT python /app/main.py
그라파나
Grafana는 소스 분석 및 시각화 솔루션으로 많은 데이터베이스와 호환됩니다.이 예에서는 InfluxDB를 사용합니다. 시간 시퀀스 데이터가 매우 빠르고 최적화되어 있기 때문입니다. 예를 들어 SQL 데이터베이스에서 Grafana를 읽을 수 있습니다.
자세한 내용은 visit their website으로 문의하십시오.
이것은
docker-compose
에 추가해야 할 관련 비트입니다. grafana:
container_name: grafana
image: grafana/grafana:latest
ports:
- 3000:3000
volumes:
- ./grafana/data:/var/lib/grafana
아주 간단해요.Grafana는 웹 응용 프로그램에 포트 3000을 사용합니다.우리는 잠시 후에 이것에 대해 설정할 것이다.InfluxDB
Influx website을 보면 너는 그것의 기능을 이해할 수 있을 것이다.스택에 추가하려면 docker compose 파일에 다음을 추가해야 합니다.
influxdb:
container_name: influxdb
image: influxdb:latest
ports:
- 8086:8086
env_file:
- 'env.influxdb'
volumes:
- ./influxdb/data:/var/lib/influxdb
몇 가지 중요한 일:INFLUX_DB
입니다. 스택이 상승할 때 생성되는 DB의 이름을 알려 줍니다.이것은 내가 사용하고 있는 파일입니다.INFLUXDB_DATA_ENGINE=tsm1
INFLUXDB_REPORTING_DISABLED=false
INFLUX_DB=metrics
INFLUXDB_USER=admin
INFLUXDB_ADMIN_ENABLED=true
텔레그래프 회사
Telegraf는 InfluxDB를 생산하는 동일한 회사에서 생산됩니다.here에 대한 더 많은 정보를 읽을 수 있습니다. 서버 에이전트입니다. 플러그인이 많습니다. InfluxDB에 연결하고 응용 프로그램에 대한 많은 지표를 저장할 수 있습니다. CPU 사용률, 메모리 사용률 등입니다.너는 그것이 검출할 수 있는 것을 충분히 확장할 수 있다.
이것은 관련 docker 합성 위치입니다.
telegraf:
container_name: telegraf
image: telegraf
container_name: telegraf
restart: always
depends_on:
- influxdb
environment:
HOST_PROC: /rootfs/proc
HOST_SYS: /rootfs/sys
HOST_ETC: /rootfs/etc
volumes:
- ./telegraf.conf:/etc/telegraf/telegraf.conf:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- /sys:/rootfs/sys:ro
- /proc:/rootfs/proc:ro
- /etc:/rootfs/etc:ro
우리가 불러온 지속적인 데이터가 있는 볼륨을 제외하고, Telegraf가 프로세스와 시스템에 대한 정보를 어디서 얻을 수 있는지 알려주는 환경 변수도 있습니다.볼륨 부분을 작업하려면 로컬 디렉터리에
telegraf.conf
파일을 만들고 설정해야 합니다.Here you can see the contents . 이것은 매우 기본적인 것이니 당연히 개선할 수 있다.필요한 전체
docker-compose.yaml
은 다음과 같습니다.https://github.com/rubenwap/metrics-stack/blob/master/docker-compose.yml
지표에 코드 추가
너는 거의 완성했다.만약 우리가 지금 창고를 열면, 모든 것이 잘 될 것입니다. 응용 프로그램이 inflow에 어떤 것도 보내지 않을 뿐만 아니라, 시스템 데이터에만 접근할 수 있습니다.다음과 같은 내용을 추가합니다.
main.py
파일이 하나밖에 없는 것을 감안하면 이것은 매우 간단한 Flask 웹 응용 프로그램입니다. 이것이 바로 제가 가지고 있는 것입니다.from flask import Flask
from datetime import datetime
from influxdb import InfluxDBClient
client = InfluxDBClient('influxdb', 8086, 'admin', 'admin', 'metrics')
app = Flask(__name__)
@app.route("/hello")
def hello():
client.write_points([{
"measurement": "endpoint_request",
"tags": {
"endpoint": "/hello",
},
"time": datetime.now(),
"fields": {
"value": 1
}
}])
return "Hello World!"
@app.route("/bye")
def bye():
client.write_points([{
"measurement": "endpoint_request",
"tags": {
"endpoint": "/bye",
},
"time": datetime.now(),
"fields": {
"value": 1
}
}])
return "Bye World!"
if __name__ == "__main__":
app.run (host="0.0.0.0")
우리가 먼저 적당한 매개 변수로 데이터베이스 클라이언트를 초기화한 다음에 각 단점에서 이 방법을 호출하여 관련 내용을 데이터베이스에 기록하는 방법을 봅시다.포트를 호출할 때마다 "1"을 기록하도록 선택했기 때문에, 나중에 이 필드의 합계를 요청해서 대시보드에서 그것을 가시화할 수 있습니다.이것은 유일한 방법은 아니지만, 단지 한 가지 방법만 있다.정상 가동
dockercompose로 구축
콘솔에서 이 명령을 실행하여 스택을 올리려면 다음과 같이 하십시오.
docker-compose up --build
(나중에 다시 말하지만, 새로 만들 내용이 없으면build 인자를 생략하십시오.)
현재 창고는 상호작용 모드로 실행됩니다. (컨트롤러에서 로그 기록을 볼 수 있습니다.)Ctrl + C를 누르면 멈출 수 있습니다. 단, 이렇게 하면 창고가 완전히 아래로 내려가지 않습니다.그리고 네가 해야 돼.
docker-compose down
콘솔에서 독립적으로 시작하려면 다음과 같이 하십시오.
docker-compose up -d
대시보드 구성
네, 창고가 시작되고 실행되었습니다.접근을 등록하고 데이터베이스에 데이터를 기록할 수 있도록api 노드를 호출합니다.그리고 http://localhost:3000으로 넘어가서 Grafana를 켜주세요.
Grafana 사용 방법
로그인(admin/admin) 후 가장 먼저 해야 할 일은 데이터 원본을 추가하는 것입니다.
dockercompose 파일에 있는 서비스의 이름이기 때문에 influxdb
을 호스트 이름으로 설정해야 합니다.그렇지 않으면 내부 Docker IP 주소를 찾기 위해 컨테이너를 확인해야 합니다. 더 복잡합니다. 변경할 수 있기 때문입니다.influxdb
을 사용하여 현재 IP를 자동으로 검색하면 문제를 줄일 수 있습니다.
새 대시보드 생성...
새 패널을 추가할 준비가 되었습니다.이 예에서 나는 빈 CPU의 비율을 추가할 것이다.나는 Telegraf가 제공한 데이터를 얻었다.이것은 보잘것없는 응용 프로그램이기 때문에, 당신은 이 비율이 매우 크다는 것을 보게 될 것이다. 왜냐하면 나는 이 응용 프로그램에 대해 거의 아무것도 하지 않기 때문이다.
화면 아래쪽을 클릭하면 쿼리 생성기에서 (이 예에서는 데이터베이스가 하나밖에 없습니다) 를 선택하면 드롭다운 메뉴에서 사용할 수 있는 옵션이 자동으로 채워집니다.
다른 판넬을 보세요.이것은 접근 횟수가 /hello
인 계수기를 만들 것입니다.이 데이터는 우리가 Python 프로그램에 넣은 influxdb 코드에서 나온 것이다
endpoint_request
이 아래 목록에 어떻게 나타나는지 보십시오. 이것은 우리가 코드에서 저장하는 관건이기 때문입니다.그런 다음 데이터를 처리하는 방법을 선택할 수 있습니다.나의 예에서, 나는 계수기의 모든 항목의 총계를 표시한다.
보시다시피 Grafana는 매우 멋지고 전면적인 도구입니다.나는 당신이 서로 다른 지표에 대해 패널을 구축하는 것을 건의합니다.얘는 정말 강해!
나는 네가 이 강좌에서 약간의 쓸모를 찾을 수 있기를 바란다.Grafana와 Inflox는 저에게도 새로운 주제이기 때문에 힌트나 댓글이 있으면 알려주세요!
Reference
이 문제에 관하여(InfluxDB, Grafana, Telegraf를 학습하여 Python 응용 프로그램의 행동을 모니터링), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/rubenwap/monitor-the-behavior-of-your-python-app-by-learning-influxdb-grafana-and-telegraf-3ehg
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
docker-compose up --build
docker-compose down
docker-compose up -d
네, 창고가 시작되고 실행되었습니다.접근을 등록하고 데이터베이스에 데이터를 기록할 수 있도록api 노드를 호출합니다.그리고 http://localhost:3000으로 넘어가서 Grafana를 켜주세요.
Grafana 사용 방법
로그인(admin/admin) 후 가장 먼저 해야 할 일은 데이터 원본을 추가하는 것입니다.
dockercompose 파일에 있는 서비스의 이름이기 때문에
influxdb
을 호스트 이름으로 설정해야 합니다.그렇지 않으면 내부 Docker IP 주소를 찾기 위해 컨테이너를 확인해야 합니다. 더 복잡합니다. 변경할 수 있기 때문입니다.influxdb
을 사용하여 현재 IP를 자동으로 검색하면 문제를 줄일 수 있습니다.새 대시보드 생성...
새 패널을 추가할 준비가 되었습니다.이 예에서 나는 빈 CPU의 비율을 추가할 것이다.나는 Telegraf가 제공한 데이터를 얻었다.이것은 보잘것없는 응용 프로그램이기 때문에, 당신은 이 비율이 매우 크다는 것을 보게 될 것이다. 왜냐하면 나는 이 응용 프로그램에 대해 거의 아무것도 하지 않기 때문이다.
화면 아래쪽을 클릭하면 쿼리 생성기에서 (이 예에서는 데이터베이스가 하나밖에 없습니다) 를 선택하면 드롭다운 메뉴에서 사용할 수 있는 옵션이 자동으로 채워집니다.
다른 판넬을 보세요.이것은 접근 횟수가
/hello
인 계수기를 만들 것입니다.이 데이터는 우리가 Python 프로그램에 넣은 influxdb 코드에서 나온 것이다endpoint_request
이 아래 목록에 어떻게 나타나는지 보십시오. 이것은 우리가 코드에서 저장하는 관건이기 때문입니다.그런 다음 데이터를 처리하는 방법을 선택할 수 있습니다.나의 예에서, 나는 계수기의 모든 항목의 총계를 표시한다.보시다시피 Grafana는 매우 멋지고 전면적인 도구입니다.나는 당신이 서로 다른 지표에 대해 패널을 구축하는 것을 건의합니다.얘는 정말 강해!
나는 네가 이 강좌에서 약간의 쓸모를 찾을 수 있기를 바란다.Grafana와 Inflox는 저에게도 새로운 주제이기 때문에 힌트나 댓글이 있으면 알려주세요!
Reference
이 문제에 관하여(InfluxDB, Grafana, Telegraf를 학습하여 Python 응용 프로그램의 행동을 모니터링), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/rubenwap/monitor-the-behavior-of-your-python-app-by-learning-influxdb-grafana-and-telegraf-3ehg텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)