개요
system_stats는 시스템 레벨의 통계 정보에 접근할 수 있는 함수를 제공하는 Extension 입니다.
모니터링에 사용할 수 있으며 nagios와 호환 가능합니다.
Linux, macOS, Windows 모두 지원합니다.
OS 종류에 따라서 수집할 수 있는 통계 정보에 제한적이다 보니, 수집할 수 없는 정보는 NULL로 출력합니다.
https://github.com/EnterpriseDB/system_stats
라이센스
Copyright (c) 2019 - 2023, EnterpriseDB Corporation. All Rights Reserved.
EDB 라이센스를 사용하고 있으며, EDB 인프라 설계자 언급에 의하면 PostgreSQL 라이센스와 동일한 것으로 보입니다.
Copyright (c) 2019 - 2020, EnterpriseDB Corporation
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose, without fee, and without a written agreement is
hereby granted, provided that the above copyright notice and this paragraph and
the following two paragraphs appear in all copies.
IN NO EVENT SHALL EnterpriseDB Corporation BE LIABLE TO ANY PARTY FOR DIRECT,
INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST
PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
EnterpriseDB Corporation HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
EnterpriseDB Corporation SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT
NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND
EnterpriseDB Corporation HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
시스템 요구사항
- PGXS를 사용하여 빌드 하므로 PostgreSQL 서버에 devel 패키지가 필요합니다.
- make, ccache 패키지
- redhat의 경우 redhat-rpm-config 패키지
설치
- Rocky OS 9.1 및 PostgreSQL 15.3를 사용하였습니다.
tar -zxvf system_stats-v2.1.tar.gz
cd system_stats-2.1
PATH="/usr/pgsql-15/bin:$PATH" make USE_PGXS=1
sudo PATH="/usr/pgsql-15/bin:$PATH" make install USE_PGXS=1
기능(함수)
EXTENSION 생성 시 아래의 함수들이 생성 됩니다.
모두 IN 파라미터 없이 OUT 파라미터만 존재합니다.
pg_sys_os_info
OS 정보를 출력합니다.
출력 파라미터
- Name
- Version
- Host name
- Domain name
- Handle count
- Process count
- Thread count
- Architecture
- Last bootup time
- Uptime in seconds
예시
pg_sys_cpu_info
CPU 정보를 출력합니다.
출력 파라미터
- Vendor
- Description
- Model name
- Processor type
- Logical processor
- Physical processor
- Number of cores
- Architecture
- Clock speed in Hz
- CPU type
- CPU family
- Byte order
- L1d cache size
- L1i cache size
- L2 cache size
- L3 cache size
예시
pg_sys_cpu_usage_info
CPU 사용량을 출력합니다.
출력 파라미터
- Percent time spent in processing usermode normal process
- Percent time spent in processing usermode niced process
- Percent time spent in kernel mode process
- Percent time spent in idle mode
- Percent time spent in io completion
- Percent time spent in servicing interrupt
- Percent time spent in servicing software interrupt
- Percent user time spent - Percent processor time spent
- Percent privileged time spent - Percent interrupt time spent
예시
pg_sys_memory_info
메모리 사용량을 출력합니다. 값의 단위는 byte 입니다.
출력 파라미터
- Total memory
- Used memory
- Free memory
- Total swap memory
- Used swap memory
- Free swap memory
- Total cache memory
- Total kernel memory
- Kernel paged memory
- Kernel non paged memory
- Total page file
- Available page file
예시
pg_sys_io_analysis_info
Block device의 IO 통계를 출력합니다.
출력 파라미터
- Block device name
- Total number of reads
- Total number of writes
- Read bytes
- Written bytes
- Time spent in milliseconds for reading
- Time spent in milliseconds for writing
예시
pg_sys_disk_info
디스크 정보를 출력합니다.
출력 파라미터
- File system of the disk
- File system type
- Mount point for the file system
- Drive letter - Drive type
- Total space in bytes
- Used space in bytes
- Available space in bytes
- Number of total inodes
- Number of used inodes
- Number of free inodes
예시
pg_sys_load_avg_info
지난 1, 5, 10, 15분의 시스템 평균 load를 출력합니다.
출력 파라미터
- 1 minute load average
- 5 minute load average
- 10 minute load average
- 15 minute load average
예시
pg_sys_process_info
프로세스 정보를 출력합니다.
출력 파라미터
- Number of total processes
- Number of running processes
- Number of sleeping processes
- Number of stopped processes
- Number of zombie processes
예시
pg_sys_network_info
네트워크 인터페이스의 정보를 출력합니다.
출력 파라미터
- Name of the interface_name
- ipv4 address of the interface
- Number of total bytes transmitted
- Number of total packets transmitted
- Number of transmit errors by this network device
- Number of packets dropped during transmission
- Number of total bytes received
- Number of total packets received
- Number of receive errors by this network device
- Number of packets dropped by this network device
- Interface speed in mbps
예시
pg_sys_cpu_memory_by_process
각 ProcessID마다 사용중인 CPU와 메모리 정보를 출력합니다. 주의사항 : macOS는 다른 유저의 프로세스 정보를 출력할 수 없습니다. 예를 들어 postgres 유저로 DBMS를 기동중이면, postgres 유저가 소유한 프로세스에 대한 CPU 및 Memory 정보만 출력합니다. 다른 사용자의 프로세스는 PID와 이름만 출력됩니다.
출력 파라미터
- PID of the process
- Process name
- CPU usage in bytes
- Memory usage in bytes
- Total memory used in bytes
예시
pgAdmin 연동
pgAdmin 7.8 릴리즈 의 New Feature로 system_stats 익스텐션을 이용한 시스템 모니터링 기능이 추가되었습니다.
https://www.pgadmin.org/docs/pgadmin4/7.8/release_notes_7_8.html
Server Dashboard에 System Statistics라는 탭이 추가 되었습니다.
Summary
CPU
Memory
Storage
'PostgreSQL > Extension' 카테고리의 다른 글
PL/Python3U (0) | 2023.09.20 |
---|