Skip to content

This is the multi-page printable view of this section. .

Return to the regular view of this page.

Module: NODE

Tune nodes into the desired state and monitor it, manage node, VIP, HAProxy, and exporters.

Configure nodes to the required state and monitor them. Manage node settings, VIP, HAProxy, and exporters.

1 - Configuration

Configure node identity, cluster, and identity borrowing from PostgreSQL

Pigsty uses the IP address as the unique node identifier. Use the internal IP address on which the database instance listens and provides services.

node-test:
  hosts:
    10.10.10.11: { nodename: node-test-1 }
    10.10.10.12: { nodename: node-test-2 }
    10.10.10.13: { nodename: node-test-3 }
  vars:
    node_cluster: node-test

This address must be a database listening address. It should not be a public IP address. Clients do not have to connect through this address. You can also manage target nodes through SSH tunnels or jump hosts.

The primary IPv4 address remains the node identifier. Check this address carefully during configuration.

In the inventory, the address is inventory_hostname. It is the key in the <cluster>.hosts object. Each node also has two optional identity parameters:

NameTypeLevelNecessityComment
inventory_hostnameip-RequiredNode IP
nodenamestringIOptionalNode Name
node_clusterstringCOptionalNode cluster name

If nodename is unset, Pigsty uses the existing hostname. If node_cluster is unset, it uses nodes. In monitoring, the node name provides the instance identifier (ins). The cluster name provides the cluster identifier (cls).

For PGSQL nodes, Pigsty defaults to one exclusive PostgreSQL instance per node. Enable node_id_from_pg to derive node identity from pg_cluster and pg_seq. The database and node then share ins and cls labels. This lets you analyze their monitoring metrics together.

#nodename:                # [instance] # node instance identity, uses existing hostname if missing, optional
node_cluster: nodes       # [cluster] # node cluster identity, uses 'nodes' if missing, optional
nodename_overwrite: true          # overwrite node's hostname with nodename?
nodename_exchange: false          # exchange nodename among play hosts?
node_id_from_pg: true             # borrow postgres identity as node identity if applicable?

Host clusters also support other functions. For example, use HAProxy for load balancing and service exposure. You can also bind an L2 VIP to the cluster.

2 - Parameters

NODE module provides 11 sections with 74 parameters

The NODE module configures target nodes to the required state. It also adds them to the Pigsty monitoring system.


Parameter SectionDescription
NODE_IDNode identity parameters
NODE_DNSNode DNS resolution
NODE_PACKAGEUpstream repo & package install
NODE_TUNENode tuning & kernel features
NODE_SECNode security configurations
NODE_ADMINAdmin user & SSH keys
NODE_TIMETimezone, NTP, crontab
NODE_VIPOptional L2 VIP for cluster
HAPROXYHAProxy load balancer
NODE_EXPORTERNode monitoring exporter
VECTORVector log collector

Parameters Overview

NODE_ID section defines node identity parameters, including node name, cluster name, and whether to borrow identity from PostgreSQL.

ParameterTypeLevelDescription
nodenamestringInode instance identity, use hostname if missing
node_clusterstringCnode cluster identity, use ’nodes’ if missing
nodename_overwriteboolCoverwrite node’s hostname with nodename?
nodename_exchangeboolCexchange nodename among play hosts?
node_id_from_pgboolCuse postgres identity as node identity if applicable?

NODE_DNS section configures node DNS resolution, including static hosts records and dynamic DNS servers.

ParameterTypeLevelDescription
node_write_etc_hostsboolG/C/Imodify /etc/hosts on target node?
node_default_etc_hostsstring[]Gstatic dns records in /etc/hosts
node_etc_hostsstring[]Cextra static dns records in /etc/hosts
node_dns_methodenumChow to handle dns servers: add,none,overwrite
node_dns_serversstring[]Cdynamic nameserver in /etc/resolv.conf
node_dns_optionsstring[]Cdns resolv options in /etc/resolv.conf

NODE_PACKAGE section configures node software repositories, package installation, and uv Python virtual environment.

ParameterTypeLevelDescription
node_repo_modulesenumCwhich repo modules to enable on node? local default
node_repo_removeboolCremove existing repo on node when configuring?
node_packagesstring[]Cpackages to be installed on current nodes
node_default_packagesstring[]Gdefault packages to be installed on all nodes
node_uv_envpathCuv venv path, /data/venv by default, empty to skip
node_pip_packagesstringCpip packages to install in uv venv

NODE_TUNE section configures node kernel parameters, feature toggles, and tuning templates.

ParameterTypeLevelDescription
node_disable_numaboolCdisable node numa, reboot required
node_disable_swapboolCdisable node swap, use with caution
node_static_networkboolCpreserve dns resolver settings after reboot
node_disk_prefetchboolCsetup disk prefetch on HDD to increase performance
node_kernel_modulesstring[]Ckernel modules to be enabled on this node
node_hugepage_countintCnumber of 2MB hugepage, take precedence over ratio
node_hugepage_ratiofloatCnode mem hugepage ratio, 0 disable it by default
node_overcommit_ratiofloatCnode mem overcommit ratio (50-100), 0 disable it
node_tuneenumCnode tuned profile: none,oltp,olap,crit,tiny
node_tuned_profile_dirpathCtuned profile directory selected by platform mapping
node_sysctl_paramsdictCextra sysctl parameters in k:v format

NODE_SEC section configures node security options, including SELinux and firewall.

ParameterTypeLevelDescription
node_selinux_modeenumCSELinux mode: disabled, permissive, enforcing
node_firewall_modeenumCfirewall mode: zone (default, enabled), off (disable), none (self-managed)
node_firewall_intranetcidr[]Cintranet CIDR list for firewall rules
node_firewall_public_portport[]Cpublic exposed port list, default [22, 80, 443]

NODE_ADMIN section configures admin user, data directory, and shell aliases.

ParameterTypeLevelDescription
node_datapathCnode main data directory, /data by default
node_admin_enabledboolCcreate a admin user on target node?
node_admin_uidintCuid and gid for node admin user
node_admin_usernameusernameCname of node admin user, dba by default
node_admin_sudoenumCadmin sudo privilege: limited, nopass, all, none
node_admin_ssh_exchangeboolCexchange admin ssh key among node cluster
node_admin_pk_currentboolCadd current user’s ssh pk to admin authorized_keys
node_admin_pk_liststring[]Cssh public keys to be added to admin user
node_aliasesdictCshell aliases in K:V dict format

NODE_TIME section configures timezone, NTP time sync, and crontab.

ParameterTypeLevelDescription
node_timezonestringCsetup node timezone, empty string to skip
node_ntp_enabledboolCenable chronyd time sync service?
node_ntp_serversstring[]Cntp servers in /etc/chrony.conf
node_crontab_overwriteboolCoverwrite or append to /etc/crontab?
node_crontabstring[]Ccrontab entries in /etc/crontab

NODE_VIP section configures L2 VIP for node cluster, implemented by keepalived.

ParameterTypeLevelDescription
vip_enabledboolCenable L2 vip on this node cluster?
vip_addressipCnode vip address in ipv4 format, required if enabled
vip_vridintCinteger 1-254, should be unique in same VLAN
vip_roleenumIoptional, master/backup, backup by default
vip_preemptboolC/Ioptional, true/false, enable vip preemption
vip_interfacestringC/Inode vip network interface, auto by default
vip_dns_suffixstringCnode vip dns name suffix, empty string by default
vip_auth_passpasswordCvrrp authentication password, auto-generated if empty
vip_exporter_portportCkeepalived exporter listen port, 9650 by default

HAPROXY section configures HAProxy load balancer and service exposure.

ParameterTypeLevelDescription
haproxy_enabledboolCenable haproxy on this node?
haproxy_cleanboolG/C/Acleanup all existing haproxy config?
haproxy_reloadboolAreload haproxy after config?
haproxy_auth_enabledboolGenable authentication for admin page
haproxy_admin_usernameusernameGhaproxy admin username, admin default
haproxy_admin_passwordpasswordGhaproxy admin password, pigsty default
haproxy_exporter_portportChaproxy exporter port, 9101 by default
haproxy_client_timeoutintervalCclient connection timeout, 24h default
haproxy_server_timeoutintervalCserver connection timeout, 24h default
haproxy_servicesservice[]Clist of haproxy services to expose

NODE_EXPORTER section configures node monitoring exporter.

ParameterTypeLevelDescription
node_exporter_enabledboolCsetup node_exporter on this node?
node_exporter_portportCnode exporter listen port, 9100 default
node_exporter_optionsargCextra server options for node_exporter

VECTOR section configures Vector log collector.

ParameterTypeLevelDescription
vector_enabledboolCenable vector log collector?
vector_cleanboolG/Apurge vector data dir during init?
vector_datapathCvector data directory, /data/vector default
vector_portportCvector metrics listen port, 9598 default
vector_read_fromenumCread log from beginning or end
vector_log_endpointstring[]Clog endpoint, default send to infra group

NODE_ID

Each node has identity parameters that are configured through the parameters in <cluster>.hosts and <cluster>.vars.

Pigsty uses the IP address as the unique database node identifier. Use the address on which the database instance listens and provides services. This should not be a public IP address.

Users do not have to connect through this address. You can also manage nodes through SSH tunnels or jump servers. The primary IPv4 address remains the node identifier. Check this address carefully during configuration.

This IP address is inventory_hostname in the inventory. It is the key in the <cluster>.hosts object.

node-test:
  hosts:
    10.10.10.11: { nodename: node-test-1 }
    10.10.10.12: { nodename: node-test-2 }
    10.10.10.13: { nodename: node-test-3 }
  vars:
    node_cluster: node-test

Pigsty monitoring also uses two node identity parameters. nodename supplies the instance identity (ins). node_cluster supplies the cluster identity (cls).

node_load1{cls="pg-meta", ins="pg-meta-1", ip="10.10.10.10", job="nodes"}
node_load1{cls="pg-test", ins="pg-test-1", ip="10.10.10.11", job="nodes"}
node_load1{cls="pg-test", ins="pg-test-2", ip="10.10.10.12", job="nodes"}
node_load1{cls="pg-test", ins="pg-test-3", ip="10.10.10.13", job="nodes"}

Pigsty defaults to one exclusive PostgreSQL instance per node. Enable node_id_from_pg to derive the node’s ins and cls labels from database identity parameters such as pg_cluster.

NameTypeLevelRequiredDescription
inventory_hostnameip-RequiredNode IP Address
nodenamestringIOptionalNode Name
node_clusterstringCOptionalNode Cluster Name
#nodename:                # [instance] # node instance identity, use hostname if missing, optional
node_cluster: nodes       # [cluster] # node cluster identity, use 'nodes' if missing, optional
nodename_overwrite: true          # overwrite node's hostname with nodename?
nodename_exchange: false          # exchange nodename among play hosts?
node_id_from_pg: true             # use postgres identity as node identity if applicable?

nodename

name: nodename, type: string, level: I

Node instance identity. This parameter is optional. If unset, it defaults to the existing hostname, subject to the PostgreSQL identity rule below.

If node_id_from_pg is enabled and nodename is unset, nodename tries to use ${pg_cluster}-${pg_seq} as the instance identity. This behavior is enabled by default. If the cluster has no PGSQL module, it uses the node’s HOSTNAME.

node_cluster

name: node_cluster, type: string, level: C

Explicit node cluster name. Set this parameter at the node cluster level. The default empty value uses nodes as the cluster identity, subject to the PostgreSQL identity rule below.

If node_id_from_pg is enabled and node_cluster is unset, node_cluster tries to use ${pg_cluster}. This behavior is enabled by default. If the cluster has no PGSQL module, it uses nodes.

nodename_overwrite

name: nodename_overwrite, type: bool, level: C

Specifies whether to replace the hostname with nodename. The default is true. When enabled, Pigsty uses a non-empty nodename as the host’s HOSTNAME.

If nodename is empty and node_id_from_pg is true, Pigsty tries to derive the node name from its exclusive PostgreSQL instance. The name is {{ pg_cluster }}-{{ pg_seq }}. This behavior is enabled by default. If the node has no PGSQL module, Pigsty leaves the hostname unchanged.

If nodename is empty and node_id_from_pg is disabled, Pigsty preserves the existing hostname.

nodename_exchange

name: nodename_exchange, type: bool, level: C

Specifies whether playbook hosts exchange node names. The default is false.

If enabled, hosts in the same node.yml batch exchange node names. They write these names to /etc/hosts.

node_id_from_pg

name: node_id_from_pg, type: bool, level: C

Specifies whether node identity comes from the PostgreSQL instance or cluster deployed 1:1 on the node. The default is true.

Pigsty defaults to one PostgreSQL instance per node. Unless the PostgreSQL cluster has explicit overrides, node cluster and instance identities match the database identities. This simplifies problem analysis and monitoring data processing.


NODE_DNS

Pigsty configures static DNS records and dynamic DNS servers for nodes.

If your node provider has already configured DNS servers for you, you can set node_dns_method to none to skip DNS setup.

node_write_etc_hosts: true        # modify `/etc/hosts` on target node?
node_default_etc_hosts:           # static dns records in `/etc/hosts`
  - "${admin_ip} i.pigsty"
node_etc_hosts: []                # extra static dns records in `/etc/hosts`
node_dns_method: add              # how to handle dns servers: add,none,overwrite
node_dns_servers: ['${admin_ip}'] # dynamic nameserver in `/etc/resolv.conf`
node_dns_options:                 # dns resolv options in `/etc/resolv.conf`
  - options single-request-reopen timeout:1

node_write_etc_hosts

name: node_write_etc_hosts, type: bool, level: G|C|I

Specifies whether to modify /etc/hosts on the target node. The default is true. Container environments often prohibit changes to this file. Set this parameter to false to skip the change.

node_default_etc_hosts

name: node_default_etc_hosts, type: string[], level: G

Static DNS records to be written to all nodes’ /etc/hosts. Default value:

["${admin_ip} i.pigsty"]

node_default_etc_hosts is an array. Each element is a DNS record with format <ip> <name>. You can specify multiple domain names separated by spaces.

Use this parameter for global static DNS records. For records specific to a cluster or instance, use node_etc_hosts.

node_etc_hosts

name: node_etc_hosts, type: string[], level: C

Extra static DNS records to write to node’s /etc/hosts. Default is [] (empty array).

Same format as node_default_etc_hosts, but suitable for configuration at the cluster/instance level.

node_dns_method

name: node_dns_method, type: enum, level: C

DNS server configuration method. The options are add, none, and overwrite. The default is add.

  • add: Append the records in node_dns_servers to /etc/resolv.conf and keep existing DNS servers. (default)
  • overwrite: Overwrite /etc/resolv.conf with the records in node_dns_servers
  • none: Skip DNS server configuration. If your environment already has DNS servers configured, you can skip DNS configuration directly.

node_dns_servers

name: node_dns_servers, type: string[], level: C

Configure the dynamic DNS server list in /etc/resolv.conf. Default is ["${admin_ip}"], using the admin node as the primary DNS server.

node_dns_options

name: node_dns_options, type: string[], level: C

DNS resolution options in /etc/resolv.conf. Default value:

- "options single-request-reopen timeout:1"

If node_dns_method is add or overwrite, Pigsty writes these options to /etc/resolv.conf first. Refer to Linux documentation for /etc/resolv.conf format details.


NODE_PACKAGE

Pigsty configures software repositories and installs packages on managed nodes.

node_repo_modules: local          # upstream repo to be added on node, local by default.
node_repo_remove: true            # remove existing repo on node?
node_packages: [openssh-server]   # packages to be installed current nodes with latest version
#node_default_packages:           # default packages to be installed on all nodes

node_repo_modules

name: node_repo_modules, type: string, level: C/A

Software repository modules to add to the node. Use the same format as repo_modules. The default is local, which selects the local repository in repo_upstream.

When Pigsty manages nodes, it filters entries in repo_upstream based on this parameter value. Only entries whose module field matches this parameter value will be added to the node’s software sources.

node_repo_remove

name: node_repo_remove, type: bool, level: C/A

Specifies whether to remove existing repository definitions on the node. The default is true.

When enabled, Pigsty will remove existing configuration files in /etc/yum.repos.d on the node and back them up to /etc/yum.repos.d/backup. On Debian/Ubuntu systems, it backs up /etc/apt/sources.list(.d) to /etc/apt/backup.

node_packages

name: node_packages, type: string[], level: C

Packages to install and upgrade on the current node. The default is [openssh-server]. During installation, this upgrades sshd to the latest version to avoid security vulnerabilities.

Each array element is a string of comma-separated package names. Same format as node_default_packages. This parameter is usually used to specify additional packages to install at the node/cluster level.

Pigsty upgrades these packages to the latest available version. To preserve installed versions and only ensure that packages exist, use node_default_packages.

node_default_packages

name: node_default_packages, type: string[], level: G

Default packages to install on every node. The default varies by platform. If unset, the node_id role loads node_packages_default from the matching <os>.<arch>.yml file under roles/node_id/vars. It selects the file by operating-system version and CPU architecture.

This is a string array in which each line is a comma-separated package list. Mappings vary by distribution, release, and architecture. No single EL or Debian list is the default for the whole family.

These packages only need to exist. They do not need to be the latest version. To install the latest version, use node_packages.

For example, the current mapping for EL 9 x86_64 is:

- bash,python3,sudo,acl,ca-certificates,openssl,curl,wget,lz4,zstd,unzip,bzip2,gzip,tar,tzdata,chrony,openssh-server,util-linux,rsync,psmisc,logrotate
- pv,jq,git,make,patch,lsof,less,ncdu,htop,iotop,socat,net-tools,telnet,ipvsadm,tuned,numactl,nvme-cli,sysstat,keepalived,etcd,haproxy,vector,pig,uv
- zlib,readline,xz,glibc-langpack-en,cronie,openssh-clients,node-exporter,bind-utils,iproute,iputils,nmap-ncat,procps-ng,vim-minimal,yum,audit,grubby,chkconfig

The current mapping for Debian 13 x86_64 is:

- bash,python3,sudo,acl,ca-certificates,openssl,curl,wget,lz4,zstd,unzip,bzip2,gzip,tar,tzdata,chrony,openssh-server,util-linux,rsync,psmisc,logrotate
- pv,jq,git,make,patch,lsof,less,ncdu,htop,iotop,socat,net-tools,telnet,ipvsadm,tuned,numactl,nvme-cli,sysstat,keepalived,etcd,haproxy,vector,pig,uv
- zlib1g,libreadline-dev,xz-utils,locales,cron,openssh-client,node-exporter,bind9-dnsutils,iproute2,iputils-ping,netcat-openbsd,procps,vim-tiny

This parameter uses the same format as node_packages. It normally overrides the platform mapping globally for packages required on every node.

node_uv_env

name: node_uv_env, type: path, level: C

uv virtual environment path, default is /data/venv. Set to empty string '' to skip uv venv configuration.

If non-empty, Pigsty creates a Python virtual environment with uv venv. It installs the pip packages from node_pip_packages.

If region: china, Pigsty configures /etc/uv/uv.toml to use the Tencent Cloud PyPI mirror at https://mirrors.cloud.tencent.com/pypi/simple/.

node_pip_packages

name: node_pip_packages, type: string, level: C

Pip packages to install in uv virtual environment, default is empty string ''.

Use space-separated package names, e.g.: 'ansible pgcli requests pandas'.

Only takes effect when node_uv_env is non-empty.


NODE_TUNE

Host node features, kernel modules, and tuning templates.

node_disable_numa: false          # disable node numa, reboot required
node_disable_swap: false          # disable node swap, use with caution
node_static_network: true         # preserve dns resolver settings after reboot
node_disk_prefetch: false         # setup disk prefetch on HDD to increase performance
node_kernel_modules: [ softdog, ip_vs, ip_vs_rr, ip_vs_wrr, ip_vs_sh ]
node_hugepage_count: 0            # number of 2MB hugepage, take precedence over ratio
node_hugepage_ratio: 0            # node mem hugepage ratio, 0 disable it by default
node_overcommit_ratio: 0          # node mem overcommit ratio, 0 disable it by default
node_tune: oltp                   # node tuned profile: none,oltp,olap,crit,tiny
node_tuned_profile_dir: /etc/tuned # node tuned profile directory
node_sysctl_params:               # sysctl parameters in k:v format in addition to tuned
  fs.nr_open: 8388608

node_disable_numa

name: node_disable_numa, type: bool, level: C

Specifies whether to disable NUMA. The default is false, which keeps NUMA enabled.

A NUMA disable operation requires a reboot to take effect. If you cannot configure CPU affinity, we recommend that you disable NUMA for production databases.

node_disable_swap

name: node_disable_swap, type: bool, level: C

Specifies whether to disable SWAP. The default is false, which keeps SWAP enabled.

We generally recommend that you keep SWAP enabled. If a node runs only PostgreSQL and has sufficient memory, you can disable SWAP for better performance.

For Kubernetes deployments, you should disable SWAP.

node_static_network

name: node_static_network, type: bool, level: C

Specifies whether to use static DNS servers. The default is true.

Static networking preserves DNS Resolv configuration across reboots and NIC changes. We recommend that you enable it or have network engineers manage the configuration.

node_disk_prefetch

name: node_disk_prefetch, type: bool, level: C

Specifies whether to enable disk prefetch. The default is false.

Disk prefetch can improve performance for instances on HDDs. We recommend it for mechanical hard drives.

node_kernel_modules

name: node_kernel_modules, type: string[], level: C

Kernel modules to enable. The default enables these modules:

node_kernel_modules: [ softdog, ip_vs, ip_vs_rr, ip_vs_wrr, ip_vs_sh ]

An array of kernel module names declaring the kernel modules that need to be installed on the node.

node_hugepage_count

name: node_hugepage_count, type: int, level: C

Number of 2MB hugepages to allocate on the node. Default is 0. Related parameter is node_hugepage_ratio.

If both node_hugepage_count and node_hugepage_ratio are 0, hugepages are completely disabled. This is the default. This parameter takes priority over node_hugepage_ratio because it is more precise.

Pigsty writes a non-zero value to /etc/sysctl.d/hugepage.conf to apply it. Negative values do not work. Values above 90% of node memory are capped at 90%.

For a non-zero setting, allocate slightly more memory than pg_shared_buffer_ratio requires. This lets PostgreSQL use hugepages.

node_hugepage_ratio

name: node_hugepage_ratio, type: float, level: C

Ratio of node memory for hugepages. Default is 0. Valid range: 0 ~ 0.40.

This memory ratio will be allocated as hugepages and reserved for PostgreSQL. node_hugepage_count is the higher priority and more precise version of this parameter.

Default: 0, which sets vm.nr_hugepages=0 and completely disables hugepages.

This parameter should equal or be slightly larger than pg_shared_buffer_ratio if not zero.

For example, with 25% of memory allocated to PostgreSQL shared buffers, set this value to 0.27 ~ 0.30. After initialization, use /pg/bin/pg-tune-hugepage to reclaim unused hugepages precisely.

node_overcommit_ratio

name: node_overcommit_ratio, type: int, level: C

Node memory overcommit ratio. Default is 0. This is an integer from 0 to 100+.

Default: 0, which sets vm.overcommit_memory=0. Otherwise, vm.overcommit_memory=2 will be used with this value as vm.overcommit_ratio.

Recommended to set vm.overcommit_ratio on dedicated pgsql nodes to avoid memory overcommit.

node_tune

name: node_tune, type: enum, level: C

Preset tuning profiles for machines, provided through tuned. Four preset modes:

  • tiny: Micro virtual machine
  • oltp: Regular OLTP template, optimizes latency (default)
  • olap: Regular OLAP template, optimizes throughput
  • crit: Core financial business template, optimizes dirty page count

Typically, the database tuning template pg_conf should match the machine tuning template.

node_tuned_profile_dir

name: node_tuned_profile_dir, type: path, level: C

Directory for the tiny, oltp, olap, and crit tuned profiles. The role default is /etc/tuned. Platform variables adjust it for the distribution.

EL 10, Debian 13, and Ubuntu 26 use /etc/tuned/profiles. EL 8/9, Debian 12, and Ubuntu 22/24 use /etc/tuned.

Normally leave this unchanged. Override it only when the target system’s tuned profile directory differs from Pigsty’s known platform mapping.

node_sysctl_params

name: node_sysctl_params, type: dict, level: C

Kernel parameters in K:V format that supplement the tuned profile. The Ansible sysctl module writes and applies them immediately.

Default:

node_sysctl_params:
  fs.nr_open: 8388608

This default keeps the kernel per-process FD ceiling at least as high as LimitNOFILE=8388608, used by several Pigsty systemd units. It prevents setrlimit failures on some distribution/systemd combinations.

This is a KV dictionary parameter where Key is the kernel sysctl parameter name and Value is the parameter value. You can also consider defining extra sysctl parameters directly in the tuned templates in roles/node/templates.


NODE_SEC

Node security related parameters, including SELinux and firewall configuration.

node_selinux_mode: permissive             # selinux mode: disabled, permissive, enforcing
node_firewall_mode: zone                  # firewall mode: zone (default, enabled), off (disable), none (skip & self-managed)
node_firewall_intranet:           # which intranet cidr considered as internal network
  - 10.0.0.0/8
  - 192.168.0.0/16
  - 172.16.0.0/12
node_firewall_public_port:        # expose these ports to public network in zone mode
  - 22                            # enable ssh access
  - 80                            # enable http access
  - 443                           # enable https access

node_selinux_mode

name: node_selinux_mode, type: enum, level: C

SELinux running mode. Default is permissive.

Options:

  • disabled: Completely disable SELinux (equivalent to old version’s node_disable_selinux: true)
  • permissive: Permissive mode, logs violations but doesn’t block (recommended, default)
  • enforcing: Enforcing mode, strictly enforces SELinux policies

If you do not have operating-system or security specialists, we recommend permissive or disabled mode.

Only EL-based systems enable SELinux by default. On Debian/Ubuntu, install and enable SELinux yourself if needed. SELinux mode changes can require a reboot to take full effect.

node_firewall_mode

name: node_firewall_mode, type: enum, level: C

Firewall running mode. Default is zone (firewall enabled and zone-managed). Since v4.1, the default changed from none to zone.

Options:

  • zone: Enable firewall and configure rules: trust intranet, only open specified ports to public (default)
  • off: Turn off and disable firewall (equivalent to old version’s node_disable_firewall: true)
  • none: Do not manage firewall state/rules; fully self-managed by user

Pigsty uses firewalld on EL and ufw on Debian/Ubuntu. The default zone mode provides consistent behavior across distributions. It enables the firewall, trusts intranet traffic, and limits public access to node_firewall_public_port.

For full manual firewall control, set node_firewall_mode to none. For example, use this when relying only on cloud security groups or enterprise firewall policies. Use off only when you explicitly want to disable the system firewall.

For production environments exposed to public networks, use zone mode. Set node_firewall_intranet and node_firewall_public_port to control access precisely. The zone mode will enable the firewall if not already running.

node_firewall_intranet

name: node_firewall_intranet, type: cidr[], level: C

Intranet CIDR address list. Introduced in v4.0. Default value:

node_firewall_intranet:
  - 10.0.0.0/8
  - 172.16.0.0/12
  - 192.168.0.0/16

This parameter defines IP address ranges considered as “internal network”. Traffic from these networks will be allowed to access all service ports without separate open rules.

Hosts within these CIDR ranges are treated as trusted intranet hosts with more permissive firewall rules. The same ranges are treated as “intranet” by PG/PGB HBA rules. Because the default firewall mode is zone, this list is active by default.

node_firewall_public_port

name: node_firewall_public_port, type: port[], level: C

Public exposed port list. Default is [22, 80, 443].

This parameter defines ports exposed to public network (non-intranet CIDR). Default exposed ports include:

  • 22: SSH service port
  • 80: HTTP service port
  • 443: HTTPS service port

You can adjust this list according to actual needs. For example, if you need to expose PostgreSQL to public network, explicitly add 5432:

node_firewall_public_port: [22, 80, 443, 5432]

PostgreSQL default security policy in Pigsty only allows administrators to access the database port from public networks. If you want other users to access the database from public networks, make sure to correctly configure corresponding access permissions in PG/PGB HBA rules.

If you want to expose other service ports to public networks, you can add them to this list. Always keep the minimum-exposure principle and open only ports you really need.

This parameter applies only if node_firewall_mode is zone. It does not apply in none or off mode.


NODE_ADMIN

These parameters control administrator accounts and login access on host nodes.

node_data: /data                  # node main data directory, `/data` by default
node_admin_enabled: true          # create a admin user on target node?
node_admin_uid: 88                # uid and gid for node admin user
node_admin_username: dba          # name of node admin user, `dba` by default
node_admin_sudo: nopass           # admin user's sudo privilege: limited, nopass, all, none
node_admin_ssh_exchange: true     # exchange admin ssh key among node cluster
node_admin_pk_current: true       # add current user's ssh pk to admin authorized_keys
node_admin_pk_list: []            # ssh public keys to be added to admin user
node_aliases: {}                  # alias name -> IP address dict for `/etc/hosts`

node_data

name: node_data, type: path, level: C

Node’s main data directory. Default is /data.

Pigsty creates this directory if it does not exist. The directory should belong to root with 777 permissions.

node_admin_enabled

name: node_admin_enabled, type: bool, level: C

Specifies whether to create a dedicated admin user on this node. The default is true.

Pigsty creates an admin user on each node with passwordless sudo and SSH. The default identity is dba (uid=88). This user can connect from the admin node to other nodes through passwordless SSH and run passwordless sudo.

node_admin_uid

name: node_admin_uid, type: int, level: C

Admin user UID. Default is 88.

Where possible, use the same UID on all nodes to prevent permission problems.

If the default UID 88 is already taken, you can choose another UID. Be careful about UID namespace conflicts when manually assigning.

node_admin_username

name: node_admin_username, type: username, level: C

Admin username. Default is dba.

node_admin_sudo

name: node_admin_sudo, type: enum, level: C

Admin user’s sudo privilege level. Default is nopass (password-free sudo).

Options:

  • none: No sudo privileges
  • limited: Limited sudo privileges (only allowed to execute specific commands)
  • nopass: Password-free sudo privileges (default, allows all commands without password)
  • all: Full sudo privileges (requires password)

Pigsty defaults to nopass mode. This lets admin users run any sudo command without a password and simplifies automation.

In production environments with high security requirements, you may need to adjust this parameter to limited or all to restrict admin privileges.

node_admin_ssh_exchange

name: node_admin_ssh_exchange, type: bool, level: C

Exchange node admin SSH keys between node clusters. Default is true.

If enabled, Pigsty exchanges SSH public keys between members during playbook execution. The node_admin_username user can then connect between nodes.

node_admin_pk_current

name: node_admin_pk_current, type: bool, level: C

Specifies whether to add the current user’s public key to the admin account. The default is true.

If enabled, Pigsty copies the current playbook user’s SSH public key (~/.ssh/id_rsa.pub) to the target admin user’s authorized_keys.

Review this setting for production. It installs the current command user’s default public key in the admin account on all target machines.

node_admin_pk_list

name: node_admin_pk_list, type: string[], level: C

List of public keys for admins who can log in. Default is [] (empty array).

Each array element is a string containing the public key to be written to the admin user’s ~/.ssh/authorized_keys. Users with the corresponding private key can log in as admin.

For production deployments, review this list and add only trusted keys.

node_aliases

name: node_aliases, type: dict, level: C

Shell aliases to be written to host’s /etc/profile.d/node.alias.sh. Default is {} (empty dict).

Use this parameter to define host shell aliases. Pigsty writes the K:V dictionary to the target node’s profile.d file as alias k=v.

For example, the following declares an alias named dp for quickly executing docker compose pull:

node_aliases:
  dp: 'docker compose pull'

NODE_TIME

Configuration related to host time/timezone/NTP/scheduled tasks.

Database services require accurate time synchronization. Make sure that the system chronyd service is running correctly.

node_timezone: ''                 # setup node timezone, empty string to skip
node_ntp_enabled: true            # enable chronyd time sync service?
node_ntp_servers:                 # ntp servers in `/etc/chrony.conf`
  - pool pool.ntp.org iburst
node_crontab_overwrite: true      # overwrite or append to `/etc/crontab`?
node_crontab: [ ]                 # crontab entries in `/etc/crontab`

node_timezone

name: node_timezone, type: string, level: C

Node timezone. The default empty string skips timezone configuration and preserves the system timezone, usually UTC.

For China, we recommend Asia/Hong_Kong / Asia/Shanghai.

node_ntp_enabled

name: node_ntp_enabled, type: bool, level: C

Specifies whether to enable chronyd time synchronization. The default is true.

Pigsty will override the node’s /etc/chrony.conf with the NTP server list specified in node_ntp_servers.

If your node already has NTP servers configured, you can set this parameter to false to skip time sync configuration.

node_ntp_servers

name: node_ntp_servers, type: string[], level: C

NTP server list used in /etc/chrony.conf. Default: ["pool pool.ntp.org iburst"]

This parameter is an array where each element is a string representing one line of NTP server configuration. Only takes effect when node_ntp_enabled is enabled.

Pigsty uses the global NTP server pool.ntp.org by default. Select a service suitable for your network, such as cn.pool.ntp.org iburst or an internal time service.

You can also use the ${admin_ip} placeholder in the configuration to use the time server on the admin node.

node_ntp_servers: [ 'pool ${admin_ip} iburst' ]

node_crontab_overwrite

name: node_crontab_overwrite, type: bool, level: C

Specifies whether node_crontab overwrites scheduled tasks. The default is true, which overwrites all tasks in the node crontab.

To append tasks, set this parameter to false.

node_crontab

name: node_crontab, type: string[], level: C

Scheduled tasks defined in node’s /etc/crontab. Default is [] (empty array).

Each array element is a string representing one scheduled task line. Use standard cron format for definition.

For example, the following configuration will execute a system task as root at 3am every day:

node_crontab:
  - '00 03 * * * root /usr/bin/some-system-task'

Note: For PostgreSQL backups and other postgres user cron jobs, use pg_crontab instead of node_crontab. NODE initialization writes node_crontab to /etc/crontab. The postgres user might not exist yet. In that case, cron reports bad username and ignores the entire crontab file.

When node_crontab_overwrite is true (default), the default /etc/crontab will be restored when removing the node.


NODE_VIP

You can bind an L2 VIP to a node cluster. This optional feature is disabled by default and applies to a group of nodes. The VIP moves between cluster nodes according to configured priorities. This provides high availability for node services.

An L2 VIP works only within the same L2 network segment. This can restrict your network topology. To avoid that restriction, consider DNS LB or HAProxy for similar functions.

To enable this feature, explicitly assign available vip_address and vip_vrid values. Both must be unique in the network segment.

NODE VIP and PG VIP have different roles. The vip-manager service manages PG VIP and binds it to the PostgreSQL cluster primary.

Keepalived manages NODE VIP for node clusters. It supports master-backup mode or load-balanced mode. Both modes can coexist.

vip_enabled: false                # enable vip on this node cluster?
# vip_address:         [IDENTITY] # node vip address in ipv4 format, required if vip is enabled
# vip_vrid:            [IDENTITY] # required, integer, 1-254, should be unique among same VLAN
vip_role: backup                  # optional, `master/backup`, backup by default, use as init role
vip_preempt: false                # optional, `true/false`, false by default, enable vip preemption
vip_interface: auto               # node vip network interface to listen, `auto` by default
vip_dns_suffix: ''                # node vip dns name suffix, empty string by default
vip_auth_pass: ''                 # vrrp auth password, empty to use `<cls>-<vrid>` as default
vip_exporter_port: 9650           # keepalived exporter listen port, 9650 by default

vip_enabled

name: vip_enabled, type: bool, level: C

Specifies whether Keepalived manages an L2 VIP for this node cluster. The default is false.

vip_address

name: vip_address, type: ip, level: C

Node VIP address in IPv4 format (without CIDR suffix). This is a required parameter when vip_enabled is enabled.

This parameter has no default. You must explicitly assign a unique VIP address for the node cluster.

vip_vrid

name: vip_vrid, type: int, level: C

VRID identifies a VIP in the network. Use an integer from 1 to 254. This parameter is required if vip_enabled is enabled.

This parameter has no default. You must assign the node cluster an ID that is unique in the network segment.

vip_role

name: vip_role, type: enum, level: I

Node VIP role. Options are master or backup. Default is backup.

This parameter value will be set as keepalived’s initial state.

vip_preempt

name: vip_preempt, type: bool, level: C/I

Specifies whether to enable VIP preemption. This parameter is optional. The default is false, which disables preemption.

With preemption enabled, a backup node can take the VIP from a running master if the backup has higher priority.

vip_interface

name: vip_interface, type: string, level: C/I

Network interface for the node VIP. The default is auto. Pigsty detects the interface associated with the inventory node IP.

Automatic detection might be unsuitable for non-standard routing, policy routing, or other unusual networks. In these cases, override the interface name at the instance or node level.

You should use the same interface name as the node’s primary IP address (the IP address you put in the inventory).

If your nodes have different interface names, you can override it at the instance/node level.

vip_dns_suffix

name: vip_dns_suffix, type: string, level: C/I

DNS name for node cluster L2 VIP. Default is empty string, meaning the cluster name itself is used as the DNS name.

vip_auth_pass

name: vip_auth_pass, type: password, level: C

VRRP authentication password for keepalived. Default is empty string.

When empty, Pigsty will auto-generate a password using the pattern <cluster_name>-<vrid>. For production environments with security requirements, set an explicit strong password.

vip_exporter_port

name: vip_exporter_port, type: port, level: C/I

Keepalived exporter listen port. Default is 9650.


HAPROXY

Pigsty installs and enables HAProxy on all nodes by default. It exposes services in a similar way to Kubernetes NodePort.

The PGSQL module uses HAProxy for services.

