暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

云原生丨 pgCluu 的安装、使用与实践

218





Cloud Native

ESG服务BU云原生交付中心、云基地

在云原生上的尝试、调研与分享




本期内容 

 pgCluu安装使用及实践 



PostgreSQL 的监控方法很多,数量越来越多的 PG 的监控再通过手工的方法来操作已经不切实际,所以应允而生的就是各种的工具。本期跟大家分享一个性能监控和审计的实用工具——pgCluu 。





什么是 pgCluu


pgCluu 是一个用于对 PostgreSQL 集群的性能进行全面审计的工具


它分为两部分,一个用于使用 psql 和 sar 获取 PostgreSQL 服务器上的统计信息的 collector;以及一个 reports builder,用于生成所有 HTML 和图表输出。


它的优点是开源免费,使用灵活,适合定期数据库信息分析,适合二次开发;缺点是非实时监控,不支持慢查询。




pgCluu的安装流程


pgCluu报告生成器基本操作默认输出静态html及图表,动态模式需配合Apache服务器。


 静态模式 


1、前置依赖


perl环境 perl -v查看当前是否有perl环境。


    yum install perl-ExtUtils-MakeMaker
    wget https://github.com/darold/pgcluu/archive/refs/heads/master.zip
    unzip master.zip
    cd pgcluu-master/
    perl Makefile.PL
    make
    sudo make install
    cp -f cgi-bin/pgcluu.cgi var/www/cgi-bin/



     动态模式 


    如需启用动态模式,需配置Web服务器官方样例提供 Apache的cgi 模式。


    1、前置依赖


      yum install perl-CGI


      2、apache 安装部署过程:


        yum install httpd
        systemctl enable httpd
        service httpd start



        3、修改 etc/httpd/conf/httpd.conf 


          LoadModule cgid_module modules/mod_cgid.so
          <Directory "/var/www/cgi-bin">
             AllowOverride None
             Options ExecCGI
             Require all granted
             Allow from all
          </Directory>
          AddHandler cgi-script .cgi
          ScriptAlias cgi-bin/ "/var/www/cgi-bin/"




            //加入pgcluu相关配置,当前目录为项目根目录
            sudo mkdir  /var/www/html/pgcluu/
            sudo cp cgi-bin/pgcluu.cgi var/www/cgi-bin/
            sudo cp -rf cgi-bin/rsc/ /var/www/html/pgcluu/
            sudo chown -R apache: /var/www/html/pgcluu/


            //修改文件权限
            /bin/chown -R postgres:apache /var/lib/pgcluu/data/
            /bin/chmod -R u=rwX,g=rsX,o= /var/lib/pgcluu/data/


            //创建定时任务
            crontab -e
            */5 * * * * /usr/local/bin/pgcluu --cache /var/lib/pgcluu/data


            // 修改pgcluu.cgi文件17行,将此行注释(否则会报错cgi-error)
            // no warnings 'redundant';





            pgCluu的用法 


             pgCluu 用法 


            用法:pgcluu [options] -o report_dir input_dir


            input_dir:存放 pgcluu_collect d或 pgstats 和 sar 数据文件的目录。


            注:sar 为 Linux 系统性能分析工具


            pgstats 为由 pg_statistic 系统表扩展而来的系统视图,记录的是每个表每个字段的统计信息,用于 PostgreSQL 优化器做执行计划选择的时候提供参考。


            可选项较多,这边只说明常用项:



            更多可选项,可执行 pgcluu --help 查看。


            # 使用示范


            1. 以存储的数据生成静态报告:


              mkdir /tmp/report_db1/
              pgcluu -o /tmp/report_db1/ /tmp/stat_db1/


              2. 只想要指定数据库的报告,可使用以下方式:


                pgcluu -o /tmp/report_db1/ /tmp/stat_db1/ --db-only "db1,db2,db3"


                3. 从sar输出文件导出报告,可使用以下方式:


                  sar -p -A 10 60 > /root/my_sar_file.txt
                  pgcluu -o /tmp/report_sar/ -i /root/my_sar_file.txt


                  4. 从 pgstats 生成的 sa 二进制文件导出报告:


                    pgcluu -o /tmp/report_sar/ -i /var/log/sysstat/sa22


                    5. 报告以增量模式运行,可限制报告保留天数:


                      pgcluu -o /tmp/report_sar/ /tmp/stat_db1/ --retention 30


                       pgCluu_collectd 用法: 


                      用法:pgcluu_collectd [options] output_dir


                      output_dir:pgcluu_collectd 存储统计信息的目录的完整路径


                      可选项较多,这边只说明常用项:



                      更多可选项,可执行 pgcluu_collectd --help 查看。


                      # 使用示范


                      1. 作为 postgres 用户在本地监控完整的 PostgreSQL 集群;


                        mkdir /tmp/stat_db1/
                        pgcluu_collectd -D -i 60 /tmp/stat_db1/


                        2. 排除指定时间段(22:30到第二天06:30)内的数据收集;


                          pgcluu_collectd -D -i 60 /tmp/stat_db1/ --exclude-time "22:30-06:30"


                          3. 从远程服务器收集数据:


                            pgcluu_collectd -D -i 60 /tmp/statdb1/ -h 10.0.0.1 -U postgres --disable-sar


                            经过以上-D后台监控数据库一段时间后,通过一下方式终止程序:


                              pgcluu_collectd -k


                              可以每日或每小时,统计轮换以增量模式运行收集器:


                                pgcluu_collectd -D -i 60 /tmp/stat_db1/ --rotate-daily


                                在有大量活动的数据服务上,可使用:


                                --compress 选项的压缩模式


                                --rotate-hourly 强制每小时轮换数据文件


                                如果磁盘空间有限,可使用:


                                --retention 存储天数限制,来限制统计文件的保留时间


                                收集完成后的统计数据如下图:



                                接下来,使用pgCluu根据数据生成报告。




                                pgCluu的实操分享 


                                 实操示例一:


                                使用 GaussDB 用户监控 10.3.70.206 数据库服务的指定数据库 Postgres,监控200秒,30秒获取一次数据。


                                  Mkdir -p /tmp/stat_postgres/
                                  pgcluu_collectd -E 200 -i 30 /tmp/stat_postgres/ -h 10.3.70.206 -U gaussdb -W Enmo@123 -p15432 -d postgres


                                  效果如下,会生成一系列监控数据 csv 文件 ⬇



                                    # 将监控数据转换为html格式输出到指定目录
                                    pgcluu -o /tmp/stat_postgres/ /tmp/stat_postgres/


                                    效果如下,会根据 pgcluu_collectd 生成的 csv 数据文件,将数据转换为 html 静态文件  ⬇



                                    通过入口文件 index.html 进入,可以查看到一系列监控指标数据。


                                    数据库统计数据  ⬇



                                    上述方法是针对 PostgreSQL 中收集信息,也就是说我们可以建立一个监控服务器,然后收集是所有的PG的信息到一台机器,然后开始分析,做成全面自动化的方案,具体可依据个人的需求来操作。



                                     实操示例二:


                                    动态CGI模式监控 10.11.xxx.xx 机器的PostgreSQL ,5432端口,并开启ssh获取机器系统信息。


                                      /usr/local/bin/pgcluu_collectd -D -i 30 -I /var/lib/pgcluu/data/  -h 10.11.xxx.xx -U postgres -W 123456 -p5432  --enable-ssh --ssh-user postgres --ssh-identity /var/lib/pgsql/.ssh/id_rsa /var/lib/pgcluu/data 


                                      crontab -e
                                      */5 * * * * /usr/local/bin/pgcluu --cache /var/lib/pgcluu/data


                                      最终效果如下  ⬇




                                      # 注意事项


                                      采集远程系统信息,需配置 ssh 认证免密登录,且为 Postgres 用户,参数如下:


                                        --enable-ssh --ssh-user postgres --ssh-identity /var/lib/pgsql/.ssh/id_rsa


                                        注意 ssh-identity 传递的是 id_rsa ,不是 id_rsa.pub 。


                                        最终效果如下 ⬇




                                        以上就是本期的全部内容。我们很详细的跟大家讲解了 pgCluu 的安装过程,使用方法和实际应用,有机会可以尝试操作体验一次。






                                        数据监控的一个新工具

                                        大家可以下载安装体验~

                                        如果你有更好的办法

                                        欢迎加入社群一起讨论哦⬇

                                        本期作者 

                                        李冠军 



                                        更多精彩内容 





                                        了解云基地,就现在!


                                        IT技术哪家

                                        神州数码最在行

                                        行业新星后起之秀

                                        历史虽不长,但实 力 强




                                        文章转载自神州数码云基地,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                        评论