Skip to main content

JENNIFER, JenniferSoft APM, python agent.

Project description

JENNIFER 5, JenniferSoft APM Python agent

jennifer-python이란?

jennifer-python은 Python 환경에서 운영 중인 시스템을 실시간 모니터링(Monitoring) 할 수 있는 APM 프로그램입니다. Python 환경에서의 모든 트랜잭션과 인프라 전반에 대한 정확하고 심층적인 상세 정보를 통해 운영 중인 시스템을 최소한의 부하로 모니터링해 보세요.

제니퍼 Python agent 설치 방법

JENNIFER Python 에이전트는 공개된 PyPI(pip)를 통해서 설치한다.

  1. 지원 범위

    1. OS: Linux 배포판과 macOS를 지원한다

    2. Python: CPython의 2.x 버전은 2.7 이상, 3.x 버전은 3.3 이상을 지원한다.

    3. Web framework 지원 범위

      1. Flask >= v0.11

      2. django >= v1.5

      3. fastapi >= v0.78.0

    4. DB driver

      1. MySQL or MariaDB

        1. mysqlclient >= 2.0.3

        2. pymysql >= 1.0.2

      2. sqlite3

        1. sqlite3

      3. PostgreSQL

        1. psycopg2 >= 2.8

        2. psycopg2-binary >= 2.8

      4. Oracle

        1. cx-Oracle >= 8.0.0

      5. mongodb

        1. pymongo >= 3.10.1

      6. redis

        1. redis >= 4.0.2

      7. pyodbc

        1. pyodbc >= 4.0.39

  2. pip를 이용한 설치 방법

    1. pip를 통해서 jennifer-python을 설치한다.

      $ pip install jennifer-python
      
      $ cat jennifer.ini
        [JENNIFER]
      
        server_address = 127.0.0.1
        server_port = 5000
        domain_id = 1000
        inst_id = -1
      
        # log_dir = /tmp
        # service_dump_dir = /tmp
    2. 설정 방법

      위의 명령어를 수행하면 jennifer-admin이라는 도구가 함께 설치된다. 그리고 이 명령어를 통해 jennifer-python 모듈이 제니퍼 데이터 서버로 연결을 하기 위해 필요한 정보를 담은 설정 파일을 만들 수 있다.

      $ jennifer-admin generate-config

      해당 명령어를 실행하면 jennifer.ini파일이 생성된다. 생성된 파일의 각 필드는 다음의 의미를 갖는다.

      Field

      Description

      server_address

      data server의 IP

      server_port

      data server의 port

      domain_id

      도메인 ID, 테스트를 신청하면 제니퍼에서 제공한다.

      inst_id

      인스턴스의 아이디

    3. inst_id의 설정 방법

      인스턴스 ID는 Data server가 agent를 식별하기 uint16 범위의 숫자 값이다. 만약 이 값을 -1로 설정하면 Data server 측에서 자동으로 생성한 고유 ID를 할당한다.

    4. 실행

      위 과정에서 생성한 설정 파일을 가지고 이제 JENNIFER를 실행할 수 있다.

      $ JENNIFER_CONFIG_FILE=<설정 파일 경로> jennifer-admin run <python 실행 코드>
      $ JENNIFER_CONFIG_FILE=<설정 파일 경로> jennifer-admin runasync <python 실행 코드>

      <설정 파일 경로>는 위에서 생성한 설정 파일의 경로를 의미한다. <python 실행 코드>는 기존에 파이썬 웹 애플리케이션 서버를 실행하던 커맨드(예: python manage.py runserver, uwsgi -i uwsgi.ini, …)를 의미한다.

      예를 들어, jennifer.ini 파일이 /home/user/jennifer 디렉터리에 위치하고, 기존에 파이썬 응용 프로그램을 “uwsgi -i uwsgi.ini”로 실행했다면 다음과 같이 실행한다.

      $ JENNIFER_CONFIG_FILE=/home/user/jennifer/jennifer.ini jennifer-admin run uwsgi -i uwsgi.ini

      반면, uvicorn과 같은 비동기 기반의 호스팅 환경이라면 “runasync” 옵션을 이용해 다음과 같이 실행한다.

      $ JENNIFER_CONFIG_FILE=/home/user/jennifer/jennifer.ini jennifer-admin runasync uvicorn --loop asyncio main:app
  3. pip 설치 없이 에이전트에 적용하는 방법

    5.6.3.0 버전 이후부터 pip를 이용한 설치 과정을 거치지 않고도 에이전트를 적용하는 방법을 제공한다. (설치하지 않은 경우에는 위에서 설명한 jennifer-admin 명령어를 사용할 수 없다.)

    1. pypi에서 WHL 파일을 다운로드해 압축을 해제한다.

      $ pwd
      /tmp
      $ unzip jennifer_python-5.6.3.0-py3-none-any.whl
    2. 위와 같이 압축을 해제하면 /tmp/jennifer 디렉터리가 생성된다. 해당 설치 경로를 기준으로 다음과 같이 PYTHONPATH 환경 변수를 추가하면,

      $ export PYTHONPATH=/tmp/jennifer/admin
      $ export JENNIFER_CONFIG_FILE=/home/user/jennifer/jennifer.ini
    3. 이후 wsgi/asgi 응용 프로그램을 실행하면 제니퍼 에이전트가 적용된다.

      # 동기(wsgi) 웹 앱인 경우
      
      $ uwsgi -i uwsgi.ini
      # 비동기(asgi) 웹 앱인 경우
      
      $ export JENNIFER_IS_ASYNC=true
      $ uvicorn --loop asyncio main:app
  4. 유의 사항

    일부 웹 애플리케이션 서버의 경우 jennifer-python의 적절한 데이터 수집을 위해 아래와 같은 옵션을 추가해야 한다.

    호스팅 서버

    옵션

    uwsgi

    –enable-threads

License

© Copyright 2024 JenniferSoft, All right reserved.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

jennifer_python-5.6.3.0-py3-none-any.whl (6.6 MB view hashes)

Uploaded Python 3

jennifer_python-5.6.3.0-py2-none-any.whl (2.9 MB view hashes)

Uploaded Python 2

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page