169 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			YAML
		
	
	
	
			
		
		
	
	
			169 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			YAML
		
	
	
	
| ---
 | |
| - name: Deep 595 Error Investigation - Part 2
 | |
|   hosts: pve_cluster
 | |
|   gather_facts: yes
 | |
|   tasks:
 | |
|     - name: Check PVE proxy real-time logs
 | |
|       shell: |
 | |
|         echo "=== PVE Proxy Logs (last 50 lines) ==="
 | |
|         journalctl -u pveproxy -n 50 --no-pager
 | |
|         echo "=== System Logs with 595 errors ==="
 | |
|         journalctl -n 200 --no-pager | grep -i "595\|no route\|connection.*refused\|connection.*reset"        
 | |
|       register: pve_proxy_logs
 | |
| 
 | |
|     - name: Display PVE proxy logs
 | |
|       debug:
 | |
|         msg: "{{ pve_proxy_logs.stdout_lines }}"
 | |
| 
 | |
|     - name: Check system network errors
 | |
|       shell: |
 | |
|         echo "=== Network Interface Status ==="
 | |
|         ip addr show
 | |
|         echo "=== Routing Table ==="
 | |
|         ip route show
 | |
|         echo "=== ARP Table ==="
 | |
|         arp -a 2>/dev/null || echo "ARP table empty"
 | |
|         echo "=== Network Statistics ==="
 | |
|         ss -s        
 | |
|       register: network_status
 | |
| 
 | |
|     - name: Display network status
 | |
|       debug:
 | |
|         msg: "{{ network_status.stdout_lines }}"
 | |
| 
 | |
|     - name: Check PVE cluster communication
 | |
|       shell: |
 | |
|         echo "=== PVE Cluster Status ==="
 | |
|         pvecm status 2>/dev/null || echo "Cluster status failed"
 | |
|         echo "=== PVE Cluster Nodes ==="
 | |
|         pvecm nodes 2>/dev/null || echo "Cluster nodes failed"
 | |
|         echo "=== PVE Cluster Quorum ==="
 | |
|         pvecm quorum status 2>/dev/null || echo "Quorum status failed"        
 | |
|       register: cluster_status
 | |
| 
 | |
|     - name: Display cluster status
 | |
|       debug:
 | |
|         msg: "{{ cluster_status.stdout_lines }}"
 | |
| 
 | |
|     - name: Check firewall and iptables
 | |
|       shell: |
 | |
|         echo "=== PVE Firewall Status ==="
 | |
|         pve-firewall status 2>/dev/null || echo "PVE firewall status failed"
 | |
|         echo "=== UFW Status ==="
 | |
|         ufw status 2>/dev/null || echo "UFW not available"
 | |
|         echo "=== iptables Rules ==="
 | |
|         iptables -L -n 2>/dev/null || echo "iptables not available"
 | |
|         echo "=== iptables NAT Rules ==="
 | |
|         iptables -t nat -L -n 2>/dev/null || echo "iptables NAT not available"        
 | |
|       register: firewall_status
 | |
| 
 | |
|     - name: Display firewall status
 | |
|       debug:
 | |
|         msg: "{{ firewall_status.stdout_lines }}"
 | |
| 
 | |
|     - name: Test connectivity with detailed output
 | |
|       shell: |
 | |
|         echo "=== Testing connectivity to PVE ==="
 | |
|         echo "1. DNS Resolution:"
 | |
|         nslookup pve 2>/dev/null || echo "DNS resolution failed"
 | |
|         echo "2. Ping Test:"
 | |
|         ping -c 3 pve
 | |
|         echo "3. Port Connectivity:"
 | |
|         nc -zv pve 8006
 | |
|         echo "4. HTTP Test:"
 | |
|         curl -k -v -m 10 https://pve:8006 2>&1 | head -20
 | |
|         echo "5. HTTP Status Code:"
 | |
|         curl -k -s -o /dev/null -w "HTTP Status: %{http_code}, Time: %{time_total}s, Size: %{size_download} bytes\n" https://pve:8006        
 | |
|       register: connectivity_test
 | |
|       when: inventory_hostname != 'pve'
 | |
| 
 | |
|     - name: Display connectivity test results
 | |
|       debug:
 | |
|         msg: "{{ connectivity_test.stdout_lines }}"
 | |
