System Configuration Analysis Skill
This skill provides detailed guidance for analyzing system configuration from sosreport archives, including OS information, installed packages, systemd services, and SELinux/AppArmor settings.
When to Use This Skill
Use this skill when:
- Analyzing the
/sosreport:analyze command's system configuration phase
- Investigating service failures or misconfigurations
- Verifying package versions and updates
- Checking security policy settings (SELinux/AppArmor)
- Understanding system state and configuration
Prerequisites
- Sosreport archive must be extracted to a working directory
- Path to the sosreport root directory must be known
- Understanding of Linux system administration
Key Configuration Data Locations in Sosreport
System Information:
uname - Kernel version
etc/os-release - OS distribution and version
uptime - System uptime
proc/uptime - Uptime in seconds
sos_commands/release/ - Release information
Package Information:
installed-rpms - RPM packages (RHEL/Fedora/CentOS)
installed-debs - DEB packages (Debian/Ubuntu)
sos_commands/yum/ - Yum/DNF information
sos_commands/rpm/ - RPM database queries
Service Status:
sos_commands/systemd/systemctl_list-units - All units
sos_commands/systemd/systemctl_list-units_--failed - Failed units
sos_commands/systemd/systemctl_status_--all - Detailed service status
sos_commands/systemd/systemctl_list-unit-files - Unit files
SELinux:
sos_commands/selinux/sestatus - SELinux status
sos_commands/selinux/getenforce - Current enforcement mode
sos_commands/selinux/selinux-policy - Policy information
var/log/audit/audit.log - SELinux denials
AppArmor (if applicable):
sos_commands/apparmor/ - AppArmor configuration
etc/apparmor.d/ - AppArmor profiles
System Configuration Files:
etc/ - System-wide configuration
etc/sysctl.conf or etc/sysctl.d/ - Kernel parameters
etc/security/limits.conf - Resource limits
Implementation Steps
Step 1: Analyze System Information
Check OS version and distribution:
if [ -f etc/os-release ]; then
cat etc/os-release
fi
Get kernel version:
if [ -f uname ]; then
cat uname
elif [ -f proc/version ]; then
cat proc/version
fi
Check system uptime:
if [ -f uptime ]; then
cat uptime
elif [ -f proc/uptime ]; then
# Parse uptime from proc/uptime (seconds)
awk '{printf "%.2f days\n", $1/86400}' proc/uptime
fi
Extract key system details:
- OS name and version
- Kernel version
- System architecture (x86_64, aarch64, etc.)
- Uptime (days)
Check for outdated kernel or OS:
- Compare kernel version with current stable
- Note if system hasn't been rebooted in a very long time (>365 days)
- Identify if OS version is EOL
Step 2: Analyze Installed Packages
List installed packages:
# For RPM-based systems
if [ -f installed-rpms ]; then
cat installed-rpms
fi
# For DEB-based systems
if [ -f installed-debs ]; then
cat installed-debs
fi
Extract key package versions:
# Important system packages
grep -E "^(kernel|systemd|glibc|openssh|openssl)" installed-rpms 2>/dev/null
# Or use awk to parse package name and version
awk '{print $1}' installed-rpms | head -20
Check for known problematic versions:
- Security vulnerabilities (if known CVEs)
- Buggy package versions
- Compatibility issues
Identify package manager issues:
# Check yum/dnf logs for errors
if [ -d sos_commands/yum ]; then
grep -i "error\|fail" sos_commands/yum/* 2>/dev/null
fi
Count packages and categorize:
- Total packages installed
- Key package versions (kernel, systemd, glibc, etc.)
- Recently updated packages (if timestamps available)
Step 3: Analyze Service Status
List all systemd units:
if [ -f sos_commands/systemd/systemctl_list-units ]; then
cat sos_commands/systemd/systemctl_list-units
fi
Identify failed services:
if [ -f sos_commands/systemd/systemctl_list-units_--failed ]; then
cat sos_commands/systemd/systemctl_list-units_--failed
elif [ -f sos_commands/systemd/systemctl_list-units ]; then
grep "failed" sos_commands/systemd/systemctl_list-units
fi
Check service details:
# Parse detailed status for failed services
if [ -f sos_commands/systemd/systemctl_status_--all ]; then
# Extract service names and their status
grep -E "●|Active:" sos_commands/systemd/systemctl_status_--all | head -50
fi
Count services by state:
# Count running, failed, inactive services
if [ -f sos_commands/systemd/systemctl_list-units ]; then
awk '{print $4}' sos_commands/systemd/systemctl_list-units | sort | uniq -c
fi
Identify critical service failures:
- System services (systemd-*, dbus, NetworkManager)
- Application services (httpd, nginx, postgresql, etc.)
- Custom services
Extract failure reasons from logs:
# For each failed service, find related log entries
grep -i "failed to start\|service.*failed" sos_commands/logs/journalctl_--no-pager 2>/dev/null | head -20
Step 4: Analyze SELinux Configuration
Check SELinux status:
if [ -f sos_commands/selinux/sestatus ]; then
cat sos_commands/selinux/sestatus
fi
Get SELinux mode:
if [ -f sos_commands/selinux/getenforce ]; then
cat sos_commands/selinux/getenforce
fi
Check for SELinux denials:
# Look for AVC denials in audit log
if [ -f var/log/audit/audit.log ]; then
grep "avc.*denied" var/log/audit/audit.log | head -50
fi
# Or in journald logs
grep -i "selinux.*denied\|avc.*denied" sos_commands/logs/journalctl_--no-pager 2>/dev/null | head -20
Parse denial information:
- Extract denied operations (read, write, execute, etc.)
- Identify source and target contexts
- Note which services are affected
Check for SELinux booleans:
if [ -f sos_commands/selinux/getsebool_-a ]; then
cat sos_commands/selinux/getsebool_-a
fi
Identify SELinux issues:
- SELinux in permissive mode (may hide errors)
- SELinux disabled (security concern)
- Frequent AVC denials (policy may need adjustment)
- Context mismatches
Step 5: Check System Configuration
Review kernel parameters:
# Check sysctl settings
if [ -f sos_commands/kernel/sysctl_-a ]; then
cat sos_commands/kernel/sysctl_-a
elif [ -d etc/sysctl.d ]; then
cat etc/sysctl.d/*.conf 2>/dev/null
fi
Check resource limits:
if [ -f etc/security/limits.conf ]; then
grep -v "^#\|^$" etc/security/limits.conf
fi
# Check limits.d directory
if [ -d etc/security/limits.d ]; then
cat etc/security/limits.d/*.conf 2>/dev/null
fi
Review boot parameters:
if [ -f sos_commands/boot/grub2-editenv_list ]; then
cat sos_commands/boot/grub2-editenv_list
elif [ -f proc/cmdline ]; then
cat proc/cmdline
fi
Check systemd configuration:
# Look for systemd configuration overrides
if [ -d etc/systemd/system ]; then
find etc/systemd/system -name "*.conf" 2>/dev/null
fi
Step 6: Generate System Configuration Summary
Create a structured summary with the following sections:
System Information:
- OS name and version
- Kernel version
- Architecture
- System uptime
- Last boot time
Package Summary:
- Total packages installed
- Key package versions (kernel, systemd, glibc, openssl, openssh)
- Known problematic packages (if any)
- Package manager issues
Service Status:
- Total services
- Running services count
- Failed services count
- List of failed services with reasons
- Critical service status
SELinux/AppArmor:
- SELinux status (enabled/disabled)
- SELinux mode (enforcing/permissive)
- Denial count
- Top denied operations
- Policy recommendations
Configuration Issues:
- Kernel parameter anomalies
- Resource limit issues
- Boot parameter problems
- Configuration file errors
Error Handling
Missing configuration files:
- Different distributions have different file locations
- Some files may not be collected based on sosreport options
- Document missing data in summary
Package manager variations:
- Handle both RPM and DEB systems
- Account for different package naming conventions
- Support multiple package managers (yum, dnf, apt)
SELinux vs AppArmor:
- Check which MAC system is in use
- Analyze accordingly
- Note if both or neither are present
Systemd vs init:
- Older systems may use init instead of systemd
- Check for both service management systems
- Adapt analysis based on what's present
Output Format
The system configuration analysis should produce:
SYSTEM CONFIGURATION SUMMARY
============================
SYSTEM INFORMATION
------------------
OS: {os_name} {os_version}
Kernel: {kernel_version}
Architecture: {arch}
Uptime: {uptime_days} days ({last_boot_time})
Status: {OK|WARNING|CRITICAL}
Notes:
- {system_info_note}
INSTALLED PACKAGES
------------------
Total Packages: {count}
Key Package Versions:
kernel: {version}
systemd: {version}
glibc: {version}
openssl: {version}
openssh-server: {version}
Status: {OK|WARNING|CRITICAL}
Issues:
- {package_issue_description}
SYSTEMD SERVICES
----------------
Total Units: {total}
Active: {active_count}
Failed: {failed_count}
Inactive: {inactive_count}
Failed Services:
● {service_name}.service - {description}
Reason: {failure_reason}
Last Failed: {timestamp}
● {service_name}.service - {description}
Reason: {failure_reason}
Last Failed: {timestamp}
Status: {OK|WARNING|CRITICAL}
Recommendations:
- {service_recommendation}
SELINUX
-------
Status: {enabled|disabled}
Mode: {enforcing|permissive|disabled}
Policy: {policy_name}
AVC Denials: {count} denials found
Top Denied Operations:
[{count}x] {operation} on {target} by {source}
[{count}x] {operation} on {target} by {source}
SELinux Booleans: {count} custom settings
Status: {OK|WARNING|CRITICAL}
Issues:
- {selinux_issue_description}
Recommendations:
- {selinux_recommendation}
KERNEL PARAMETERS
-----------------
Key sysctl Settings:
vm.swappiness: {value}
net.ipv4.ip_forward: {value}
kernel.panic: {value}
Custom Parameters: {count} custom settings found
Status: {OK|WARNING|CRITICAL}
Notes:
- {kernel_param_note}
RESOURCE LIMITS
---------------
Custom Limits Found: {count}
{user_or_group} {type} {item} {value}
Status: {OK|WARNING}
Notes:
- {limits_note}
CRITICAL CONFIGURATION ISSUES
-----------------------------
{severity}: {issue_description}
Evidence: {file_path}
Impact: {impact_description}
Recommendation: {remediation_action}
RECOMMENDATIONS
---------------
1. {actionable_recommendation}
2. {actionable_recommendation}
DATA SOURCES
------------
- OS Info: {sosreport_path}/etc/os-release
- Kernel: {sosreport_path}/uname
- Packages: {sosreport_path}/installed-rpms
- Services: {sosreport_path}/sos_commands/systemd/systemctl_list-units
- SELinux: {sosreport_path}/sos_commands/selinux/sestatus
- Audit Log: {sosreport_path}/var/log/audit/audit.log
Examples
Example 1: Failed Service Analysis
# List failed services
$ cat sos_commands/systemd/systemctl_list-units_--failed
UNIT LOAD ACTIVE SUB DESCRIPTION
● httpd.service loaded failed failed Apache Web Server
● postgresql.service loaded failed failed PostgreSQL database
# Find failure reason in logs
$ grep "httpd.service" sos_commands/logs/journalctl_--no-pager | grep -i "failed\|error"
Jan 15 10:23:45 server systemd[1]: httpd.service: Main process exited, code=exited, status=1/FAILURE
Jan 15 10:23:45 server systemd[1]: httpd.service: Failed with result 'exit-code'
Jan 15 10:23:45 server httpd[12345]: (98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
# Interpretation: httpd failed because port 80 is already in use
Example 2: SELinux Denial Analysis
# Check for AVC denials
$ grep "avc.*denied" var/log/audit/audit.log | head -5
type=AVC msg=audit(1705320245.123:456): avc: denied { write } for pid=1234 comm="httpd" name="index.html" dev="sda1" ino=789012 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:user_home_t:s0 tclass=file permissive=0
# Interpretation:
# - httpd (web server) was denied write access
# - Target file: index.html with context user_home_t
# - Issue: Web server trying to write to user home directory
# - Solution: Fix file context or move file to proper location
Example 3: Package Version Check
# Check for specific package versions
$ grep "^openssl" installed-rpms
openssl-1.1.1k-7.el8_6.x86_64
openssl-libs-1.1.1k-7.el8_6.x86_64
$ grep "^kernel" installed-rpms
kernel-4.18.0-425.el8.x86_64
kernel-4.18.0-477.el8.x86_64
kernel-core-4.18.0-425.el8.x86_64
kernel-core-4.18.0-477.el8.x86_64
# Interpretation:
# - OpenSSL version 1.1.1k (check for known CVEs)
# - Multiple kernels installed (good for rollback)
# - Current kernel is 4.18.0-477 (from uname)
Tips for Effective Analysis
- Check service dependencies: Failed service may be due to dependency failure
- Correlate with logs: Service failures often have detailed errors in logs
- Verify configurations: Check service config files for syntax errors
- Consider timing: When did service fail? Correlate with system events
- SELinux context matters: File contexts must match policy expectations
- Package versions: Compare with known good/bad versions
- Uptime significance: Very long uptime may mean missed security updates
Common Configuration Patterns and Issues
- Service dependency failure: ServiceB fails because ServiceA is not running
- Port conflict: Service fails to bind - port already in use
- Permission denied: Service can't access required files/directories
- SELinux blocking: Service denied access by SELinux policy
- Missing dependencies: Required package not installed
- Configuration error: Syntax error in config file
- Resource limits: Service hits ulimit (open files, processes, etc.)
- Outdated kernel: Running kernel doesn't match installed packages
Configuration Issue Severity Classification
| Issue Type |
Severity |
Impact |
| Critical service failed |
High |
Core functionality unavailable |
| Optional service failed |
Low |
Non-essential feature unavailable |
| SELinux in permissive |
Warning |
Reduced security, hiding issues |
| SELinux disabled |
Critical |
No mandatory access control |
| Kernel very outdated |
High |
Missing security fixes |
| EOL OS version |
Critical |
No security updates |
| Many AVC denials |
Warning |
Policy may need tuning |
See Also
- Logs Analysis Skill: For detailed service failure log analysis
- Resource Analysis Skill: For resource limit issues
- Network Analysis Skill: For network service configuration
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: system-configuration-analysis3description: Analyze system configuration data from sosreport archives, extracting OS details, installed packages, systemd service status, SELinux/AppArmor policies, and kernel parameters from the sosreport directory structure to diagnose configuration-related system issues Use when this capability is needed.4---56# System Configuration Analysis Skill78This skill provides detailed guidance for analyzing system configuration from sosreport archives, including OS information, installed packages, systemd services, and SELinux/AppArmor settings.910## When to Use This Skill1112Use this skill when:13- Analyzing the `/sosreport:analyze` command's system configuration phase14- Investigating service failures or misconfigurations15- Verifying package versions and updates16- Checking security policy settings (SELinux/AppArmor)17- Understanding system state and configuration1819## Prerequisites2021- Sosreport archive must be extracted to a working directory22- Path to the sosreport root directory must be known23- Understanding of Linux system administration2425## Key Configuration Data Locations in Sosreport26271. **System Information**:28 - `uname` - Kernel version29 - `etc/os-release` - OS distribution and version30 - `uptime` - System uptime31 - `proc/uptime` - Uptime in seconds32 - `sos_commands/release/` - Release information33342. **Package Information**:35 - `installed-rpms` - RPM packages (RHEL/Fedora/CentOS)36 - `installed-debs` - DEB packages (Debian/Ubuntu)37 - `sos_commands/yum/` - Yum/DNF information38 - `sos_commands/rpm/` - RPM database queries39403. **Service Status**:41 - `sos_commands/systemd/systemctl_list-units` - All units42 - `sos_commands/systemd/systemctl_list-units_--failed` - Failed units43 - `sos_commands/systemd/systemctl_status_--all` - Detailed service status44 - `sos_commands/systemd/systemctl_list-unit-files` - Unit files45464. **SELinux**:47 - `sos_commands/selinux/sestatus` - SELinux status48 - `sos_commands/selinux/getenforce` - Current enforcement mode49 - `sos_commands/selinux/selinux-policy` - Policy information50 - `var/log/audit/audit.log` - SELinux denials51525. **AppArmor** (if applicable):53 - `sos_commands/apparmor/` - AppArmor configuration54 - `etc/apparmor.d/` - AppArmor profiles55566. **System Configuration Files**:57 - `etc/` - System-wide configuration58 - `etc/sysctl.conf` or `etc/sysctl.d/` - Kernel parameters59 - `etc/security/limits.conf` - Resource limits6061## Implementation Steps6263### Step 1: Analyze System Information64651. **Check OS version and distribution**:66 ```bash67 if [ -f etc/os-release ]; then68 cat etc/os-release69 fi70 ```71722. **Get kernel version**:73 ```bash74 if [ -f uname ]; then75 cat uname76 elif [ -f proc/version ]; then77 cat proc/version78 fi79 ```80813. **Check system uptime**:82 ```bash83 if [ -f uptime ]; then84 cat uptime85 elif [ -f proc/uptime ]; then86 # Parse uptime from proc/uptime (seconds)87 awk '{printf "%.2f days\n", $1/86400}' proc/uptime88 fi89 ```90914. **Extract key system details**:92 - OS name and version93 - Kernel version94 - System architecture (x86_64, aarch64, etc.)95 - Uptime (days)96975. **Check for outdated kernel or OS**:98 - Compare kernel version with current stable99 - Note if system hasn't been rebooted in a very long time (>365 days)100 - Identify if OS version is EOL101102### Step 2: Analyze Installed Packages1031041. **List installed packages**:105 ```bash106 # For RPM-based systems107 if [ -f installed-rpms ]; then108 cat installed-rpms109 fi110111 # For DEB-based systems112 if [ -f installed-debs ]; then113 cat installed-debs114 fi115 ```1161172. **Extract key package versions**:118 ```bash119 # Important system packages120 grep -E "^(kernel|systemd|glibc|openssh|openssl)" installed-rpms 2>/dev/null121122 # Or use awk to parse package name and version123 awk '{print $1}' installed-rpms | head -20124 ```1251263. **Check for known problematic versions**:127 - Security vulnerabilities (if known CVEs)128 - Buggy package versions129 - Compatibility issues1301314. **Identify package manager issues**:132 ```bash133 # Check yum/dnf logs for errors134 if [ -d sos_commands/yum ]; then135 grep -i "error\|fail" sos_commands/yum/* 2>/dev/null136 fi137 ```1381395. **Count packages and categorize**:140 - Total packages installed141 - Key package versions (kernel, systemd, glibc, etc.)142 - Recently updated packages (if timestamps available)143144### Step 3: Analyze Service Status1451461. **List all systemd units**:147 ```bash148 if [ -f sos_commands/systemd/systemctl_list-units ]; then149 cat sos_commands/systemd/systemctl_list-units150 fi151 ```1521532. **Identify failed services**:154 ```bash155 if [ -f sos_commands/systemd/systemctl_list-units_--failed ]; then156 cat sos_commands/systemd/systemctl_list-units_--failed157 elif [ -f sos_commands/systemd/systemctl_list-units ]; then158 grep "failed" sos_commands/systemd/systemctl_list-units159 fi160 ```1611623. **Check service details**:163 ```bash164 # Parse detailed status for failed services165 if [ -f sos_commands/systemd/systemctl_status_--all ]; then166 # Extract service names and their status167 grep -E "●|Active:" sos_commands/systemd/systemctl_status_--all | head -50168 fi169 ```1701714. **Count services by state**:172 ```bash173 # Count running, failed, inactive services174 if [ -f sos_commands/systemd/systemctl_list-units ]; then175 awk '{print $4}' sos_commands/systemd/systemctl_list-units | sort | uniq -c176 fi177 ```1781795. **Identify critical service failures**:180 - System services (systemd-*, dbus, NetworkManager)181 - Application services (httpd, nginx, postgresql, etc.)182 - Custom services1831846. **Extract failure reasons from logs**:185 ```bash186 # For each failed service, find related log entries187 grep -i "failed to start\|service.*failed" sos_commands/logs/journalctl_--no-pager 2>/dev/null | head -20188 ```189190### Step 4: Analyze SELinux Configuration1911921. **Check SELinux status**:193 ```bash194 if [ -f sos_commands/selinux/sestatus ]; then195 cat sos_commands/selinux/sestatus196 fi197 ```1981992. **Get SELinux mode**:200 ```bash201 if [ -f sos_commands/selinux/getenforce ]; then202 cat sos_commands/selinux/getenforce203 fi204 ```2052063. **Check for SELinux denials**:207 ```bash208 # Look for AVC denials in audit log209 if [ -f var/log/audit/audit.log ]; then210 grep "avc.*denied" var/log/audit/audit.log | head -50211 fi212213 # Or in journald logs214 grep -i "selinux.*denied\|avc.*denied" sos_commands/logs/journalctl_--no-pager 2>/dev/null | head -20215 ```2162174. **Parse denial information**:218 - Extract denied operations (read, write, execute, etc.)219 - Identify source and target contexts220 - Note which services are affected2212225. **Check for SELinux booleans**:223 ```bash224 if [ -f sos_commands/selinux/getsebool_-a ]; then225 cat sos_commands/selinux/getsebool_-a226 fi227 ```2282296. **Identify SELinux issues**:230 - SELinux in permissive mode (may hide errors)231 - SELinux disabled (security concern)232 - Frequent AVC denials (policy may need adjustment)233 - Context mismatches234235### Step 5: Check System Configuration2362371. **Review kernel parameters**:238 ```bash239 # Check sysctl settings240 if [ -f sos_commands/kernel/sysctl_-a ]; then241 cat sos_commands/kernel/sysctl_-a242 elif [ -d etc/sysctl.d ]; then243 cat etc/sysctl.d/*.conf 2>/dev/null244 fi245 ```2462472. **Check resource limits**:248 ```bash249 if [ -f etc/security/limits.conf ]; then250 grep -v "^#\|^$" etc/security/limits.conf251 fi252253 # Check limits.d directory254 if [ -d etc/security/limits.d ]; then255 cat etc/security/limits.d/*.conf 2>/dev/null256 fi257 ```2582593. **Review boot parameters**:260 ```bash261 if [ -f sos_commands/boot/grub2-editenv_list ]; then262 cat sos_commands/boot/grub2-editenv_list263 elif [ -f proc/cmdline ]; then264 cat proc/cmdline265 fi266 ```2672684. **Check systemd configuration**:269 ```bash270 # Look for systemd configuration overrides271 if [ -d etc/systemd/system ]; then272 find etc/systemd/system -name "*.conf" 2>/dev/null273 fi274 ```275276### Step 6: Generate System Configuration Summary277278Create a structured summary with the following sections:2792801. **System Information**:281 - OS name and version282 - Kernel version283 - Architecture284 - System uptime285 - Last boot time2862872. **Package Summary**:288 - Total packages installed289 - Key package versions (kernel, systemd, glibc, openssl, openssh)290 - Known problematic packages (if any)291 - Package manager issues2922933. **Service Status**:294 - Total services295 - Running services count296 - Failed services count297 - List of failed services with reasons298 - Critical service status2993004. **SELinux/AppArmor**:301 - SELinux status (enabled/disabled)302 - SELinux mode (enforcing/permissive)303 - Denial count304 - Top denied operations305 - Policy recommendations3063075. **Configuration Issues**:308 - Kernel parameter anomalies309 - Resource limit issues310 - Boot parameter problems311 - Configuration file errors312313## Error Handling3143151. **Missing configuration files**:316 - Different distributions have different file locations317 - Some files may not be collected based on sosreport options318 - Document missing data in summary3193202. **Package manager variations**:321 - Handle both RPM and DEB systems322 - Account for different package naming conventions323 - Support multiple package managers (yum, dnf, apt)3243253. **SELinux vs AppArmor**:326 - Check which MAC system is in use327 - Analyze accordingly328 - Note if both or neither are present3293304. **Systemd vs init**:331 - Older systems may use init instead of systemd332 - Check for both service management systems333 - Adapt analysis based on what's present334335## Output Format336337The system configuration analysis should produce:338339```bash340SYSTEM CONFIGURATION SUMMARY341============================342343SYSTEM INFORMATION344------------------345OS: {os_name} {os_version}346Kernel: {kernel_version}347Architecture: {arch}348Uptime: {uptime_days} days ({last_boot_time})349350Status: {OK|WARNING|CRITICAL}351Notes:352 - {system_info_note}353354INSTALLED PACKAGES355------------------356Total Packages: {count}357358Key Package Versions:359 kernel: {version}360 systemd: {version}361 glibc: {version}362 openssl: {version}363 openssh-server: {version}364365Status: {OK|WARNING|CRITICAL}366Issues:367 - {package_issue_description}368369SYSTEMD SERVICES370----------------371Total Units: {total}372Active: {active_count}373Failed: {failed_count}374Inactive: {inactive_count}375376Failed Services:377 ● {service_name}.service - {description}378 Reason: {failure_reason}379 Last Failed: {timestamp}380381 ● {service_name}.service - {description}382 Reason: {failure_reason}383 Last Failed: {timestamp}384385Status: {OK|WARNING|CRITICAL}386Recommendations:387 - {service_recommendation}388389SELINUX390-------391Status: {enabled|disabled}392Mode: {enforcing|permissive|disabled}393Policy: {policy_name}394395AVC Denials: {count} denials found396397Top Denied Operations:398 [{count}x] {operation} on {target} by {source}399 [{count}x] {operation} on {target} by {source}400401SELinux Booleans: {count} custom settings402403Status: {OK|WARNING|CRITICAL}404Issues:405 - {selinux_issue_description}406407Recommendations:408 - {selinux_recommendation}409410KERNEL PARAMETERS411-----------------412Key sysctl Settings:413 vm.swappiness: {value}414 net.ipv4.ip_forward: {value}415 kernel.panic: {value}416417Custom Parameters: {count} custom settings found418419Status: {OK|WARNING|CRITICAL}420Notes:421 - {kernel_param_note}422423RESOURCE LIMITS424---------------425Custom Limits Found: {count}426427{user_or_group} {type} {item} {value}428429Status: {OK|WARNING}430Notes:431 - {limits_note}432433CRITICAL CONFIGURATION ISSUES434-----------------------------435{severity}: {issue_description}436 Evidence: {file_path}437 Impact: {impact_description}438 Recommendation: {remediation_action}439440RECOMMENDATIONS441---------------4421. {actionable_recommendation}4432. {actionable_recommendation}444445DATA SOURCES446------------447- OS Info: {sosreport_path}/etc/os-release448- Kernel: {sosreport_path}/uname449- Packages: {sosreport_path}/installed-rpms450- Services: {sosreport_path}/sos_commands/systemd/systemctl_list-units451- SELinux: {sosreport_path}/sos_commands/selinux/sestatus452- Audit Log: {sosreport_path}/var/log/audit/audit.log453```454455## Examples456457### Example 1: Failed Service Analysis458459```bash460# List failed services461$ cat sos_commands/systemd/systemctl_list-units_--failed462 UNIT LOAD ACTIVE SUB DESCRIPTION463● httpd.service loaded failed failed Apache Web Server464● postgresql.service loaded failed failed PostgreSQL database465466# Find failure reason in logs467$ grep "httpd.service" sos_commands/logs/journalctl_--no-pager | grep -i "failed\|error"468Jan 15 10:23:45 server systemd[1]: httpd.service: Main process exited, code=exited, status=1/FAILURE469Jan 15 10:23:45 server systemd[1]: httpd.service: Failed with result 'exit-code'470Jan 15 10:23:45 server httpd[12345]: (98)Address already in use: AH00072: make_sock: could not bind to address [::]:80471472# Interpretation: httpd failed because port 80 is already in use473```474475### Example 2: SELinux Denial Analysis476477```bash478# Check for AVC denials479$ grep "avc.*denied" var/log/audit/audit.log | head -5480type=AVC msg=audit(1705320245.123:456): avc: denied { write } for pid=1234 comm="httpd" name="index.html" dev="sda1" ino=789012 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:user_home_t:s0 tclass=file permissive=0481482# Interpretation:483# - httpd (web server) was denied write access484# - Target file: index.html with context user_home_t485# - Issue: Web server trying to write to user home directory486# - Solution: Fix file context or move file to proper location487```488489### Example 3: Package Version Check490491```bash492# Check for specific package versions493$ grep "^openssl" installed-rpms494openssl-1.1.1k-7.el8_6.x86_64495openssl-libs-1.1.1k-7.el8_6.x86_64496497$ grep "^kernel" installed-rpms498kernel-4.18.0-425.el8.x86_64499kernel-4.18.0-477.el8.x86_64500kernel-core-4.18.0-425.el8.x86_64501kernel-core-4.18.0-477.el8.x86_64502503# Interpretation:504# - OpenSSL version 1.1.1k (check for known CVEs)505# - Multiple kernels installed (good for rollback)506# - Current kernel is 4.18.0-477 (from uname)507```508509## Tips for Effective Analysis5105111. **Check service dependencies**: Failed service may be due to dependency failure5122. **Correlate with logs**: Service failures often have detailed errors in logs5133. **Verify configurations**: Check service config files for syntax errors5144. **Consider timing**: When did service fail? Correlate with system events5155. **SELinux context matters**: File contexts must match policy expectations5166. **Package versions**: Compare with known good/bad versions5177. **Uptime significance**: Very long uptime may mean missed security updates518519## Common Configuration Patterns and Issues5205211. **Service dependency failure**: ServiceB fails because ServiceA is not running5222. **Port conflict**: Service fails to bind - port already in use5233. **Permission denied**: Service can't access required files/directories5244. **SELinux blocking**: Service denied access by SELinux policy5255. **Missing dependencies**: Required package not installed5266. **Configuration error**: Syntax error in config file5277. **Resource limits**: Service hits ulimit (open files, processes, etc.)5288. **Outdated kernel**: Running kernel doesn't match installed packages529530## Configuration Issue Severity Classification531532| Issue Type | Severity | Impact |533|------------|----------|--------|534| Critical service failed | High | Core functionality unavailable |535| Optional service failed | Low | Non-essential feature unavailable |536| SELinux in permissive | Warning | Reduced security, hiding issues |537| SELinux disabled | Critical | No mandatory access control |538| Kernel very outdated | High | Missing security fixes |539| EOL OS version | Critical | No security updates |540| Many AVC denials | Warning | Policy may need tuning |541542## See Also543544- Logs Analysis Skill: For detailed service failure log analysis545- Resource Analysis Skill: For resource limit issues546- Network Analysis Skill: For network service configuration547548---549> Converted and distributed by [TomeVault](https://tomevault.io/claim/openshift-eng) — claim your Tome and manage your conversions.550<!-- tomevault:4.0:skill_md:2026-04-11 -->