PostgreSQL 数据库网络流量监控工具 pg_netstat

概述

pg_netstat监控您的 PostgreSQL 数据库网络流量。

此扩展运行一个后台工作程序来捕获 Postgres 端口上的网络数据包,并通过视图提供实时网络统计数据pg_netstat它使用libpcap以用户指定的时间间隔捕获数据包和聚合。

pg_netstat视图最多可包含60 个历史记录行,并在已满时丢弃最旧的行,因此请明智地选择您的时间间隔。

用法

pg_netstat您可以通过视图查询实时网络统计信息。

select * from pg_netstat;

查询结果如下:

安装

先决条件

  • 在安装此扩展之前,您需要为 Postgres 二进制文件授予网络数据包捕获权限。例如,

    sudo setcap cap_net_raw,cap_net_admin=eip /usr/local/pgsql/bin/postgres
    
  • libpcap库也应该安装,例如,

    sudo apt-get install libpcap-dev
    

之后,我们就可以开始安装了。下载这个 repo 并设置pgx

cargo install cargo-pgx

设置好 pgx 后,使用以下命令构建扩展包:

cargo pgx package --pg-config ~/.pgx/14.5/pgx-install/bin/pg_config

扩展位于 path ./target/release/pg_netstat-pg14

更改postgresql.conf以启用以下行:

shared_preload_libraries = 'pg_netstat' # (change requires restart)

重新启动服务器并在数据库中安装扩展:

create extension pg_netstat;

-- check everything is working
select * from pg_netstat;

配置

以下是您可以放入postgresql.conf文件的配置:

  1. pg_netstat.device- 用于捕获数据包的网络设备名称,默认为自动检测
  2. pg_netstat.interval- 收集网络数据包的频率(以秒为单位),默认为10
  3. pg_netstat.packet_wait_time- 等待网络数据包传送到收集器的时间(以秒为单位),默认为5
  4. pg_netstat.pcap_buffer_size- 缓冲区大小的 pcap 设置(以字节为单位),默认为1000000
  5. pg_netstat.pcap_snaplen- 快照长度的 pcap 设置(以字节为单位),默认为96
  6. pg_netstat.pcap_timeout- 数据包缓冲区超时的 pcap 设置(以毫秒为单位),默认为1000

您可以通过运行ifconfig命令列出网络设备名称。例如,“localhost”的设备名称是lo默认情况下,它使用第一个不是loopback网络接口的设备。

最有用的配置是pg_netstat.interval,它定义了统计数据收集频率。可以使用pg_ctl以下命令从配置文件重新加载其更改:

pg_ctl reload -D /path/to/pg-data

所有其他设置都处于低级别,您可能不想更改它们。有关所有pcap_*设置,请参阅https://www.tcpdump.org/manpages/pcap.3pcap.html中的详细信息。

警告和限制

  • 不支持 Windows,该限制继承自pgx.
  • 目前仅支持 PostgreSQL v14
  • 只能指定一个网络设备来捕获数据包。
  • 复制尚未测试,使用风险自负。


pg_netstat源代码https://github.com/supabase/pg_netstat


免责声明:

1、本站资源由自动抓取工具收集整理于网络。

2、本站不承担由于内容的合法性及真实性所引起的一切争议和法律责任。

3、电子书、小说等仅供网友预览使用,书籍版权归作者或出版社所有。

4、如作者、出版社认为资源涉及侵权,请联系本站,本站将在收到通知书后尽快删除您认为侵权的作品。

5、如果您喜欢本资源,请您支持作者,购买正版内容。

6、资源失效,请下方留言,欢迎分享资源链接

文章评论

0条评论