haproxy_enabled: true             # enable haproxy on this node?
haproxy_clean: false              # cleanup all existing haproxy config?
haproxy_reload: true              # reload haproxy after config?
haproxy_auth_enabled: true        # enable authentication for haproxy admin page
haproxy_admin_username: admin     # haproxy admin username, `admin` by default
haproxy_admin_password: pigsty    # haproxy admin password, `pigsty` by default
haproxy_exporter_port: 9101       # haproxy admin/exporter port, 9101 by default
haproxy_client_timeout: 24h       # client connection timeout, 24h by default
haproxy_server_timeout: 24h       # server connection timeout, 24h by default
haproxy_services: []              # list of haproxy services to be exposed on node

haproxy_enabled

name: haproxy_enabled, type: bool, level: C

Specifies whether to enable HAProxy on this node. The default is true.

haproxy_clean

name: haproxy_clean, type: bool, level: G/C/A

Specifies whether to delete all existing HAProxy configuration. The default is false.

haproxy_reload

name: haproxy_reload, type: bool, level: A

Specifies whether to reload HAProxy after configuration changes. The default is true.

To review changes first, disable this option with command arguments. Check the configuration, then apply it.

haproxy_auth_enabled

name: haproxy_auth_enabled, type: bool, level: G

Enable authentication for haproxy admin page. Default is true, which requires HTTP basic auth for the admin page.

We recommend that you keep authentication enabled. Without it, the traffic control page is exposed.

haproxy_admin_username

name: haproxy_admin_username, type: username, level: G

HAProxy admin username. Default is admin.

haproxy_admin_password

name: haproxy_admin_password, type: password, level: G

HAProxy admin password. Default is pigsty.

Change this password in production.

haproxy_exporter_port

name: haproxy_exporter_port, type: port, level: C

HAProxy traffic management/metrics exposed port. Default is 9101.

haproxy_client_timeout

name: haproxy_client_timeout, type: interval, level: C

Client connection timeout. Default is 24h.

A timeout can help avoid long-lived connections that are difficult to clean up. If you need longer connections, increase the timeout.

haproxy_server_timeout

name: haproxy_server_timeout, type: interval, level: C

Server connection timeout. Default is 24h.

A timeout can help avoid long-lived connections that are difficult to clean up. If you need longer connections, increase the timeout.

haproxy_services

name: haproxy_services, type: service[], level: C

List of services to expose via HAProxy on this node. Default is [] (empty array).

Each array element is a service definition. Here’s an example service definition:

haproxy_services:                   # list of haproxy service

  # expose pg-test read only replicas
  - name: pg-test-ro                # [REQUIRED] service name, unique
    port: 5440                      # [REQUIRED] service port, unique
    ip: "*"                         # [OPTIONAL] service listen addr, "*" by default
    protocol: tcp                   # [OPTIONAL] service protocol, 'tcp' by default
    balance: leastconn              # [OPTIONAL] load balance algorithm, roundrobin by default (or leastconn)
    maxconn: 20000                  # [OPTIONAL] max allowed front-end connection, 20000 by default
    default: 'inter 3s fastinter 1s downinter 5s rise 3 fall 3 on-marked-down shutdown-sessions slowstart 30s maxconn 3000 maxqueue 128 weight 100'
    options:
      - option httpchk
      - option http-keep-alive
      - http-check send meth OPTIONS uri /read-only
      - http-check expect status 200
    servers:
      - { name: pg-test-1 ,ip: 10.10.10.11 , port: 5432 , options: check port 8008 , backup: true }
      - { name: pg-test-2 ,ip: 10.10.10.12 , port: 5432 , options: check port 8008 }
      - { name: pg-test-3 ,ip: 10.10.10.13 , port: 5432 , options: check port 8008 }

Each service definition is rendered as /etc/haproxy/conf.d/<service.name>.cfg and takes effect after HAProxy reload. The main configuration remains /etc/haproxy/haproxy.cfg.

Pigsty writes the HAProxy unit to /etc/systemd/system/haproxy.service. The optional environment file is /etc/default/haproxy. It recognizes only EXTRAOPTS. Do not repeat -f there because it conflicts with the main configuration and configuration directory fixed in the unit. If you override EXTRAOPTS, keep -S /run/haproxy-master.sock to preserve seamless reload. Restart the service after this change.


NODE_EXPORTER

node_exporter_enabled: true       # setup node_exporter on this node?
node_exporter_port: 9100          # node exporter listen port, 9100 by default
node_exporter_options: '--no-collector.softnet --no-collector.nvme --collector.tcpstat --collector.processes'

node_exporter_enabled

name: node_exporter_enabled, type: bool, level: C

Specifies whether to enable the node metrics collector. The default is true.

node_exporter_port

name: node_exporter_port, type: port, level: C

Port used to expose node metrics. Default is 9100.

node_exporter_options

name: node_exporter_options, type: arg, level: C

Command line arguments for node metrics collector. Default value:

--no-collector.softnet --no-collector.nvme --collector.tcpstat --collector.processes

This option enables/disables some metrics collectors. Please adjust according to your needs.


VECTOR

