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.)