KR102120567B1 - 컨테이너들에서 고립된 애플리케이션들의 모니터링 - Google Patents

컨테이너들에서 고립된 애플리케이션들의 모니터링 Download PDF

Info

Publication number
KR102120567B1
KR102120567B1 KR1020187001544A KR20187001544A KR102120567B1 KR 102120567 B1 KR102120567 B1 KR 102120567B1 KR 1020187001544 A KR1020187001544 A KR 1020187001544A KR 20187001544 A KR20187001544 A KR 20187001544A KR 102120567 B1 KR102120567 B1 KR 102120567B1
Authority
KR
South Korea
Prior art keywords
namespaces
monitoring agent
monitoring
agent process
running
Prior art date
Application number
KR1020187001544A
Other languages
English (en)
Other versions
KR20180019674A (ko
Inventor
로리스 데지오안니
루카 마르투라나
지안루카 보렐로
Original Assignee
시스딕, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 시스딕, 인크. filed Critical 시스딕, 인크.
Publication of KR20180019674A publication Critical patent/KR20180019674A/ko
Application granted granted Critical
Publication of KR102120567B1 publication Critical patent/KR102120567B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/301Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is a virtual computing platform, e.g. logically partitioned systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
    • G06F11/3093Configuration details thereof, e.g. installation, enabling, spatial arrangement of the probes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/552Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3055Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • G06F11/3072Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves data filtering, e.g. pattern matching, time or event triggered, adaptive or policy-based reporting
    • G06F11/3082Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves data filtering, e.g. pattern matching, time or event triggered, adaptive or policy-based reporting the data filtering being achieved by aggregating or compressing the monitored data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/815Virtual
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Mathematical Physics (AREA)
  • Environmental & Geological Engineering (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Debugging And Monitoring (AREA)

Abstract

독립적인 컨테이너들 사이의 통신에 관련된 기법들이 제공된다. 일 실시예에서, 제1 프로그래머틱 컨테이너가 애플리케이션 프로그램이 실행하고 있는 하나 이상의 제1 네임스페이스들을 포함한다. 제2 프로그래머틱 컨테이너가 모니터링 에이전트가 실행하고 있는 하나 이상의 제2 네임스페이스들을 포함한다. 하나 이상의 제1 네임스페이스들은 하나 이상의 제2 네임스페이스들과는 독립적이다. 모니터링 에이전트 프로세스가 모니터링 에이전트를 호스팅한다. 모니터링 에이전트는 애플리케이션 프로그램의 식별자를 수신하도록 프로그래밍된다. 모니터링 에이전트는 하나 이상의 제2 네임스페이스들에서부터 하나 이상의 제1 네임스페이스들로 모니터링 에이전트 프로세스를 스위칭하도록 추가로 프로그램된다. 스위치 후, 모니터링 에이전트 프로세스는 제2 프로그래머틱 컨테이너에서 실행을 계속하지만, 모니터링 에이전트 프로세스를 통해 애플리케이션 프로그램과 모니터링 에이전트 사이에서 통신이 가능하게 된다.

Description

컨테이너들에서 고립된 애플리케이션들의 모니터링
본 개시내용은 대체로 프로세스-간 통신들을 지원하는 컴퓨터 구현 프로세스들에 관한 것이다. 본 개시내용은 더 구체적으로는 독립적인 컨테이너들 사이의 그리고 독립적인 컨테이너들 내에 고립되어 실행하는 애플리케이션들 사이의 통신에 관한 것이다.
이 섹션에서 설명되는 접근법들은 추구될 수 있었을 접근법들이지만, 반드시 이전에 생각되거나 또는 추구된 접근법들인 것은 아닌 접근법들이다. 그러므로, 달리 표시되지 않는 한, 이 섹션에서 설명되는 접근법들 중 임의의 접근법은 단지 그것의 이 섹션 내의 포함 때문에 선행 기술이 된다고 가정되지 않아야 한다.
프로그래머틱 컨테이너들이 개개의, 상대적으로 고립된 런타임 환경들 내에 컴퓨터 프로그램 애플리케이션들을 캡슐화한다. 예를 들어, 프로그래머틱 컨테이너가 자신의 의존성들, 라이브러리들, 및 구성 파일들과 함께 단일 패키지 애플리케이션 프로그램 속에 번들링될 수 있다. 따라서, 프로그래머틱 컨테이너들은 상이한 운영 체제들 및 상이한 하드웨어 환경들을 가로질러 이동을 가능하게 한다. 다르게 말하면, 프로그래머틱 컨테이너들은 가상 머신 인스턴스들의 다수의 이점들을 제공한다. 동시에, 프로그래머틱 컨테이너들은 가상 머신 인스턴스들보다 상당히 더 적은 리소스들을 사용한다. 예를 들어, 프로그래머틱 컨테이너가 수 메가바이트 사이즈일 수 있는 반면, 가상 머신 인스턴스는 수 기가바이트 사이즈일 수 있다.
이 차이에 대한 하나의 이유는 프로그래머틱 컨테이너가 자신의 호스트 컴퓨터의 운영 체제 커널을 사용하는 반면, 가상 머신 인스턴스는 자신의 호스트 컴퓨터의 운영 체제 커널의 상단에서 실행하는 전체 운영 체제를 포함한다는 것이다. 프로그래머틱 컨테이너들의 이 가벼운 측면은 그것들이 컴퓨터 프로그램 애플리케이션들을 개발하기 위한 가상 머신 인스턴스들에 대한 인기 있는 대안들이 되게 한다. 예를 들어, 컴퓨터 프로그램 애플리케이션이 프로그래머틱 컨테이너들의 세트로서 한 번 이상 전개될 수 있다. 더욱이, 각각의 프로그래머틱 컨테이너는 단순화된 의존성들을 나타내는 그리고/또는 그렇지 않으면 성능 효율을 위해 간소화되는 코드 세트를 포함할 수 있다.
그러나, 프로그래머틱 컨테이너들은 프로세스-간 통신들 상에 제약조건들을 부과할 수 있다. 예를 들어, 상이한 프로그래머틱 컨테이너들이 상이한 네임스페이스들을 가질 수 있다. 따라서, 상이한 프로그래머틱 컨테이너들은 프로세스들, 네트워킹 인터페이스들, 파일들, 및/또는 임의의 다른 시스템 리소스의 상이한 뷰들을 가질 수 있다. 이와 같이, 하나의 프로그래머틱 컨테이너에서의 애플리케이션 프로그램이 다른 프로그래머틱 컨테이너에서의 상이한 애플리케이션 프로그램으로부터 데이터를 수신하지 못할 수 있다. 예를 들어, 상이한 프로그래머틱 컨테이너들이 동일한 네트워크 네임스페이스를 공유하는데 실패하면, 상이한 프로그래머틱 컨테이너들에서의 애플리케이션 프로그램들은 로컬 네트워크 접속들을 사용하여 통신하지 못할 수 있다.
프로그래머틱 컨테이너들의 통신 제약조건들을 피하기 위한 하나의 접근법이 단일 프로그래머틱 컨테이너에 다수의 애플리케이션 프로그램들을 포함시키는 것이다. 예를 들어, 피모니터링 프로그램과 모니터링 프로그램이 프로그래머틱 컨테이너를 공유함으로써, 모니터링 프로그램이 피모니터링 프로그램으로부터 데이터를 수신하는 것을 가능하게 할 수 있다. 그러나, 이 접근법은 가상 머신 인스턴스들을 넘어서는 프로그래머틱 컨테이너들의 많은 장점들을 약화시킨다. 예를 들어, 컨테이너 밀도가 추가적인 프로그램들을 실행하는데 요구되는 추가적인 의존성들, 라이브러리들, 및 구성 파일들로 인해 상당히 증가할 수 있다. 고-밀도 컨테이너에서 다수의 프로그램들을 실행하는 것은 더 많은 컴퓨팅 및/또는 네트워킹 리소스들을 이용함으로써 성능에 악영향을 미칠 수 있다. 더욱이, 모니터링 프로그램이 다수의 프로그래머틱 컨테이너들에서의 다수의 애플리케이션 프로그램들을 모니터링하는 것이면, 각각의 프로그래머틱 컨테이너는 모니터링 프로그램의 사본을 요구할 수 있다. 이러한 경우에, 프로그래머틱 컨테이너들을 모두 함께 사용하여 더 효율적인 회피가 가능할 수 있다.
따라서, 상이한 프로그래머틱 컨테이너들에서의 애플리케이션 프로그램들 사이에 통신을 가능하게 하는 더 나은 방도들이 필요하다.
첨부의 청구항들은 본 개시내용의 요약으로서 역할을 할 수 있다.
도면들 중:
도 1은 독립적인 네임스페이스들을 갖는 예시적인 프로그래머틱 컨테이너들을 묘사한다.
도 2는 네트워크 네임스페이스를 공유하는 접근법을 묘사한다.
도 3은 복제 파일들을 사용하여 마운트 네임스페이스를 공유하는 접근법을 묘사한다.
도 4는 명시적 통지들에 기초하여 마운트 네임스페이스를 공유하는 접근법을 묘사한다.
도 5는 입력/출력 호출들을 인터셉트하는 것에 기초하여 마운트 네임스페이스를 공유하는 접근법을 묘사한다.
도 6은 다수의 프로그래머틱 컨테이너들로부터 모니터링 메트릭들을 수신하는 모니터링 에이전트를 묘사한다.
도 7은 프로그래머틱 컨테이너들 사이의 통신을 가능하게 하는 접근법을 묘사하는 흐름도이다.
도 8은 일 실시예가 구현될 수 있는 컴퓨터 시스템을 묘사한다.
도면의 도들 각각이 명확한 예를 묘사하는 목적을 위한 특정 실시예를 묘사하지만, 다른 실시예들이 도면의 도들에서 도시된 엘리먼트들 중 임의의 엘리먼트를 생략, 추가, 재순서화, 및/또는 수정할 수 있다. 명확한 예들을 묘사할 목적으로, 하나 이상의 도들이 하나 이상의 다른 도들을 참조하여 설명될 수 있지만, 하나 이상의 다른 도들에서 묘사된 특정 배열을 사용하는 것이 다른 실시예들에서 요구되지 않는다.
다음의 설명에서, 설명을 목적으로, 다수의 특정 세부사항들이 본 개시내용의 완전한 이해를 제공하기 위하여 언급된다. 그러나, 본 개시내용은 이들 특정 세부사항들 없이 실용화될 수 있다는 것이 명백할 것이다. 다른 경우들에서, 널리 공지된 구조들 및 디바이스들은 본 개시내용을 불필요하게 모호하게 하는 것을 피하기 위하여 블록도 형태로 도시된다. "제1" 및 "제2"와 같은 수식어들이 엘리먼트들을 구분하기 위해 사용될 수 있지만, 그 수식어들은 임의의 특정 순서를 반드시 나타내지는 않는다.
실시예들은 다음의 아우트라인에 따라 본 명세서에서 설명된다:
1.0 전반적인 개요
2.0 모니터링 시스템
2.1 피모니터링 프로그램
2.2 모니터링 에이전트
3.0 네트워크 네임스페이스
3.1 네트워크 프로토콜들
3.2 공유된 네임스페이스
4.0 마운트 네임스페이스
4.1 다수의 공유된 네임스페이스들
4.2 복제 파일들
4.3 명시적 통지들
4.4 인터셉트된 입력/출력 호출들
5.0 집계 메트릭들
5.1 다수의 피모니터링 프로그램들
5.2 메트릭들 디스플레이
6.0 프로세스 개요
6.1 타겟 식별자를 수신
6.2 네임스페이스들을 스위칭
6.3 모니터링 메트릭들을 수신
7.0 구현 예 - 하드웨어 개요
8.0 확장들 및 대안들
---
1.0 전반적인 개요
모니터링 시스템이 피모니터링 프로그램과 모니터링 에이전트를 포함한다. 피모니터링 프로그램 프로세스가 피모니터링 프로그램을 호스팅한다. 모니터링 에이전트 프로세스가 모니터링 에이전트를 호스팅한다.
피모니터링 프로그램 프로세스는 제1 프로그래머틱 컨테이너에서의 하나 이상의 제1 네임스페이스들로 제약된다. 모니터링 에이전트 프로세스는 제2 프로그래머틱 컨테이너에서의 하나 이상의 제2 네임스페이스들로 제약된다. 하나 이상의 제1 네임스페이스들은 하나 이상의 제2 네임스페이스들과는 독립적이다. 따라서, 모니터링 에이전트 프로세스가 하나 이상의 제2 네임스페이스들에서 실행할 때 모니터링 에이전트 프로세스는 피모니터링 프로그램 프로세스에 액세스하지 못한다. 예를 들어, 모니터링 에이전트 프로세스는 피모니터링 프로그램 프로세스와 모니터링 에이전트 프로세스 사이에 폴링 채널을 확립하지 못할 수 있다.
피모니터링 프로그램 프로세스와 모니터링 에이전트 프로세스 사이의 통신을 가능하게 하기 위해, 모니터링 에이전트 프로세스는 제2 프로그래머틱 컨테이너에서 실행을 계속하는 동안 하나 이상의 제2 네임스페이스들에서부터 하나 이상의 제1 네임스페이스들로 스위칭한다. 그 후, 모니터링 에이전트 프로세스는 피모니터링 프로그램 프로세스로부터 데이터를 수신한다. 일부 예시적인 실시예들에서, 그 데이터는 하나 이상의 모니터링 메트릭들을 포함한다.
2.0 모니터링 시스템
도 1은 독립적인 네임스페이스들을 갖는 예시적인 프로그래머틱 컨테이너들을 묘사한다. 예시를 위해, 도 1의 예시적인 프로그래머틱 컨테이너들은 모니터링 시스템에 관련된다. 그러나, 본 개시내용은 모니터링 시스템들로 제한되지 않는다. 본 명세서에서 개시되는 기법들은 프로그래머틱 컨테이너들 사이에서 임의의 다른 데이터를 통신하는 것에 동일하게 적용 가능하다.
모니터링 시스템은 피모니터링 프로그램, 이를테면 제1 애플리케이션 프로그램(106)과, 모니터링 에이전트, 이를테면 모니터링 에이전트(114)를 포함한다. 통상적으로, 모니터링 에이전트는 하나 이상의 피모니터링 프로그램들로부터 메트릭들을 폴링하도록 프로그래밍된다. 메트릭 폴링의 예들은 피모니터링 프로그램의 스테이터스를 취출하기 위해 피모니터링 프로그램의 관리 웹 인터페이스로부터 데이터를 얻는 것, 인프라스트럭처 컴포넌트의 가용성을 체크하기 위해 로컬 소켓 접속을 확립하는 것, 파일들의 수를 결정하기 위해 디렉토리를 개방하는 것, 파일로부터 정보를 판독하는 것, 파이프 또는 유닉스 소켓으로부터 정보를 취출하는 것을 포함한다.
2.1 피모니터링 프로그램
도 1의 모니터링 시스템은 제1 애플리케이션 프로그램(106)을 포함한다. 제1 애플리케이션 프로그램(106)은 다수의 컴퓨팅 디바이스들 중 임의의 컴퓨팅 디바이스 상에서 실행될 수 있는 명령 세트이다. 예를 들어, 제1 애플리케이션 프로그램(106)은 네트워크 디바이스, 이를테면 라우터 또는 서버 상에서 실행하는 스마트폰 앱, 웹 애플리케이션, 또는 명령 세트일 수 있다.
도 1을 참조하면, 제1 애플리케이션 프로그램 프로세스(104)는 제1 애플리케이션 프로그램(106)을 호스팅한다. 따라서, 제1 애플리케이션 프로그램 프로세스(104)는 컴퓨팅 디바이스 상에서 실행하고 있는 제1 애플리케이션 프로그램(106)의 인스턴스이다.
제1 네임스페이스(들)(102)는 제1 애플리케이션 프로그램 프로세스(104)를 제약한다. 네임스페이스가 시스템 리소스들의 세트에 배정되는 심볼들의 세트를 포함할 수 있다. 예시적인 네임스페이스들은 프로세스 식별자(process identifier)(PID) 네임스페이스들, 네트워크 네임스페이스들, 및 마운트 네임스페이스들을 포함한다. 예를 들어, 제1 네임스페이스(들)(102)는 제1 애플리케이션 프로그램 프로세스(104)가 PID 1로서 참조되는 PID 네임스페이스를 포함할 수 있다.
제1 프로그래머틱 컨테이너(100)는 제1 네임스페이스(들)(102)를 포함한다. 따라서, 제1 네임스페이스(들)(102)가 PID 네임스페이스를 포함하고 제1 프로그래머틱 컨테이너(100)가 호스트들 사이에서 마이그레이션되면, 제1 애플리케이션 프로그램 프로세스(104)는 PID 1로서 계속 참조된다.
2.2 모니터링 에이전트
도 1의 모니터링 시스템은 모니터링 에이전트(114)를 더 포함한다. 모니터링 에이전트(114)는 피모니터링 프로그램으로부터 데이터를 수집하는 것을 유발하는 명령 세트이다. 일부 예시적인 실시예들에서, 모니터링 에이전트(114)는 데이터 수집을 수행하는 모니터링 스크립트를 포함할 수 있다. 제1 애플리케이션 프로그램(106)처럼, 모니터링 에이전트(114)는 다수의 컴퓨팅 디바이스들 중 임의의 컴퓨팅 디바이스 상에서 실행될 수 있다.
도 1의 예에서, 모니터링 에이전트 프로세스(112)는 모니터링 에이전트(114)를 호스팅한다. 모니터링 에이전트 프로세스(112)는 식별자(116)가 인수로서 제공되어 있는 모니터링 에이전트(114)의 실행하고 있는 인스턴스일 수 있다. 식별자(116)는 제1 애플리케이션 프로그램(106)에 대응한다. 예를 들어, 식별자(116)는 제1 애플리케이션 프로그램(106)을 고유하게 식별하는 영숫자 문자열일 수 있다. 일부 예시적인 실시예들에서, 모니터링 에이전트 프로세스(112)는 실행하고 있는 스크립트를 서브프로세스로서 포함할 수 있다.
제2 네임스페이스(들)(110)는 모니터링 에이전트 프로세스(112)를 제약한다. 제2 네임스페이스(들)(110)는 제1 네임스페이스(들)(102)와는 독립적이다. 다르게 말하면, 제2 네임스페이스(들)(110)로부터 제1 네임스페이스(들)(102)를 도출하는 것이 불가능하고 그 반대의 경우도 마찬가지이다. 예를 들어, 서로 독립적인 네임스페이스들의 쌍이 서로 부모-자식 관계를 나타내는데 실패한다.
제2 프로그래머틱 컨테이너(108)는 제2 네임스페이스(들)(110)를 포함한다. 제2 프로그래머틱 컨테이너(108)는 제1 프로그래머틱 컨테이너(100)와는 독립적이다. 따라서, 제2 프로그래머틱 컨테이너(108)는 제1 프로그래머틱 컨테이너(100)를 배제하고 그 반대의 경우도 마찬가지이다.
3.0 네트워크 네임스페이스
위에서 언급된 바와 같이, 독립적인 네임스페이스들에서 프로세스들을 고립시키는 것은 프로세스들 사이의 통신을 방해하다. 따라서, 통신을 가능하게 하기 위한 접근법이 공통 네임스페이스를 공유하는 프로세스들을 수반한다. 일부 예시적인 실시예들에서, 공통 네임스페이스는 네트워크 네임스페이스일 수 있다. 도 2는 네트워크 네임스페이스를 공유하는 접근법을 묘사한다.
네트워크 네임스페이스, 이를테면 네트워크 네임스페이스(200)는, 네트워크 디바이스들, 인터넷 프로토콜(Internet Protocol)(IP) 주소들, IP 라우팅 테이블들, 포트 번호들, 및/또는 네트워킹에 관련된 임의의 다른 시스템 리소스의 그 자신의 독자적인 뷰를 가진다. 예를 들어, 물리적 이더넷 디바이스가 제1 네임스페이스(들)(102)에서 이용 가능하고 제2 네임스페이스(들)(110)에서 이용 불가능할 수 있다. 이는 일부 네트워크 프로토콜들에 대해 문제가 있다.
3.1 네트워크 프로토콜들
일부 예시적인 실시예들에서, 메트릭 폴링이 송신 제어 프로토콜(Transmission Control Protocol)(TCP) 또는 사용자 데이터그램 프로토콜(User Datagram Protocol)(UDP)에 기초한 제1 애플리케이션 프로그램(106)과 모니터링 에이전트(114) 사이의 통신을 수반한다. 그러나, 이들 네트워크 프로토콜들의 양쪽 모두는 IP 주소들 및 포트 번호들에 기초하여 네트워크 또는 유닉스 소켓들을 생성하는 것을 수반한다. 위에서 언급된 바와 같이, 상이한 네트워크 네임스페이스들이 IP 주소들 및 포트 번호들의 상이한 뷰들을 가질 수 있다. 특히, 상이한 네트워크 네임스페이스들에 걸친 로컬호스트 접속들 또는 유닉스 소켓 접속들이 불가능할 수 있다. 따라서, 모니터링 에이전트 프로세스(112), 또는 그것의 서브프로세스는, 제1 애플리케이션 프로그램 프로세스(104)와의 통신을 위해 소켓을 생성하기 못할 수 있다.
3.2 공유된 네임스페이스
제1 프로그래머틱 컨테이너(100)와 제2 프로그래머틱 컨테이너(108)가 네트워크 리소스들의 공통 뷰를 공유할 때 TCP 또는 UDP 통신이 제1 애플리케이션 프로그램 프로세스(104)와 모니터링 에이전트 프로세스(112) 사이에서 가능하게 될 수 있다. 따라서, 모니터링 에이전트 프로세스(112)는 제2 프로그래머틱 컨테이너(108)에서 실행을 계속하는 동안 제2 네임스페이스(들)(110)에서부터 제1 네임스페이스(들)(102)로 스위칭할 수 있다. 예를 들어, setns() 리눅스 커널 시스템 호출은 호출 프로세스가 현존 네임스페이스에 참여하는 것을 허용한다. 대안적으로, 모니터링 에이전트 프로세스(112)는 nsenter() 또는 setns()를 활용하는 임의의 다른 도구를 호출할 수 있다. 비록 모니터링 에이전트 프로세스(112)가 제2 프로그래머틱 컨테이너(108)에서 실행을 계속하지만, 모니터링 에이전트 프로세스(112), 또는 그것의 서브프로세스가, 제1 프로그래머틱 컨테이너(100)에서 실행하는 것처럼, 모니터링 에이전트 프로세스(112), 또는 그것의 서브프로세스는 네트워크 접속들을 확립하며, 데이터를 전송하며, 그리고/또는 데이터를 수신할 수 있다.
도 2를 참조하면, 네트워크 네임스페이스(200)는 도 1의 제1 네임스페이스(들)(102)에 포함될 수 있다. 제1 프로그래머틱 컨테이너(100)와 제2 프로그래머틱 컨테이너(108)가 네트워크 네임스페이스(200)를 공유할 때, 제1 모니터링 메트릭(들)(202)은 제1 애플리케이션 프로그램(106)과 모니터링 에이전트(114) 사이에서 통신될 수 있다. 예시적인 모니터링 메트릭들은 제1 애플리케이션 프로그램(106)에 관한 스테이터스 정보, 제1 애플리케이션 프로그램(106)의 가용성, 및 제1 애플리케이션 프로그램(106)에 액세스 가능한 파일들의 수를 포함한다.
4.0 마운트 네임스페이스
마운트 네임스페이스가 프로세스가 보는 하나 이상의 파일시스템 마운트 지점들을 고립시킨다. 파일시스템이 파일들, 이를테면 라이브러리 파일, 구성 파일, 로그 파일, 실행가능 파일, 의존도, 및/또는 프레임워크 컴포넌트의 컬렉션이다. 파일시스템이 파일들의 컬렉션을 조직화하는데 사용되는 디렉토리들의 계층구조로서 표현된다. 추가적인 파일시스템이 디렉터리 상에 추가적인 파일시스템을 탑재하는 것에 기초하여 디렉터리들의 계층구조에 논리적으로 부속될 수 있다. 이 디렉토리는 추가적인 파일시스템을 위한 루트 디렉토리가 되는 마운트 지점으로서 공지되어 있다. 따라서, 상이한 마운트 네임스페이스들에서의 프로세스들이 파일들의 상이한 뷰들을 가질 수 있다. 다르게 말하면, 특정 파일이 제1 네임스페이스(들)(102)에서 이용 가능하고 제2 네임스페이스(들)(110)에서 이용 불가능할 수 있거나 또는 반대의 경우도 마찬가지이다.
일부 예시적인 실시예들에서, 메트릭 폴링이 파일 또는 파이프 폴에 기초한 제1 애플리케이션 프로그램(106)과 모니터링 에이전트(114) 사이의 통신을 수반한다. 위에서 언급된 바와 같이, 상이한 마운트 네임스페이스들이 파일들의 상이한 뷰들을 가질 수 있고, 따라서, 그들 파일들에 의해 참조되는 데이터 채널들을 가질 수 있다. 예를 들어, 파이프의 판독 단은, 제1 네임스페이스(들)(102)에서 이용 가능하지만 제2 네임스페이스(들)(110)에서 이용 불가능한 파일에 의해 참조될 수 있다. 따라서, 모니터링 에이전트 프로세스(112), 또는 그것의 서브프로세스가, 파이프로부터 데이터를 판독하지 못할 수 있다.
독립적인 프로그래머틱 컨테이너들에 걸쳐 프로세스-간 통신을 가능하게 하는 것은 프로세스들 사이에서 마운트 네임스페이스를 공유하는 것을 수반할 수 있다. 제1 프로그래머틱 컨테이너(100)와 제2 프로그래머틱 컨테이너(108)가 파일들의 공통 뷰를 공유할 때 통신이 제1 애플리케이션 프로그램(106)과 모니터링 에이전트(114) 사이에서 가능할 수 있다. 따라서, 모니터링 에이전트 프로세스(112)는 제2 프로그래머틱 컨테이너(108)에서 실행을 계속하는 동안 제2 네임스페이스(들)(110)에서부터 제1 네임스페이스(들)(102)로 스위칭할 수 있다. 이는 setns(), nsenter(), 또는 네임스페이스들을 스위칭하기 위한 임의의 다른 커맨드를 호출하는 것에 기초하여 완수될 수 있다. 그 후, 제1 모니터링 메트릭(들)(202)은 제1 네임스페이스(들)(102)에서 확립된 폴링 채널을 통해 제1 애플리케이션 프로그램(106)과 모니터링 에이전트(114) 사이에서 통신될 수 있다.
4.1 다수의 공유된 네임스페이스들
그러나, 프로세스를 프로그래머틱 컨테이너의 마운트 네임스페이스에 투입하는 것은 프로그래머틱 컨테이너가 셧 다운되는 것을 적절히 방지할 수 있다. 예를 들어, 투입되었던 프로세스는 종료되는 것을 피할 수 있는데, 프로그래머틱 컨테이너에서의 PID 네임스페이스가 그 프로세스를 처리하는데 실패하기 때문이다. 따라서, 일부 예시적인 실시예들에서, 모니터링 에이전트 프로세스(112)는 제1 프로그래머틱 컨테이너(100)에서의 다수의 네임스페이스들로 스위칭할 수 있다. 예를 들어, 모니터링 에이전트 프로세스(112)는 제1 프로그래머틱 컨테이너(100)에서의 마운트 네임스페이스 및 PID 네임스페이스 둘 다로 스위칭할 수 있다. 모니터링 에이전트 프로세스(112)가 제1 프로그래머틱 컨테이너(100)에서의 PID 네임스페이스로 스위칭할 때, PID가 모니터링 에이전트 프로세스(112)에 배정되고 PID 네임스페이스에 추가된다. 따라서, 제1 프로그래머틱 컨테이너(100)는 종료 신호를 PID 네임스페이스에서의 모든 프로세스들에 전송함으로써 셧 다운될 수 있다.
4.2 복제 파일들
프로그래머틱 컨테이너가 다수의 마운트 네임스페이스들을 포함하지 않는 한, 초기 마운트 네임스페이스에서부터 상이한 마운트 네임스페이스로 프로세스를 스위칭하는 것은 프로세스가 초기 마운트 네임스페이스에서의 파일들에 액세스를 하지 못하게 할 수 있다. 예를 들어, 상이한 마운트 네임스페이스로 스위칭한 후, 모니터링 에이전트 프로세스(112)는 적절한 기능을 위해 필요한 실행가능물들(executables) 및/또는 라이브러리들과 같은 파일들에 액세스하지 못할 수 있다. 일부 예시적인 실시예들에서, 그 파일들은 모니터링 에이전트(114)의 모니터링 스크립트를 포함할 수 있다.
적절한 기능을 보장하기 위해, 하나 이상의 파일들이 상이한 네임스페이스 속에 복사될 수 있다. 도 3은 복제 파일들을 사용하여 마운트 네임스페이스를 공유하는 접근법을 묘사한다. 도 3을 참조하면, 모니터링 에이전트 프로세스(112)가 제2 프로그래머틱 컨테이너(108)의 제2 마운트 네임스페이스(302)에서의 파일(들)(304)을 연다. 모니터링 에이전트 프로세스(112)는 그 다음에 제1 마운트 네임스페이스(300)로 스위칭한다. 따라서, 파일(들)(304)에 대한 하나 이상의 파일 디스크립터들이 제1 마운트 네임스페이스(300) 및 제2 마운트 네임스페이스(302) 둘 다에서 유효하다. 파일(들) 사본(306)이 하나 이상의 파일 디스크립터들로부터 판독되고 제1 마운트 네임스페이스(300)에 저장된다. 파일(들) 사본(306)은 제1 애플리케이션 프로그램(106)에서 데이터 내보내기를 적절히 구성하고 개시하기 위해 제1 프로그래머틱 컨테이너(100)에서 사용된다. 예를 들어, 파일(들) 사본(306)은 메트릭들 내보내기를 적절히 구성하고 개시하기 위해 제1 프로그래머틱 컨테이너(100)에서의 PID 네임스페이스에서 실행될 수 있다. 모니터링 에이전트 프로세스(112)는 내보내기되는 데이터를 폴링하기 위해 제2 프로그래머틱 컨테이너(108)에서 실행할 수 있다. 예를 들어, 모니터링 에이전트 프로세스(112)는 제1 프로그래머틱 컨테이너(100)의 네트워크 네임스페이스(200) 내에서 로컬호스트 접속들을 생성하기 위해 setns() 시스템 호출을 활용하는 것에 기초하여 내보내기되는 메트릭들을 폴링할 수 있다.
4.3 명시적 통지들
위에서 언급된 바와 같이, 폴링 채널이 공유된 네임스페이스에 대한 프로세스를 영구적으로 스위칭하는 것에 기초하여 프로그래머틱 컨테이너들 사이에서 확립될 수 있다. 그러나, 네임스페이스들을 영구적으로 스위칭하는 것은 컨테이너 기능에 악영향을 주며 그리고/또는 보안 문제를 가져올 수 있다. 따라서, 일부 예시적인 실시예들에서, 네임스페이스 스위칭은 일시적일 수 있다. 예를 들어, 네임스페이스 스위칭은 "필요한대로" 기반으로 수행될 수 있다. 따라서, 모니터링 에이전트 프로세스(112)는, 모니터링 에이전트 프로세스(112), 또는 그것의 서브프로세스가, 제1 마운트 네임스페이스(300)에서의 파일시스템에 대한 액세스를 요구할 때, 제2 마운트 네임스페이스(302)에서부터 제1 마운트 네임스페이스(300)로 스위칭할 수 있다. 그 후, 모니터링 에이전트 프로세스(112)는 제1 마운트 네임스페이스(300)에서부터 제2 마운트 네임스페이스(302)로 되돌아가게 스위칭할 수 있다.
일부 예시적인 실시예들에서, 모니터링 에이전트 프로세스(112)는 자신의 서브프로세스, 이를테면 모니터링 스크립트가, 제1 마운트 네임스페이스(300)에서의 파일시스템에 대해 액세스를 요구한다는 명시적 통지를 수신할 수 있다. 도 4는 명시적 통지들에 기초하여 마운트 네임스페이스를 공유하는 접근법을 묘사한다.
도 4를 참조하면, 모니터링 에이전트 프로세스(112)는 마운트 네임스페이스 스위칭 로직(400)과 모니터링 프로그램 스크립트(402)를 포함한다. 마운트 네임스페이스 스위칭 로직(400)은 setns(), nsenter(), 또는 네임스페이스들을 스위칭하기 위한 임의의 다른 커맨드를 포함할 수 있다. 모니터링 프로그램 스크립트(402)는 제1 애플리케이션 프로그램 프로세스(104)에 질의하며 그리고/또는 제1 모니터링 메트릭(들)(202)을 생성하기 위해 모니터링 에이전트 프로세스(112)의 서브프로세스로서 실행하고 있을 수 있다. 예를 들어, 모니터링 프로그램 스크립트(402)는 파이프의 판독 단을 주기적으로 검사하는 poll() 커맨드를 포함할 수 있다.
도 4의 예에서, 모니터링 프로그램 스크립트(402)는 통지 로직(404)을 포함하도록 수정되어 있다. 통지 로직(404)은 모니터링 에이전트 프로세스(112)에 통지(406)를 전송하기 위한 하나 이상의 명령들을 포함한다. 통지(406)는 모니터링 프로그램 스크립트(402)가 제1 마운트 네임스페이스(300)의 파일시스템에 판독 또는 기입할 것을 요구한다는 표시를 포함할 수 있다. 일부 예시적인 실시예들에서, 모니터링 에이전트(114)는 통지(406)를 프로세싱하는 로직을 포함하도록 또한 수정될 수 있다. 예를 들어, 모니터링 에이전트(114)는 다수의 입력/출력(I/O) 호출들에 대응하는 미리 결정된 수의 통지들을 수집하도록 프로그래밍될 수 있다. 그 결과, 모니터링 에이전트 프로세스(112)는 다수의 I/O 호출들을 위해 단일 setns() 시스템 호출을 수행할 수 있다.
4.4 인터셉트된 입력/출력 호출들
위에서 언급된 바와 같이, 마운트 네임스페이스들을 스위칭할 필요를 모니터링 에이전트 프로세스(112)에게 명시적으로 통지하는 것은 적어도 모니터링 프로그램 스크립트(402) 또는 프로그래밍되는 모니터링 에이전트(114)의 일부 다른 부분을 I/O 호출들을 하기 위해 수정하는 것을 수반한다. 그러나, 일부 예시적인 실시예들에서, 모니터링 시스템은 서드 파티에 의해 제공되는 폴링 프레임워크를 포함할 수 있다. 따라서, 폴링 프레임워크를 수정하는 것은 어렵고 및/또는 바람직하지 않을 수 있다. 그런 경우들에서, I/O 호출들의 명시적 통지들에 의존하는 대신, 모니터링 에이전트 프로세스(112), 또는 그것의 서브프로세스가, 자신의 I/O 호출들을 인터셉트하도록 계장될(instrumented) 수 있다. 도 5는 I/O 호출들을 인터셉트하는 것에 기초하여 마운트 네임스페이스를 공유하는 접근법을 묘사한다.
도 5를 참조하면, 모니터링 에이전트(114)가 입력/출력 호출(502)을 포함한다. 모니터링 에이전트(114)와 입력/출력 호출(502)이 수정되지 않고 남아 있는 현존 폴링 프레임워크의 부분들이다. 입력/출력 호출(502)이 파일시스템에의 액세스를 요구하는 라이브러리 루틴 및 /또는 시스템 호출일 수 있다. 예시적인 I/O 호출들은 stat(), fstat(), read(), fread(), write(), fwrite(), getdents(), 및 readdir()를 포함한다.
모니터링 에이전트(114)의 임의의 일부를 수정하는 대신, 모니터링 에이전트 프로세스(112)는 입력/출력 호출(502)을 인터셉트하도록 계장될 수 있다. 예를 들어, 계장(instrumentation)은 LD_PRELOAD 동적 라이브러리 투입 기법을 사용하여 입력/출력 호출(502)을 무시하는 것을 수반할 수 있다. 다르게 말하면, 계장은 입력/출력 호출(502)에 의해 투입된 명령들에 대응하는 추가적인 동작들을 수행하는 실행가능물을 생성하는 것을 유발할 수 있다. 따라서, 입력/출력 호출(502)이 호출될 때, 모니터링 에이전트 프로세스(112)는 이들 추가적인 동작들을 포함하는 커스텀 구현을 실행할 수 있다.
도 5의 예에서, 커스텀 구현은 마운트 네임스페이스 결정 로직(500), 마운트 네임스페이스 스위칭 로직(400), 및 입력/출력 호출(502)을 포함한다. 마운트 네임스페이스 결정 로직(500)은 입력/출력 호출(502)이 제1 마운트 네임스페이스(300)에서의 파일시스템에 대한 액세스를 요구하는지의 여부를 결정하도록 프로그래밍된다. 제1 마운트 네임스페이스(300)에 대한 액세스가 불필요하다면, 입력/출력 호출(502)은 제2 마운트 네임스페이스(302)에서 실행한다. 그렇지 않으면, 마운트 네임스페이스 스위칭 로직(400)은 제2 마운트 네임스페이스(302)에서부터 제1 마운트 네임스페이스(300)로 모니터링 에이전트 프로세스(112)를 스위칭하는 것을 유발한다. 그러면, 입력/출력 호출(502)은 제1 마운트 네임스페이스(300)에서 실행한다. 그 후, 모니터링 에이전트 프로세스(112)는 제2 마운트 네임스페이스(302)로 되돌아가게 스위칭된다.
예시적인 커스텀 구현이 표 1의 의사코드에서 제공된다:
[표 1] - 예시적인 의사코드
open(경로명){
if(경로명이 상이한 마운트 네임스페이스에 존재){
상이한 마운트 네임스페이스로 스위칭;
open()의 원래의 버전에의 포인터를 생성;
경로명을 인수로 하여 open()의 원래의 버전을 호출;
원래의 마운트 네임스페이스로 되돌아가게 스위칭;
}
else{
open()의 원래의 버전에의 포인터를 생성;
경로명을 인수로 하여 open()의 원래의 버전을 호출;
}
}
함수의 원래의 버전에의 포인터를 생성하는 것은 dlsym() 및 RTLD_NEXT를 의사-핸들로서 사용하여 구현될 수 있다. 예를 들어, 예시적인 커스텀 구현은 C 프로그래밍 명령 "original_open = dlsym(RTLD_NEXT, 'open');"을 포함할 수 있다.
도 5는 모니터링 에이전트(114)의 입력/출력 호출(502)을 인터셉트하는 것으로서 모니터링 에이전트 프로세스(112)를 묘사한다. 그러나, 일부 예시적인 실시예들에서, 모니터링 에이전트 프로세스(112)의 서브프로세스가 모니터링 에이전트(114)의 부분의 입력/출력 호출(502)을 인터셉트할 수 있다. 예를 들어, 실행하고 있는 스크립트가 모니터링 프로그램 스크립트(402)의 입력/출력 호출(502)을 인터셉트할 수 있다.
5.0 집계 메트릭들
전술한 기법들 중 임의의 기법이 다수의 프로그래머틱 컨테이너들을 모니터링하기 위해 단일 프로그래머틱 컨테이너에 의해 사용될 수 있다. 도 6은 다수의 프로그래머틱 컨테이너들로부터 모니터링 메트릭들을 수신하는 모니터링 에이전트를 묘사한다. 비록 도 6이 세 개의 프로그래머틱 컨테이너들을 묘사하지만, 모니터링 시스템이 임의의 수의 프로그래머틱 컨테이너들을 포함할 수 있다는 것이 이해되어야 한다.
5.1 다수의 피모니터링 프로그램들
도 6을 참조하면, 각각의 프로그래머틱 컨테이너가 하나 이상의 각각의 네임스페이스들을 포함한다. 예를 들어, 각각의 프로그래머틱 컨테이너는 PID 네임스페이스, 네트워크 네임스페이스, 마운트 네임스페이스, 및/또는 임의의 다른 유형의 네임스페이스를 포함할 수 있다. 최소한, 제2 네임스페이스(들)(110)가 제1 네임스페이스(들)(102) 및 제3 네임스페이스(들)(602) 둘 다와는 독립적이다. 일부 예시적인 실시예들에서, 제1 네임스페이스(들)(102)와 제3 네임스페이스(들)(602)는 서로 독립적일 수 있다. 제1 애플리케이션 프로그램(106), 모니터링 에이전트(114), 및 제2 애플리케이션 프로그램(604)이 각각 제1 네임스페이스(들)(102), 제2 네임스페이스(들)(110), 및 제3 네임스페이스(들)(602)에 제약된다.
통신 채널이 모니터링 컨테이너와 복수의 피모니터링 컨테이너들에서의 각각의 피모니터링 컨테이너 사이에 확립될 수 있다. 도 6의 예에서, 제1 통신 채널이 제1 프로그래머틱 컨테이너(100)와 제2 프로그래머틱 컨테이너(108) 사이에 확립된다. 제2 통신 채널이 제2 프로그래머틱 컨테이너(108)와 제3 프로그래머틱 컨테이너(600) 사이에 확립된다. 일부 예시적인 실시예들에서, 제1 통신 채널은 제2 통신 채널과는 상이할 수 있다. 예를 들어, 제1 통신 채널은 TCP 접속일 수 있고, 제2 통신 채널은 파이프 폴일 수 있다. 일부 예시적인 실시예들에서, 제1 통신 채널은 제2 통신 채널과 유사할 수 있다. 예를 들어, 양 통신 채널들은 UDP 접속들일 수 있다.
다수의 통신 채널들은 제2 프로그래머틱 컨테이너(108)에서 실행하고 있는 다수의 모니터링 에이전트 프로세스들, 또는 그것들의 다수의 서브프로세스들에 기초하여 확립될 수 있다. 각각의 모니터링 에이전트 프로세스/서브프로세스가 상이한 프로그래머틱 컨테이너로부터 데이터를 수신할 수 있다. 예를 들어, 모니터링 에이전트(114)는 애플리케이션 프로그램에 대한 식별자가 모니터링 에이전트(114)에 인수로서 전달될 때 프로세스를 포킹(fork)하도록 또는 스크립트의 별도의 인스턴스를 실행하도록 프로그래밍될 수 있다.
5.2 메트릭들 디스플레이
각각의 통신 채널이 모니터링 에이전트(114)가 애플리케이션 프로그램으로부터 모니터링 메트릭들을 수신하는 것을 가능하게 한다. 도 6의 예에서, 제1 모니터링 메트릭(들)(202)은 제1 프로그래머틱 컨테이너(100)로부터 수집되고, 제2 모니터링 메트릭(들)(608)은 제3 프로그래머틱 컨테이너(600)로부터 수집된다. 모니터링 에이전트(114)는 내보내기에 앞서 모니터링 메트릭들을 집계하도록 프로그래밍될 수 있다. 집계된 데이터를 내보내는 것은, 그렇지 않으면 각각의 프로그래머틱 컨테이너로부터 모니터링 메트릭들을 따로따로 내보내기하는 것에 관련되는, 네트워크 리소스들 및/또는 컴퓨팅 리소스들의 비효율적 사용에 관련된 오버헤드를 감소시킨다.
모니터링 메트릭들은 모니터링 메트릭들의 시각화를 가능하게 하는 디스플레이(606)로 내보내기 될 수 있다. 일부 예시적인 실시예들에서, 단일 컴퓨팅 디바이스가 모니터링 에이전트(114)와 디스플레이(606)를 호스팅할 수 있다. 일부 예시적인 실시예들에서, 모니터링 에이전트(114)와 디스플레이(606)는 상이한 컴퓨팅 디바이스들 상에서 호스팅될 수 있다. 예를 들어, 백엔드 서버가 디스플레이(606)를 호스팅할 수 있다.
6.0 프로세스 개요
도 7은 프로그래머틱 컨테이너들 사이의 통신을 가능하게 하는 접근법을 묘사하는 흐름도이다. 접근법의 수행을 유발하는 명령들이 하나 이상의 비일시적 저장 매체 상에 저장될 수 있다. 하나 이상의 컴퓨팅 디바이스들이 그 명령들을 실행하는 것에 기초하여 그 접근법을 수행할 수 있다.
6.1 타겟 식별자를 수신
블록 700에서, 모니터링 에이전트가 모니터링될 애플리케이션 프로그램의 식별자를 수신한다. 그 식별자는 모니터링 에이전트에 인수로서 전달될 수 있다. 애플리케이션 프로그램은 제1 프로그래머틱 컨테이너에서의 하나 이상의 제1 네임스페이스들에서 실행한다.
블록 702에서, 모니터링 에이전트는 제2 프로그래머틱 컨테이너에서의 하나 이상의 제2 네임스페이스들에서 실행한다. 하나 이상의 제1 네임스페이스들과 하나 이상의 제2 네임스페이스들이 PID 네임스페이스들, 네트워크 네임스페이스들, 마운트 네임스페이스들, 및/또는 임의의 다른 네임스페이스들을 포함할 수 있다. 그러나, 하나 이상의 제1 네임스페이스들과 하나 이상의 제2 네임스페이스들은 서로 독립적이다.
6.2 네임스페이스들을 스위칭
블록 704에서, 모니터링 에이전트 프로세스, 또는 그것의 서브프로세스가, 하나 이상의 제2 네임스페이스들에서부터 하나 이상의 제1 네임스페이스들로 스위칭함으로써, 애플리케이션 프로그램과 모니터링 에이전트 사이의 통신을 가능하게 한다. 모니터링 에이전트 프로세스는 제2 프로그래머틱 컨테이너에서 모니터링 에이전트를 호스팅한다. 더욱이, 모니터링 에이전트 프로세스는 모니터링 에이전트 프로세스가 하나 이상의 제1 네임스페이스들로 스위칭한 후 제2 프로그래머틱 컨테이너에서 실행을 계속한다.
일부 예시적인 실시예들에서, 모니터링 에이전트 프로세스는 하나 이상의 제1 네임스페이스들로 영구적으로 스위칭한다. 예를 들어, 모니터링 에이전트 프로세스는 애플리케이션 프로그램의 마운트 네임스페이스와 PID 네임스페이스로 스위칭할 수 있다. 부가적으로 또는 대안적으로, 모니터링 에이전트 프로세스는 하나 이상의 제2 네임스페이스들에서부터의 하나 이상의 파일들을 하나 이상의 제1 네임스페이스들에 복사할 수 있다.
일부 예시적인 실시예들에서, 모니터링 에이전트 프로세스는 모니터링 프로그램 스크립트가 하나 이상의 제1 네임스페이스들에의 액세스를 요구한다는 통지를 수신하는 것에 응답하여 하나 이상의 제1 네임스페이스들로 일시적으로 스위칭한다. 모니터링 프로그램 스크립트는 애플리케이션 프로그램으로부터 데이터를 수집하도록 프로그래밍되는 모니터링 에이전트의 일부일 수 있다. 이 접근법을 구현하는 것은 모니터링 프로그램 스크립트가 하나 이상의 제1 네임스페이스들에서의 파일시스템에 대해 판독 또는 기입할 것을 요구할 때를 모니터링 에이전트 프로세스에게 통지하기 위해 모니터링 프로그램 스크립트를 수정하는 것을 수반할 수 있다.
일부 예시적인 실시예들에서, 모니터링 에이전트 프로세스, 또는 그것의 서브프로세스는, 특정 I/O 호출이 하나 이상의 제1 네임스페이스들에의 액세스를 요구한다고 결정하는 것에 응답하여 하나 이상의 제1 네임스페이스들로 일시적으로 스위칭한다. 모니터링 에이전트 프로세스, 또는 그것의 서브프로세스는, 자신의 I/O 호출들을 인터셉트하도록 계장될 수 있다. 이 접근법을 구현하는 것은 모니터링 에이전트 또는 모니터링 프로그램 스크립트를 수정하는 것을 피한다.
6.3 모니터링 메트릭들을 수신
블록 706에서, 모니터링 에이전트는 애플리케이션 프로그램으로부터 하나 이상의 모니터링 메트릭들을 수신한다. 하나 이상의 모니터링 메트릭들은 모니터링 에이전트 프로세스 또는 그것의 서브프로세스를 통해 수신될 수 있다. 예를 들어, 하나 이상의 모니터링 메트릭들은 모니터링 프로그램 스크립트와 제1 프로그래머틱 컨테이너에서의 애플리케이션 프로그램을 호스팅하는 애플리케이션 프로그램 프로세스 사이에 확립되는 통신 채널을 통해 수신될 수 있다.
위에서 언급된 바와 같이, 일부 예시적인 실시예들에서, 모니터링 에이전트 프로세스는 하나 이상의 제2 네임스페이스들에서부터 하나 이상의 제1 네임스페이스들로 일시적으로 스위칭한다. 따라서, 모니터링 에이전트 프로세스는 하나 이상의 모니터링 메트릭들을 수신한 후 하나 이상의 제2 네임스페이스들로 되돌아가게 스위칭할 수 있다.
일부 예시적인 실시예들에서, 하나 이상의 모니터링 메트릭들을 수신한 후, 모니터링 에이전트 프로세스는 하나 이상의 모니터링 메트릭들을 포함하도록 디스플레이를 업데이트하는 것을 유발한다. 디스플레이는 복수의 상이한 프로그래머틱 컨테이너들에서 실행하고 있는 복수의 상이한 애플리케이션 프로그램들에 대응하는 모니터링 메트릭들의 세트를 포함할 수 있다. 각각의 상이한 애플리케이션 프로그램은 하나 이상의 제2 네임스페이스들과는 독립적인 하나 이상의 각각의 네임스페이스들에서 실행할 수 있다.
7.0 구현 예 - 하드웨어 개요
하나의 실시예에 따르면, 본 명세서에서 설명되는 기법들은 하나 이상의 특수-목적 컴퓨팅 디바이스들에 의해 구현된다. 특수-목적 컴퓨팅 디바이스들은 그 기법들을 수행하도록 하드-와이어드될 수 있거나, 또는 그 기법들을 수행하도록 지속적으로 프로그래밍되는 하나 이상의 주문형 집적회로들(ASIC들) 또는 필드 프로그램가능 게이트 어레이들(FPGA들)과 같은 디지털 전자 디바이스들을 포함할 수 있거나, 또는 펌웨어, 메모리, 다른 스토리지, 또는 조합에서의 프로그램 명령들에 의하여 그 기법들을 수행하도록 프로그래밍되는 하나 이상의 범용 하드웨어 프로세서들을 포함할 수 있다. 이러한 특수-목적 컴퓨팅 디바이스들은 그 기법들을 완수하기 위해 커스텀 프로그래밍과 커스텀 하드-와이어드 로직, ASIC들, 또는 FPGA들을 또한 결합할 수 있다. 특수-목적 컴퓨팅 디바이스들은 그 기법들을 구현하기 위해 하드-와이어드 및 /또는 프로그램 로직을 통합하는 데스크톱 컴퓨터 시스템들, 휴대용 컴퓨터 시스템들, 핸드헬드 디바이스들, 네트워킹 디바이스들 또는 임의의 다른 디바이스일 수 있다.
예를 들어, 도 8은 본 개시내용의 실시예가 구현될 수 있는 컴퓨터 시스템(800)을 예시하는 블록도이다. 컴퓨터 시스템(800)은 정보를 통신하기 위한 버스(802) 또는 다른 통신 메커니즘과, 버스(802)와 커플링되어 정보를 프로세싱하기 위한 하드웨어 프로세서(804)를 포함한다. 하드웨어 프로세서(804)는, 예를 들어, 범용 마이크로프로세서일 수 있다.
컴퓨터 시스템(800)은 버스(802)에 커플링되어 프로세서(804)에 의해 실행될 명령들과 정보를 저장하는 랜덤 액세스 메모리(RAM) 또는 다른 동적 저장 디바이스와 같은 메인 메모리(806)를 또한 포함한다. 메인 메모리(806)는 프로세서(804)에 의해 실행될 명령들의 실행 동안 임시 변수들 또는 다른 중간 정보를 저장하는데 또한 사용될 수 있다. 이러한 명령들은, 프로세서(804)에 액세스 가능한 비일시적 저장 매체에 저장될 때, 그 명령들에 특정된 동작들을 수행하도록 커스터마이징된 특수-목적 머신으로 컴퓨터 시스템(800)을 렌더링한다.
컴퓨터 시스템(800)은 버스(802)에 커플링되어 프로세서(804)를 위한 정적 정보 및 명령들을 저장하는 판독 전용 메모리(ROM)(808) 또는 다른 정적 저장 디바이스를 더 포함한다. 저장 디바이스(810), 이를테면 자기 디스크, 광 디스크, 또는 고체-상태 드라이브가 정보 및 명령들을 저장하기 위해 제공되고 버스(802)에 커플링된다.
컴퓨터 시스템(800)은 버스(802)를 통해 디스플레이(812), 이를테면 음극선관(CRT)에, 정보를 컴퓨터 사용자에게 디스플레이하기 위해 커플링될 수 있다. 영숫자 및 다른 키들을 포함하는 입력 디바이스(814)가, 버스(802)에 커플링되어 정보 및 커맨드 선택들을 프로세서(804)에 전달한다. 다른 유형의 사용자 입력 디바이스가 방향 정보 및 커맨드 선택들을 프로세서(804)에 전달하고 디스플레이(812) 상에서 커서 움직임을 제어하는 커서 컨트롤(816), 이를테면 마우스, 트랙볼, 또는 커서 방향 키들이다. 이 입력 디바이스는, 디바이스가 평면에서 포지션들을 특정하는 것을 허용하는, 두 개의 축들, 제1 축(예컨대, x) 및 제2 축(예컨대, y)에서의 2의 자유도를 통상적으로 가진다.
컴퓨터 시스템(800)은 컴퓨터 시스템과 조합하여 컴퓨터 시스템(800)을 특수-목적 머신이 되도록 하거나 또는 프로그램하는 커스터마이징된 하드-와이어드 로직, 하나 이상의 ASIC들 또는 FPGA들, 펌웨어 및/또는 프로그램 로직을 사용하여 본 명세서에서 설명되는 기법들을 구현할 수 있다. 하나의 실시예에 따르면, 본 명세서의 기법들은 메인 메모리(806)에 포함되는 하나 이상의 명령들의 하나 이상의 시퀀스들을 실행하고 있는 프로세서(804)에 응답하여 컴퓨터 시스템(800)에 의해 수행된다. 이러한 명령들은 다른 저장 매체, 이를테면 저장 디바이스(810)로부터 메인 메모리(806) 속으로 판독될 수 있다. 메인 메모리(806)에 포함되는 명령들의 시퀀스들의 실행이 프로세서(804)로 하여금 본 명세서에서 설명되는 프로세스 단계들을 수행하게 한다. 대체 실시예들에서, 하드-와이어드 회로부가 소프트웨어 명령들 대신 또는 그러한 명령들과 조합하여 사용될 수 있다.
본 명세서에서 사용되는 바와 같은 "저장 매체"라는 용어는 머신이 특정 방식으로 동작하게 하는 데이터 및/또는 명령들을 저장하는 임의의 비일시적 매체를 지칭한다. 이러한 저장 매체는 비휘발성 매체 및/또는 휘발성 매체를 포함할 수 있다. 비휘발성 매체는, 예를 들어, 광 디스크들, 자기 디스크들, 또는 고체-상태 드라이브들, 이를테면 저장 디바이스(810)를 포함한다. 휘발성 매체는 동적 메모리, 이를테면 메인 메모리(806)를 포함한다. 저장 매체의 일반 형태들은, 예를 들어, 플로피 디스크, 플렉시블 디스크, 하드 디스크, 고체-상태 드라이브, 자기 테이프, 또는 임의의 다른 자기 데이터 저장 매체, CD-ROM, 임의의 다른 광 데이터 저장 매체, 홀들의 패턴들을 갖는 임의의 물리적 매체, RAM, PROM, 및 EPROM, 플래시-EPROM, NVRAM, 임의의 다른 메모리 칩 또는 카트리지를 포함한다.
저장 매체는 송신 매체와는 별개이지만 송신 매체와 연계하여 사용될 수 있다. 송신 매체는 저장 매체 사이에 정보를 전송함에 있어서 참여한다. 예를 들어, 송신 매체는, 버스(802)를 포함하는 와이어들을 포함한, 동축 케이블들, 구리 와이어 및 광섬유들을 포함한다. 송신 매체는 라디오-파 및 적외선 데이터 통신들 동안 생성된 것들과 같은 음향 또는 광 파들의 형태를 또한 취할 수 있다.
다양한 형태들의 매체가 하나 이상의 명령들의 하나 이상의 시퀀스들을 실행을 위해 프로세서(804)로 운반함에 있어서 관련될 수 있다. 예를 들어, 그 명령들은 초기에는 원격 컴퓨터의 자기 디스크 또는 고체-상태 드라이브 상에서 수행될 수 있다. 원격 컴퓨터는 자신의 동적 메모리 속에 명령들을 로딩하고 그 명령들을 모뎀을 사용하여 전화선을 통해 전송한다. 컴퓨터 시스템(800)에 로컬인 모뎀이 전화선 상의 데이터를 수신하고 그 데이터를 적외선 신호로 변환하기 위해 적외선 송신기를 사용할 수 있다. 적외선 검출기가 적외선 신호에서 운반되는 데이터를 수신할 수 있고 적절한 회로부가 버스(802) 상에 데이터를 배치할 수 있다. 버스(802)는 데이터를 메인 메모리(806)로 운반하며, 그 메인 메모리로부터 프로세서(804)는 명령들을 취출하고 실행한다. 메인 메모리(806) 에 의해 수신된 명령들은 프로세서(804)에 의한 실행 전 또는 후 중 어느 하나에 저장 디바이스(810) 상에 옵션적으로 저장될 수 있다.
컴퓨터 시스템(800)은 버스(802)에 커플링된 통신 인터페이스(818)를 또한 포함한다. 통신 인터페이스(818)는 로컬 네트워크(822)에 접속된 네트워크 링크(820)에 대한 양-방향 데이터 통신 커플링을 제공한다. 예를 들어, 통신 인터페이스(818)는 ISDN(integrated services digital network) 카드, 케이블 모뎀, 위성 모뎀, 또는 대응하는 유형의 전화선에의 데이터 통신 접속을 제공하는 모뎀일 수 있다. 다른 예로서, 통신 인터페이스(818)는 호환 가능 LAN에 데이터 통신 접속을 제공하는 로컬 영역 네트워크(local area network)(LAN) 카드일 수 있다. 무선 링크들이 또한 구현될 수 있다. 임의의 이러한 구현에서, 통신 인터페이스(818)는 다양한 유형들의 정보를 표현하는 디지털 데이터 스트림들을 운반하는 전기, 전자기 또는 광 신호들을 전송하고 수신한다.
네트워크 링크(820)는 하나 이상의 네트워크들을 통한 다른 데이터 디바이스들로의 데이터 통신을 통상적으로 제공한다. 예를 들어, 네트워크 링크(820)는 호스트 컴퓨터(824)에 또는 인터넷 서비스 제공자(ISP)(826)에 의해 동작되는 데이터 장비에 로컬 네트워크(822)를 통한 접속을 제공할 수 있다. 결국 ISP(826)는 이제 "인터넷"(828)이라고 일반적으로 지칭되는 월드 와이드 패킷 데이터 통신 네트워크를 통해 데이터 통신 서비스들을 제공한다. 로컬 네트워크(822) 및 인터넷(828) 둘 다가 디지털 데이터 스트림들을 운반하는 전기, 전자기 또는 광 신호들을 사용한다. 컴퓨터 시스템(800)으로 또는 그것으로부터 디지털 데이터를 운반하는 다양한 네트워크들 통한 신호들과 네트워크 링크(820) 상의 그리고 통신 인터페이스(818)를 통한 신호들이 송신 매체의 예시적인 형태들이다.
컴퓨터 시스템(800)은 네트워크(들), 네트워크 링크(820) 및 통신 인터페이스(818)를 통해, 메시지들을 전송하고 프로그램 코드를 포함하는 데이터를 수신한다. 인터넷 예에서, 서버(830)는 인터넷(828), ISP(826), 로컬 네트워크(822) 및 통신 인터페이스(818)를 통해 애플리케이션 프로그램을 위한 요청된 코드를 송신할 수 있다.
수신된 코드는 수신될 때 프로세서(804)에 의해 실행되며, 그리고/또는 저장 디바이스(810), 또는 다른 비휘발성 스토리지에 나중의 실행을 위해 저장될 수 있다.
8.0 확장들 및 대안들
전술한 설명에서, 본 개시내용의 실시예들은 구현마다 가변할 수 있는 수많은 특정 세부사항들을 참조하여 설명되어 있다. 명세서 및 도면들은, 따라서, 제한하는 의미보다는 예시적인 것으로 간주되는 것들이다. 본 개시내용의 범위의 단독 및 배타적 표시자와, 본 개시내용의 범위인 것으로 출원인들에 의해 의도된 것은, 임의의 후속하는 정정을 포함하는 본 출원서에서 공표한 청구항들의 세트의, 이러한 청구항들이 공표하는 특정 형태의, 문언적 및 균등 범위이다.

Claims (23)

  1. 컴퓨터 시스템으로서,
    애플리케이션 프로그램이 실행되고 있는 하나 이상의 제1 네임스페이스들을 포함하는 제1 프로그래머틱 컨테이너; 및
    모니터링 에이전트가 실행되고 있는 하나 이상의 제2 네임스페이스들을 포함하는 제2 프로그래머틱 컨테이너 - 상기 하나 이상의 제2 네임스페이스들은 상기 하나 이상의 제1 네임스페이스들과는 독립적임 -
    를 포함하고,
    상기 모니터링 에이전트는, (i) 상기 하나 이상의 제1 네임스페이스들에서 실행되고 있는 상기 애플리케이션 프로그램의 식별자를 수신하고; (ii) 상기 애플리케이션 프로그램의 상기 식별자에 기초하여, 상기 모니터링 에이전트를 호스팅하는 실행중인 모니터링 에이전트 프로세스를, 상기 애플리케이션 프로그램과 상기 실행중인 모니터링 에이전트 프로세스 사이의 통신 채널을 확립하는 것을 포함하여, 상기 하나 이상의 제2 네임스페이스들로부터 상기 하나 이상의 제1 네임스페이스들로 스위칭하고 - 상기 모니터링 에이전트 프로세스는 상기 스위칭 이후에 상기 제2 프로그래머틱 컨테이너에서 계속 실행됨 -; (iii) 상기 스위칭 이후에, 상기 애플리케이션 프로그램으로부터 상기 모니터링 에이전트로 전달되는 하나 이상의 모니터링 메트릭들을, 상기 실행중인 모니터링 에이전트 프로세스를 통해 수신하도록 프로그래밍되는, 컴퓨터 시스템.
  2. 제1항에 있어서,
    상기 모니터링 에이전트는, 상기 모니터링 에이전트가 상기 하나 이상의 모니터링 메트릭들을 수신한 이후에, 상기 하나 이상의 모니터링 메트릭들을 포함하도록 디스플레이를 업데이트하는 것을 야기시키도록 추가로 프로그래밍되고, 상기 디스플레이는 복수의 상이한 프로그래머틱 컨테이너들에서 실행되고 있는 복수의 상이한 애플리케이션 프로그램들에 대응하는 모니터링 메트릭들의 세트를 포함하고, 상기 복수의 상이한 애플리케이션 프로그램들 중의 각각의 상이한 애플리케이션 프로그램은 상기 하나 이상의 제2 네임스페이스들과는 독립적인 하나 이상의 각각의 네임스페이스들에서 실행되고 있는, 컴퓨터 시스템.
  3. 제1항에 있어서,
    상기 하나 이상의 제1 네임스페이스들 및 상기 하나 이상의 제2 네임스페이스들은 각각 네트워크 네임스페이스를 포함하는, 컴퓨터 시스템.
  4. 제1항에 있어서,
    상기 모니터링 에이전트는, 상기 모니터링 에이전트 프로세스가 상기 하나 이상의 제2 네임스페이스들로부터 상기 하나 이상의 제1 네임스페이스들로 스위칭할 때, 상기 하나 이상의 제2 네임스페이스들로부터 상기 하나 이상의 제1 네임스페이스들로 하나 이상의 파일들을 복사하도록 추가로 프로그래밍되는, 컴퓨터 시스템.
  5. 제1항에 있어서,
    상기 모니터링 에이전트는, 상기 모니터링 에이전트 프로세스가 상기 하나 이상의 제2 네임스페이스들로부터 상기 하나 이상의 제1 네임스페이스들로 스위칭한 이후에, 상기 모니터링 에이전트 프로세스를 상기 하나 이상의 제1 네임스페이스들로부터 상기 하나 이상의 제2 네임스페이스들로 다시 스위칭하도록 추가로 프로그래밍되는, 컴퓨터 시스템.
  6. 제1항에 있어서,
    상기 모니터링 에이전트 프로세스가 상기 하나 이상의 제2 네임스페이스들로부터 상기 하나 이상의 제1 네임스페이스들로 스위칭하기 이전에, 상기 모니터링 에이전트의 모니터링 프로그램 스크립트는, 상기 모니터링 프로그램 스크립트가 상기 하나 이상의 제1 네임스페이스들에 대한 액세스를 요구함을 상기 모니터링 에이전트 프로세스에 통지하도록 프로그래밍되는, 컴퓨터 시스템.
  7. 제1항에 있어서,
    상기 모니터링 에이전트는, 상기 모니터링 에이전트 프로세스를 상기 하나 이상의 제2 네임스페이스들로부터 상기 하나 이상의 제1 네임스페이스들로 스위칭하기 이전에, 상기 모니터링 에이전트 프로세스에 의해 인터셉트된 입력/출력 호출이 상기 하나 이상의 제1 네임스페이스들에 대한 액세스를 요구한다고 결정하도록 추가로 프로그래밍되는, 컴퓨터 시스템.
  8. 데이터 프로세싱 방법으로서,
    제1 프로그래머틱 컨테이너에서의 하나 이상의 제1 네임스페이스들에서 실행되고 있는 애플리케이션 프로그램의 식별자를 수신하는 단계;
    제2 프로그래머틱 컨테이너에서의 하나 이상의 제2 네임스페이스들에서 모니터링 에이전트의 실행을 야기시키는 단계 - 상기 하나 이상의 제2 네임스페이스들은 상기 하나 이상의 제1 네임스페이스들과는 독립적임 -;
    상기 애플리케이션 프로그램의 상기 식별자에 기초하여, 상기 모니터링 에이전트를 호스팅하는 실행중인 모니터링 에이전트 프로세스를, 상기 애플리케이션 프로그램과 상기 실행중인 모니터링 에이전트 프로세스 사이의 통신 채널을 확립하는 것을 포함하여, 상기 하나 이상의 제2 네임스페이스들로부터 상기 하나 이상의 제1 네임스페이스들로 스위칭하는 단계 - 상기 모니터링 에이전트 프로세스는 상기 스위칭 이후에 상기 제2 프로그래머틱 컨테이너에서 계속 실행됨 -; 및
    상기 실행중인 모니터링 에이전트 프로세스를 상기 하나 이상의 제2 네임스페이스들로부터 상기 하나 이상의 제1 네임스페이스들로 스위칭한 이후에, 상기 애플리케이션 프로그램으로부터 상기 모니터링 에이전트로 전달되는 하나 이상의 모니터링 메트릭들을 상기 실행중인 모니터링 에이전트 프로세스를 통해 수신하는 단계
    를 포함하고,
    상기 데이터 프로세싱 방법은 하나 이상의 컴퓨팅 디바이스들에 의해 수행되는, 데이터 프로세싱 방법.
  9. 제8항에 있어서,
    상기 애플리케이션 프로그램으로부터 상기 모니터링 에이전트로 전달되는 하나 이상의 모니터링 메트릭들을 상기 모니터링 에이전트 프로세스를 통해 수신한 이후에, 상기 하나 이상의 모니터링 메트릭들을 포함하도록 디스플레이를 업데이트하는 것을 야기시키는 단계를 더 포함하고, 상기 디스플레이는 복수의 상이한 프로그래머틱 컨테이너들에서 실행되고 있는 복수의 상이한 애플리케이션 프로그램들에 대응하는 모니터링 메트릭들의 세트를 포함하고, 상기 복수의 상이한 애플리케이션 프로그램들 중의 각각의 상이한 애플리케이션 프로그램은 상기 하나 이상의 제2 네임스페이스들과는 독립적인 하나 이상의 각각의 네임스페이스들에서 실행되고 있는, 데이터 프로세싱 방법.
  10. 제8항에 있어서,
    상기 하나 이상의 제1 네임스페이스들 및 상기 하나 이상의 제2 네임스페이스들은 각각 네트워크 네임스페이스를 포함하는, 데이터 프로세싱 방법.
  11. 제8항에 있어서,
    상기 모니터링 에이전트 프로세스를 상기 하나 이상의 제2 네임스페이스들로부터 상기 하나 이상의 제1 네임스페이스들로 스위칭하는 것은, 상기 하나 이상의 제2 네임스페이스들로부터 상기 하나 이상의 제1 네임스페이스들로 하나 이상의 파일들을 복사하는 것을 수반하는, 데이터 프로세싱 방법.
  12. 제8항에 있어서,
    상기 모니터링 에이전트 프로세스를 상기 하나 이상의 제2 네임스페이스들로부터 상기 하나 이상의 제1 네임스페이스들로 스위칭한 이후에, 상기 모니터링 에이전트 프로세스를 상기 하나 이상의 제1 네임스페이스들로부터 상기 하나 이상의 제2 네임스페이스들로 다시 스위칭하는 단계를 더 포함하는, 데이터 프로세싱 방법.
  13. 제8항에 있어서,
    상기 모니터링 에이전트 프로세스를 상기 하나 이상의 제2 네임스페이스들로부터 상기 하나 이상의 제1 네임스페이스들로 스위칭하기 이전에, 상기 모니터링 에이전트의 모니터링 프로그램 스크립트로부터, 상기 모니터링 에이전트 프로세스로, 상기 모니터링 프로그램 스크립트가 상기 하나 이상의 제1 네임스페이스들에 대한 액세스를 요구한다는 통지를 전송하는 단계를 더 포함하는, 데이터 프로세싱 방법.
  14. 제8항에 있어서,
    상기 모니터링 에이전트 프로세스를 상기 하나 이상의 제2 네임스페이스들로부터 상기 하나 이상의 제1 네임스페이스들로 스위칭하기 이전에, 상기 모니터링 에이전트 프로세스에 의해 인터셉트된 입력/출력 호출이 상기 하나 이상의 제1 네임스페이스들에 대한 액세스를 요구한다고 결정하는 단계를 더 포함하는, 데이터 프로세싱 방법.
  15. 명령어들을 저장하는 하나 이상의 비일시적 저장 매체로서,
    상기 명령어들은, 하나 이상의 컴퓨팅 디바이스들에 의해 실행될 때,
    제1 프로그래머틱 컨테이너에서의 하나 이상의 제1 네임스페이스들에서 실행되고 있는 애플리케이션 프로그램의 식별자를 수신하는 것;
    제2 프로그래머틱 컨테이너에서의 하나 이상의 제2 네임스페이스들에서 모니터링 에이전트의 실행을 야기시키는 것 - 상기 하나 이상의 제2 네임스페이스들은 상기 하나 이상의 제1 네임스페이스들과는 독립적임 -;
    상기 애플리케이션 프로그램의 상기 식별자에 기초하여, 상기 모니터링 에이전트를 호스팅하는 실행중인 모니터링 에이전트 프로세스를, 상기 애플리케이션 프로그램과 상기 실행중인 모니터링 에이전트 프로세스 사이의 통신 채널을 확립하는 것을 포함하여, 상기 하나 이상의 제2 네임스페이스들로부터 상기 하나 이상의 제1 네임스페이스들로 스위칭하는 것 - 상기 모니터링 에이전트 프로세스는 상기 스위칭 이후에 상기 제2 프로그래머틱 컨테이너에서 계속 실행됨 -; 및
    상기 실행중인 모니터링 에이전트 프로세스를 상기 하나 이상의 제2 네임스페이스들로부터 상기 하나 이상의 제1 네임스페이스들로 스위칭한 이후에, 상기 애플리케이션 프로그램으로부터 상기 모니터링 에이전트로 전달되는 하나 이상의 모니터링 메트릭들을 상기 실행중인 모니터링 에이전트 프로세스를 통해 수신하는 것
    을 수행하게 하는, 하나 이상의 비일시적 저장 매체.
  16. 제15항에 있어서,
    상기 명령어들은, 상기 애플리케이션 프로그램으로부터 상기 모니터링 에이전트로 전달되는 하나 이상의 모니터링 메트릭들을 상기 모니터링 에이전트 프로세스를 통해 수신한 이후에, 상기 하나 이상의 모니터링 메트릭들을 포함하도록 디스플레이를 업데이트하는 것을 야기시키는 것을 추가로 수행하게 하고, 상기 디스플레이는 복수의 상이한 프로그래머틱 컨테이너들에서 실행되고 있는 복수의 상이한 애플리케이션 프로그램들에 대응하는 모니터링 메트릭들의 세트를 포함하고, 상기 복수의 상이한 애플리케이션 프로그램들 중의 각각의 상이한 애플리케이션 프로그램은 상기 하나 이상의 제2 네임스페이스들과는 독립적인 하나 이상의 각각의 네임스페이스들에서 실행되고 있는, 하나 이상의 비일시적 저장 매체.
  17. 제15항에 있어서,
    상기 하나 이상의 제1 네임스페이스들 및 상기 하나 이상의 제2 네임스페이스들은 각각 네트워크 네임스페이스를 포함하는, 하나 이상의 비일시적 저장 매체.
  18. 제15항에 있어서,
    상기 모니터링 에이전트 프로세스를 상기 하나 이상의 제2 네임스페이스들로부터 상기 하나 이상의 제1 네임스페이스들로 스위칭하는 것은, 상기 하나 이상의 제2 네임스페이스들로부터 상기 하나 이상의 제1 네임스페이스들로 하나 이상의 파일들을 복사하는 것을 수반하는, 하나 이상의 비일시적 저장 매체.
  19. 제15항에 있어서,
    상기 명령어들은, 상기 모니터링 에이전트 프로세스를 상기 하나 이상의 제2 네임스페이스들로부터 상기 하나 이상의 제1 네임스페이스들로 스위칭한 이후에, 상기 모니터링 에이전트 프로세스를 상기 하나 이상의 제1 네임스페이스들로부터 상기 하나 이상의 제2 네임스페이스들로 다시 스위칭하는 것을 추가로 수행하게 하는, 하나 이상의 비일시적 저장 매체.
  20. 제15항에 있어서,
    상기 명령어들은, 상기 모니터링 에이전트 프로세스를 상기 하나 이상의 제2 네임스페이스들로부터 상기 하나 이상의 제1 네임스페이스들로 스위칭하기 이전에, 상기 모니터링 에이전트 프로세스에 의해 인터셉트된 입력/출력 호출이 상기 하나 이상의 제1 네임스페이스들에 대한 액세스를 요구한다고 결정하는 것을 추가로 수행하게 하는, 하나 이상의 비일시적 저장 매체.
  21. 제1항에 있어서,
    상기 모니터링 에이전트는 상기 하나 이상의 제1 네임스페이스들의 파일시스템에서 판독 또는 기입하기 위해 입력/출력 호출들을 수집하도록 추가로 프로그래밍되며, 상기 하나 이상의 제2 네임스페이스들로부터의 스위칭은 수집된 입력/출력 호출들의 수가 임계치에 도달하는 때에 기초하는, 컴퓨터 시스템.
  22. 제8항에 있어서,
    상기 모니터링 에이전트는 상기 하나 이상의 제1 네임스페이스들의 파일시스템에서 판독 또는 기입하기 위해 입력/출력 호출들을 수집하도록 추가로 프로그래밍되며, 상기 하나 이상의 제2 네임스페이스들로부터의 스위칭은 수집된 입력/출력 호출들의 수가 임계치에 도달하는 때에 기초하는, 데이터 프로세싱 방법.
  23. 제15항에 있어서,
    상기 모니터링 에이전트는 상기 하나 이상의 제1 네임스페이스들의 파일시스템에서 판독 또는 기입하기 위해 입력/출력 호출들을 수집하도록 추가로 프로그래밍되며, 상기 하나 이상의 제2 네임스페이스들로부터의 스위칭은 수집된 입력/출력 호출들의 수가 임계치에 도달하는 때에 기초하는, 하나 이상의 비일시적 저장 매체.
KR1020187001544A 2015-06-22 2016-06-08 컨테이너들에서 고립된 애플리케이션들의 모니터링 KR102120567B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201562183153P 2015-06-22 2015-06-22
US62/183,153 2015-06-22
PCT/US2016/036435 WO2016209624A1 (en) 2015-06-22 2016-06-08 Monitoring of applications isolated in containers

Publications (2)

Publication Number Publication Date
KR20180019674A KR20180019674A (ko) 2018-02-26
KR102120567B1 true KR102120567B1 (ko) 2020-06-08

Family

ID=56194589

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187001544A KR102120567B1 (ko) 2015-06-22 2016-06-08 컨테이너들에서 고립된 애플리케이션들의 모니터링

Country Status (5)

Country Link
US (3) US10476767B2 (ko)
EP (1) EP3311323A1 (ko)
KR (1) KR102120567B1 (ko)
CA (1) CA2990405A1 (ko)
WO (1) WO2016209624A1 (ko)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10476767B2 (en) 2015-06-22 2019-11-12 Draios, Inc. Communication between independent containers
US10298681B1 (en) * 2016-02-03 2019-05-21 Veritas Technologies Llc Systems and methods for rerouting data sent between application containers and storage containers
US10812570B1 (en) * 2017-08-02 2020-10-20 Intuit Inc. System for data consolidation across disparate namespaces
US10819675B2 (en) 2017-08-14 2020-10-27 Nicira, Inc. Managing network connectivity between cloud computing service endpoints and virtual machines
US11947489B2 (en) 2017-09-05 2024-04-02 Robin Systems, Inc. Creating snapshots of a storage volume in a distributed storage system
US11392363B2 (en) 2018-01-11 2022-07-19 Robin Systems, Inc. Implementing application entrypoints with containers of a bundled application
US11582168B2 (en) 2018-01-11 2023-02-14 Robin Systems, Inc. Fenced clone applications
US11099937B2 (en) 2018-01-11 2021-08-24 Robin Systems, Inc. Implementing clone snapshots in a distributed storage system
US11748203B2 (en) * 2018-01-11 2023-09-05 Robin Systems, Inc. Multi-role application orchestration in a distributed storage system
US10922386B1 (en) * 2018-01-15 2021-02-16 Trend Micro Incorporated System and methods for security inspection and protection of software containers at runtime
CN108427839A (zh) * 2018-03-08 2018-08-21 中国核电工程有限公司 一种应用于二维设计软件和三维设计软件的数据交换方法
US20200034156A1 (en) * 2018-07-25 2020-01-30 Futurewei Technologies, Inc. Resource Optimization and Reuse in Resource Constrained Environment
US10976938B2 (en) 2018-07-30 2021-04-13 Robin Systems, Inc. Block map cache
US11023328B2 (en) 2018-07-30 2021-06-01 Robin Systems, Inc. Redo log for append only storage scheme
US11656924B2 (en) 2018-08-03 2023-05-23 Samsung Electronics Co., Ltd. System and method for dynamic volume management
US11036439B2 (en) 2018-10-22 2021-06-15 Robin Systems, Inc. Automated management of bundled applications
US10901954B2 (en) * 2018-11-05 2021-01-26 International Business Machines Corporation Host-level persistent volume management for container clouds
US11086725B2 (en) 2019-03-25 2021-08-10 Robin Systems, Inc. Orchestration of heterogeneous multi-role applications
CN109960634B (zh) * 2019-03-29 2023-10-31 新华三技术有限公司 一种应用程序监控方法、装置及系统
US11256434B2 (en) 2019-04-17 2022-02-22 Robin Systems, Inc. Data de-duplication
CN111984280B (zh) * 2019-05-22 2024-05-17 阿里巴巴集团控股有限公司 容器兼容、升级方法、装置、设备及存储介质
US11226847B2 (en) 2019-08-29 2022-01-18 Robin Systems, Inc. Implementing an application manifest in a node-specific manner using an intent-based orchestrator
US11520650B2 (en) 2019-09-05 2022-12-06 Robin Systems, Inc. Performing root cause analysis in a multi-role application
US11249851B2 (en) 2019-09-05 2022-02-15 Robin Systems, Inc. Creating snapshots of a storage volume in a distributed storage system
US10963396B1 (en) * 2019-09-17 2021-03-30 Micron Technology, Inc. Memory system for binding data to a memory namespace
US11113158B2 (en) 2019-10-04 2021-09-07 Robin Systems, Inc. Rolling back kubernetes applications
US11347684B2 (en) 2019-10-04 2022-05-31 Robin Systems, Inc. Rolling back KUBERNETES applications including custom resources
US11403188B2 (en) 2019-12-04 2022-08-02 Robin Systems, Inc. Operation-level consistency points and rollback
US11249988B2 (en) 2020-05-20 2022-02-15 Snowflake Inc. Account-level namespaces for database platforms
US11593354B2 (en) * 2020-05-20 2023-02-28 Snowflake Inc. Namespace-based system-user access of database platforms
US11501010B2 (en) 2020-05-20 2022-11-15 Snowflake Inc. Application-provisioning framework for database platforms
US11108638B1 (en) 2020-06-08 2021-08-31 Robin Systems, Inc. Health monitoring of automatically deployed and managed network pipelines
US11528186B2 (en) 2020-06-16 2022-12-13 Robin Systems, Inc. Automated initialization of bare metal servers
US11740980B2 (en) 2020-09-22 2023-08-29 Robin Systems, Inc. Managing snapshot metadata following backup
CN112187581B (zh) 2020-09-29 2022-08-02 北京百度网讯科技有限公司 服务信息处理方法、装置、设备及计算机存储介质
US11743188B2 (en) 2020-10-01 2023-08-29 Robin Systems, Inc. Check-in monitoring for workflows
US11456914B2 (en) 2020-10-07 2022-09-27 Robin Systems, Inc. Implementing affinity and anti-affinity with KUBERNETES
US11271895B1 (en) 2020-10-07 2022-03-08 Robin Systems, Inc. Implementing advanced networking capabilities using helm charts
US11750451B2 (en) 2020-11-04 2023-09-05 Robin Systems, Inc. Batch manager for complex workflows
US11556361B2 (en) 2020-12-09 2023-01-17 Robin Systems, Inc. Monitoring and managing of complex multi-role applications
US11546244B1 (en) * 2021-10-08 2023-01-03 Juniper Networks, Inc. Namespace-aware test agents for network performance measurement
CN116226846A (zh) * 2022-12-28 2023-06-06 北京火山引擎科技有限公司 一种容器的安全检测方法、装置及设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110161988A1 (en) * 2009-12-25 2011-06-30 International Business Machines Corporation Pipeline Across Isolated Computing Environments

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8055622B1 (en) * 2004-11-30 2011-11-08 Symantec Operating Corporation Immutable data containers in tiered storage hierarchies
US20080040335A1 (en) * 2006-08-10 2008-02-14 John Gatti Multi-tenant CIM namespace association discovery and proxy association creation
JP4934642B2 (ja) * 2008-06-11 2012-05-16 株式会社日立製作所 計算機システム
JP5062352B2 (ja) * 2010-09-09 2012-10-31 Jsr株式会社 レジストパターン形成方法
US9003141B2 (en) * 2011-11-14 2015-04-07 Ca, Inc. Enhanced software application platform
US10073626B2 (en) * 2013-03-15 2018-09-11 Virident Systems, Llc Managing the write performance of an asymmetric memory system
US10193963B2 (en) * 2013-10-24 2019-01-29 Vmware, Inc. Container virtual machines for hadoop
EA201301283A1 (ru) * 2013-11-26 2015-05-29 Общество С Ограниченной Ответственностью "Параллелз" Способ целевой виртуализации ресурсов в контейнере
US10382537B2 (en) * 2014-09-25 2019-08-13 Oracle International Corporation System and method for use of a global runtime in a multitenant application server environment
US9256467B1 (en) * 2014-11-11 2016-02-09 Amazon Technologies, Inc. System for managing and scheduling containers
US10225209B2 (en) * 2015-01-21 2019-03-05 Oracle International Corporation System and method for interceptors in a multitenant application server environment
US9544275B2 (en) * 2015-01-28 2017-01-10 defend7, Inc. Communication tunneling in application container environments
EP3278506B1 (en) * 2015-04-01 2020-02-12 Telefonaktiebolaget LM Ericsson (publ) Methods and devices for monitoring of network performance for container virtualization
CN106209741B (zh) * 2015-05-06 2020-01-03 阿里巴巴集团控股有限公司 一种虚拟主机及隔离方法、资源访问请求处理方法及装置
WO2016183028A2 (en) * 2015-05-10 2016-11-17 Apl Software Inc. Methods and architecture for enhanced computer performance
US10476767B2 (en) 2015-06-22 2019-11-12 Draios, Inc. Communication between independent containers
US9667725B1 (en) * 2015-08-06 2017-05-30 EMC IP Holding Company LLC Provisioning isolated storage resource portions for respective containers in multi-tenant environments
US11201955B1 (en) * 2019-12-23 2021-12-14 Lacework Inc. Agent networking in a containerized environment

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110161988A1 (en) * 2009-12-25 2011-06-30 International Business Machines Corporation Pipeline Across Isolated Computing Environments

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Leo Unbekandt, "Docker containers monitoring"(2015.05.06.)*

Also Published As

Publication number Publication date
CA2990405A1 (en) 2016-12-29
WO2016209624A1 (en) 2016-12-29
KR20180019674A (ko) 2018-02-26
US20210392061A1 (en) 2021-12-16
US20160373327A1 (en) 2016-12-22
US10476767B2 (en) 2019-11-12
US11102097B2 (en) 2021-08-24
EP3311323A1 (en) 2018-04-25
US11558273B2 (en) 2023-01-17
US20200067802A1 (en) 2020-02-27

Similar Documents

Publication Publication Date Title
KR102120567B1 (ko) 컨테이너들에서 고립된 애플리케이션들의 모니터링
US20180324204A1 (en) System and method for real-time asynchronous multitenant gateway security
TWI453604B (zh) 在一或多個虛擬機器中產生應用層級相依性的系統與方法
US9348771B1 (en) Cloud-based instrument driver system
US8572625B2 (en) Method and system for application migration using per-application persistent configuration dependency
US9898384B2 (en) Automated problem determination for cooperating web services using debugging technology
US10725890B1 (en) Program testing service
US20230214229A1 (en) Multi-tenant java agent instrumentation system
US10585678B2 (en) Insertion of custom activities in an orchestrated application suite
Cho et al. Typhoon: An SDN enhanced real-time big data streaming framework
US10394531B2 (en) Hyper dynamic Java management extension
US11552868B1 (en) Collect and forward
CN112187869A (zh) Iot设备的远程调试系统、方法、电子设备及存储介质
US20230118838A1 (en) Advanced agent instrumentation for opentelemetry implementations
US11403093B1 (en) Application modification with proxy service process
US20220311791A1 (en) Systems and methods for low latency stateful threat detection and mitigation
US10223238B1 (en) Multiple-stage crash reporting
Greenberg Building Applications on Mesos: Leveraging Resilient, Scalable, and Distributed Systems
JP6929377B2 (ja) 複合ファイルシステムコマンド
KR102062578B1 (ko) Vnf의 라이프사이클을 모니터링하는 방법 및 장치
US20240095370A1 (en) Protecting software development environments from malicious actors
US20240070002A1 (en) Hang detection models and management for heterogenous applications in distributed environments
Neelakrishnan Enhancing scalability and performance in software-defined networks: An OpenDaylight (ODL) case study
Fetzer Local data plane event handling in software-defined networking
Cheinasso Network connectivity and observability in multicluster environments

Legal Events

Date Code Title Description
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant