• pg_top 安装使用



    1.pg_top 安装使用

    wget -c https://gitlab.com/pg_top/pg_top/-/archive/master/pg_top-master.zip
    
    #1.下载安装包: 
    https://github.com/markwkm/pg_top
    
    #2.解压并安装
    postgres@s2ahumysqlpg01-> unzip pg_top-master.zip 
    postgres@s2ahumysqlpg01-> cmake -DCMAKE_INSTALL_PREFIX=/usr/local
    postgres@s2ahumysqlpg01-> make 
    
    Scanning dependencies of target pg_top
    [  7%] Building C object CMakeFiles/pg_top.dir/color.c.o
    [ 15%] Building C object CMakeFiles/pg_top.dir/commands.c.o
    [ 23%] Building C object CMakeFiles/pg_top.dir/display.c.o
    [ 30%] Building C object CMakeFiles/pg_top.dir/getopt.c.o
    [ 38%] Building C object CMakeFiles/pg_top.dir/screen.c.o
    [ 46%] Building C object CMakeFiles/pg_top.dir/sprompt.c.o
    [ 53%] Building C object CMakeFiles/pg_top.dir/pg.c.o
    [ 61%] Building C object CMakeFiles/pg_top.dir/pg_top.c.o
    [ 69%] Building C object CMakeFiles/pg_top.dir/utils.c.o
    [ 76%] Building C object CMakeFiles/pg_top.dir/version.c.o
    [ 84%] Building C object CMakeFiles/pg_top.dir/machine/m_remote.c.o
    [ 92%] Building C object CMakeFiles/pg_top.dir/machine/m_common.c.o
    [100%] Building C object CMakeFiles/pg_top.dir/machine/m_linux.c.o
    Linking C executable pg_top
    [100%] Built target pg_top
    
    #3.PG_TOP使用
    使用pg_top进行数据库监控。和登录本地数据库一样,设置-U指定登录用户,-d指定数据库,-h指定主机名,-p指定端口。
    可以查看帮助文档:
    postgres@s2ahumysqlpg01-> pg_top --help
    pg_top monitors a PostgreSQL database cluster.
    
    Usage:
      pg_top [OPTION]... [COUNT]
    
    General options:
      -b, --batch               use batch mode
      -c, --show-command        display command name of each process
      -C, --color-mode          turn off color mode
      -i, --interactive         use interactive mode
      -I, --hide-idle           hide idle processes
      -n, --non-interactive     use non-interactive mode
      -o, --order-field=FIELD   select sort order
      -r, --remote-mode         activate remote mode
      -R                        display replication stats                             #查看复制信息
      -s, --set-delay=SECOND    set delay between screen updates
      -T, --show-tags           show color tags
      -V, --version             output version information, then exit
      -x, --set-display=COUNT   set maximum number of displays                        #结果输出
                                exit once this number is reached
      -X                        display i/o stats                                     #显示每个进程的I/O信息,能够监控到高耗I/O的进程
      -z, --show-username=NAME  display only processes owned by given
                                username
      -?, --help                show this help, then exit
    
    Connection options:
      -d, --dbname=DBNAME       database to connect to
      -h, --host=HOSTNAME       database server host or socket directory
      -p, --port=PORT           database server port
      -U, --username=USERNAME   user name to connect as
      -W, --password            force password prompt, and persistent connection
      
     
    #常规使用
    #a.在连接的时候 例用    -R      查看复制信息
    #b.在连接的时候 例用   -X参数,它可以显示每个进程的I/O信息。例如iops、Reads、Writes。能够监控到高耗I/O的进程。    
    #c.  -x 后面指定次数,然后把该结果重定向到一个文件 。
      如: pg_top -U postgres -d s2db  -b  -x 10 > pg_top.out
    #d.监控remote主机的信息,这需要在remote主机上安装pg_proctab插件,只有安装插件才能查询remote主机的cpu、内存等信息,
        git https://gitlab.com/pg_proctab/pg_proctab.git
        cd pg_proctab
        make && make install
    
        [postgres@centos8 ~]$ psql
        psql (12.6)
        Type "help" for help.
        postgres=# create extension pg_proctab;
        CREATE EXTENSION
    
    
    #4.pg_top 示例  
    postgres@s2ahumysqlpg01-> pg_top -U postgres -d s2db -h localhost -p 5432
    
    last pid:  4894;  load avg:  0.29,  0.32,  0.28;       up 77+05:48:35                                               17:21:12
    10 processes: 5 other background task(s), 4 idle, 1 active
    CPU states:  5.5% user,  0.0% nice,  6.0% system, 88.6% idle,  0.0% iowait
    Memory: 3485M used, 194M free, 0K shared, 6736K buffers, 881M cached
    Swap: 35M used, 3779M free, 8892K cached, 0K in, 0K out
    
        PID USERNAME    SIZE   RES STATE   XTIME  QTIME  %CPU LOCKS COMMAND
       4895 postgres    333M   16M active   0:00   0:00   0.0     8 postgres: postgres s2db ::1(40272) idle                     
      17171 zcloud_m    335M   18M idle     0:00   0:00   0.0     0 postgres: zcloud_monitor postgres 192.168.1.58(42034) idle  
      13568             332M 4692K          0:00   0:00   0.0     0 postgres: background writer                                 
      14742 zcloud_m    333M   12M idle     0:00   0:00   0.0     0 postgres: zcloud_monitor postgres 192.168.1.58(41936) idle  
      13573 postgres    335M   18M idle     0:00   0:00   0.0     0 postgres: pgsentinel                                        
       1877 zcloud_m    334M   16M idle     0:00   0:00   0.0     0 postgres: zcloud_monitor postgres 192.168.1.58(42648) idle  
      13569             331M 6792K          0:00   0:00   0.0     0 postgres: walwriter                                         
      13574 postgres    332M 5812K          0:00   0:00   0.0     0 postgres: logical replication launcher                      
      13567             332M   16M          0:00   0:00   0.0     0 postgres: checkpointer                                      
      13570             332M 7716K          0:00   0:00   0.0     0 postgres: autovacuum launcher      
      
    #在使用过程中帮可按h 进入帮助界面 
            L      - redraw screen
            <sp>    - update screen
            A       - EXPLAIN ANALYZE (UPDATE/DELETE safe)
            a       - show PostgreSQL activity                           #手动刷新
            C       - toggle the use of color
            E       - show execution plan (UPDATE/DELETE safe)           #查看执行计划
            I       - show I/O statistics per process (Linux only)       #查看IO
            L       - show locks held by a process                       #查看锁
            Q       - show current query of a process                    #显示进程的当前查询
            c       - toggle the display of process commands             #显示详细 SQL
            d       - change number of displays to show
            h or ?  - help; show this text
            i       - toggle the displaying of idle processes            #idle 进程 和 非 idle 进程切换
            n or #  - change number of processes to display              #更改要显示的进程数 
            o       - specify sort order (cpu, size, res, xtime, qtime, iops, iorps, iowps, reads, writes, locks, command, flag, rlag, slag, wlag)  #  指定排序顺序
            q       - quit
            s       - change number of seconds to delay between updates  #更改刷新时间
            u       - display processes for only one user (+ selects all users)  # 显示某个用户的连接信息
    
            Not all commands are available on all systems.
            
    a.按一下c,就会显示这些进程执行的详细SQL语句。
    b.按Q输入进程号可以查看单个进程执行SQL语句。
    c.按E可以查看该进程运行SQL的执行计划。
    c.按L输入进程号可以查看锁信息。

    这里最上面会进程数量。后台进程有多少个,活动的进程有多少个,idle的进程有多少个。还可以看到主机的cpu和内存使用情况。下面是当前PostgreSQL进程的pid,用户名,状态,XTIME代表事务时间,QTIME代表query执行时间,还有cpu百分比和锁的数量。后面的COMMAND代表进程和它的操作类型。

    你可以按一下c,就会显示这些进程执行的详细SQL语句。



     

    2.pg_top 依赖包 libbsd-devel 示例

    #  安装的时候报错,在执行make的过程中,我遇到了一个报错。我估计大多数人的centos/redhat系统都会报这个错误。 我的是centos 。
       该错误提示找不到bsd/stdlib.h。从这个名字中我们就可以大概猜出它缺少bsd的lib包。
      
     所以我们需要安装libbsd-devel  ,下面是centos安装libbsd-devel 示例,安装完后再次执行make就能顺利编译(如果报其它错误,可以把先删除 pg_top-master 目录,重新解压执行安装)。
     
    # CentOS 安装 libbsd-devel 示例 
    https://centos.pkgs.org/7/epel-aarch64/libbsd-devel-0.8.3-1.el7.aarch64.rpm.html
    
    1.从下载最新的 epel-release rpm
    http://download-ib01.fedoraproject.org/pub/epel/7/aarch64/
    
    2.安装 epel-release rpm:
    # rpm -Uvh epel-release*rpm
    
    3.安装 libbsd-devel rpm 包:
    # yum install libbsd-devel

    #安装步骤如下
    # 1.下载 epel-release-7-12.noarch.rpm   
    http://download-ib01.fedoraproject.org/pub/epel/7/aarch64/Packages/e/ 

    #2.安装 epel-release-7-12.noarch.rpm  包
    [root@s2ahumysqlpg01 postgres]# rpm -Uvh epel-release*rpm
    warning: epel-release-7-12.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY
    Preparing...                          ################################# [100%]
    Updating / installing...
       1:epel-release-7-12                ################################# [100%]
       
    #3.安装libbsd-devel
    [root@s2ahumysqlpg01 postgres]# yum install libbsd-devel
    Loaded plugins: ulninfo
    epel/x86_64/metalink                                                                                  | 4.4 kB  00:00:00     
    epel                                                                                                  | 4.7 kB  00:00:00     
    (1/3): epel/x86_64/updateinfo                                                                         | 1.0 MB  00:00:02     
    (2/3): epel/x86_64/group_gz                                                                           |  96 kB  00:00:06     
    (3/3): epel/x86_64/primary_db                                                                         | 7.0 MB  00:00:06     
    Resolving Dependencies
    --> Running transaction check
    ---> Package libbsd-devel.x86_64 0:0.8.3-1.el7 will be installed
    --> Processing Dependency: libbsd = 0.8.3-1.el7 for package: libbsd-devel-0.8.3-1.el7.x86_64
    --> Processing Dependency: libbsd.so.0()(64bit) for package: libbsd-devel-0.8.3-1.el7.x86_64
    --> Running transaction check
    ---> Package libbsd.x86_64 0:0.8.3-1.el7 will be installed
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    =============================================================================================================================
     Package                          Arch                       Version                          Repository                Size
    =============================================================================================================================
    Installing:
     libbsd-devel                     x86_64                     0.8.3-1.el7                      epel                     106 k
    Installing for dependencies:
     libbsd                           x86_64                     0.8.3-1.el7                      epel                      85 k
    
    Transaction Summary
    =============================================================================================================================
    Install  1 Package (+1 Dependent package)
    
    Total download size: 191 k
    Installed size: 432 k
    Is this ok [y/d/N]: y
    Downloading packages:
    warning: /var/cache/yum/x86_64/7Server/epel/packages/libbsd-0.8.3-1.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY
    Public key for libbsd-0.8.3-1.el7.x86_64.rpm is not installed
    (1/2): libbsd-0.8.3-1.el7.x86_64.rpm                                                                  |  85 kB  00:00:01     
    (2/2): libbsd-devel-0.8.3-1.el7.x86_64.rpm                                                            | 106 kB  00:00:00     
    -----------------------------------------------------------------------------------------------------------------------------
    Total                                                                                         97 kB/s | 191 kB  00:00:01     
    Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
    Importing GPG key 0x352C64E5:
     Userid     : "Fedora EPEL (7) <epel@fedoraproject.org>"
     Fingerprint: 91e9 7d7c 4a5e 96f1 7f3e 888f 6a2f aea2 352c 64e5
     Package    : epel-release-7-12.noarch (installed)
     From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
    Is this ok [y/N]: y
    Running transaction check
    Running transaction test
    Transaction test succeeded
    Running transaction
    Warning: RPMDB altered outside of yum.
    ** Found 2 pre-existing rpmdb problem(s), 'yum check' output follows:
    2:postfix-2.10.1-7.el7.x86_64 has missing requires of libmysqlclient.so.18()(64bit)
    2:postfix-2.10.1-7.el7.x86_64 has missing requires of libmysqlclient.so.18(libmysqlclient_18)(64bit)
      Installing : libbsd-0.8.3-1.el7.x86_64                                                                                 1/2 
      Installing : libbsd-devel-0.8.3-1.el7.x86_64                                                                           2/2 
      Verifying  : libbsd-0.8.3-1.el7.x86_64                                                                                 1/2 
      Verifying  : libbsd-devel-0.8.3-1.el7.x86_64                                                                           2/2 
    
    Installed:
      libbsd-devel.x86_64 0:0.8.3-1.el7                                                                                          
    
    Dependency Installed:
      libbsd.x86_64 0:0.8.3-1.el7                                                                                                
    
    Complete!
    参考连接: 
    
    https://pg_top.gitlab.io/
    https://github.com/markwkm/pg_proctab
    https://cdn.modb.pro/db/48198




  • 相关阅读:
    [悟]你为什么想创业
    [悟] 因上努力,果上随缘
    自己写个多任务多线程断点下载框架
    大道甚夷,而人好径
    [经验帖]外包如何定价
    python 基础语法
    python 中文编码问题
    python的运行机制和版本区别
    [转]linux 调用动态库so文件
    shell join详解
  • 原文地址:https://www.cnblogs.com/cqdba/p/15880255.html
Copyright © 2020-2023  润新知