Vector is the log collection component used by Pigsty since v4. It collects logs from various modules and sends them to VictoriaLogs service on infrastructure nodes.

  • INFRA: Infrastructure component logs, collected only on Infra nodes.

    • nginx-access: /var/log/nginx/access.log
    • nginx-error: /var/log/nginx/error.log
    • grafana: /var/log/grafana/grafana.log
  • NODES: Host-related logs, collection enabled on all nodes.

    • syslog: /var/log/messages (/var/log/syslog on Debian)
    • dmesg: /var/log/dmesg
    • cron: /var/log/cron
  • PGSQL: PostgreSQL-related logs, collection enabled only when node has PGSQL module configured.

    • postgres: /pg/log/postgres/*
    • patroni: /pg/log/patroni/patroni.log (job=patroni)
    • pgbouncer: /pg/log/pgbouncer/pgbouncer.log
    • pgbackrest: /pg/log/pgbackrest/*.log
  • REDIS: Redis-related logs, collection enabled only when node has REDIS module configured.

    • redis: /var/log/redis/*.log

Log directories are automatically adjusted according to these parameter configurations: pg_log_dir, patroni_log_dir, pgbouncer_log_dir, pgbackrest_log_dir

vector_enabled: true              # enable vector log collector?
vector_clean: false               # purge vector data dir during init?
vector_data: /data/vector         # vector data directory, /data/vector by default
vector_port: 9598                 # vector metrics port, 9598 by default
vector_read_from: beginning       # read log from beginning or end
vector_log_endpoint: [ infra ]    # log endpoint, default send to infra group

vector_enabled

name: vector_enabled, type: bool, level: C

Specifies whether to enable Vector log collection. The default is true.

Vector is the log collection agent used by Pigsty since v4, replacing Promtail from previous versions. It collects node and service logs and sends them to VictoriaLogs.

vector_clean

name: vector_clean, type: bool, level: G/A

Specifies whether to delete the existing data directory during Vector installation. The default is false, which preserves the directory.

If enabled, Pigsty deletes vector_data during Vector deployment. Vector then collects all logs on the node again and sends them to VictoriaLogs.

vector_data

name: vector_data, type: path, level: C

Vector data directory path. Default is /data/vector.

Vector stores log read offsets and buffered data in this directory.

vector_port

name: vector_port, type: port, level: C

Vector metrics listen port. Default is 9598.

Vector exposes its own monitoring metrics on this port. VictoriaMetrics can scrape them.

vector_read_from

name: vector_read_from, type: enum, level: C

Vector log reading start position. Default is beginning.

The options are beginning and end. The beginning option reads all content in existing log files. The end option reads only new logs.

vector_log_endpoint

name: vector_log_endpoint, type: string[], level: C

Log destination endpoint list. Default is [ infra ].

Specifies which node group’s VictoriaLogs service to send logs to. Default sends to nodes in the infra group.

3 - Playbook

How to use built-in Ansible playbooks to manage NODE clusters, with a quick reference for common commands.

Pigsty provides two playbooks related to the NODE module:

  • node.yml: Add nodes to Pigsty and configure them to the desired state
  • node-rm.yml: Remove managed nodes from Pigsty

Use bin/node-add and bin/node-rm as shortcuts to run these playbooks.


node.yml

The node.yml playbook for adding nodes to Pigsty contains the following subtasks:

node-id       : generate node identity
node_name     : setup hostname
node_hosts    : setup /etc/hosts records
node_resolv   : setup DNS resolver /etc/resolv.conf
node_firewall : setup firewall & selinux
node_ca       : add & trust CA certificate
node_repo     : add upstream software repository
node_pkg      : install rpm/deb packages
node_uv       : setup uv Python virtual environment
node_feature  : setup numa, grub, static network
node_kernel   : enable kernel modules
node_tune     : setup tuned profile
node_sysctl   : setup additional sysctl parameters
node_profile  : write /etc/profile.d/node.sh
node_alias    : write /etc/profile.d/node.alias.sh
node_ulimit   : setup resource limits
node_data     : setup data directory
node_admin    : setup admin user and ssh key
node_timezone : setup timezone
node_ntp      : setup NTP server/client
node_crontab  : add/overwrite crontab tasks
node_vip      : setup optional L2 VIP for node cluster
haproxy       : setup haproxy on node to expose services
monitor       : setup node monitoring: node_exporter & vector

node-rm.yml

The node-rm.yml playbook for removing nodes from Pigsty contains the following subtasks:

register       : remove registration from prometheus & nginx
  - prometheus : remove registered prometheus monitoring target
  - nginx      : remove nginx proxy record for haproxy admin
vip            : remove keepalived & L2 VIP (if VIP enabled)
haproxy        : remove haproxy load balancer
node_exporter  : remove node monitoring: Node Exporter
vip_exporter   : remove keepalived_exporter (if VIP enabled)
vector         : remove log collection agent vector
node_crontab   : restore default /etc/crontab (if node_crontab_overwrite=true)
profile        : remove /etc/profile.d/node.sh

node-rm.yml removes Pigsty management and stops NODE services. It does not remove the operating system or perform a full uninstall:

  • It deregisters Node, Docker, Ping, VIP, and other monitoring targets, plus the HAProxy administration portal.
  • It stops and disables HAProxy, Node Exporter, Vector, and Keepalived/Exporter when enabled.
  • It removes HAProxy configuration and NODE Vector configuration, and deletes vector_data (default: /data/vector).
  • It does not uninstall packages, remove the admin user, delete node_data, stop Docker, or delete Docker data.

The current removal role deletes vector_data directly. It does not use the installation role’s vector_clean switch. Confirm that no Vector buffer data must be retained before running it.


Quick Reference

# Basic node management
./node.yml -l <cls|ip|group>          # Add node to Pigsty
./node-rm.yml -l <cls|ip|group> --check # Preflight; execute after exact-target confirmation

# Node management shortcuts
bin/node-add node-test                 # Initialize node cluster 'node-test'
bin/node-add 10.10.10.10               # Initialize node '10.10.10.10'
./node-rm.yml -l node-test --check     # Preflight before bin/node-rm node-test
./node-rm.yml -l 10.10.10.10 --check   # Preflight before bin/node-rm 10.10.10.10

# Node main initialization
./node.yml -t node                     # Complete node main init (excludes haproxy, monitor)
./node.yml -t haproxy                  # Setup haproxy on node
./node.yml -t monitor                  # Setup node monitoring: node_exporter & vector

# VIP management
./node.yml -t node_vip                 # Setup optional L2 VIP for node cluster
./node.yml -t vip_config,vip_reload    # Refresh node L2 VIP configuration

# HAProxy management
./node.yml -t haproxy_config,haproxy_reload   # Refresh service definitions on node

# Registration management
./node.yml -t node_register      # Re-register node to VictoriaMetrics
./node.yml -t register_nginx           # Re-register node haproxy admin to Nginx

# Specific tasks
./node.yml -t node-id                  # Generate node identity
./node.yml -t node_name                # Setup hostname
./node.yml -t node_hosts               # Setup node /etc/hosts records
./node.yml -t node_resolv              # Setup node DNS resolver /etc/resolv.conf
./node.yml -t node_firewall            # Setup firewall & selinux
./node.yml -t node_ca                  # Setup node CA certificate
./node.yml -t node_repo                # Setup node upstream software repository
./node.yml -t node_pkg                 # Install yum packages on node
./node.yml -t node_uv                  # Setup uv Python virtual environment
./node.yml -t node_feature             # Setup numa, grub, static network
./node.yml -t node_kernel              # Enable kernel modules
./node.yml -t node_tune                # Setup tuned profile
./node.yml -t node_sysctl              # Setup additional sysctl parameters
./node.yml -t node_profile             # Setup node environment: /etc/profile.d/node.sh
./node.yml -t node_alias               # Setup command aliases: /etc/profile.d/node.alias.sh
./node.yml -t node_ulimit              # Setup node resource limits
./node.yml -t node_data                # Setup node primary data directory
./node.yml -t node_admin               # Setup admin user and ssh key
./node.yml -t node_timezone            # Setup node timezone
./node.yml -t node_ntp                 # Setup node NTP server/client
./node.yml -t node_crontab             # Add/overwrite crontab tasks

4 - Administration

Node cluster management SOP - create, destroy, expand, shrink, and handle node/disk failures

Here are common administration operations for the NODE module:

For more questions, see FAQ: NODE


Add Node

To add a node to Pigsty, first configure passwordless SSH and sudo access to it.

You can also add an entire cluster at once, or use wildcards to match nodes in the inventory to add to Pigsty.

# ./node.yml -l <cls|ip|group>        # actual playbook to add nodes to Pigsty
# bin/node-add <selector|ip...>       # add node to Pigsty
bin/node-add node-test                # init node cluster 'node-test'
bin/node-add 10.10.10.10              # init node '10.10.10.10'

Example: Add three nodes of PG cluster pg-test to Pigsty management

demo/node-add.cast — /demo/node-add.cast


Remove Node

To remove a node from Pigsty, you can use the following commands:

First, confirm that each business module on the node has been removed through its own procedure. Check whether any vector_data buffer needs preservation. After confirming the exact target, call the wrapper:

# ./node-rm.yml -l <cls|ip|group>    # actual playbook that removes a node from Pigsty
# bin/node-rm <cls|ip|selector> ...  # remove node from Pigsty
bin/node-rm node-test                # remove node cluster 'node-test'
bin/node-rm 10.10.10.10              # remove node '10.10.10.10'

You can also remove an entire cluster at once, or use wildcards to match nodes in the inventory to remove from Pigsty.

Here, node removal means removal of NODE management. The playbook deregisters monitoring, logging, and the HAProxy portal. It stops Node Exporter, Vector, HAProxy, and optional VIP services. It deletes vector_data, which defaults to /data/vector. It preserves packages, the admin user, node_data, and Docker data. It does not stop Docker. See node-rm.yml for the exact boundary.

demo/node-rm.cast — /demo/node-rm.cast


Create Admin

If the current user doesn’t have passwordless ssh/sudo access to the node, you can use another admin user to bootstrap it:

node.yml -t node_admin -k -K -e ansible_user=<another admin>   # enter ssh/sudo password for another admin to complete this task

Bind VIP

You can bind an optional L2 VIP on a node cluster using the vip_enabled parameter.

proxy:
  hosts:
    10.10.10.29: { nodename: proxy-1 }   # you can explicitly specify initial VIP role: MASTER / BACKUP
    10.10.10.30: { nodename: proxy-2 }   # , vip_role: master }
  vars:
    node_cluster: proxy
    vip_enabled: true
    vip_vrid: 128
    vip_address: 10.10.10.99
    vip_interface: eth1
./node.yml -l proxy -t node_vip     # enable VIP for the first time
./node.yml -l proxy -t vip_refresh  # refresh VIP config (e.g., designate master)

Add Node Monitoring

If you want to add or reconfigure monitoring on existing nodes, use the following commands:

./node.yml -t node_exporter,node_register  # configure monitoring and register
./node.yml -t vector                        # configure log collection

Other Tasks

# Play
./node.yml -t node                            # complete node initialization (excludes haproxy, monitoring)
./node.yml -t haproxy                         # setup haproxy on node
./node.yml -t monitor                         # configure node monitoring: node_exporter & vector
./node.yml -t node_vip                        # install, configure, enable L2 VIP for clusters without VIP
./node.yml -t vip_config,vip_reload           # refresh node L2 VIP configuration
./node.yml -t haproxy_config,haproxy_reload   # refresh service definitions on node
./node.yml -t node_register             # re-register node with VictoriaMetrics
./node.yml -t register_nginx                  # re-register node haproxy admin page with Nginx

# Task
./node.yml -t node-id        # generate node identity
./node.yml -t node_name      # setup hostname
./node.yml -t node_hosts     # configure node /etc/hosts records
./node.yml -t node_resolv    # configure node DNS resolver /etc/resolv.conf
./node.yml -t node_firewall  # configure firewall & selinux
./node.yml -t node_ca        # configure node CA certificate
./node.yml -t node_repo      # configure node upstream software repository
./node.yml -t node_pkg       # install yum packages on node
./node.yml -t node_feature   # configure numa, grub, static network, etc.
./node.yml -t node_kernel    # configure OS kernel modules
./node.yml -t node_tune      # configure tuned profile
./node.yml -t node_sysctl    # set additional sysctl parameters
./node.yml -t node_profile   # configure node environment variables: /etc/profile.d/node.sh
./node.yml -t node_alias     # configure command aliases: /etc/profile.d/node.alias.sh
./node.yml -t node_ulimit    # configure node resource limits
./node.yml -t node_data      # configure node primary data directory
./node.yml -t node_admin     # configure admin user and ssh keys
./node.yml -t node_timezone  # configure node timezone
./node.yml -t node_ntp       # configure node NTP server/client
./node.yml -t node_crontab   # add/overwrite crontab entries
./node.yml -t node_vip       # setup optional L2 VIP for node cluster

HAProxy Password

haproxy_admin_password (default pigsty) is used for HAProxy admin UI authentication, rendered to /etc/haproxy/haproxy.cfg.

After changing the password, use the following to reload config (hot reload, no connection interruption):

./node.yml -l <target> -t haproxy_config,haproxy_reload

Firewall Management

Pigsty uses node_firewall_mode to control the firewall. It uses firewalld on RHEL/Rocky and ufw on Debian/Ubuntu.

Since v4.1, the default is zone. Pigsty enables the system firewall with the same policy across distributions. This policy trusts intranet traffic and minimizes public access.

In zone mode, intranet traffic is unrestricted. External access is limited to specific ports. Set node_firewall_mode: none only when you want to fully self-manage firewall state and rules. This is especially important when deploying on cloud servers exposed to the internet.

We recommend opening only necessary ports: 22 (SSH), 80/443 (HTTP/HTTPS) are essential. Be cautious about exposing port 5432 (PostgreSQL).

Apply Firewall Rules

zone is already the default. If you previously set none/off, set it back to zone and apply:

node_firewall_mode: zone              # enable firewall with zone rules
node_firewall_intranet:               # trust these CIDRs (full access)
  - 10.0.0.0/8
  - 192.168.0.0/16
  - 172.16.0.0/12
node_firewall_public_port:            # open these ports to public
  - 22                                # SSH
  - 80                                # HTTP
  - 443                               # HTTPS

Then execute: ./node.yml -l <target> -t node_firewall

Open More Ports

To open additional ports, add them to node_firewall_public_port and re-run:

node_firewall_public_port: [22, 80, 443, 5432, 6379]  # add PostgreSQL and Redis ports
./node.yml -l <target> -t node_firewall

Configure Intranet CIDRs

CIDRs in node_firewall_intranet are added to the trusted zone with full access:

node_firewall_intranet:
  - 10.0.0.0/8           # Class A private
  - 192.168.0.0/16       # Class C private
  - 172.16.0.0/12        # Class B private
  - 100.64.0.0/10        # Carrier-grade NAT (if needed)

Remove Rules (Manual)

Important: Pigsty firewall management is add-only. If you remove configuration entries and run the playbook again, existing rules remain. You must remove these rules manually.

EL (firewalld)
# Remove port from public zone
sudo firewall-cmd --zone=public --remove-port=5432/tcp
sudo firewall-cmd --runtime-to-permanent

# Remove CIDR from trusted zone
sudo firewall-cmd --zone=trusted --remove-source=10.0.0.0/8
sudo firewall-cmd --runtime-to-permanent

# View current rules
sudo firewall-cmd --zone=public --list-ports
sudo firewall-cmd --zone=trusted --list-sources

# Reset to initial state (remove all custom rules)
sudo firewall-cmd --complete-reload
Debian (ufw)
# Delete port rule
sudo ufw delete allow 5432/tcp

# Delete CIDR rule
sudo ufw delete allow from 10.0.0.0/8

# View current rules (numbered)
sudo ufw status numbered

# Delete by rule number
sudo ufw delete <rule_number>

# Reset to initial state (remove all rules, keep ufw enabled)
sudo ufw reset

Disable Firewall

To completely disable the firewall, set node_firewall_mode to off:

node_firewall_mode: off    # completely disable firewall
./node.yml -l <target> -t node_firewall

Or disable manually:

EL (firewalld)
sudo systemctl disable --now firewalld
Debian (ufw)
sudo ufw disable

5 - Monitoring

Monitor NODE in Pigsty with dashboards and alerting rules

The NODE dashboard directory contains 10 monitoring dashboards. Pigsty also provides comprehensive alert rules.


Dashboards

The NODE dashboard directory currently contains 10 dashboards. The JuiceFS and Claude Code dashboards show data only after those components are deployed and emit metrics.

NODE Overview

Shows all host nodes in the current environment.

node-overview.jpg

NODE Cluster

Shows detailed monitoring data for a specific host cluster.

node-cluster.jpg

Node Instance

Shows detailed monitoring data for one host node.

node-instance.jpg

NODE Alert

Shows alerts for all hosts in the environment.

node-alert.jpg

NODE VIP

Monitors detailed status of L2 virtual IPs.

node-vip.jpg

Node Haproxy

Shows the status of HAProxy load balancers.

node-haproxy.jpg

Node Disk

Focuses on per-disk I/O latency, throughput, queue depth, and other storage metrics.

node-disk.webp

Node Vector

Shows Vector collection and forwarding status, plus log-pipeline health.

node-vector.webp

Node JuiceFS

Shows JuiceFS client cache, object storage, metadata operations, and read/write performance.

Open the Node JuiceFS Dashboard

Claude Code

Shows sessions, tokens, costs, and logs reported by Claude Code through OpenTelemetry.

Open the Claude Code Dashboard


Alert Rules

Pigsty implements the following alerting rules for NODE:

Availability Alerts

RuleLevelDescription
NodeDownCRITNode is offline
HaproxyDownCRITHAProxy service is offline
VectorDownWARNLog collecting agent offline (Vector)
DockerDownWARNContainer engine offline
KeepalivedDownWARNKeepalived daemon offline

CPU Alerts

RuleLevelDescription
NodeCpuHighWARNCPU usage exceeds 70%

Scheduling Alerts

RuleLevelDescription
NodeLoadHighWARNNormalized load exceeds 100%

Memory Alerts

RuleLevelDescription
NodeOutOfMemWARNAvailable memory less than 10%
NodeMemSwappedWARNSwap usage exceeds 1%

Filesystem Alerts

RuleLevelDescription
NodeFsSpaceFullWARNDisk usage exceeds 90%
NodeFsFilesFullWARNInode usage exceeds 90%
NodeFdFullWARNFile descriptor usage exceeds 90%

Disk Alerts

RuleLevelDescription
NodeDiskSlowWARNRead/write latency exceeds 32ms

Network Protocol Alerts

RuleLevelDescription
NodeTcpErrHighWARNTCP error rate exceeds 1/min
NodeTcpRetransHighWARNTCP retransmission rate exceeds 1%

Time Synchronization Alerts

RuleLevelDescription
NodeTimeDriftWARNSystem time not synchronized

6 - Metrics

Complete list of monitoring metrics provided by Pigsty NODE module

This page is a snapshot of 727 monitoring metric categories for the NODE module. The actual runtime metric set varies with package version, enabled collectors, and target state.

Metric NameTypeLabelsDescription
ALERTSUnknownalertname, ip, level, severity, ins, job, alertstate, category, instance, clsN/A
ALERTS_FOR_STATEUnknownalertname, ip, level, severity, ins, job, category, instance, clsN/A
deprecated_flags_inuse_totalUnknowninstance, ins, job, ip, clsN/A
go_gc_duration_secondssummaryquantile, instance, ins, job, ip, clsA summary of the pause duration of garbage collection cycles.
go_gc_duration_seconds_countUnknowninstance, ins, job, ip, clsN/A
go_gc_duration_seconds_sumUnknowninstance, ins, job, ip, clsN/A
go_goroutinesgaugeinstance, ins, job, ip, clsNumber of goroutines that currently exist.
go_infogaugeversion, instance, ins, job, ip, clsInformation about the Go environment.
go_memstats_alloc_bytesgaugeinstance, ins, job, ip, clsNumber of bytes allocated and still in use.
go_memstats_alloc_bytes_totalcounterinstance, ins, job, ip, clsTotal number of bytes allocated, even if freed.
go_memstats_buck_hash_sys_bytesgaugeinstance, ins, job, ip, clsNumber of bytes used by the profiling bucket hash table.
go_memstats_frees_totalcounterinstance, ins, job, ip, clsTotal number of frees.
go_memstats_gc_sys_bytesgaugeinstance, ins, job, ip, clsNumber of bytes used for garbage collection system metadata.
go_memstats_heap_alloc_bytesgaugeinstance, ins, job, ip, clsNumber of heap bytes allocated and still in use.
go_memstats_heap_idle_bytesgaugeinstance, ins, job, ip, clsNumber of heap bytes waiting to be used.
go_memstats_heap_inuse_bytesgaugeinstance, ins, job, ip, clsNumber of heap bytes that are in use.
go_memstats_heap_objectsgaugeinstance, ins, job, ip, clsNumber of allocated objects.
go_memstats_heap_released_bytesgaugeinstance, ins, job, ip, clsNumber of heap bytes released to OS.
go_memstats_heap_sys_bytesgaugeinstance, ins, job, ip, clsNumber of heap bytes obtained from system.
go_memstats_last_gc_time_secondsgaugeinstance, ins, job, ip, clsNumber of seconds since 1970 of last garbage collection.
go_memstats_lookups_totalcounterinstance, ins, job, ip, clsTotal number of pointer lookups.
go_memstats_mallocs_totalcounterinstance, ins, job, ip, clsTotal number of mallocs.
go_memstats_mcache_inuse_bytesgaugeinstance, ins, job, ip, clsNumber of bytes in use by mcache structures.
go_memstats_mcache_sys_bytesgaugeinstance, ins, job, ip, clsNumber of bytes used for mcache structures obtained from system.
go_memstats_mspan_inuse_bytesgaugeinstance, ins, job, ip, clsNumber of bytes in use by mspan structures.
go_memstats_mspan_sys_bytesgaugeinstance, ins, job, ip, clsNumber of bytes used for mspan structures obtained from system.
go_memstats_next_gc_bytesgaugeinstance, ins, job, ip, clsNumber of heap bytes when next garbage collection will take place.
go_memstats_other_sys_bytesgaugeinstance, ins, job, ip, clsNumber of bytes used for other system allocations.
go_memstats_stack_inuse_bytesgaugeinstance, ins, job, ip, clsNumber of bytes in use by the stack allocator.
go_memstats_stack_sys_bytesgaugeinstance, ins, job, ip, clsNumber of bytes obtained from system for stack allocator.
go_memstats_sys_bytesgaugeinstance, ins, job, ip, clsNumber of bytes obtained from system.
go_threadsgaugeinstance, ins, job, ip, clsNumber of OS threads created.
haproxy:cls:usageUnknownjob, clsN/A
haproxy:ins:uptimeUnknowninstance, ins, job, ip, clsN/A
haproxy:ins:usageUnknowninstance, ins, job, ip, clsN/A
haproxy_backend_active_serversgaugeproxy, instance, ins, job, ip, clsTotal number of active UP servers with a non-zero weight
haproxy_backend_agg_check_statusgaugestate, proxy, instance, ins, job, ip, clsBackend’s aggregated gauge of servers’ state check status
haproxy_backend_agg_server_check_statusgaugestate, proxy, instance, ins, job, ip, cls[DEPRECATED] Backend’s aggregated gauge of servers’ status
haproxy_backend_agg_server_statusgaugestate, proxy, instance, ins, job, ip, clsBackend’s aggregated gauge of servers’ status
haproxy_backend_backup_serversgaugeproxy, instance, ins, job, ip, clsTotal number of backup UP servers with a non-zero weight
haproxy_backend_bytes_in_totalcounterproxy, instance, ins, job, ip, clsTotal number of request bytes since process started
haproxy_backend_bytes_out_totalcounterproxy, instance, ins, job, ip, clsTotal number of response bytes since process started
haproxy_backend_check_last_change_secondsgaugeproxy, instance, ins, job, ip, clsHow long ago the last server state changed, in seconds
haproxy_backend_check_up_down_totalcounterproxy, instance, ins, job, ip, clsTotal number of failed checks causing UP to DOWN server transitions, per server/backend, since the worker process started
haproxy_backend_client_aborts_totalcounterproxy, instance, ins, job, ip, clsTotal number of requests or connections aborted by the client since the worker process started
haproxy_backend_connect_time_average_secondsgaugeproxy, instance, ins, job, ip, clsAvg. connect time for last 1024 successful connections.
haproxy_backend_connection_attempts_totalcounterproxy, instance, ins, job, ip, clsTotal number of outgoing connection attempts on this backend/server since the worker process started
haproxy_backend_connection_errors_totalcounterproxy, instance, ins, job, ip, clsTotal number of failed connections to server since the worker process started
haproxy_backend_connection_reuses_totalcounterproxy, instance, ins, job, ip, clsTotal number of reused connection on this backend/server since the worker process started
haproxy_backend_current_queuegaugeproxy, instance, ins, job, ip, clsNumber of current queued connections
haproxy_backend_current_sessionsgaugeproxy, instance, ins, job, ip, clsNumber of current sessions on the frontend, backend or server
haproxy_backend_downtime_seconds_totalcounterproxy, instance, ins, job, ip, clsTotal time spent in DOWN state, for server or backend
haproxy_backend_failed_header_rewriting_totalcounterproxy, instance, ins, job, ip, clsTotal number of failed HTTP header rewrites since the worker process started
haproxy_backend_http_cache_hits_totalcounterproxy, instance, ins, job, ip, clsTotal number of HTTP requests not found in the cache on this frontend/backend since the worker process started
haproxy_backend_http_cache_lookups_totalcounterproxy, instance, ins, job, ip, clsTotal number of HTTP requests looked up in the cache on this frontend/backend since the worker process started
haproxy_backend_http_comp_bytes_bypassed_totalcounterproxy, instance, ins, job, ip, clsTotal number of bytes that bypassed HTTP compression for this object since the worker process started (CPU/memory/bandwidth limitation)
haproxy_backend_http_comp_bytes_in_totalcounterproxy, instance, ins, job, ip, clsTotal number of bytes submitted to the HTTP compressor for this object since the worker process started
haproxy_backend_http_comp_bytes_out_totalcounterproxy, instance, ins, job, ip, clsTotal number of bytes emitted by the HTTP compressor for this object since the worker process started
haproxy_backend_http_comp_responses_totalcounterproxy, instance, ins, job, ip, clsTotal number of HTTP responses that were compressed for this object since the worker process started
haproxy_backend_http_requests_totalcounterproxy, instance, ins, job, ip, clsTotal number of HTTP requests processed by this object since the worker process started
haproxy_backend_http_responses_totalcounterip, proxy, ins, code, job, instance, clsTotal number of HTTP responses with status 100-199 returned by this object since the worker process started
haproxy_backend_internal_errors_totalcounterproxy, instance, ins, job, ip, clsTotal number of internal errors since process started
haproxy_backend_last_session_secondsgaugeproxy, instance, ins, job, ip, clsHow long ago some traffic was seen on this object on this worker process, in seconds
haproxy_backend_limit_sessionsgaugeproxy, instance, ins, job, ip, clsFrontend/listener/server’s maxconn, backend’s fullconn
haproxy_backend_loadbalanced_totalcounterproxy, instance, ins, job, ip, clsTotal number of requests routed by load balancing since the worker process started (ignores queue pop and stickiness)
haproxy_backend_max_connect_time_secondsgaugeproxy, instance, ins, job, ip, clsMaximum observed time spent waiting for a connection to complete
haproxy_backend_max_queuegaugeproxy, instance, ins, job, ip, clsHighest value of queued connections encountered since process started
haproxy_backend_max_queue_time_secondsgaugeproxy, instance, ins, job, ip, clsMaximum observed time spent in the queue
haproxy_backend_max_response_time_secondsgaugeproxy, instance, ins, job, ip, clsMaximum observed time spent waiting for a server response
haproxy_backend_max_session_rategaugeproxy, instance, ins, job, ip, clsHighest value of sessions per second observed since the worker process started
haproxy_backend_max_sessionsgaugeproxy, instance, ins, job, ip, clsHighest value of current sessions encountered since process started
haproxy_backend_max_total_time_secondsgaugeproxy, instance, ins, job, ip, clsMaximum observed total request+response time (request+queue+connect+response+processing)
haproxy_backend_queue_time_average_secondsgaugeproxy, instance, ins, job, ip, clsAvg. queue time for last 1024 successful connections.
haproxy_backend_redispatch_warnings_totalcounterproxy, instance, ins, job, ip, clsTotal number of server redispatches due to connection failures since the worker process started
haproxy_backend_requests_denied_totalcounterproxy, instance, ins, job, ip, clsTotal number of denied requests since process started
haproxy_backend_response_errors_totalcounterproxy, instance, ins, job, ip, clsTotal number of invalid responses since the worker process started
haproxy_backend_response_time_average_secondsgaugeproxy, instance, ins, job, ip, clsAvg. response time for last 1024 successful connections.
haproxy_backend_responses_denied_totalcounterproxy, instance, ins, job, ip, clsTotal number of denied responses since process started
haproxy_backend_retry_warnings_totalcounterproxy, instance, ins, job, ip, clsTotal number of server connection retries since the worker process started
haproxy_backend_server_aborts_totalcounterproxy, instance, ins, job, ip, clsTotal number of requests or connections aborted by the server since the worker process started
haproxy_backend_sessions_totalcounterproxy, instance, ins, job, ip, clsTotal number of sessions since process started
haproxy_backend_statusgaugestate, proxy, instance, ins, job, ip, clsCurrent status of the service, per state label value.
haproxy_backend_total_time_average_secondsgaugeproxy, instance, ins, job, ip, clsAvg. total time for last 1024 successful connections.
haproxy_backend_uweightgaugeproxy, instance, ins, job, ip, clsServer’s user weight, or sum of active servers’ user weights for a backend
haproxy_backend_weightgaugeproxy, instance, ins, job, ip, clsServer’s effective weight, or sum of active servers’ effective weights for a backend
haproxy_frontend_bytes_in_totalcounterproxy, instance, ins, job, ip, clsTotal number of request bytes since process started
haproxy_frontend_bytes_out_totalcounterproxy, instance, ins, job, ip, clsTotal number of response bytes since process started
haproxy_frontend_connections_rate_maxgaugeproxy, instance, ins, job, ip, clsHighest value of connections per second observed since the worker process started
haproxy_frontend_connections_totalcounterproxy, instance, ins, job, ip, clsTotal number of new connections accepted on this frontend since the worker process started
haproxy_frontend_current_sessionsgaugeproxy, instance, ins, job, ip, clsNumber of current sessions on the frontend, backend or server
haproxy_frontend_denied_connections_totalcounterproxy, instance, ins, job, ip, clsTotal number of incoming connections blocked on a listener/frontend by a tcp-request connection rule since the worker process started
haproxy_frontend_denied_sessions_totalcounterproxy, instance, ins, job, ip, clsTotal number of incoming sessions blocked on a listener/frontend by a tcp-request connection rule since the worker process started
haproxy_frontend_failed_header_rewriting_totalcounterproxy, instance, ins, job, ip, clsTotal number of failed HTTP header rewrites since the worker process started
haproxy_frontend_http_cache_hits_totalcounterproxy, instance, ins, job, ip, clsTotal number of HTTP requests not found in the cache on this frontend/backend since the worker process started
haproxy_frontend_http_cache_lookups_totalcounterproxy, instance, ins, job, ip, clsTotal number of HTTP requests looked up in the cache on this frontend/backend since the worker process started
haproxy_frontend_http_comp_bytes_bypassed_totalcounterproxy, instance, ins, job, ip, clsTotal number of bytes that bypassed HTTP compression for this object since the worker process started (CPU/memory/bandwidth limitation)
haproxy_frontend_http_comp_bytes_in_totalcounterproxy, instance, ins, job, ip, clsTotal number of bytes submitted to the HTTP compressor for this object since the worker process started
haproxy_frontend_http_comp_bytes_out_totalcounterproxy, instance, ins, job, ip, clsTotal number of bytes emitted by the HTTP compressor for this object since the worker process started
haproxy_frontend_http_comp_responses_totalcounterproxy, instance, ins, job, ip, clsTotal number of HTTP responses that were compressed for this object since the worker process started
haproxy_frontend_http_requests_rate_maxgaugeproxy, instance, ins, job, ip, clsHighest value of http requests observed since the worker process started
haproxy_frontend_http_requests_totalcounterproxy, instance, ins, job, ip, clsTotal number of HTTP requests processed by this object since the worker process started
haproxy_frontend_http_responses_totalcounterip, proxy, ins, code, job, instance, clsTotal number of HTTP responses with status 100-199 returned by this object since the worker process started
haproxy_frontend_intercepted_requests_totalcounterproxy, instance, ins, job, ip, clsTotal number of HTTP requests intercepted on the frontend (redirects/stats/services) since the worker process started
haproxy_frontend_internal_errors_totalcounterproxy, instance, ins, job, ip, clsTotal number of internal errors since process started
haproxy_frontend_limit_session_rategaugeproxy, instance, ins, job, ip, clsLimit on the number of sessions accepted in a second (frontend only, ‘rate-limit sessions’ setting)
haproxy_frontend_limit_sessionsgaugeproxy, instance, ins, job, ip, clsFrontend/listener/server’s maxconn, backend’s fullconn
haproxy_frontend_max_session_rategaugeproxy, instance, ins, job, ip, clsHighest value of sessions per second observed since the worker process started
haproxy_frontend_max_sessionsgaugeproxy, instance, ins, job, ip, clsHighest value of current sessions encountered since process started
haproxy_frontend_request_errors_totalcounterproxy, instance, ins, job, ip, clsTotal number of invalid requests since process started
haproxy_frontend_requests_denied_totalcounterproxy, instance, ins, job, ip, clsTotal number of denied requests since process started
haproxy_frontend_responses_denied_totalcounterproxy, instance, ins, job, ip, clsTotal number of denied responses since process started
haproxy_frontend_sessions_totalcounterproxy, instance, ins, job, ip, clsTotal number of sessions since process started
haproxy_frontend_statusgaugestate, proxy, instance, ins, job, ip, clsCurrent status of the service, per state label value.
haproxy_process_active_peersgaugeinstance, ins, job, ip, clsCurrent number of verified active peers connections on the current worker process
haproxy_process_build_infogaugeversion, instance, ins, job, ip, clsBuild info
haproxy_process_busy_polling_enabledgaugeinstance, ins, job, ip, cls1 if busy-polling is currently in use on the worker process, otherwise zero (config.busy-polling)
haproxy_process_bytes_out_rategaugeinstance, ins, job, ip, clsNumber of bytes emitted by current worker process over the last second
haproxy_process_bytes_out_totalcounterinstance, ins, job, ip, clsTotal number of bytes emitted by current worker process since started
haproxy_process_connected_peersgaugeinstance, ins, job, ip, clsCurrent number of peers having passed the connection step on the current worker process
haproxy_process_connections_totalcounterinstance, ins, job, ip, clsTotal number of connections on this worker process since started
haproxy_process_current_backend_ssl_key_rategaugeinstance, ins, job, ip, clsNumber of SSL keys created on backends in this worker process over the last second
haproxy_process_current_connection_rategaugeinstance, ins, job, ip, clsNumber of front connections created on this worker process over the last second
haproxy_process_current_connectionsgaugeinstance, ins, job, ip, clsCurrent number of connections on this worker process
haproxy_process_current_frontend_ssl_key_rategaugeinstance, ins, job, ip, clsNumber of SSL keys created on frontends in this worker process over the last second
haproxy_process_current_run_queuegaugeinstance, ins, job, ip, clsTotal number of active tasks+tasklets in the current worker process
haproxy_process_current_session_rategaugeinstance, ins, job, ip, clsNumber of sessions created on this worker process over the last second
haproxy_process_current_ssl_connectionsgaugeinstance, ins, job, ip, clsCurrent number of SSL endpoints on this worker process (front+back)
haproxy_process_current_ssl_rategaugeinstance, ins, job, ip, clsNumber of SSL connections created on this worker process over the last second
haproxy_process_current_tasksgaugeinstance, ins, job, ip, clsTotal number of tasks in the current worker process (active + sleeping)
haproxy_process_current_zlib_memorygaugeinstance, ins, job, ip, clsAmount of memory currently used by HTTP compression on the current worker process (in bytes)
haproxy_process_dropped_logs_totalcounterinstance, ins, job, ip, clsTotal number of dropped logs for current worker process since started
haproxy_process_failed_resolutionscounterinstance, ins, job, ip, clsTotal number of failed DNS resolutions in current worker process since started
haproxy_process_frontend_ssl_reusegaugeinstance, ins, job, ip, clsPercent of frontend SSL connections which did not require a new key
haproxy_process_hard_max_connectionsgaugeinstance, ins, job, ip, clsHard limit on the number of per-process connections (imposed by Memmax_MB or Ulimit-n)
haproxy_process_http_comp_bytes_in_totalcounterinstance, ins, job, ip, clsNumber of bytes submitted to the HTTP compressor in this worker process over the last second
haproxy_process_http_comp_bytes_out_totalcounterinstance, ins, job, ip, clsNumber of bytes emitted by the HTTP compressor in this worker process over the last second
haproxy_process_idle_time_percentgaugeinstance, ins, job, ip, clsPercentage of last second spent waiting in the current worker thread
haproxy_process_jobsgaugeinstance, ins, job, ip, clsCurrent number of active jobs on the current worker process (frontend connections, master connections, listeners)
haproxy_process_limit_connection_rategaugeinstance, ins, job, ip, clsHard limit for ConnRate (global.maxconnrate)
haproxy_process_limit_http_compgaugeinstance, ins, job, ip, clsLimit of CompressBpsOut beyond which HTTP compression is automatically disabled
haproxy_process_limit_session_rategaugeinstance, ins, job, ip, clsHard limit for SessRate (global.maxsessrate)
haproxy_process_limit_ssl_rategaugeinstance, ins, job, ip, clsHard limit for SslRate (global.maxsslrate)
haproxy_process_listenersgaugeinstance, ins, job, ip, clsCurrent number of active listeners on the current worker process
haproxy_process_max_backend_ssl_key_rategaugeinstance, ins, job, ip, clsHighest SslBackendKeyRate reached on this worker process since started (in SSL keys per second)
haproxy_process_max_connection_rategaugeinstance, ins, job, ip, clsHighest ConnRate reached on this worker process since started (in connections per second)
haproxy_process_max_connectionsgaugeinstance, ins, job, ip, clsHard limit on the number of per-process connections (configured or imposed by Ulimit-n)
haproxy_process_max_fdsgaugeinstance, ins, job, ip, clsHard limit on the number of per-process file descriptors
haproxy_process_max_frontend_ssl_key_rategaugeinstance, ins, job, ip, clsHighest SslFrontendKeyRate reached on this worker process since started (in SSL keys per second)
haproxy_process_max_memory_bytesgaugeinstance, ins, job, ip, clsWorker process’s hard limit on memory usage in byes (-m on command line)
haproxy_process_max_pipesgaugeinstance, ins, job, ip, clsHard limit on the number of pipes for splicing, 0=unlimited
haproxy_process_max_session_rategaugeinstance, ins, job, ip, clsHighest SessRate reached on this worker process since started (in sessions per second)
haproxy_process_max_socketsgaugeinstance, ins, job, ip, clsHard limit on the number of per-process sockets
haproxy_process_max_ssl_connectionsgaugeinstance, ins, job, ip, clsHard limit on the number of per-process SSL endpoints (front+back), 0=unlimited
haproxy_process_max_ssl_rategaugeinstance, ins, job, ip, clsHighest SslRate reached on this worker process since started (in connections per second)
haproxy_process_max_zlib_memorygaugeinstance, ins, job, ip, clsLimit on the amount of memory used by HTTP compression above which it is automatically disabled (in bytes, see global.maxzlibmem)
haproxy_process_nbprocgaugeinstance, ins, job, ip, clsNumber of started worker processes (historical, always 1)
haproxy_process_nbthreadgaugeinstance, ins, job, ip, clsNumber of started threads (global.nbthread)
haproxy_process_pipes_free_totalcounterinstance, ins, job, ip, clsCurrent number of allocated and available pipes in this worker process
haproxy_process_pipes_used_totalcounterinstance, ins, job, ip, clsCurrent number of pipes in use in this worker process
haproxy_process_pool_allocated_bytesgaugeinstance, ins, job, ip, clsAmount of memory allocated in pools (in bytes)
haproxy_process_pool_failures_totalcounterinstance, ins, job, ip, clsNumber of failed pool allocations since this worker was started
haproxy_process_pool_used_bytesgaugeinstance, ins, job, ip, clsAmount of pool memory currently used (in bytes)
haproxy_process_recv_logs_totalcounterinstance, ins, job, ip, clsTotal number of log messages received by log-forwarding listeners on this worker process since started
haproxy_process_relative_process_idgaugeinstance, ins, job, ip, clsRelative worker process number (1)
haproxy_process_requests_totalcounterinstance, ins, job, ip, clsTotal number of requests on this worker process since started
haproxy_process_spliced_bytes_out_totalcounterinstance, ins, job, ip, clsTotal number of bytes emitted by current worker process through a kernel pipe since started
haproxy_process_ssl_cache_lookups_totalcounterinstance, ins, job, ip, clsTotal number of SSL session ID lookups in the SSL session cache on this worker since started
haproxy_process_ssl_cache_misses_totalcounterinstance, ins, job, ip, clsTotal number of SSL session ID lookups that didn’t find a session in the SSL session cache on this worker since started
haproxy_process_ssl_connections_totalcounterinstance, ins, job, ip, clsTotal number of SSL endpoints on this worker process since started (front+back)
haproxy_process_start_time_secondsgaugeinstance, ins, job, ip, clsStart time in seconds
haproxy_process_stoppinggaugeinstance, ins, job, ip, cls1 if the worker process is currently stopping, otherwise zero
haproxy_process_unstoppable_jobsgaugeinstance, ins, job, ip, clsCurrent number of unstoppable jobs on the current worker process (master connections)
haproxy_process_uptime_secondsgaugeinstance, ins, job, ip, clsHow long ago this worker process was started (seconds)
haproxy_server_bytes_in_totalcounterproxy, instance, ins, job, server, ip, clsTotal number of request bytes since process started
haproxy_server_bytes_out_totalcounterproxy, instance, ins, job, server, ip, clsTotal number of response bytes since process started
haproxy_server_check_codegaugeproxy, instance, ins, job, server, ip, clslayer5-7 code, if available of the last health check.
haproxy_server_check_duration_secondsgaugeproxy, instance, ins, job, server, ip, clsTotal duration of the latest server health check, in seconds.
haproxy_server_check_failures_totalcounterproxy, instance, ins, job, server, ip, clsTotal number of failed individual health checks per server/backend, since the worker process started
haproxy_server_check_last_change_secondsgaugeproxy, instance, ins, job, server, ip, clsHow long ago the last server state changed, in seconds
haproxy_server_check_statusgaugestate, proxy, instance, ins, job, server, ip, clsStatus of last health check, per state label value.
haproxy_server_check_up_down_totalcounterproxy, instance, ins, job, server, ip, clsTotal number of failed checks causing UP to DOWN server transitions, per server/backend, since the worker process started
haproxy_server_client_aborts_totalcounterproxy, instance, ins, job, server, ip, clsTotal number of requests or connections aborted by the client since the worker process started
haproxy_server_connect_time_average_secondsgaugeproxy, instance, ins, job, server, ip, clsAvg. connect time for last 1024 successful connections.
haproxy_server_connection_attempts_totalcounterproxy, instance, ins, job, server, ip, clsTotal number of outgoing connection attempts on this backend/server since the worker process started
haproxy_server_connection_errors_totalcounterproxy, instance, ins, job, server, ip, clsTotal number of failed connections to server since the worker process started
haproxy_server_connection_reuses_totalcounterproxy, instance, ins, job, server, ip, clsTotal number of reused connection on this backend/server since the worker process started
haproxy_server_current_queuegaugeproxy, instance, ins, job, server, ip, clsNumber of current queued connections
haproxy_server_current_sessionsgaugeproxy, instance, ins, job, server, ip, clsNumber of current sessions on the frontend, backend or server
haproxy_server_current_throttlegaugeproxy, instance, ins, job, server, ip, clsThrottling ratio applied to a server’s maxconn and weight during the slowstart period (0 to 100%)
haproxy_server_downtime_seconds_totalcounterproxy, instance, ins, job, server, ip, clsTotal time spent in DOWN state, for server or backend
haproxy_server_failed_header_rewriting_totalcounterproxy, instance, ins, job, server, ip, clsTotal number of failed HTTP header rewrites since the worker process started
haproxy_server_idle_connections_currentgaugeproxy, instance, ins, job, server, ip, clsCurrent number of idle connections available for reuse on this server
haproxy_server_idle_connections_limitgaugeproxy, instance, ins, job, server, ip, clsLimit on the number of available idle connections on this server (server ‘pool_max_conn’ directive)
haproxy_server_internal_errors_totalcounterproxy, instance, ins, job, server, ip, clsTotal number of internal errors since process started
haproxy_server_last_session_secondsgaugeproxy, instance, ins, job, server, ip, clsHow long ago some traffic was seen on this object on this worker process, in seconds
haproxy_server_limit_sessionsgaugeproxy, instance, ins, job, server, ip, clsFrontend/listener/server’s maxconn, backend’s fullconn
haproxy_server_loadbalanced_totalcounterproxy, instance, ins, job, server, ip, clsTotal number of requests routed by load balancing since the worker process started (ignores queue pop and stickiness)
haproxy_server_max_connect_time_secondsgaugeproxy, instance, ins, job, server, ip, clsMaximum observed time spent waiting for a connection to complete
haproxy_server_max_queuegaugeproxy, instance, ins, job, server, ip, clsHighest value of queued connections encountered since process started
haproxy_server_max_queue_time_secondsgaugeproxy, instance, ins, job, server, ip, clsMaximum observed time spent in the queue
haproxy_server_max_response_time_secondsgaugeproxy, instance, ins, job, server, ip, clsMaximum observed time spent waiting for a server response
haproxy_server_max_session_rategaugeproxy, instance, ins, job, server, ip, clsHighest value of sessions per second observed since the worker process started
haproxy_server_max_sessionsgaugeproxy, instance, ins, job, server, ip, clsHighest value of current sessions encountered since process started
haproxy_server_max_total_time_secondsgaugeproxy, instance, ins, job, server, ip, clsMaximum observed total request+response time (request+queue+connect+response+processing)
haproxy_server_need_connections_currentgaugeproxy, instance, ins, job, server, ip, clsEstimated needed number of connections
haproxy_server_queue_limitgaugeproxy, instance, ins, job, server, ip, clsLimit on the number of connections in queue, for servers only (maxqueue argument)
haproxy_server_queue_time_average_secondsgaugeproxy, instance, ins, job, server, ip, clsAvg. queue time for last 1024 successful connections.
haproxy_server_redispatch_warnings_totalcounterproxy, instance, ins, job, server, ip, clsTotal number of server redispatches due to connection failures since the worker process started
haproxy_server_response_errors_totalcounterproxy, instance, ins, job, server, ip, clsTotal number of invalid responses since the worker process started
haproxy_server_response_time_average_secondsgaugeproxy, instance, ins, job, server, ip, clsAvg. response time for last 1024 successful connections.
haproxy_server_responses_denied_totalcounterproxy, instance, ins, job, server, ip, clsTotal number of denied responses since process started
haproxy_server_retry_warnings_totalcounterproxy, instance, ins, job, server, ip, clsTotal number of server connection retries since the worker process started
haproxy_server_safe_idle_connections_currentgaugeproxy, instance, ins, job, server, ip, clsCurrent number of safe idle connections
haproxy_server_server_aborts_totalcounterproxy, instance, ins, job, server, ip, clsTotal number of requests or connections aborted by the server since the worker process started
haproxy_server_sessions_totalcounterproxy, instance, ins, job, server, ip, clsTotal number of sessions since process started
haproxy_server_statusgaugestate, proxy, instance, ins, job, server, ip, clsCurrent status of the service, per state label value.
haproxy_server_total_time_average_secondsgaugeproxy, instance, ins, job, server, ip, clsAvg. total time for last 1024 successful connections.
haproxy_server_unsafe_idle_connections_currentgaugeproxy, instance, ins, job, server, ip, clsCurrent number of unsafe idle connections
haproxy_server_used_connections_currentgaugeproxy, instance, ins, job, server, ip, clsCurrent number of connections in use
haproxy_server_uweightgaugeproxy, instance, ins, job, server, ip, clsServer’s user weight, or sum of active servers’ user weights for a backend
haproxy_server_weightgaugeproxy, instance, ins, job, server, ip, clsServer’s effective weight, or sum of active servers’ effective weights for a backend
haproxy_upUnknowninstance, ins, job, ip, clsN/A
inflight_requestsgaugeinstance, ins, job, route, ip, cls, methodCurrent number of inflight requests.
jaeger_tracer_baggage_restrictions_updates_totalUnknowninstance, ins, job, result, ip, clsN/A
jaeger_tracer_baggage_truncations_totalUnknowninstance, ins, job, ip, clsN/A
jaeger_tracer_baggage_updates_totalUnknowninstance, ins, job, result, ip, clsN/A
jaeger_tracer_finished_spans_totalUnknowninstance, ins, job, sampled, ip, clsN/A
jaeger_tracer_reporter_queue_lengthgaugeinstance, ins, job, ip, clsCurrent number of spans in the reporter queue
jaeger_tracer_reporter_spans_totalUnknowninstance, ins, job, result, ip, clsN/A
jaeger_tracer_sampler_queries_totalUnknowninstance, ins, job, result, ip, clsN/A
jaeger_tracer_sampler_updates_totalUnknowninstance, ins, job, result, ip, clsN/A
jaeger_tracer_span_context_decoding_errors_totalUnknowninstance, ins, job, ip, clsN/A
jaeger_tracer_started_spans_totalUnknowninstance, ins, job, sampled, ip, clsN/A
jaeger_tracer_throttled_debug_spans_totalUnknowninstance, ins, job, ip, clsN/A
jaeger_tracer_throttler_updates_totalUnknowninstance, ins, job, result, ip, clsN/A
jaeger_tracer_traces_totalUnknownstate, instance, ins, job, sampled, ip, clsN/A
loki_experimental_features_in_use_totalUnknowninstance, ins, job, ip, clsN/A
loki_internal_log_messages_totalUnknownlevel, instance, ins, job, ip, clsN/A
loki_log_flushes_bucketUnknowninstance, ins, job, le, ip, clsN/A
loki_log_flushes_countUnknowninstance, ins, job, ip, clsN/A
loki_log_flushes_sumUnknowninstance, ins, job, ip, clsN/A
loki_log_messages_totalUnknownlevel, instance, ins, job, ip, clsN/A
loki_logql_querystats_duplicates_totalUnknowninstance, ins, job, ip, clsN/A
loki_logql_querystats_ingester_sent_lines_totalUnknowninstance, ins, job, ip, clsN/A
loki_querier_index_cache_corruptions_totalUnknowninstance, ins, job, ip, clsN/A
loki_querier_index_cache_encode_errors_totalUnknowninstance, ins, job, ip, clsN/A
loki_querier_index_cache_gets_totalUnknowninstance, ins, job, ip, clsN/A
loki_querier_index_cache_hits_totalUnknowninstance, ins, job, ip, clsN/A
loki_querier_index_cache_puts_totalUnknowninstance, ins, job, ip, clsN/A
net_conntrack_dialer_conn_attempted_totalcounterip, ins, job, instance, cls, dialer_nameTotal number of connections attempted by the given dialer a given name.
net_conntrack_dialer_conn_closed_totalcounterip, ins, job, instance, cls, dialer_nameTotal number of connections closed which originated from the dialer of a given name.
net_conntrack_dialer_conn_established_totalcounterip, ins, job, instance, cls, dialer_nameTotal number of connections successfully established by the given dialer a given name.
net_conntrack_dialer_conn_failed_totalcounterip, ins, job, reason, instance, cls, dialer_nameTotal number of connections failed to dial by the dialer a given name.
node:cls:avail_bytesUnknownjob, clsN/A
node:cls:cpu_countUnknownjob, clsN/A
node:cls:cpu_usageUnknownjob, clsN/A
node:cls:cpu_usage_15mUnknownjob, clsN/A
node:cls:cpu_usage_1mUnknownjob, clsN/A
node:cls:cpu_usage_5mUnknownjob, clsN/A
node:cls:disk_io_bytes_rate1mUnknownjob, clsN/A
node:cls:disk_iops_1mUnknownjob, clsN/A
node:cls:disk_mreads_rate1mUnknownjob, clsN/A
node:cls:disk_mreads_ratio1mUnknownjob, clsN/A
node:cls:disk_mwrites_rate1mUnknownjob, clsN/A
node:cls:disk_mwrites_ratio1mUnknownjob, clsN/A
node:cls:disk_read_bytes_rate1mUnknownjob, clsN/A
node:cls:disk_reads_rate1mUnknownjob, clsN/A
node:cls:disk_write_bytes_rate1mUnknownjob, clsN/A
node:cls:disk_writes_rate1mUnknownjob, clsN/A
node:cls:free_bytesUnknownjob, clsN/A
node:cls:mem_usageUnknownjob, clsN/A
node:cls:network_io_bytes_rate1mUnknownjob, clsN/A
node:cls:network_rx_bytes_rate1mUnknownjob, clsN/A
node:cls:network_rx_pps1mUnknownjob, clsN/A
node:cls:network_tx_bytes_rate1mUnknownjob, clsN/A
node:cls:network_tx_pps1mUnknownjob, clsN/A
node:cls:size_bytesUnknownjob, clsN/A
node:cls:space_usageUnknownjob, clsN/A
node:cls:space_usage_maxUnknownjob, clsN/A
node:cls:stdload1Unknownjob, clsN/A
node:cls:stdload15Unknownjob, clsN/A
node:cls:stdload5Unknownjob, clsN/A
node:cls:time_drift_maxUnknownjob, clsN/A
node:cpu:idle_time_irate1mUnknownip, ins, job, cpu, instance, clsN/A
node:cpu:sched_timeslices_rate1mUnknownip, ins, job, cpu, instance, clsN/A
node:cpu:sched_wait_rate1mUnknownip, ins, job, cpu, instance, clsN/A
node:cpu:time_irate1mUnknownip, mode, ins, job, cpu, instance, clsN/A
node:cpu:total_time_irate1mUnknownip, ins, job, cpu, instance, clsN/A
node:cpu:usageUnknownip, ins, job, cpu, instance, clsN/A
node:cpu:usage_avg15mUnknownip, ins, job, cpu, instance, clsN/A
node:cpu:usage_avg1mUnknownip, ins, job, cpu, instance, clsN/A
node:cpu:usage_avg5mUnknownip, ins, job, cpu, instance, clsN/A
node:dev:disk_avg_queue_sizeUnknownip, device, ins, job, instance, clsN/A
node:dev:disk_io_batch_1mUnknownip, device, ins, job, instance, clsN/A
node:dev:disk_io_bytes_rate1mUnknownip, device, ins, job, instance, clsN/A
node:dev:disk_io_rt_1mUnknownip, device, ins, job, instance, clsN/A
node:dev:disk_io_time_rate1mUnknownip, device, ins, job, instance, clsN/A
node:dev:disk_iops_1mUnknownip, device, ins, job, instance, clsN/A
node:dev:disk_mreads_rate1mUnknownip, device, ins, job, instance, clsN/A
node:dev:disk_mreads_ratio1mUnknownip, device, ins, job, instance, clsN/A
node:dev:disk_mwrites_rate1mUnknownip, device, ins, job, instance, clsN/A
node:dev:disk_mwrites_ratio1mUnknownip, device, ins, job, instance, clsN/A
node:dev:disk_read_batch_1mUnknownip, device, ins, job, instance, clsN/A
node:dev:disk_read_bytes_rate1mUnknownip, device, ins, job, instance, clsN/A
node:dev:disk_read_rt_1mUnknownip, device, ins, job, instance, clsN/A
node:dev:disk_read_time_rate1mUnknownip, device, ins, job, instance, clsN/A
node:dev:disk_reads_rate1mUnknownip, device, ins, job, instance, clsN/A
node:dev:disk_util_1mUnknownip, device, ins, job, instance, clsN/A
node:dev:disk_write_batch_1mUnknownip, device, ins, job, instance, clsN/A
node:dev:disk_write_bytes_rate1mUnknownip, device, ins, job, instance, clsN/A
node:dev:disk_write_rt_1mUnknownip, device, ins, job, instance, clsN/A
node:dev:disk_write_time_rate1mUnknownip, device, ins, job, instance, clsN/A
node:dev:disk_writes_rate1mUnknownip, device, ins, job, instance, clsN/A
node:dev:network_io_bytes_rate1mUnknownip, device, ins, job, instance, clsN/A
node:dev:network_rx_bytes_rate1mUnknownip, device, ins, job, instance, clsN/A
node:dev:network_rx_pps1mUnknownip, device, ins, job, instance, clsN/A
node:dev:network_tx_bytes_rate1mUnknownip, device, ins, job, instance, clsN/A
node:dev:network_tx_pps1mUnknownip, device, ins, job, instance, clsN/A
node:env:avail_bytesUnknownjobN/A
node:env:cpu_countUnknownjobN/A
node:env:cpu_usageUnknownjobN/A
node:env:cpu_usage_15mUnknownjobN/A
node:env:cpu_usage_1mUnknownjobN/A
node:env:cpu_usage_5mUnknownjobN/A
node:env:device_space_usage_maxUnknowndevice, mountpoint, job, fstypeN/A
node:env:free_bytesUnknownjobN/A
node:env:mem_availUnknownjobN/A
node:env:mem_totalUnknownjobN/A
node:env:mem_usageUnknownjobN/A
node:env:size_bytesUnknownjobN/A
node:env:space_usageUnknownjobN/A
node:env:stdload1UnknownjobN/A
node:env:stdload15UnknownjobN/A
node:env:stdload5UnknownjobN/A
node:fs:avail_bytesUnknownip, device, mountpoint, ins, cls, job, instance, fstypeN/A
node:fs:free_bytesUnknownip, device, mountpoint, ins, cls, job, instance, fstypeN/A
node:fs:inode_freeUnknownip, device, mountpoint, ins, cls, job, instance, fstypeN/A
node:fs:inode_totalUnknownip, device, mountpoint, ins, cls, job, instance, fstypeN/A
node:fs:inode_usageUnknownip, device, mountpoint, ins, cls, job, instance, fstypeN/A
node:fs:inode_usedUnknownip, device, mountpoint, ins, cls, job, instance, fstypeN/A
node:fs:size_bytesUnknownip, device, mountpoint, ins, cls, job, instance, fstypeN/A
node:fs:space_deriv1hUnknownip, device, mountpoint, ins, cls, job, instance, fstypeN/A
node:fs:space_exhaustUnknownip, device, mountpoint, ins, cls, job, instance, fstypeN/A
node:fs:space_predict_1dUnknownip, device, mountpoint, ins, cls, job, instance, fstypeN/A
node:fs:space_usageUnknownip, device, mountpoint, ins, cls, job, instance, fstypeN/A
node:insUnknownid, ip, ins, job, nodename, instance, clsN/A
node:ins:avail_bytesUnknowninstance, ins, job, ip, clsN/A
node:ins:cpu_countUnknowninstance, ins, job, ip, clsN/A
node:ins:cpu_usageUnknowninstance, ins, job, ip, clsN/A
node:ins:cpu_usage_15mUnknowninstance, ins, job, ip, clsN/A
node:ins:cpu_usage_1mUnknowninstance, ins, job, ip, clsN/A
node:ins:cpu_usage_5mUnknowninstance, ins, job, ip, clsN/A
node:ins:ctx_switch_rate1mUnknowninstance, ins, job, ip, clsN/A
node:ins:disk_io_bytes_rate1mUnknowninstance, ins, job, ip, clsN/A
node:ins:disk_iops_1mUnknowninstance, ins, job, ip, clsN/A
node:ins:disk_mreads_rate1mUnknowninstance, ins, job, ip, clsN/A
node:ins:disk_mreads_ratio1mUnknowninstance, ins, job, ip, clsN/A
node:ins:disk_mwrites_rate1mUnknowninstance, ins, job, ip, clsN/A
node:ins:disk_mwrites_ratio1mUnknowninstance, ins, job, ip, clsN/A
node:ins:disk_read_bytes_rate1mUnknowninstance, ins, job, ip, clsN/A
node:ins:disk_reads_rate1mUnknowninstance, ins, job, ip, clsN/A
node:ins:disk_write_bytes_rate1mUnknowninstance, ins, job, ip, clsN/A
node:ins:disk_writes_rate1mUnknowninstance, ins, job, ip, clsN/A
node:ins:fd_alloc_rate1mUnknowninstance, ins, job, ip, clsN/A
node:ins:fd_usageUnknowninstance, ins, job, ip, clsN/A
node:ins:forks_rate1mUnknowninstance, ins, job, ip, clsN/A
node:ins:free_bytesUnknowninstance, ins, job, ip, clsN/A
node:ins:inode_usageUnknowninstance, ins, job, ip, clsN/A
node:ins:interrupt_rate1mUnknowninstance, ins, job, ip, clsN/A
node:ins:mem_availUnknowninstance, ins, job, ip, clsN/A
node:ins:mem_commit_ratioUnknowninstance, ins, job, ip, clsN/A
node:ins:mem_kernelUnknowninstance, ins, job, ip, clsN/A
node:ins:mem_rssUnknowninstance, ins, job, ip, clsN/A
node:ins:mem_usageUnknowninstance, ins, job, ip, clsN/A
node:ins:network_io_bytes_rate1mUnknowninstance, ins, job, ip, clsN/A
node:ins:network_rx_bytes_rate1mUnknowninstance, ins, job, ip, clsN/A
node:ins:network_rx_pps1mUnknowninstance, ins, job, ip, clsN/A
node:ins:network_tx_bytes_rate1mUnknowninstance, ins, job, ip, clsN/A
node:ins:network_tx_pps1mUnknowninstance, ins, job, ip, clsN/A
node:ins:pagefault_rate1mUnknowninstance, ins, job, ip, clsN/A
node:ins:pagein_rate1mUnknowninstance, ins, job, ip, clsN/A
node:ins:pageout_rate1mUnknowninstance, ins, job, ip, clsN/A
node:ins:pgmajfault_rate1mUnknowninstance, ins, job, ip, clsN/A
node:ins:sched_wait_rate1mUnknowninstance, ins, job, ip, clsN/A
node:ins:size_bytesUnknowninstance, ins, job, ip, clsN/A
node:ins:space_usage_maxUnknowninstance, ins, job, ip, clsN/A
node:ins:stdload1Unknowninstance, ins, job, ip, clsN/A
node:ins:stdload15Unknowninstance, ins, job, ip, clsN/A
node:ins:stdload5Unknowninstance, ins, job, ip, clsN/A
node:ins:swap_usageUnknowninstance, ins, job, ip, clsN/A
node:ins:swapin_rate1mUnknowninstance, ins, job, ip, clsN/A
node:ins:swapout_rate1mUnknowninstance, ins, job, ip, clsN/A
node:ins:tcp_active_opens_rate1mUnknowninstance, ins, job, ip, clsN/A
node:ins:tcp_dropped_rate1mUnknowninstance, ins, job, ip, clsN/A
node:ins:tcp_errorUnknowninstance, ins, job, ip, clsN/A
node:ins:tcp_error_rate1mUnknowninstance, ins, job, ip, clsN/A
node:ins:tcp_insegs_rate1mUnknowninstance, ins, job, ip, clsN/A
node:ins:tcp_outsegs_rate1mUnknowninstance, ins, job, ip, clsN/A
node:ins:tcp_overflow_rate1mUnknowninstance, ins, job, ip, clsN/A
node:ins:tcp_passive_opens_rate1mUnknowninstance, ins, job, ip, clsN/A
node:ins:tcp_retrans_ratio1mUnknowninstance, ins, job, ip, clsN/A
node:ins:tcp_retranssegs_rate1mUnknowninstance, ins, job, ip, clsN/A
node:ins:tcp_segs_rate1mUnknowninstance, ins, job, ip, clsN/A
node:ins:time_driftUnknowninstance, ins, job, ip, clsN/A
node:ins:udp_in_rate1mUnknowninstance, ins, job, ip, clsN/A
node:ins:udp_out_rate1mUnknowninstance, ins, job, ip, clsN/A
node:ins:uptimeUnknowninstance, ins, job, ip, clsN/A
node_arp_entriesgaugeip, device, ins, job, instance, clsARP entries by device
node_boot_time_secondsgaugeinstance, ins, job, ip, clsNode boot time, in unixtime.
node_context_switches_totalcounterinstance, ins, job, ip, clsTotal number of context switches.
node_cooling_device_cur_stategaugeinstance, ins, job, type, ip, clsCurrent throttle state of the cooling device
node_cooling_device_max_stategaugeinstance, ins, job, type, ip, clsMaximum throttle state of the cooling device
node_cpu_guest_seconds_totalcounterip, mode, ins, job, cpu, instance, clsSeconds the CPUs spent in guests (VMs) for each mode.
node_cpu_seconds_totalcounterip, mode, ins, job, cpu, instance, clsSeconds the CPUs spent in each mode.
node_disk_discard_time_seconds_totalcounterip, device, ins, job, instance, clsThis is the total number of seconds spent by all discards.
node_disk_discarded_sectors_totalcounterip, device, ins, job, instance, clsThe total number of sectors discarded successfully.
node_disk_discards_completed_totalcounterip, device, ins, job, instance, clsThe total number of discards completed successfully.
node_disk_discards_merged_totalcounterip, device, ins, job, instance, clsThe total number of discards merged.
node_disk_filesystem_infogaugeip, usage, version, device, uuid, ins, type, job, instance, clsInfo about disk filesystem.
node_disk_infogaugeminor, ip, major, revision, device, model, serial, path, ins, job, instance, clsInfo of /sys/block/<block_device>.
node_disk_io_nowgaugeip, device, ins, job, instance, clsThe number of I/Os currently in progress.
node_disk_io_time_seconds_totalcounterip, device, ins, job, instance, clsTotal seconds spent doing I/Os.
node_disk_io_time_weighted_seconds_totalcounterip, device, ins, job, instance, clsThe weighted # of seconds spent doing I/Os.
node_disk_read_bytes_totalcounterip, device, ins, job, instance, clsThe total number of bytes read successfully.
node_disk_read_time_seconds_totalcounterip, device, ins, job, instance, clsThe total number of seconds spent by all reads.
node_disk_reads_completed_totalcounterip, device, ins, job, instance, clsThe total number of reads completed successfully.
node_disk_reads_merged_totalcounterip, device, ins, job, instance, clsThe total number of reads merged.
node_disk_write_time_seconds_totalcounterip, device, ins, job, instance, clsThis is the total number of seconds spent by all writes.
node_disk_writes_completed_totalcounterip, device, ins, job, instance, clsThe total number of writes completed successfully.
node_disk_writes_merged_totalcounterip, device, ins, job, instance, clsThe number of writes merged.
node_disk_written_bytes_totalcounterip, device, ins, job, instance, clsThe total number of bytes written successfully.
node_dmi_infogaugebios_vendor, ip, product_family, product_version, product_uuid, system_vendor, bios_version, ins, bios_date, cls, job, product_name, instance, chassis_version, chassis_vendor, product_serialA metric with a constant ‘1’ value labeled by bios_date, bios_release, bios_vendor, bios_version, board_asset_tag, board_name, board_serial, board_vendor, board_version, chassis_asset_tag, chassis_serial, chassis_vendor, chassis_version, product_family, product_name, product_serial, product_sku, product_uuid, product_version, system_vendor if provided by DMI.
node_entropy_available_bitsgaugeinstance, ins, job, ip, clsBits of available entropy.
node_entropy_pool_size_bitsgaugeinstance, ins, job, ip, clsBits of entropy pool.
node_exporter_build_infogaugeip, version, revision, goversion, branch, ins, goarch, job, tags, instance, cls, goosA metric with a constant ‘1’ value labeled by version, revision, branch, goversion from which node_exporter was built, and the goos and goarch for the build.
node_filefd_allocatedgaugeinstance, ins, job, ip, clsFile descriptor statistics: allocated.
node_filefd_maximumgaugeinstance, ins, job, ip, clsFile descriptor statistics: maximum.
node_filesystem_avail_bytesgaugeip, device, mountpoint, ins, cls, job, instance, fstypeFilesystem space available to non-root users in bytes.
node_filesystem_device_errorgaugeip, device, mountpoint, ins, cls, job, instance, fstypeWhether an error occurred while getting statistics for the given device.
node_filesystem_filesgaugeip, device, mountpoint, ins, cls, job, instance, fstypeFilesystem total file nodes.
node_filesystem_files_freegaugeip, device, mountpoint, ins, cls, job, instance, fstypeFilesystem total free file nodes.
node_filesystem_free_bytesgaugeip, device, mountpoint, ins, cls, job, instance, fstypeFilesystem free space in bytes.
node_filesystem_readonlygaugeip, device, mountpoint, ins, cls, job, instance, fstypeFilesystem read-only status.
node_filesystem_size_bytesgaugeip, device, mountpoint, ins, cls, job, instance, fstypeFilesystem size in bytes.
node_forks_totalcounterinstance, ins, job, ip, clsTotal number of forks.
node_hwmon_chip_namesgaugechip_name, ip, ins, chip, job, instance, clsAnnotation metric for human-readable chip names
node_hwmon_energy_joule_totalcountersensor, ip, ins, chip, job, instance, clsHardware monitor for joules used so far (input)
node_hwmon_sensor_labelgaugesensor, ip, ins, chip, job, label, instance, clsLabel for given chip and sensor
node_intr_totalcounterinstance, ins, job, ip, clsTotal number of interrupts serviced.
node_ipvs_connections_totalcounterinstance, ins, job, ip, clsThe total number of connections made.
node_ipvs_incoming_bytes_totalcounterinstance, ins, job, ip, clsThe total amount of incoming data.
node_ipvs_incoming_packets_totalcounterinstance, ins, job, ip, clsThe total number of incoming packets.
node_ipvs_outgoing_bytes_totalcounterinstance, ins, job, ip, clsThe total amount of outgoing data.
node_ipvs_outgoing_packets_totalcounterinstance, ins, job, ip, clsThe total number of outgoing packets.
node_load1gaugeinstance, ins, job, ip, cls1m load average.
node_load15gaugeinstance, ins, job, ip, cls15m load average.
node_load5gaugeinstance, ins, job, ip, cls5m load average.
node_memory_Active_anon_bytesgaugeinstance, ins, job, ip, clsMemory information field Active_anon_bytes.
node_memory_Active_bytesgaugeinstance, ins, job, ip, clsMemory information field Active_bytes.
node_memory_Active_file_bytesgaugeinstance, ins, job, ip, clsMemory information field Active_file_bytes.
node_memory_AnonHugePages_bytesgaugeinstance, ins, job, ip, clsMemory information field AnonHugePages_bytes.
node_memory_AnonPages_bytesgaugeinstance, ins, job, ip, clsMemory information field AnonPages_bytes.
node_memory_Bounce_bytesgaugeinstance, ins, job, ip, clsMemory information field Bounce_bytes.
node_memory_Buffers_bytesgaugeinstance, ins, job, ip, clsMemory information field Buffers_bytes.
node_memory_Cached_bytesgaugeinstance, ins, job, ip, clsMemory information field Cached_bytes.
node_memory_CommitLimit_bytesgaugeinstance, ins, job, ip, clsMemory information field CommitLimit_bytes.
node_memory_Committed_AS_bytesgaugeinstance, ins, job, ip, clsMemory information field Committed_AS_bytes.
node_memory_DirectMap1G_bytesgaugeinstance, ins, job, ip, clsMemory information field DirectMap1G_bytes.
node_memory_DirectMap2M_bytesgaugeinstance, ins, job, ip, clsMemory information field DirectMap2M_bytes.
node_memory_DirectMap4k_bytesgaugeinstance, ins, job, ip, clsMemory information field DirectMap4k_bytes.
node_memory_Dirty_bytesgaugeinstance, ins, job, ip, clsMemory information field Dirty_bytes.
node_memory_FileHugePages_bytesgaugeinstance, ins, job, ip, clsMemory information field FileHugePages_bytes.
node_memory_FilePmdMapped_bytesgaugeinstance, ins, job, ip, clsMemory information field FilePmdMapped_bytes.
node_memory_HardwareCorrupted_bytesgaugeinstance, ins, job, ip, clsMemory information field HardwareCorrupted_bytes.
node_memory_HugePages_Freegaugeinstance, ins, job, ip, clsMemory information field HugePages_Free.
node_memory_HugePages_Rsvdgaugeinstance, ins, job, ip, clsMemory information field HugePages_Rsvd.
node_memory_HugePages_Surpgaugeinstance, ins, job, ip, clsMemory information field HugePages_Surp.
node_memory_HugePages_Totalgaugeinstance, ins, job, ip, clsMemory information field HugePages_Total.
node_memory_Hugepagesize_bytesgaugeinstance, ins, job, ip, clsMemory information field Hugepagesize_bytes.
node_memory_Hugetlb_bytesgaugeinstance, ins, job, ip, clsMemory information field Hugetlb_bytes.
node_memory_Inactive_anon_bytesgaugeinstance, ins, job, ip, clsMemory information field Inactive_anon_bytes.
node_memory_Inactive_bytesgaugeinstance, ins, job, ip, clsMemory information field Inactive_bytes.
node_memory_Inactive_file_bytesgaugeinstance, ins, job, ip, clsMemory information field Inactive_file_bytes.
node_memory_KReclaimable_bytesgaugeinstance, ins, job, ip, clsMemory information field KReclaimable_bytes.
node_memory_KernelStack_bytesgaugeinstance, ins, job, ip, clsMemory information field KernelStack_bytes.
node_memory_Mapped_bytesgaugeinstance, ins, job, ip, clsMemory information field Mapped_bytes.
node_memory_MemAvailable_bytesgaugeinstance, ins, job, ip, clsMemory information field MemAvailable_bytes.
node_memory_MemFree_bytesgaugeinstance, ins, job, ip, clsMemory information field MemFree_bytes.
node_memory_MemTotal_bytesgaugeinstance, ins, job, ip, clsMemory information field MemTotal_bytes.
node_memory_Mlocked_bytesgaugeinstance, ins, job, ip, clsMemory information field Mlocked_bytes.
node_memory_NFS_Unstable_bytesgaugeinstance, ins, job, ip, clsMemory information field NFS_Unstable_bytes.
node_memory_PageTables_bytesgaugeinstance, ins, job, ip, clsMemory information field PageTables_bytes.
node_memory_Percpu_bytesgaugeinstance, ins, job, ip, clsMemory information field Percpu_bytes.
node_memory_SReclaimable_bytesgaugeinstance, ins, job, ip, clsMemory information field SReclaimable_bytes.
node_memory_SUnreclaim_bytesgaugeinstance, ins, job, ip, clsMemory information field SUnreclaim_bytes.
node_memory_ShmemHugePages_bytesgaugeinstance, ins, job, ip, clsMemory information field ShmemHugePages_bytes.
node_memory_ShmemPmdMapped_bytesgaugeinstance, ins, job, ip, clsMemory information field ShmemPmdMapped_bytes.
node_memory_Shmem_bytesgaugeinstance, ins, job, ip, clsMemory information field Shmem_bytes.
node_memory_Slab_bytesgaugeinstance, ins, job, ip, clsMemory information field Slab_bytes.
node_memory_SwapCached_bytesgaugeinstance, ins, job, ip, clsMemory information field SwapCached_bytes.
node_memory_SwapFree_bytesgaugeinstance, ins, job, ip, clsMemory information field SwapFree_bytes.
node_memory_SwapTotal_bytesgaugeinstance, ins, job, ip, clsMemory information field SwapTotal_bytes.
node_memory_Unevictable_bytesgaugeinstance, ins, job, ip, clsMemory information field Unevictable_bytes.
node_memory_VmallocChunk_bytesgaugeinstance, ins, job, ip, clsMemory information field VmallocChunk_bytes.
node_memory_VmallocTotal_bytesgaugeinstance, ins, job, ip, clsMemory information field VmallocTotal_bytes.
node_memory_VmallocUsed_bytesgaugeinstance, ins, job, ip, clsMemory information field VmallocUsed_bytes.
node_memory_WritebackTmp_bytesgaugeinstance, ins, job, ip, clsMemory information field WritebackTmp_bytes.
node_memory_Writeback_bytesgaugeinstance, ins, job, ip, clsMemory information field Writeback_bytes.
node_netstat_Icmp6_InErrorsunknowninstance, ins, job, ip, clsStatistic Icmp6InErrors.
node_netstat_Icmp6_InMsgsunknowninstance, ins, job, ip, clsStatistic Icmp6InMsgs.
node_netstat_Icmp6_OutMsgsunknowninstance, ins, job, ip, clsStatistic Icmp6OutMsgs.
node_netstat_Icmp_InErrorsunknowninstance, ins, job, ip, clsStatistic IcmpInErrors.
node_netstat_Icmp_InMsgsunknowninstance, ins, job, ip, clsStatistic IcmpInMsgs.
node_netstat_Icmp_OutMsgsunknowninstance, ins, job, ip, clsStatistic IcmpOutMsgs.
node_netstat_Ip6_InOctetsunknowninstance, ins, job, ip, clsStatistic Ip6InOctets.
node_netstat_Ip6_OutOctetsunknowninstance, ins, job, ip, clsStatistic Ip6OutOctets.
node_netstat_IpExt_InOctetsunknowninstance, ins, job, ip, clsStatistic IpExtInOctets.
node_netstat_IpExt_OutOctetsunknowninstance, ins, job, ip, clsStatistic IpExtOutOctets.
node_netstat_Ip_Forwardingunknowninstance, ins, job, ip, clsStatistic IpForwarding.
node_netstat_TcpExt_ListenDropsunknowninstance, ins, job, ip, clsStatistic TcpExtListenDrops.
node_netstat_TcpExt_ListenOverflowsunknowninstance, ins, job, ip, clsStatistic TcpExtListenOverflows.
node_netstat_TcpExt_SyncookiesFailedunknowninstance, ins, job, ip, clsStatistic TcpExtSyncookiesFailed.
node_netstat_TcpExt_SyncookiesRecvunknowninstance, ins, job, ip, clsStatistic TcpExtSyncookiesRecv.
node_netstat_TcpExt_SyncookiesSentunknowninstance, ins, job, ip, clsStatistic TcpExtSyncookiesSent.
node_netstat_TcpExt_TCPSynRetransunknowninstance, ins, job, ip, clsStatistic TcpExtTCPSynRetrans.
node_netstat_TcpExt_TCPTimeoutsunknowninstance, ins, job, ip, clsStatistic TcpExtTCPTimeouts.
node_netstat_Tcp_ActiveOpensunknowninstance, ins, job, ip, clsStatistic TcpActiveOpens.
node_netstat_Tcp_CurrEstabunknowninstance, ins, job, ip, clsStatistic TcpCurrEstab.
node_netstat_Tcp_InErrsunknowninstance, ins, job, ip, clsStatistic TcpInErrs.
node_netstat_Tcp_InSegsunknowninstance, ins, job, ip, clsStatistic TcpInSegs.
node_netstat_Tcp_OutRstsunknowninstance, ins, job, ip, clsStatistic TcpOutRsts.
node_netstat_Tcp_OutSegsunknowninstance, ins, job, ip, clsStatistic TcpOutSegs.
node_netstat_Tcp_PassiveOpensunknowninstance, ins, job, ip, clsStatistic TcpPassiveOpens.
node_netstat_Tcp_RetransSegsunknowninstance, ins, job, ip, clsStatistic TcpRetransSegs.
node_netstat_Udp6_InDatagramsunknowninstance, ins, job, ip, clsStatistic Udp6InDatagrams.
node_netstat_Udp6_InErrorsunknowninstance, ins, job, ip, clsStatistic Udp6InErrors.
node_netstat_Udp6_NoPortsunknowninstance, ins, job, ip, clsStatistic Udp6NoPorts.
node_netstat_Udp6_OutDatagramsunknowninstance, ins, job, ip, clsStatistic Udp6OutDatagrams.
node_netstat_Udp6_RcvbufErrorsunknowninstance, ins, job, ip, clsStatistic Udp6RcvbufErrors.
node_netstat_Udp6_SndbufErrorsunknowninstance, ins, job, ip, clsStatistic Udp6SndbufErrors.
node_netstat_UdpLite6_InErrorsunknowninstance, ins, job, ip, clsStatistic UdpLite6InErrors.
node_netstat_UdpLite_InErrorsunknowninstance, ins, job, ip, clsStatistic UdpLiteInErrors.
node_netstat_Udp_InDatagramsunknowninstance, ins, job, ip, clsStatistic UdpInDatagrams.
node_netstat_Udp_InErrorsunknowninstance, ins, job, ip, clsStatistic UdpInErrors.
node_netstat_Udp_NoPortsunknowninstance, ins, job, ip, clsStatistic UdpNoPorts.
node_netstat_Udp_OutDatagramsunknowninstance, ins, job, ip, clsStatistic UdpOutDatagrams.
node_netstat_Udp_RcvbufErrorsunknowninstance, ins, job, ip, clsStatistic UdpRcvbufErrors.
node_netstat_Udp_SndbufErrorsunknowninstance, ins, job, ip, clsStatistic UdpSndbufErrors.
node_network_address_assign_typegaugeip, device, ins, job, instance, clsNetwork device property: address_assign_type
node_network_carriergaugeip, device, ins, job, instance, clsNetwork device property: carrier
node_network_carrier_changes_totalcounterip, device, ins, job, instance, clsNetwork device property: carrier_changes_total
node_network_carrier_down_changes_totalcounterip, device, ins, job, instance, clsNetwork device property: carrier_down_changes_total
node_network_carrier_up_changes_totalcounterip, device, ins, job, instance, clsNetwork device property: carrier_up_changes_total
node_network_device_idgaugeip, device, ins, job, instance, clsNetwork device property: device_id
node_network_dormantgaugeip, device, ins, job, instance, clsNetwork device property: dormant
node_network_flagsgaugeip, device, ins, job, instance, clsNetwork device property: flags
node_network_iface_idgaugeip, device, ins, job, instance, clsNetwork device property: iface_id
node_network_iface_linkgaugeip, device, ins, job, instance, clsNetwork device property: iface_link
node_network_iface_link_modegaugeip, device, ins, job, instance, clsNetwork device property: iface_link_mode
node_network_infogaugebroadcast, ip, device, operstate, ins, job, adminstate, duplex, address, instance, clsNon-numeric data from /sys/class/net/, value is always 1.
node_network_mtu_bytesgaugeip, device, ins, job, instance, clsNetwork device property: mtu_bytes
node_network_name_assign_typegaugeip, device, ins, job, instance, clsNetwork device property: name_assign_type
node_network_net_dev_groupgaugeip, device, ins, job, instance, clsNetwork device property: net_dev_group
node_network_protocol_typegaugeip, device, ins, job, instance, clsNetwork device property: protocol_type
node_network_receive_bytes_totalcounterip, device, ins, job, instance, clsNetwork device statistic receive_bytes.
node_network_receive_compressed_totalcounterip, device, ins, job, instance, clsNetwork device statistic receive_compressed.
node_network_receive_drop_totalcounterip, device, ins, job, instance, clsNetwork device statistic receive_drop.
node_network_receive_errs_totalcounterip, device, ins, job, instance, clsNetwork device statistic receive_errs.
node_network_receive_fifo_totalcounterip, device, ins, job, instance, clsNetwork device statistic receive_fifo.
node_network_receive_frame_totalcounterip, device, ins, job, instance, clsNetwork device statistic receive_frame.
node_network_receive_multicast_totalcounterip, device, ins, job, instance, clsNetwork device statistic receive_multicast.
node_network_receive_nohandler_totalcounterip, device, ins, job, instance, clsNetwork device statistic receive_nohandler.
node_network_receive_packets_totalcounterip, device, ins, job, instance, clsNetwork device statistic receive_packets.
node_network_speed_bytesgaugeip, device, ins, job, instance, clsNetwork device property: speed_bytes
node_network_transmit_bytes_totalcounterip, device, ins, job, instance, clsNetwork device statistic transmit_bytes.
node_network_transmit_carrier_totalcounterip, device, ins, job, instance, clsNetwork device statistic transmit_carrier.
node_network_transmit_colls_totalcounterip, device, ins, job, instance, clsNetwork device statistic transmit_colls.
node_network_transmit_compressed_totalcounterip, device, ins, job, instance, clsNetwork device statistic transmit_compressed.
node_network_transmit_drop_totalcounterip, device, ins, job, instance, clsNetwork device statistic transmit_drop.
node_network_transmit_errs_totalcounterip, device, ins, job, instance, clsNetwork device statistic transmit_errs.
node_network_transmit_fifo_totalcounterip, device, ins, job, instance, clsNetwork device statistic transmit_fifo.
node_network_transmit_packets_totalcounterip, device, ins, job, instance, clsNetwork device statistic transmit_packets.
node_network_transmit_queue_lengthgaugeip, device, ins, job, instance, clsNetwork device property: transmit_queue_length
node_network_upgaugeip, device, ins, job, instance, clsValue is 1 if operstate is ‘up’, 0 otherwise.
node_nf_conntrack_entriesgaugeinstance, ins, job, ip, clsNumber of currently allocated flow entries for connection tracking.
node_nf_conntrack_entries_limitgaugeinstance, ins, job, ip, clsMaximum size of connection tracking table.
node_nf_conntrack_stat_dropgaugeinstance, ins, job, ip, clsNumber of packets dropped due to conntrack failure.
node_nf_conntrack_stat_early_dropgaugeinstance, ins, job, ip, clsNumber of dropped conntrack entries to make room for new ones, if maximum table size was reached.
node_nf_conntrack_stat_foundgaugeinstance, ins, job, ip, clsNumber of searched entries which were successful.
node_nf_conntrack_stat_ignoregaugeinstance, ins, job, ip, clsNumber of packets seen which are already connected to a conntrack entry.
node_nf_conntrack_stat_insertgaugeinstance, ins, job, ip, clsNumber of entries inserted into the list.
node_nf_conntrack_stat_insert_failedgaugeinstance, ins, job, ip, clsNumber of entries for which list insertion was attempted but failed.
node_nf_conntrack_stat_invalidgaugeinstance, ins, job, ip, clsNumber of packets seen which can not be tracked.
node_nf_conntrack_stat_search_restartgaugeinstance, ins, job, ip, clsNumber of conntrack table lookups which had to be restarted due to hashtable resizes.
node_os_infogaugeid, ip, version, version_id, ins, instance, job, pretty_name, id_like, clsA metric with a constant ‘1’ value labeled by build_id, id, id_like, image_id, image_version, name, pretty_name, variant, variant_id, version, version_codename, version_id.
node_os_versiongaugeid, ip, ins, instance, job, id_like, clsMetric containing the major.minor part of the OS version.
node_processes_max_processesgaugeinstance, ins, job, ip, clsNumber of max PIDs limit
node_processes_max_threadsgaugeinstance, ins, job, ip, clsLimit of threads in the system
node_processes_pidsgaugeinstance, ins, job, ip, clsNumber of PIDs
node_processes_stategaugestate, instance, ins, job, ip, clsNumber of processes in each state.
node_processes_threadsgaugeinstance, ins, job, ip, clsAllocated threads in system
node_processes_threads_stategaugeinstance, ins, job, thread_state, ip, clsNumber of threads in each state.
node_procs_blockedgaugeinstance, ins, job, ip, clsNumber of processes blocked waiting for I/O to complete.
node_procs_runninggaugeinstance, ins, job, ip, clsNumber of processes in runnable state.
node_schedstat_running_seconds_totalcounterip, ins, job, cpu, instance, clsNumber of seconds CPU spent running a process.
node_schedstat_timeslices_totalcounterip, ins, job, cpu, instance, clsNumber of timeslices executed by CPU.
node_schedstat_waiting_seconds_totalcounterip, ins, job, cpu, instance, clsNumber of seconds spent by processing waiting for this CPU.
node_scrape_collector_duration_secondsgaugeip, collector, ins, job, instance, clsnode_exporter: Duration of a collector scrape.
node_scrape_collector_successgaugeip, collector, ins, job, instance, clsnode_exporter: Whether a collector succeeded.
node_selinux_enabledgaugeinstance, ins, job, ip, clsSELinux is enabled, 1 is true, 0 is false
node_sockstat_FRAG6_inusegaugeinstance, ins, job, ip, clsNumber of FRAG6 sockets in state inuse.
node_sockstat_FRAG6_memorygaugeinstance, ins, job, ip, clsNumber of FRAG6 sockets in state memory.
node_sockstat_FRAG_inusegaugeinstance, ins, job, ip, clsNumber of FRAG sockets in state inuse.
node_sockstat_FRAG_memorygaugeinstance, ins, job, ip, clsNumber of FRAG sockets in state memory.
node_sockstat_RAW6_inusegaugeinstance, ins, job, ip, clsNumber of RAW6 sockets in state inuse.
node_sockstat_RAW_inusegaugeinstance, ins, job, ip, clsNumber of RAW sockets in state inuse.
node_sockstat_TCP6_inusegaugeinstance, ins, job, ip, clsNumber of TCP6 sockets in state inuse.
node_sockstat_TCP_allocgaugeinstance, ins, job, ip, clsNumber of TCP sockets in state alloc.
node_sockstat_TCP_inusegaugeinstance, ins, job, ip, clsNumber of TCP sockets in state inuse.
node_sockstat_TCP_memgaugeinstance, ins, job, ip, clsNumber of TCP sockets in state mem.
node_sockstat_TCP_mem_bytesgaugeinstance, ins, job, ip, clsNumber of TCP sockets in state mem_bytes.
node_sockstat_TCP_orphangaugeinstance, ins, job, ip, clsNumber of TCP sockets in state orphan.
node_sockstat_TCP_twgaugeinstance, ins, job, ip, clsNumber of TCP sockets in state tw.
node_sockstat_UDP6_inusegaugeinstance, ins, job, ip, clsNumber of UDP6 sockets in state inuse.
node_sockstat_UDPLITE6_inusegaugeinstance, ins, job, ip, clsNumber of UDPLITE6 sockets in state inuse.
node_sockstat_UDPLITE_inusegaugeinstance, ins, job, ip, clsNumber of UDPLITE sockets in state inuse.
node_sockstat_UDP_inusegaugeinstance, ins, job, ip, clsNumber of UDP sockets in state inuse.
node_sockstat_UDP_memgaugeinstance, ins, job, ip, clsNumber of UDP sockets in state mem.
node_sockstat_UDP_mem_bytesgaugeinstance, ins, job, ip, clsNumber of UDP sockets in state mem_bytes.
node_sockstat_sockets_usedgaugeinstance, ins, job, ip, clsNumber of IPv4 sockets in use.
node_tcp_connection_statesgaugestate, instance, ins, job, ip, clsNumber of connection states.
node_textfile_scrape_errorgaugeinstance, ins, job, ip, cls1 if there was an error opening or reading a file, 0 otherwise
node_time_clocksource_available_infogaugeip, device, ins, clocksource, job, instance, clsAvailable clocksources read from ‘/sys/devices/system/clocksource’.
node_time_clocksource_current_infogaugeip, device, ins, clocksource, job, instance, clsCurrent clocksource read from ‘/sys/devices/system/clocksource’.
node_time_secondsgaugeinstance, ins, job, ip, clsSystem time in seconds since epoch (1970).
node_time_zone_offset_secondsgaugeinstance, ins, job, time_zone, ip, clsSystem time zone offset in seconds.
node_timex_estimated_error_secondsgaugeinstance, ins, job, ip, clsEstimated error in seconds.
node_timex_frequency_adjustment_ratiogaugeinstance, ins, job, ip, clsLocal clock frequency adjustment.
node_timex_loop_time_constantgaugeinstance, ins, job, ip, clsPhase-locked loop time constant.
node_timex_maxerror_secondsgaugeinstance, ins, job, ip, clsMaximum error in seconds.
node_timex_offset_secondsgaugeinstance, ins, job, ip, clsTime offset in between local system and reference clock.
node_timex_pps_calibration_totalcounterinstance, ins, job, ip, clsPulse per second count of calibration intervals.
node_timex_pps_error_totalcounterinstance, ins, job, ip, clsPulse per second count of calibration errors.
node_timex_pps_frequency_hertzgaugeinstance, ins, job, ip, clsPulse per second frequency.
node_timex_pps_jitter_secondsgaugeinstance, ins, job, ip, clsPulse per second jitter.
node_timex_pps_jitter_totalcounterinstance, ins, job, ip, clsPulse per second count of jitter limit exceeded events.
node_timex_pps_shift_secondsgaugeinstance, ins, job, ip, clsPulse per second interval duration.
node_timex_pps_stability_exceeded_totalcounterinstance, ins, job, ip, clsPulse per second count of stability limit exceeded events.
node_timex_pps_stability_hertzgaugeinstance, ins, job, ip, clsPulse per second stability, average of recent frequency changes.
node_timex_statusgaugeinstance, ins, job, ip, clsValue of the status array bits.
node_timex_sync_statusgaugeinstance, ins, job, ip, clsIs clock synchronized to a reliable server (1 = yes, 0 = no).
node_timex_tai_offset_secondsgaugeinstance, ins, job, ip, clsInternational Atomic Time (TAI) offset.
node_timex_tick_secondsgaugeinstance, ins, job, ip, clsSeconds between clock ticks.
node_udp_queuesgaugeip, queue, ins, job, exported_ip, instance, clsNumber of allocated memory in the kernel for UDP datagrams in bytes.
node_uname_infogaugeip, sysname, version, domainname, release, ins, job, nodename, instance, cls, machineLabeled system information as provided by the uname system call.
node_upUnknowninstance, ins, job, ip, clsN/A
node_vmstat_oom_killunknowninstance, ins, job, ip, cls/proc/vmstat information field oom_kill.
node_vmstat_pgfaultunknowninstance, ins, job, ip, cls/proc/vmstat information field pgfault.
node_vmstat_pgmajfaultunknowninstance, ins, job, ip, cls/proc/vmstat information field pgmajfault.
node_vmstat_pgpginunknowninstance, ins, job, ip, cls/proc/vmstat information field pgpgin.
node_vmstat_pgpgoutunknowninstance, ins, job, ip, cls/proc/vmstat information field pgpgout.
node_vmstat_pswpinunknowninstance, ins, job, ip, cls/proc/vmstat information field pswpin.
node_vmstat_pswpoutunknowninstance, ins, job, ip, cls/proc/vmstat information field pswpout.
process_cpu_seconds_totalcounterinstance, ins, job, ip, clsTotal user and system CPU time spent in seconds.
process_max_fdsgaugeinstance, ins, job, ip, clsMaximum number of open file descriptors.
process_open_fdsgaugeinstance, ins, job, ip, clsNumber of open file descriptors.
process_resident_memory_bytesgaugeinstance, ins, job, ip, clsResident memory size in bytes.
process_start_time_secondsgaugeinstance, ins, job, ip, clsStart time of the process since unix epoch in seconds.
process_virtual_memory_bytesgaugeinstance, ins, job, ip, clsVirtual memory size in bytes.
process_virtual_memory_max_bytesgaugeinstance, ins, job, ip, clsMaximum amount of virtual memory available in bytes.
prometheus_remote_storage_exemplars_in_totalcounterinstance, ins, job, ip, clsExemplars in to remote storage, compare to exemplars out for queue managers.
prometheus_remote_storage_histograms_in_totalcounterinstance, ins, job, ip, clsHistogramSamples in to remote storage, compare to histograms out for queue managers.
prometheus_remote_storage_samples_in_totalcounterinstance, ins, job, ip, clsSamples in to remote storage, compare to samples out for queue managers.
prometheus_remote_storage_string_interner_zero_reference_releases_totalcounterinstance, ins, job, ip, clsThe number of times release has been called for strings that are not interned.
prometheus_sd_azure_failures_totalcounterinstance, ins, job, ip, clsNumber of Azure service discovery refresh failures.
prometheus_sd_consul_rpc_duration_secondssummaryip, call, quantile, ins, job, instance, cls, endpointThe duration of a Consul RPC call in seconds.
prometheus_sd_consul_rpc_duration_seconds_countUnknownip, call, ins, job, instance, cls, endpointN/A
prometheus_sd_consul_rpc_duration_seconds_sumUnknownip, call, ins, job, instance, cls, endpointN/A
prometheus_sd_consul_rpc_failures_totalcounterinstance, ins, job, ip, clsThe number of Consul RPC call failures.
prometheus_sd_consulagent_rpc_duration_secondssummaryip, call, quantile, ins, job, instance, cls, endpointThe duration of a Consul Agent RPC call in seconds.
prometheus_sd_consulagent_rpc_duration_seconds_countUnknownip, call, ins, job, instance, cls, endpointN/A
prometheus_sd_consulagent_rpc_duration_seconds_sumUnknownip, call, ins, job, instance, cls, endpointN/A
prometheus_sd_consulagent_rpc_failures_totalUnknowninstance, ins, job, ip, clsN/A
prometheus_sd_dns_lookup_failures_totalcounterinstance, ins, job, ip, clsThe number of DNS-SD lookup failures.
prometheus_sd_dns_lookups_totalcounterinstance, ins, job, ip, clsThe number of DNS-SD lookups.
prometheus_sd_file_read_errors_totalcounterinstance, ins, job, ip, clsThe number of File-SD read errors.
prometheus_sd_file_scan_duration_secondssummaryquantile, instance, ins, job, ip, clsThe duration of the File-SD scan in seconds.
prometheus_sd_file_scan_duration_seconds_countUnknowninstance, ins, job, ip, clsN/A
prometheus_sd_file_scan_duration_seconds_sumUnknowninstance, ins, job, ip, clsN/A
prometheus_sd_file_watcher_errors_totalcounterinstance, ins, job, ip, clsThe number of File-SD errors caused by filesystem watch failures.
prometheus_sd_kubernetes_events_totalcounterip, event, ins, job, role, instance, clsThe number of Kubernetes events handled.
prometheus_target_scrape_pool_exceeded_label_limits_totalcounterinstance, ins, job, ip, clsTotal number of times scrape pools hit the label limits, during sync or config reload.
prometheus_target_scrape_pool_exceeded_target_limit_totalcounterinstance, ins, job, ip, clsTotal number of times scrape pools hit the target limit, during sync or config reload.
prometheus_target_scrape_pool_reloads_failed_totalcounterinstance, ins, job, ip, clsTotal number of failed scrape pool reloads.
prometheus_target_scrape_pool_reloads_totalcounterinstance, ins, job, ip, clsTotal number of scrape pool reloads.
prometheus_target_scrape_pools_failed_totalcounterinstance, ins, job, ip, clsTotal number of scrape pool creations that failed.
prometheus_target_scrape_pools_totalcounterinstance, ins, job, ip, clsTotal number of scrape pool creation attempts.
prometheus_target_scrapes_cache_flush_forced_totalcounterinstance, ins, job, ip, clsHow many times a scrape cache was flushed due to getting big while scrapes are failing.
prometheus_target_scrapes_exceeded_body_size_limit_totalcounterinstance, ins, job, ip, clsTotal number of scrapes that hit the body size limit
prometheus_target_scrapes_exceeded_sample_limit_totalcounterinstance, ins, job, ip, clsTotal number of scrapes that hit the sample limit and were rejected.
prometheus_target_scrapes_exemplar_out_of_order_totalcounterinstance, ins, job, ip, clsTotal number of exemplar rejected due to not being out of the expected order.
prometheus_target_scrapes_sample_duplicate_timestamp_totalcounterinstance, ins, job, ip, clsTotal number of samples rejected due to duplicate timestamps but different values.
prometheus_target_scrapes_sample_out_of_bounds_totalcounterinstance, ins, job, ip, clsTotal number of samples rejected due to timestamp falling outside of the time bounds.
prometheus_target_scrapes_sample_out_of_order_totalcounterinstance, ins, job, ip, clsTotal number of samples rejected due to not being out of the expected order.
prometheus_template_text_expansion_failures_totalcounterinstance, ins, job, ip, clsThe total number of template text expansion failures.
prometheus_template_text_expansions_totalcounterinstance, ins, job, ip, clsThe total number of template text expansions.
prometheus_treecache_watcher_goroutinesgaugeinstance, ins, job, ip, clsThe current number of watcher goroutines.
prometheus_treecache_zookeeper_failures_totalcounterinstance, ins, job, ip, clsThe total number of ZooKeeper failures.
promhttp_metric_handler_errors_totalcounterip, cause, ins, job, instance, clsTotal number of internal errors encountered by the promhttp metric handler.
promhttp_metric_handler_requests_in_flightgaugeinstance, ins, job, ip, clsCurrent number of scrapes being served.
promhttp_metric_handler_requests_totalcounterip, ins, code, job, instance, clsTotal number of scrapes by HTTP status code.
promtail_batch_retries_totalUnknownhost, ip, ins, job, instance, clsN/A
promtail_build_infogaugeip, version, revision, goversion, branch, ins, goarch, job, tags, instance, cls, goosA metric with a constant ‘1’ value labeled by version, revision, branch, goversion from which promtail was built, and the goos and goarch for the build.
promtail_config_reload_fail_totalUnknowninstance, ins, job, ip, clsN/A
promtail_config_reload_success_totalUnknowninstance, ins, job, ip, clsN/A
promtail_dropped_bytes_totalUnknownhost, ip, ins, job, reason, instance, clsN/A
promtail_dropped_entries_totalUnknownhost, ip, ins, job, reason, instance, clsN/A
promtail_encoded_bytes_totalUnknownhost, ip, ins, job, instance, clsN/A
promtail_file_bytes_totalgaugepath, instance, ins, job, ip, clsNumber of bytes total.
promtail_files_active_totalgaugeinstance, ins, job, ip, clsNumber of active files.
promtail_mutated_bytes_totalUnknownhost, ip, ins, job, reason, instance, clsN/A
promtail_mutated_entries_totalUnknownhost, ip, ins, job, reason, instance, clsN/A
promtail_read_bytes_totalgaugepath, instance, ins, job, ip, clsNumber of bytes read.
promtail_read_lines_totalUnknownpath, instance, ins, job, ip, clsN/A
promtail_request_duration_seconds_bucketUnknownhost, ip, ins, job, status_code, le, instance, clsN/A
promtail_request_duration_seconds_countUnknownhost, ip, ins, job, status_code, instance, clsN/A
promtail_request_duration_seconds_sumUnknownhost, ip, ins, job, status_code, instance, clsN/A
promtail_sent_bytes_totalUnknownhost, ip, ins, job, instance, clsN/A
promtail_sent_entries_totalUnknownhost, ip, ins, job, instance, clsN/A
promtail_targets_active_totalgaugeinstance, ins, job, ip, clsNumber of active total.
promtail_upUnknowninstance, ins, job, ip, clsN/A
request_duration_seconds_bucketUnknowninstance, ins, job, status_code, route, ws, le, ip, cls, methodN/A
request_duration_seconds_countUnknowninstance, ins, job, status_code, route, ws, ip, cls, methodN/A
request_duration_seconds_sumUnknowninstance, ins, job, status_code, route, ws, ip, cls, methodN/A
request_message_bytes_bucketUnknowninstance, ins, job, route, le, ip, cls, methodN/A
request_message_bytes_countUnknowninstance, ins, job, route, ip, cls, methodN/A
request_message_bytes_sumUnknowninstance, ins, job, route, ip, cls, methodN/A
response_message_bytes_bucketUnknowninstance, ins, job, route, le, ip, cls, methodN/A
response_message_bytes_countUnknowninstance, ins, job, route, ip, cls, methodN/A
response_message_bytes_sumUnknowninstance, ins, job, route, ip, cls, methodN/A
scrape_duration_secondsUnknowninstance, ins, job, ip, clsN/A
scrape_samples_post_metric_relabelingUnknowninstance, ins, job, ip, clsN/A
scrape_samples_scrapedUnknowninstance, ins, job, ip, clsN/A
scrape_series_addedUnknowninstance, ins, job, ip, clsN/A
tcp_connectionsgaugeinstance, ins, job, protocol, ip, clsCurrent number of accepted TCP connections.
tcp_connections_limitgaugeinstance, ins, job, protocol, ip, clsThe max number of TCP connections that can be accepted (0 means no limit).
upUnknowninstance, ins, job, ip, clsN/A

7 - FAQ

Frequently asked questions about Pigsty NODE module

How to configure NTP service?

NTP is critical for production services. If it is not configured, use public NTP services or Chronyd on the admin node as the time source.

If the nodes already have NTP configured, set node_ntp_enabled to false to preserve that configuration.

Otherwise, if you have Internet access, you can use public NTP services such as pool.ntp.org.

Without Internet access, use the configuration below to synchronize all nodes with the admin node. You can also use another internal NTP service.

node_ntp_servers:                 # NTP servers in /etc/chrony.conf
  - pool cn.pool.ntp.org iburst
  - pool ${admin_ip} iburst       # assume non-admin nodes do not have internet access, at least sync with admin node

How to force sync time on nodes?

Use chronyc to sync time. You must configure the NTP service first.

ansible all -b -a 'chronyc -a makestep'     # sync time

You can replace all with any group or host IP address to limit the execution scope.


Remote nodes are not accessible via SSH?

A target can require an SSH jump host or other settings that prevent direct ssh ip access. Use Ansible connection parameters to specify the required SSH options. For example:

pg-test:
  vars: { pg_cluster: pg-test }
  hosts:
    10.10.10.11: {pg_seq: 1, pg_role: primary, ansible_host: node-1 }
    10.10.10.12: {pg_seq: 2, pg_role: replica, ansible_port: 22223, ansible_user: admin }
    10.10.10.13: {pg_seq: 3, pg_role: offline, ansible_port: 22224 }

Password required for remote node SSH and SUDO?

When performing deployments and changes, the admin user used must have ssh and sudo privileges for all nodes. Passwordless login is not required.

Pass SSH and sudo passwords with the -k|-K parameters when you run playbooks. To run a playbook as another user, use -eansible_host=<another_user>.

However, Pigsty strongly recommends configuring SSH passwordless login with passwordless sudo for the admin user.


How to create a dedicated admin user with an existing admin user?

Use an existing admin user on the node to run this command. It creates the standard admin user specified by node_admin_username.

./node.yml -k -K -e ansible_user=<another_admin> -t node_admin

How to expose services using HAProxy on nodes?

Use haproxy_services to define exposed services. Run node.yml -t haproxy_config,haproxy_reload to update the configuration.

Here’s an example of exposing Silo: Silo Service Access


Why are all my /etc/yum.repos.d/* files gone?

Pigsty builds a local software repository on infra nodes that includes all dependencies. By default, node_repo_modules is local. Regular nodes use the local software repository on Infra nodes.

This design avoids Internet access and enhances installation stability and reliability. Pigsty moves all original repository definition files to /etc/yum.repos.d/backup. Copy them back as needed.

If you want to preserve the original repo definition files during regular node installation, set node_repo_remove to false.

If you want to preserve the original repo definition files during Infra node local repo construction, set repo_remove to false.


Why did my command line prompt change? How to restore it?

The PS1 environment variable defines the Pigsty shell prompt. Pigsty sets it in /etc/profile.d/node.sh.

If you don’t like it and want to modify or restore it, you can remove this file and log in again.


Why did my hostname change?

Pigsty will modify your node hostname in two situations:

  • nodename value is explicitly defined (default is empty)
  • The PGSQL module is declared on the node and the node_id_from_pg parameter is enabled (default is true)

If you don’t want the hostname to be modified, you can set nodename_overwrite to false at the global/cluster/instance level (default is true).

For details, see the NODE_ID section.


What compatibility issues exist with Tencent OpenCloudOS?

OpenCloudOS does not provide the softdog kernel module. Remove it from node_kernel_modules. Add this override to the global configuration variables:

node_kernel_modules: [ ip_vs, ip_vs_rr, ip_vs_wrr, ip_vs_sh ]

What common issues exist on Debian systems?

When using Pigsty on Debian/Ubuntu systems, you may encounter the following issues:

Missing locale

If the system reports locale-related errors, you can fix them with the following command:

localedef -i en_US -f UTF-8 en_US.UTF-8

Missing rsync tool

Pigsty relies on rsync for file synchronization. If the system doesn’t have it installed, you can install it with:

apt-get install rsync