|       when: inventory_hostname != 'pve'
 | |
| 
 | |
|     - name: Check PVE proxy configuration
 | |
|       shell: |
 | |
|         echo "=== PVE Proxy Process Info ==="
 | |
|         ps aux | grep pveproxy | grep -v grep
 | |
|         echo "=== PVE Proxy Port Binding ==="
 | |
|         ss -tlnp | grep 8006
 | |
|         echo "=== PVE Proxy Configuration Files ==="
 | |
|         find /etc -name "*pveproxy*" -type f 2>/dev/null
 | |
|         echo "=== PVE Proxy Service Status ==="
 | |
|         systemctl status pveproxy --no-pager        
 | |
|       register: pve_proxy_config
 | |
| 
 | |
|     - name: Display PVE proxy configuration
 | |
|       debug:
 | |
|         msg: "{{ pve_proxy_config.stdout_lines }}"
 | |
| 
 | |
|     - name: Check system resources
 | |
|       shell: |
 | |
|         echo "=== Memory Usage ==="
 | |
|         free -h
 | |
|         echo "=== Disk Usage ==="
 | |
|         df -h
 | |
|         echo "=== Load Average ==="
 | |
|         uptime
 | |
|         echo "=== Network Connections ==="
 | |
|         ss -tuln | grep 8006        
 | |
|       register: system_resources
 | |
| 
 | |
|     - name: Display system resources
 | |
|       debug:
 | |
|         msg: "{{ system_resources.stdout_lines }}"
 | |
| 
 | |
|     - name: Check for any error patterns
 | |
|       shell: |
 | |
|         echo "=== Recent Error Patterns ==="
 | |
|         journalctl -n 500 --no-pager | grep -i "error\|fail\|refuse\|deny\|timeout\|connection.*reset" | tail -20
 | |
|         echo "=== PVE Specific Errors ==="
 | |
|         journalctl -u pveproxy -n 100 --no-pager | grep -i "error\|fail\|refuse\|deny\|timeout"        
 | |
|       register: error_patterns
 | |
| 
 | |
|     - name: Display error patterns
 | |
|       debug:
 | |
|         msg: "{{ error_patterns.stdout_lines }}"
 | |
| 
 | |
|     - name: Test PVE API access
 | |
|       uri:
 | |
|         url: "https://localhost:8006/api2/json/version"
 | |
|         method: GET
 | |
|         validate_certs: no
 | |
|         timeout: 10
 | |
|       register: pve_api_test
 | |
|       ignore_errors: yes
 | |
|       when: inventory_hostname == 'pve'
 | |
| 
 | |
|     - name: Display PVE API test result
 | |
|       debug:
 | |
|         msg: "PVE API access: {{ 'SUCCESS' if pve_api_test.status == 200 else 'FAILED' }}"
 | |
|       when: inventory_hostname == 'pve' and pve_api_test is defined
 | |
| 
 | |
|     - name: Check PVE proxy access control
 | |
|       shell: |
 | |
|         echo "=== PVE Proxy Access Logs ==="
 | |
|         journalctl -u pveproxy -n 100 --no-pager | grep -E "GET|POST|PUT|DELETE" | tail -10
 | |
|         echo "=== PVE Proxy Error Logs ==="
 | |
|         journalctl -u pveproxy -n 100 --no-pager | grep -i "error\|fail\|refuse\|deny" | tail -10        
 | |
|       register: pve_proxy_access
 | |
| 
 | |
|     - name: Display PVE proxy access logs
 | |
|       debug:
 | |
|         msg: "{{ pve_proxy_access.stdout_lines }}"
 | |
| 
 | |
|     - name: Check network interface details
 | |
|       shell: |
 | |
|         echo "=== Network Interface Details ==="
 | |
|         ip link show
 | |
|         echo "=== Bridge Information ==="
 | |
|         bridge link show 2>/dev/null || echo "Bridge command not available"
 | |
|         echo "=== VLAN Information ==="
 | |
|         ip link show type vlan 2>/dev/null || echo "No VLAN interfaces"        
 | |
|       register: network_interface_details
 | |
| 
 | |
|     - name: Display network interface details
 | |
|       debug:
 | |
|         msg: "{{ network_interface_details.stdout_lines }}"
 |