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

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

原创 小小亮 2022-09-14
1400

概述

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

最后修改时间:2022-09-14 10:07:52
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论