Back-port fix from upstream PCP for pcp-ss listen state handling
Resolves: RHEL-17335
This commit is contained in:
parent
77865a4afb
commit
a6150af35b
13
pcp.spec
13
pcp.spec
@ -1,11 +1,14 @@
|
|||||||
Name: pcp
|
Name: pcp
|
||||||
Version: 6.1.1
|
Version: 6.1.1
|
||||||
Release: 1%{?dist}
|
Release: 2%{?dist}
|
||||||
Summary: System-level performance monitoring and performance management
|
Summary: System-level performance monitoring and performance management
|
||||||
License: GPL-2.0-or-later AND LGPL-2.1-or-later AND CC-BY-3.0
|
License: GPL-2.0-or-later AND LGPL-2.1-or-later AND CC-BY-3.0
|
||||||
URL: https://pcp.io
|
URL: https://pcp.io
|
||||||
|
|
||||||
Source0: https://github.com/performancecopilot/pcp/releases/pcp-%{version}.src.tar.gz
|
Source0: https://github.com/performancecopilot/pcp/releases/pcp-%{version}.src.tar.gz
|
||||||
|
|
||||||
|
Patch1: redhat-issues-RHEL-17335-ss-listen.patch
|
||||||
|
|
||||||
%if 0%{?fedora} >= 40 || 0%{?rhel} >= 10
|
%if 0%{?fedora} >= 40 || 0%{?rhel} >= 10
|
||||||
ExcludeArch: %{ix86}
|
ExcludeArch: %{ix86}
|
||||||
%endif
|
%endif
|
||||||
@ -301,7 +304,9 @@ BuildRequires: qt5-qtsvg-devel
|
|||||||
%endif
|
%endif
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
Requires: bash xz gawk sed grep findutils which %{_hostname_executable}
|
# Utilities used indirectly e.g. by scripts we install
|
||||||
|
Requires: bash xz gawk sed grep coreutils diffutils findutils
|
||||||
|
Requires: which %{_hostname_executable}
|
||||||
Requires: pcp-libs = %{version}-%{release}
|
Requires: pcp-libs = %{version}-%{release}
|
||||||
|
|
||||||
%if !%{disable_selinux}
|
%if !%{disable_selinux}
|
||||||
@ -3446,6 +3451,10 @@ fi
|
|||||||
%files zeroconf -f pcp-zeroconf-files.rpm
|
%files zeroconf -f pcp-zeroconf-files.rpm
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Nov 29 2023 Nathan Scott <nathans@redhat.com> - 6.1.1-2
|
||||||
|
- Fix pcp-ss(1) default handling of listen state (RHEL-17335)
|
||||||
|
- Added pcp package dependency on diffutils for diffstat(1)
|
||||||
|
|
||||||
* Mon Nov 20 2023 Nathan Scott <nathans@redhat.com> - 6.1.1-1
|
* Mon Nov 20 2023 Nathan Scott <nathans@redhat.com> - 6.1.1-1
|
||||||
- Improve pmlogcheck performance with compressed archives (RHEL-3930)
|
- Improve pmlogcheck performance with compressed archives (RHEL-3930)
|
||||||
- Fix pcp-ss(1) utility handling of duplicate sources (RHEL-7498)
|
- Fix pcp-ss(1) utility handling of duplicate sources (RHEL-7498)
|
||||||
|
186
redhat-issues-RHEL-17335-ss-listen.patch
Normal file
186
redhat-issues-RHEL-17335-ss-listen.patch
Normal file
@ -0,0 +1,186 @@
|
|||||||
|
diff -Naurp pcp-6.1.1.orig/qa/1921 pcp-6.1.1/qa/1921
|
||||||
|
--- pcp-6.1.1.orig/qa/1921 1970-01-01 10:00:00.000000000 +1000
|
||||||
|
+++ pcp-6.1.1/qa/1921 2023-11-29 14:21:22.969455810 +1100
|
||||||
|
@@ -0,0 +1,82 @@
|
||||||
|
+#!/bin/sh
|
||||||
|
+# PCP QA Test No. 1921
|
||||||
|
+# Exercise default option handling for pcp-ss(1).
|
||||||
|
+#
|
||||||
|
+# Copyright (c) 2023 Red Hat. All Rights Reserved.
|
||||||
|
+#
|
||||||
|
+
|
||||||
|
+seq=`basename $0`
|
||||||
|
+echo "QA output created by $seq"
|
||||||
|
+
|
||||||
|
+# get standard environment, filters and checks
|
||||||
|
+. ./common.product
|
||||||
|
+. ./common.filter
|
||||||
|
+. ./common.check
|
||||||
|
+
|
||||||
|
+[ $PCP_PLATFORM = linux ] || _notrun "Linux-specific sockets testing"
|
||||||
|
+[ -f $PCP_BINADM_DIR/pcp-ss ] || _notrun "pcp-ss utility is not installed"
|
||||||
|
+[ -f $PCP_PMDAS_DIR/sockets/pmdasockets ] || _notrun "sockets PMDA not installed"
|
||||||
|
+
|
||||||
|
+_cleanup()
|
||||||
|
+{
|
||||||
|
+ cd $here
|
||||||
|
+ $sudo rm -rf $tmp $tmp.*
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+status=0 # success is the default!
|
||||||
|
+$sudo rm -rf $tmp $tmp.* $seq.full
|
||||||
|
+
|
||||||
|
+pmdasockets_install()
|
||||||
|
+{
|
||||||
|
+ # start from known starting points
|
||||||
|
+ cd $PCP_PMDAS_DIR/sockets
|
||||||
|
+ $sudo ./Remove >/dev/null 2>&1
|
||||||
|
+
|
||||||
|
+ echo
|
||||||
|
+ echo "=== sockets agent installation ==="
|
||||||
|
+ $sudo ./Install </dev/null >$tmp.out 2>&1
|
||||||
|
+ cat $tmp.out >>$here/$seq.full
|
||||||
|
+ # Check sockets metrics have appeared ... X metrics and Y values
|
||||||
|
+ _filter_pmda_install <$tmp.out \
|
||||||
|
+ | sed \
|
||||||
|
+ -e 's/[0-9][0-9]* warnings, //' \
|
||||||
|
+ | $PCP_AWK_PROG '
|
||||||
|
+/Check network.persocket metrics have appeared/ {
|
||||||
|
+ if ($7 >= 50 && $7 <= 99) $7 = "X"
|
||||||
|
+ if ($10 >= 0) $10 = "Y"
|
||||||
|
+ }
|
||||||
|
+ { print }'
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+pmdasockets_remove()
|
||||||
|
+{
|
||||||
|
+ echo
|
||||||
|
+ echo "=== remove sockets agent ==="
|
||||||
|
+ $sudo ./Remove >$tmp.out 2>&1
|
||||||
|
+ _filter_pmda_remove <$tmp.out
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+# real QA test starts here
|
||||||
|
+_prepare_pmda sockets
|
||||||
|
+trap "_cleanup_pmda sockets; exit \$status" 0 1 2 3 15
|
||||||
|
+_stop_auto_restart pmcd
|
||||||
|
+
|
||||||
|
+pmdasockets_install
|
||||||
|
+echo
|
||||||
|
+
|
||||||
|
+pcp ss > $tmp.out 2>&1
|
||||||
|
+if grep -q LISTEN $tmp.out # do not show LISTEN state by default
|
||||||
|
+then
|
||||||
|
+ echo Failed LISTEN check
|
||||||
|
+ cat $tmp.out
|
||||||
|
+ status=1
|
||||||
|
+ exit
|
||||||
|
+else
|
||||||
|
+ echo Passed LISTEN check
|
||||||
|
+ cat $tmp.out >> $here/$seq.full
|
||||||
|
+fi
|
||||||
|
+
|
||||||
|
+pmdasockets_remove
|
||||||
|
+
|
||||||
|
+# success, all done
|
||||||
|
+exit
|
||||||
|
diff -Naurp pcp-6.1.1.orig/qa/1921.out pcp-6.1.1/qa/1921.out
|
||||||
|
--- pcp-6.1.1.orig/qa/1921.out 1970-01-01 10:00:00.000000000 +1000
|
||||||
|
+++ pcp-6.1.1/qa/1921.out 2023-11-29 14:21:22.969455810 +1100
|
||||||
|
@@ -0,0 +1,17 @@
|
||||||
|
+QA output created by 1921
|
||||||
|
+
|
||||||
|
+=== sockets agent installation ===
|
||||||
|
+Updating the Performance Metrics Name Space (PMNS) ...
|
||||||
|
+Terminate PMDA if already installed ...
|
||||||
|
+[...install files, make output...]
|
||||||
|
+Updating the PMCD control file, and notifying PMCD ...
|
||||||
|
+Check network.persocket metrics have appeared ... X metrics and Y values
|
||||||
|
+
|
||||||
|
+Passed LISTEN check
|
||||||
|
+
|
||||||
|
+=== remove sockets agent ===
|
||||||
|
+Culling the Performance Metrics Name Space ...
|
||||||
|
+network.persocket ... done
|
||||||
|
+Updating the PMCD control file, and notifying PMCD ...
|
||||||
|
+[...removing files...]
|
||||||
|
+Check network.persocket metrics have gone away ... OK
|
||||||
|
diff -Naurp pcp-6.1.1.orig/qa/group pcp-6.1.1/qa/group
|
||||||
|
--- pcp-6.1.1.orig/qa/group 2023-11-29 14:21:04.266425958 +1100
|
||||||
|
+++ pcp-6.1.1/qa/group 2023-11-29 14:21:22.978455824 +1100
|
||||||
|
@@ -2090,6 +2090,7 @@ x11
|
||||||
|
1912 pmie local
|
||||||
|
1913 pmie local valgrind
|
||||||
|
1914 atop local
|
||||||
|
+1921 pmda.sockets local
|
||||||
|
1927 pmda.sockets local
|
||||||
|
1931 pmda.bpf local
|
||||||
|
1936 other local pmclient
|
||||||
|
diff -Naurp pcp-6.1.1.orig/src/pcp/ss/pcp-ss.1 pcp-6.1.1/src/pcp/ss/pcp-ss.1
|
||||||
|
--- pcp-6.1.1.orig/src/pcp/ss/pcp-ss.1 2023-11-29 14:21:04.266425958 +1100
|
||||||
|
+++ pcp-6.1.1/src/pcp/ss/pcp-ss.1 2023-11-29 14:21:22.978455824 +1100
|
||||||
|
@@ -168,10 +168,10 @@ show help message and exit
|
||||||
|
output version information
|
||||||
|
.TP 5
|
||||||
|
\fB\-n\fP, \fB\-\-numeric\fP
|
||||||
|
-don't resolve service names
|
||||||
|
+don't resolve service names (currently always set)
|
||||||
|
.TP 5
|
||||||
|
\fB\-r\fP, \fB\-\-resolve\fP
|
||||||
|
-resolve host names
|
||||||
|
+resolve host names (not yet implemented)
|
||||||
|
.TP 5
|
||||||
|
\fB\-a\fP, \fB\-\-all\fP
|
||||||
|
display all sockets
|
||||||
|
diff -Naurp pcp-6.1.1.orig/src/pcp/ss/pcp-ss.py pcp-6.1.1/src/pcp/ss/pcp-ss.py
|
||||||
|
--- pcp-6.1.1.orig/src/pcp/ss/pcp-ss.py 2023-11-29 14:21:04.267425959 +1100
|
||||||
|
+++ pcp-6.1.1/src/pcp/ss/pcp-ss.py 2023-11-29 14:21:22.979455826 +1100
|
||||||
|
@@ -25,9 +25,6 @@ from pcp import pmapi
|
||||||
|
from cpmapi import PM_CONTEXT_ARCHIVE, PM_CONTEXT_HOST
|
||||||
|
from cpmapi import PM_ERR_EOL, PM_MODE_INTERP
|
||||||
|
|
||||||
|
-if sys.version >= '3':
|
||||||
|
- long = int
|
||||||
|
-
|
||||||
|
# pmns prefix for pmdasockets(1) metrics
|
||||||
|
pmns = "network.persocket"
|
||||||
|
|
||||||
|
@@ -57,8 +54,8 @@ class SS(object):
|
||||||
|
p.add_argument('-V', '--version', action='store_true', help='output version information')
|
||||||
|
p.add_argument('-n', '--numeric', action='store_true', help='don\'t resolve service names or port names (currently always set)')
|
||||||
|
p.add_argument('-r', '--resolve', action='store_true', help='resolve host names (currently never set)')
|
||||||
|
- p.add_argument('-a', '--all', action='store_true', help='display sockets in any state, not just listening')
|
||||||
|
- p.add_argument('-l', '--listening', action='store_true', help='display only listening sockets')
|
||||||
|
+ p.add_argument('-a', '--all', action='store_true', help='display both listening and non-listening states')
|
||||||
|
+ p.add_argument('-l', '--listening', action='store_true', default=False, help='display only listening sockets')
|
||||||
|
p.add_argument('-o', '--options', action='store_true', help='show timer information')
|
||||||
|
p.add_argument('-e', '--extended', action='store_true', help='show detailed socket information')
|
||||||
|
p.add_argument('-m', '--memory', action='store_true', help='show socket memory usage')
|
||||||
|
@@ -92,9 +89,6 @@ class SS(object):
|
||||||
|
# default to both ipv4 and ipv6, subject to the prevailing filter
|
||||||
|
args.ipv4 = args.ipv6 = True
|
||||||
|
|
||||||
|
- if args.all:
|
||||||
|
- args.listening = True
|
||||||
|
-
|
||||||
|
if args.events or args.context or args.contexts or args.net or args.summary or args.processes:
|
||||||
|
print("Warning: --events, --context --net, --summary and --processes options are not implemented")
|
||||||
|
|
||||||
|
@@ -283,13 +277,16 @@ class SS(object):
|
||||||
|
return ret
|
||||||
|
|
||||||
|
def filter_listening(self, inst):
|
||||||
|
- """ filter on tcp state, return True if socket is listening """
|
||||||
|
+ """ filter on tcp socket listening state """
|
||||||
|
if self.args.all:
|
||||||
|
return True
|
||||||
|
state = self.valuesD["state"][inst]
|
||||||
|
if self.args.listening:
|
||||||
|
if state != "LISTEN":
|
||||||
|
return False
|
||||||
|
+ else:
|
||||||
|
+ if state == "LISTEN":
|
||||||
|
+ return False
|
||||||
|
return True
|
||||||
|
|
||||||
|
def report(self):
|
Loading…
Reference in New Issue
Block a user