<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Troubleshooting on Luke Hebert</title><link>https://lukehebert.com/tag/troubleshooting/</link><description>Recent content in Troubleshooting on Luke Hebert</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sat, 23 Aug 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://lukehebert.com/tag/troubleshooting/index.xml" rel="self" type="application/rss+xml"/><item><title>Enable Kubelet Certificates in Kubernetes if you forgot.</title><link>https://lukehebert.com/post/enable-kubelet-serving-certificates-in-kubernetes-if-you-did-not-do-so-during-cluster-deployment-metric-server/</link><pubDate>Sat, 23 Aug 2025 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/enable-kubelet-serving-certificates-in-kubernetes-if-you-did-not-do-so-during-cluster-deployment-metric-server/</guid><description>Enables kubelet TLS bootstrapping so the controller-manager issues proper serving certificates, resolving the x509 certificate validation error in metrics-server. Covers deployment edits, controller-manager configuration, and automated certificate renewal.</description></item><item><title>Basic Iptables Insert</title><link>https://lukehebert.com/post/basic-iptables-insert/</link><pubDate>Thu, 21 Aug 2025 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/basic-iptables-insert/</guid><description>Learn how to insert iptables rules at a specific position using the -I flag, with syntax breakdown and a practical SSH example.</description></item><item><title>firewalld Quick Reference</title><link>https://lukehebert.com/post/firewalld-cheatsheet/</link><pubDate>Thu, 21 Aug 2025 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/firewalld-cheatsheet/</guid><description>A practical cheat sheet for managing firewalld on RHEL, Fedora, and CentOS systems. Covers zones, services, ports, rich rules, NAT, and direct iptables-style rules.</description></item><item><title>Ip Link Show Type</title><link>https://lukehebert.com/post/ip-link-show-type/</link><pubDate>Tue, 19 Aug 2025 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/ip-link-show-type/</guid><description>A guide to the ip link show type and ip address show type commands in Linux for filtering network interfaces by type. Covers physical, virtual, and tunneling interface types with practical examples.</description></item><item><title>Kubernetes DNS: How Pods Talk (When They Actually Do)</title><link>https://lukehebert.com/post/understanding-how-pods-talk-in-kubernetes-networks-dns/</link><pubDate>Tue, 19 Aug 2025 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/understanding-how-pods-talk-in-kubernetes-networks-dns/</guid><description>A deep dive into how Kubernetes DNS resolves service names to IP addresses, covering A records, SRV records, search domains, and the full lookup path from pod to CoreDNS. Understanding this lifecycle is essential for debugging connectivity issues and designing resilient microservice architectures.</description></item><item><title>Finding Which Java Threads Are Eating Your CPU for Breakfast</title><link>https://lukehebert.com/post/finding-which-java-threads-are-consuming-your-cpu/</link><pubDate>Fri, 15 Aug 2025 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/finding-which-java-threads-are-consuming-your-cpu/</guid><description>When a Java process is eating your CPU, you need to know exactly which thread is responsible. This guide walks through JVisualVM, jstack, top, and jvmtop to pinpoint the culprit.</description></item><item><title>How to Inspect a Thread Dump Like a Pro</title><link>https://lukehebert.com/post/how-to-inspect-a-thread-dump-like-a-pro/</link><pubDate>Fri, 15 Aug 2025 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/how-to-inspect-a-thread-dump-like-a-pro/</guid><description>Learn how to capture, read, and interpret Java thread dumps using JDK tools like jstack and jcmd. Covers thread states, CPU analysis, deadlock detection, and practical tools for spotting performance issues.</description></item><item><title>Not Enough Storage Available While Using Jstack (Win)</title><link>https://lukehebert.com/post/not-enough-storage-available-while-using-jstack-win/</link><pubDate>Thu, 14 Aug 2025 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/not-enough-storage-available-while-using-jstack-win/</guid><description>A quick fix for the &amp;rsquo;not enough storage available&amp;rsquo; error when running jstack on Windows, caused by the JVM running under the Local System Account. Two workarounds using Psexec or JMX remote monitoring.</description></item><item><title>Jstack and Jcmd: What Are Your Java Threads Even Doing?</title><link>https://lukehebert.com/post/using-jcmd-jstack-to-get-thread-information/</link><pubDate>Tue, 12 Aug 2025 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/using-jcmd-jstack-to-get-thread-information/</guid><description>A practical guide to using the jcmd and jstack utilities for collecting thread dumps, heap data, and CPU information from a running JVM process. Includes ready-to-use scripts and one-liners for troubleshooting slow or hung Java applications.</description></item><item><title>Kubernetes Resource Management</title><link>https://lukehebert.com/post/kubernetes-resource-management/</link><pubDate>Mon, 11 Aug 2025 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/kubernetes-resource-management/</guid><description>A practical guide to configuring CPU, memory, and storage requests and limits in Kubernetes, covering container-level, Pod-level, and namespace-level resource controls. Includes troubleshooting steps for common scheduling and OOM issues.</description></item><item><title>pgBackRest and Helpful Commands</title><link>https://lukehebert.com/post/pgbackrest-and-helpful-commands/</link><pubDate>Wed, 02 Jul 2025 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/pgbackrest-and-helpful-commands/</guid><description>A practical reference for pgBackRest backup, restore, and cleanup commands for PostgreSQL. Covers manual cleanup, incremental backups, retention policies, and stanza management.</description></item><item><title>Understanding Machine CPU Usage</title><link>https://lukehebert.com/post/understanding-machine-cpu-usage/</link><pubDate>Wed, 18 Jun 2025 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/understanding-machine-cpu-usage/</guid><description>A practical walkthrough of reading node_cpu_seconds_total from the Prometheus Node exporter, calculating per-second rates, and deriving overall CPU utilization percentages across multiple machines.</description></item><item><title>An Introductory How-To, With Examples, of Docker Exec</title><link>https://lukehebert.com/post/an-introductory-how-to-of-docker-exec/</link><pubDate>Thu, 29 May 2025 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/an-introductory-how-to-of-docker-exec/</guid><description>A practical guide to the docker exec command, covering background execution, environment variables, interactive sessions, and working directory control. Includes real-world examples to help you get the most out of running commands inside containers.</description></item><item><title>Java TLS Client Debugging</title><link>https://lukehebert.com/post/java-tls-client-debugging/</link><pubDate>Mon, 19 May 2025 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/java-tls-client-debugging/</guid><description>A guide to inspecting SSL/TLS handshakes in Java applications when built-in debugging is unavailable. Includes a lightweight TLS client tool for testing certificate and handshake issues.</description></item><item><title>Udev Diagnostic Test for a Broken /dev/null Node</title><link>https://lukehebert.com/post/udev-diagnostic-test/</link><pubDate>Thu, 27 Feb 2025 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/udev-diagnostic-test/</guid><description>A walkthrough of using udevadm to diagnose and inspect udev rule application on a /dev/null device node. Covers the test command syntax and interprets the output for troubleshooting permission issues.</description></item><item><title>Catching Packets: Tuning Linux Network Inbound</title><link>https://lukehebert.com/post/monitoring-and-tuning-the-linux-networking-stack-receiving-data/</link><pubDate>Fri, 11 Oct 2024 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/monitoring-and-tuning-the-linux-networking-stack-receiving-data/</guid><description>A deep dive into how the Linux kernel receives network packets, covering the full path from NIC hardware through NAPI, softirqs, GRO, RPS, and protocol layers. Includes practical monitoring commands and tuning knobs for each stage.</description></item><item><title>Linux Network Ring Buffers</title><link>https://lukehebert.com/post/linux-network-ring-buffers-trying-to-cover-what-i-dont-know-about/</link><pubDate>Fri, 11 Oct 2024 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/linux-network-ring-buffers-trying-to-cover-what-i-dont-know-about/</guid><description>A practical walkthrough of how Linux allocates and manages RX/TX ring buffers for network interfaces, covering DMA, softirq processing, and tuning knobs like netdev_budget.</description></item><item><title>Myths About /dev/urandom</title><link>https://lukehebert.com/post/myths-about-dev-urandom/</link><pubDate>Fri, 04 Oct 2024 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/myths-about-dev-urandom/</guid><description>A practical breakdown of the most common misconceptions about /dev/urandom and /dev/random on Linux, explaining why /dev/urandom is the correct choice for cryptographic randomness and why blocking on low entropy is a usability problem, not a security one.</description></item><item><title>Wireshark SSL Filters: Cutting Through the Crypto Noise</title><link>https://lukehebert.com/post/wireshark-filter-for-ssl-traffic/</link><pubDate>Fri, 30 Aug 2024 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/wireshark-filter-for-ssl-traffic/</guid><description>A collection of useful Wireshark display filters for analyzing SSL/TLS handshake traffic, including a reference table of handshake message types and notes on cipher suite considerations.</description></item><item><title>Docker/Kubernetes Network Diagnostic Tools</title><link>https://lukehebert.com/post/docker-kubernetes-network-diagnostic-tools/</link><pubDate>Mon, 26 Aug 2024 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/docker-kubernetes-network-diagnostic-tools/</guid><description>A practical guide to using the netshoot container for Docker and Kubernetes network troubleshooting. Covers network namespaces, tcpdump examples, and real-world diagnostic workflows.</description></item><item><title>How to Clean Up pg_wal If the Disk Is Full</title><link>https://lukehebert.com/post/how-to-clean-up-pg-wal-if-the-disk-is-full/</link><pubDate>Mon, 04 Dec 2023 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/how-to-clean-up-pg-wal-if-the-disk-is-full/</guid><description>A practical guide to resolving PostgreSQL pg_wal disk-full issues, covering both reactive recovery steps and proactive measures to prevent recurrence. Learn how to free space, move the WAL directory, and configure archiving correctly.</description></item><item><title>Analyzing Large Java Heap Dumps Using Memory Analyzer CLI</title><link>https://lukehebert.com/post/analyzing-large-java-heap-dumps-using-memory-analyzer-cli-in-linux/</link><pubDate>Fri, 17 Nov 2023 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/analyzing-large-java-heap-dumps-using-memory-analyzer-cli-in-linux/</guid><description>When MAT UI fails to handle very large heap dumps, the Memory Analyzer CLI provides a reliable alternative on Linux. This post walks through the setup and commands needed to parse multi-gigabyte dumps and generate shareable HTML reports.</description></item><item><title>Working with Multiple Content-Security-Policy Headers</title><link>https://lukehebert.com/post/working-with-multiple-content-security-policy-headers/</link><pubDate>Thu, 28 Sep 2023 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/working-with-multiple-content-security-policy-headers/</guid><description>Multiple Content-Security-Policy headers do not combine; the most restrictive one always wins. Learn how to correctly configure CSP in nginx by consolidating directives into a single header.</description></item><item><title>The Beer Drinker's Guide to SAML Duo Security</title><link>https://lukehebert.com/post/the-beer-drinkers-guide-to-saml-duo-security/</link><pubDate>Mon, 11 Sep 2023 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/the-beer-drinkers-guide-to-saml-duo-security/</guid><description>A plain-English walkthrough of how SAML authentication works, using the analogy of buying a beer at a concert. Covers IdP and SP configuration, IdP-initiated vs SP-initiated flows, and practical troubleshooting steps.</description></item><item><title>How to Start a SysV Init Script After Network Starts</title><link>https://lukehebert.com/post/how-to-start-a-sysv-init-script-after-network-starts-in-red-hat-enterprise-linux-7/</link><pubDate>Tue, 27 Jun 2023 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/how-to-start-a-sysv-init-script-after-network-starts-in-red-hat-enterprise-linux-7/</guid><description>Configure a legacy SysV init script to wait for network availability in RHEL 7 by adding the Required-Start LSB directive. This guide shows how systemd honors those headers so third-party initscripts start in the correct order.</description></item><item><title>Override systemd unit files</title><link>https://lukehebert.com/post/override-systemd-unit-files/</link><pubDate>Tue, 27 Jun 2023 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/override-systemd-unit-files/</guid><description>Learn how to safely override systemd unit and timer files using systemctl edit, avoiding the pitfalls of editing package-managed files directly. Covers creating drop-in overrides, full replacements, and reverting changes.</description></item><item><title>How to Change Docker Root Data Directory</title><link>https://lukehebert.com/post/how-to-change-docker-root-data-directory/</link><pubDate>Fri, 02 Jun 2023 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/how-to-change-docker-root-data-directory/</guid><description>A step-by-step guide to relocating the Docker data directory to a new path. Covers daemon configuration, data migration, and cleanup for both older and newer Docker versions.</description></item><item><title>Which Container Ate All Your Storage?</title><link>https://lukehebert.com/post/docker-determining-container-responsible-for-largest-overlay-directories/</link><pubDate>Thu, 18 May 2023 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/docker-determining-container-responsible-for-largest-overlay-directories/</guid><description>A practical guide to identifying which Docker containers occupy the largest overlay2 directories. Uses docker inspect, jq, and xargs to map cryptic layer hashes back to human-readable container names.</description></item><item><title>A Walkthrough of a TLS 1.3 Handshake</title><link>https://lukehebert.com/post/a-walkthrough-of-a-tls-1.3-handshake/</link><pubDate>Wed, 10 May 2023 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/a-walkthrough-of-a-tls-1.3-handshake/</guid><description>A byte-by-byte walkthrough of a TLS 1.3 handshake using OpenSSL&amp;rsquo;s s_client, comparing each message to its TLS 1.2 counterpart. Highlights how encryption, key exchange, and extensions differ in the latest revision.</description></item><item><title>How to Setup and Secure UniFi VLAN</title><link>https://lukehebert.com/post/how-to-setup-and-secure-unifi-vlan/</link><pubDate>Fri, 05 May 2023 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/how-to-setup-and-secure-unifi-vlan/</guid><description>A step-by-step guide to creating and securing VLANs in the UniFi Network Console, including firewall rules to block inter-VLAN traffic and restrict console access.</description></item><item><title>Introduction to Virtual LANs (VLANs) and Tagging</title><link>https://lukehebert.com/post/intro-to-networking-introduction-to-virtual-lans-vlans-and-tagging/</link><pubDate>Fri, 05 May 2023 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/intro-to-networking-introduction-to-virtual-lans-vlans-and-tagging/</guid><description>A beginner-friendly overview of Virtual LANs, covering their benefits, typical usage scenarios, and the fundamentals of 802.1Q VLAN tagging.</description></item><item><title>UniFi Network - Creating Virtual Networks (VLANs)</title><link>https://lukehebert.com/post/unifi-network-creating-virtual-networks-vlans/</link><pubDate>Fri, 05 May 2023 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/unifi-network-creating-virtual-networks-vlans/</guid><description>Learn how to create and configure virtual networks (VLANs) in UniFi Network to segment devices and improve network security. This guide covers wireless and wired client binding, trunk ports, and third-party gateway integration.</description></item><item><title>DNS</title><link>https://lukehebert.com/post/dns/</link><pubDate>Tue, 02 May 2023 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/dns/</guid><description>A practical guide to understanding DNS resolution tiers and troubleshooting name resolution issues in Linux environments. Covers /etc/nsswitch.conf, /etc/resolv.conf, and local caching services.</description></item><item><title>Optimize PostgreSQL Server Performance Through Configuration</title><link>https://lukehebert.com/post/optimize-postgresql-server-performance-through-configuration/</link><pubDate>Thu, 27 Apr 2023 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/optimize-postgresql-server-performance-through-configuration/</guid><description>This guide walks through four key PostgreSQL configuration settings that significantly impact server performance. Learn how to tune shared_buffers, wal_buffers, effective_cache_size, and work_mem for your specific workload.</description></item><item><title>Using SQLline to Test JDBC Connectors</title><link>https://lukehebert.com/post/using-sqlline-to-test-jdbc-connectors/</link><pubDate>Thu, 15 Dec 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/using-sqlline-to-test-jdbc-connectors/</guid><description>A practical guide to using SQLline to replicate SQL client behavior when testing JDBC connectors. Covers downloading the tool, setting up the classpath, and connecting to an Azure MySQL instance.</description></item><item><title>Identity Crisis: SAML Rejecting Improper URIs</title><link>https://lukehebert.com/post/id4262-the-saml-nameidentifier-user-is-of-format-urnoasisname/</link><pubDate>Tue, 29 Mar 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/id4262-the-saml-nameidentifier-user-is-of-format-urnoasisname/</guid><description>The ID4262 error occurs when a SAML NameIdentifier uses the entity format but contains an invalid URI. Two resolution steps fix the issue within your identity provider configuration.</description></item><item><title>Kerberos Code 41: Someone’s Tweaking the Stream!</title><link>https://lukehebert.com/post/kerberos-message-stream-modified-41/</link><pubDate>Fri, 18 Feb 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/kerberos-message-stream-modified-41/</guid><description>JDK 1.8.0u242 and later introduced Kerberos referral handling per RFC 6806, which can break Active Directory name canonicalization and produce a KRB_AP_ERR_MODIFIED error. This post walks through the two configuration fixes that resolve the issue.</description></item><item><title>A Practical Guide to Traceroute (tracecrt)</title><link>https://lukehebert.com/post/a-parctical-guide-to-trace-route-tracecrt/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/a-parctical-guide-to-trace-route-tracecrt/</guid><description>Traceroute is one of the most misunderstood tools in a network engineer&amp;rsquo;s toolkit. This guide walks through how traceroute actually works, how to read the output correctly, and how to avoid the common pitfalls that lead to wrong conclusions.</description></item><item><title>Awk Scan for wp-login</title><link>https://lukehebert.com/post/awk-scan-for-wp-login/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/awk-scan-for-wp-login/</guid><description>A quick awk pipeline to pull wp-login.php access attempts from web server logs and flag IPs that exceed a threshold. Useful for spotting brute-force or scanning activity against WordPress sites.</description></item><item><title>Check for IP Block</title><link>https://lukehebert.com/post/check-for-ip-block/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/check-for-ip-block/</guid><description>A quick way to verify whether a specific IP address is blocked by iptables rules on a Linux host. Covers the exact command and how to read the output.</description></item><item><title>Check Web Crawler Impact</title><link>https://lukehebert.com/post/check-web-crawler-impact/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/check-web-crawler-impact/</guid><description>A quick bash function to identify which search engine crawlers are hitting your Apache logs and how often, so you can spot unusual traffic patterns at a glance.</description></item><item><title>Counting Connecting IPs on Port 80 with netstat and ss</title><link>https://lukehebert.com/post/connecting-ip-on-port-80-count-netstat-ss/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/connecting-ip-on-port-80-count-netstat-ss/</guid><description>Two quick one-liners that count how many unique remote IPs are connected to port 80, using either netstat or ss. Handy for spotting unexpected traffic or verifying that only expected clients are hitting your web server.</description></item><item><title>Create Symbols and Resolve Stack (MySQL)</title><link>https://lukehebert.com/post/create-symbols-and-resolve-stack-mysql/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/create-symbols-and-resolve-stack-mysql/</guid><description>Learn how to extract dynamic symbols from the mysqld binary and use them to resolve a crash stack dump into readable function names.</description></item><item><title>DKIM Verification: Both Must Be Set to On</title><link>https://lukehebert.com/post/dkim-verification-both-must-be-set-to-on/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/dkim-verification-both-must-be-set-to-on/</guid><description>Exim offers two DKIM-related toggles that work together to validate and enforce sender signatures. Setting both to On ensures your mail server actually checks incoming DKIM records and rejects messages that fail validation.</description></item><item><title>Following the Mailman: Tracking Your Email's Route</title><link>https://lukehebert.com/post/verbose-tracking-of-mail-being-sent/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/verbose-tracking-of-mail-being-sent/</guid><description>A quick reference for enabling verbose output when sending mail from the command line, so you can see the full SMTP transaction and diagnose delivery issues.</description></item><item><title>gdb Thread Dumps</title><link>https://lukehebert.com/post/gbb-thread-dump/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/gbb-thread-dump/</guid><description>A quick three-command recipe for grabbing a full thread backtrace from a running httpd process with gdb, useful when Apache appears hung or unresponsive.</description></item><item><title>Getting Gateway Hostnames from Mail Logs</title><link>https://lukehebert.com/post/get-gateway-hostnamed-from-mail-log/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/get-gateway-hostnamed-from-mail-log/</guid><description>A quick bash one-liner to pull offending IP addresses from exim relay-denied entries and resolve them to hostnames, making it easier to identify which gateways are misconfigured.</description></item><item><title>InnoDB Corruption and Recovery Guide</title><link>https://lukehebert.com/post/innodb-corruption-and-recovery-guide/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/innodb-corruption-and-recovery-guide/</guid><description>A practical, step-by-step guide for diagnosing and recovering from common InnoDB corruption issues, covering first response, log analysis, checksum verification, and data restoration techniques.</description></item><item><title>Just a quick way to look at Inode Counts</title><link>https://lukehebert.com/post/inode-counts/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/inode-counts/</guid><description>A quick bash one-liner to identify which directories are consuming the most inodes on a Linux system, helping you pinpoint the source of &amp;lsquo;No space left on device&amp;rsquo; errors when disk space still appears available.</description></item><item><title>Lsof Check Listening Ports</title><link>https://lukehebert.com/post/lsof-check-listening-ports/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/lsof-check-listening-ports/</guid><description>A quick way to list every port a process is listening on, using lsof and a simple grep filter. Handy for troubleshooting connectivity issues or auditing what services are exposed on a host.</description></item><item><title>Mod Remote IP</title><link>https://lukehebert.com/post/mod-remote-ip/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/mod-remote-ip/</guid><description>A troubleshooting walkthrough for getting mod_remoteip working correctly under Apache 2.4 and cPanel, including the right LogFormat directives and RemoteIP configuration so that access logs, mod_security, and other modules all see the real client IP.</description></item><item><title>Mod Rewrite and Blocking Bad Bot</title><link>https://lukehebert.com/post/mod-rewrite-block-bad-bot/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/mod-rewrite-block-bad-bot/</guid><description>A quick Apache mod_rewrite snippet that returns a 403 Forbidden to any request whose User-Agent matches a bot pattern. Drop it into your .htaccess and you are done.</description></item><item><title>Mod_qos Tailblock</title><link>https://lukehebert.com/post/mod-qos-tailblock/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/mod-qos-tailblock/</guid><description>A lightweight bash script that monitors Apache error logs for repeated access-denied entries and automatically blocks offending IPs via iptables. Useful for quick-and-dirty rate-based blocking without a full WAF.</description></item><item><title>My Trace Route (mtr) Packet Loss Testing</title><link>https://lukehebert.com/post/my-trace-route-mtr-packet-loss-testing/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/my-trace-route-mtr-packet-loss-testing/</guid><description>A quick walkthrough of using mtr in report mode to capture packet loss data across network hops. Learn how to run a 30-cycle test and read the output to isolate where loss is occurring.</description></item><item><title>Netstat and SS: Check Listening Ports</title><link>https://lukehebert.com/post/netstat-ss-check-listening-ports/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/netstat-ss-check-listening-ports/</guid><description>A quick reference for checking listening ports on Linux using netstat and ss, including the flags that matter and what each output column means.</description></item><item><title>Nginx Flood Protection with limit_req</title><link>https://lukehebert.com/post/ngins-flood-protection-with-limit-req/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/ngins-flood-protection-with-limit-req/</guid><description>A practical walkthrough of Nginx&amp;rsquo;s limit_req module, showing how to cap request rates and protect PHP endpoints from HTTP-based denial-of-service attacks.</description></item><item><title>Nginx Non-standard Status Silent Connection Close</title><link>https://lukehebert.com/post/nginx-non-standard-status-silent-connection-close/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/nginx-non-standard-status-silent-connection-close/</guid><description>Nginx status code 444 silently drops a connection without sending any HTTP response to the client. Learn when and how to use it for security and traffic management.</description></item><item><title>NUMA and MySQL Swap Insanity</title><link>https://lukehebert.com/post/numa-mysql-swap-insanity/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/numa-mysql-swap-insanity/</guid><description>A deep dive into why MySQL on NUMA systems suffers from unpredictable swapping, and how a single numactl interleave fix eliminates the problem entirely.</description></item><item><title>Percona Xtradb Recovery</title><link>https://lukehebert.com/post/percona-xtradb-recovery/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/percona-xtradb-recovery/</guid><description>Percona XtraDB Cluster can recover a crashed node and rejoin it to the cluster using an incremental state transfer. This post walks through how GTID-based position recovery works under the hood and what you will see in the error log during the process.</description></item><item><title>RAID Error Code Key Qualifiers</title><link>https://lukehebert.com/post/raid-error-code-key-qualifers/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/raid-error-code-key-qualifers/</guid><description>A quick reference for understanding the key qualifiers that appear in RAID controller error codes, so you can pinpoint the exact failure condition instead of guessing from a generic error message.</description></item><item><title>Using an htaccess file to rewrite a block page with Apache</title><link>https://lukehebert.com/post/rewrite-block-page-check-for-patterns-check-google/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/rewrite-block-page-check-for-patterns-check-google/</guid><description>Use Apache mod_rewrite to return a 400 error for a specific URI and optionally block hotlinking from other domains. A quick .htaccess snippet that keeps unwanted traffic off a single page.</description></item><item><title>AWS VPC Overview &amp; Component Breakdown</title><link>https://lukehebert.com/post/aws-vpc-structure/</link><pubDate>Tue, 18 Jan 2022 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/aws-vpc-structure/</guid><description>A visual walkthrough of the core networking components that make up an Amazon VPC, from subnets and gateways to security groups and route tables. Understanding how these pieces interact is essential for designing secure, well-segmented cloud networks.</description></item><item><title>Kafka Dump</title><link>https://lukehebert.com/post/kafka-dump/</link><pubDate>Wed, 25 Aug 2021 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/kafka-dump/</guid><description>A practical walkthrough for dumping Kafka topic data, including a generic consumer approach and a full Atlas-specific workflow covering JAAS configuration, Kerberos authentication, and log extraction.</description></item><item><title>Dump Kafka Atlas Topic to Review Messages</title><link>https://lukehebert.com/post/dump-kafka-atlas-topic-to-review-messages/</link><pubDate>Fri, 20 Aug 2021 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/dump-kafka-atlas-topic-to-review-messages/</guid><description>A quick walkthrough for dumping the ATLAS_HOOK Kafka topic to inspect Atlas hook messages locally, including Kerberos authentication setup and consumer lag checks.</description></item><item><title>AWS Volume Juggling for Impaired Nodes and Node Health Check</title><link>https://lukehebert.com/post/aws-volume-juggling-for-impaired-nodes-and-node-health-check/</link><pubDate>Wed, 28 Jul 2021 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/aws-volume-juggling-for-impaired-nodes-and-node-health-check/</guid><description>A practical guide to diagnosing impaired EC2 instances by detaching and reattaching EBS root volumes to a rescue instance. Covers the full workflow from stopping the impaired node to restoring it to normal service.</description></item><item><title>Delete Existing Users From Ranger</title><link>https://lukehebert.com/post/delete-existing-users-from-ranger/</link><pubDate>Tue, 06 Jul 2021 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/delete-existing-users-from-ranger/</guid><description>A quick walkthrough of using the Ranger REST API to bulk-delete existing users, including how to capture an auth cookie and loop through a user list with curl.</description></item><item><title>Spark Token Debug</title><link>https://lukehebert.com/post/spark-token-debug/</link><pubDate>Thu, 04 Feb 2021 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/spark-token-debug/</guid><description>Enable verbose Kerberos and token logging on Spark driver and executor nodes to capture the diagnostic data you need when authentication is failing. Covers log4j configuration files and the exact spark-submit flags to wire them in.</description></item><item><title>Common Error Codes for Active Directory Authentication</title><link>https://lukehebert.com/post/common-error-codes-for-active-directory-authentication-acceptsecuritycontext/</link><pubDate>Tue, 24 Nov 2020 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/common-error-codes-for-active-directory-authentication-acceptsecuritycontext/</guid><description>A quick reference for the LDAP error codes returned during Active Directory bind operations, including what each code means and how to interpret the AcceptSecurityContext error message.</description></item><item><title>Cannot Find Key of Appropriate Type, Kerberoasting &amp; Hadoop</title><link>https://lukehebert.com/post/cannot-find-key-of-the-appropriate-type-to-decrypt-ap-rep/</link><pubDate>Tue, 03 Nov 2020 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/cannot-find-key-of-the-appropriate-type-to-decrypt-ap-rep/</guid><description>A troubleshooting guide for the Kerberos error &amp;lsquo;Cannot find key of the appropriate type to decrypt AP REP,&amp;rsquo; covering encryption type mismatches between keytabs and Active Directory, plus practical steps to align AES and RC4 settings.</description></item><item><title>Why You Can't Afford to Ignore the TLS Version Field</title><link>https://lukehebert.com/post/what-is-the-significance-of-the-version-field-in-a-tls-1-1-clienthello-message/</link><pubDate>Tue, 04 Dec 2018 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/what-is-the-significance-of-the-version-field-in-a-tls-1-1-clienthello-message/</guid><description>The version field in a TLS ClientHello message tells the server the highest protocol version the client supports, but it appears in three distinct places with different roles. Understanding where and how each version field is used helps troubleshoot handshake failures and interoperability issues with legacy implementations.</description></item><item><title>LDAP Server-Side and Client-Side Result-Error Codes</title><link>https://lukehebert.com/post/ldap-server-side-and-client-side-result-error-codes/</link><pubDate>Tue, 17 Oct 2017 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/ldap-server-side-and-client-side-result-error-codes/</guid><description>A quick reference for LDAP result and error codes, covering both server-side responses and client-side indicators, including Active Directory-specific sub-codes under error 49.</description></item><item><title>PTR Records &amp; Kerberos</title><link>https://lukehebert.com/post/ptr-records/</link><pubDate>Tue, 05 Sep 2017 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/ptr-records/</guid><description>A valid PTR record must resolve to a name that resolves back to the original address. Multiple PTR records for a single address break name resolution and can cause Kerberos ticket verification to fail.</description></item><item><title>The Unspecified Crime of the Failed Checksum</title><link>https://lukehebert.com/post/failure-unspecified-at-gss-api-level-mechanism-level-checksum-failed/</link><pubDate>Thu, 31 Aug 2017 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/failure-unspecified-at-gss-api-level-mechanism-level-checksum-failed/</guid><description>A quick reference for the six most common causes of the Kerberos GSS-API checksum failure error, from wrong passwords to time skew and SPNEGO canonicalization issues.</description></item><item><title>"Not That Key!" No, Your Other Key...</title><link>https://lukehebert.com/post/specified-version-of-key-is-not-available-44/</link><pubDate>Mon, 21 Aug 2017 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/specified-version-of-key-is-not-available-44/</guid><description>Kerberos error 44 occurs when the keytab KVNO does not match the KDC database. This guide walks through diagnosing the mismatch and regenerating the keytab to restore authentication.</description></item><item><title>Java SSLHandshakeException: No Cipher Suites in Common</title><link>https://lukehebert.com/post/java-sslhandshakeexception-no-cipher-suites-in-common/</link><pubDate>Mon, 21 Aug 2017 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/java-sslhandshakeexception-no-cipher-suites-in-common/</guid><description>A common Java SSL handshake failure stems from passing a null KeyManager array when initializing the SSLContext, which silently disables all certificate-based cipher suites. This post walks through the root cause and the four most frequent triggers behind the error.</description></item><item><title>Handling Multiple CNs on a Single Certificate</title><link>https://lukehebert.com/post/handling-multiple-cns-on-a-single-certificate/</link><pubDate>Fri, 18 Aug 2017 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/handling-multiple-cns-on-a-single-certificate/</guid><description>Multiple CNs in a certificate Subject field are deprecated and cause compatibility failures. The SAN extension is the correct way to cover multiple names on a single certificate.</description></item><item><title>Error 53: The Server Has Left the Chat</title><link>https://lukehebert.com/post/server-is-unwilling-to-perform-53/</link><pubDate>Wed, 16 Aug 2017 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/server-is-unwilling-to-perform-53/</guid><description>LDAP error 53 means the destination server is refusing a password change request. This post walks through the most common Active Directory requirements and policy settings that trigger the error.</description></item><item><title>Lost in the Realm: Kerberos Dropped the Map Again</title><link>https://lukehebert.com/post/server-not-found-kerberos/</link><pubDate>Wed, 16 Aug 2017 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/server-not-found-kerberos/</guid><description>A quick troubleshooting guide for the &amp;lsquo;Server not found in Kerberos database&amp;rsquo; error, covering the four most common root causes and how to verify each one.</description></item><item><title>SAML Custom Attributes in Hue</title><link>https://lukehebert.com/post/saml-custom-attributes-in-hue/</link><pubDate>Fri, 21 Jul 2017 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/saml-custom-attributes-in-hue/</guid><description>Hue returns a Permission Denied error when the IDP sends custom SAML attributes that pysaml2 cannot map. This guide walks through creating an attribute mapping file and configuring Hue to resolve the issue.</description></item><item><title>400 Cannot Find Key of Appropriate Type to Decrypt AP REP</title><link>https://lukehebert.com/post/400-cannot-find-key-of-appropriate-type-to-decrypt-ap-rep/</link><pubDate>Tue, 18 Jul 2017 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/400-cannot-find-key-of-appropriate-type-to-decrypt-ap-rep/</guid><description>A practical troubleshooting guide for the Kerberos AP REP decryption error, covering the most common causes from keytab mismatches to encryption type misconfigurations.</description></item><item><title>Trace Kerberos in the CLI</title><link>https://lukehebert.com/post/trace-kerberos-in-the-cli/</link><pubDate>Thu, 29 Jun 2017 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/trace-kerberos-in-the-cli/</guid><description>Kerberos authentication failures can be frustrating to debug. Setting the KRB5_TRACE environment variable gives you detailed library-level logging that pinpoints exactly where the exchange breaks down.</description></item><item><title>Check Hostname Resolution Forward and Backward Using Python or Java</title><link>https://lukehebert.com/post/check-dns-hostname-resolution-forward-and-backward-python-java/</link><pubDate>Tue, 27 Jun 2017 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/check-dns-hostname-resolution-forward-and-backward-python-java/</guid><description>Inconsistent forward and reverse DNS lookups can cause a cascade of cluster and security issues. This guide walks through quick Python and Java one-liners to verify that your hostname, IP, and reverse record all line up.</description></item><item><title>Checking Host Resolution Using getent</title><link>https://lukehebert.com/post/checking-host-resolution-using-getent/</link><pubDate>Tue, 27 Jun 2017 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/checking-host-resolution-using-getent/</guid><description>A quick reference for using getent to verify how your Linux system resolves hostnames, short names, and IP addresses through the full NSS chain.</description></item><item><title>Cleanup Alternatives</title><link>https://lukehebert.com/post/cleanup-alternatives/</link><pubDate>Tue, 27 Jun 2017 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/cleanup-alternatives/</guid><description>A quick procedure for resolving Cloudera Manager agent failures caused by corrupted system alternatives entries, including the exact commands to stop the agent, purge stale alternatives, and restart cleanly.</description></item><item><title>CM Timezone Does Not Match</title><link>https://lukehebert.com/post/cm-timezone-does-not-match/</link><pubDate>Tue, 27 Jun 2017 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/cm-timezone-does-not-match/</guid><description>Cloudera Manager raises a timezone mismatch alert when the OS clock files disagree with the timezone CM expects. This post walks through the three key files to check and how to align them.</description></item><item><title>Compare KVNO in DB and in Keytab (These Should Match)</title><link>https://lukehebert.com/post/compare-knvo-in-db-and-in-keytab-these-should-match/</link><pubDate>Tue, 27 Jun 2017 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/compare-knvo-in-db-and-in-keytab-these-should-match/</guid><description>A quick two-step check to confirm the Kerberos key version number in your KDC database matches the value stored in a local keytab file. Mismatched KVNO values are a common cause of authentication failures in Hadoop and other Kerberized services.</description></item><item><title>Delete Hue Users</title><link>https://lukehebert.com/post/delete-hue-users/</link><pubDate>Tue, 27 Jun 2017 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/delete-hue-users/</guid><description>Hue does not provide a built-in UI option to remove user accounts. This workaround uses the Hue Django shell to delete one or more users directly from the database, with a clear caveat that the process is unsupported.</description></item><item><title>Determine If a Datanode Is Dead (Formula)</title><link>https://lukehebert.com/post/determine-is-a-datanode-is-dead-formula/</link><pubDate>Tue, 27 Jun 2017 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/determine-is-a-datanode-is-dead-formula/</guid><description>A quick reference for calculating the exact timeout window before Hadoop marks a Datanode as dead, based on the heartbeat and recheck-interval settings.</description></item><item><title>hostname and hostname -f (Not Getting FQDN)</title><link>https://lukehebert.com/post/hostname-and-hostname-f-not-getting-fqdn/</link><pubDate>Tue, 27 Jun 2017 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/hostname-and-hostname-f-not-getting-fqdn/</guid><description>When hostname -f returns a short name instead of a fully qualified domain name, the issue usually traces back to the HOSTNAME variable in /etc/sysconfig/network or a misconfigured /etc/hosts entry. Understanding the difference between the gethostname and gethostbyname system calls makes the fix straightforward.</description></item><item><title>JDK Breakdowns for Web UI and SPNEGO (u92, u91, u40, u45)</title><link>https://lukehebert.com/post/jdk-break-downs-for-web-ui-and-spengo-u92_u91_u40_u45/</link><pubDate>Tue, 27 Jun 2017 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/jdk-break-downs-for-web-ui-and-spengo-u92_u91_u40_u45/</guid><description>Specific JDK 1.8.0 builds (u40, u45, u91, u92) are known to break SPNEGO authentication and Hadoop web interfaces. This post documents the affected versions, the symptoms, and the recommended downgrade path.</description></item><item><title>Kerberos CLI Debug Tracing &amp; Hadoop</title><link>https://lukehebert.com/post/kerberos-cli-debug-trace-hadoop/</link><pubDate>Tue, 27 Jun 2017 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/kerberos-cli-debug-trace-hadoop/</guid><description>A quick reference for enabling verbose Kerberos and Hadoop debug output on the command line, so you can see exactly where authentication is failing.</description></item><item><title>Kerberos Debug Mode for the JVM, Spark, and SPNEGO</title><link>https://lukehebert.com/post/kerberos-debug-mode-for-the-jvmsparkspnego/</link><pubDate>Tue, 27 Jun 2017 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/kerberos-debug-mode-for-the-jvmsparkspnego/</guid><description>Enable Kerberos debug logging in a JVM, Spark driver, and Spark executors to troubleshoot SPNEGO and authentication issues. Covers the exact Java system properties, Spark configuration keys, and how to redirect Spark logs to stdout so Kerberos output interleaves with application logs.</description></item><item><title>keyctl: Key Has Been Revoked</title><link>https://lukehebert.com/post/keyctl-link-key-has-been-revoked/</link><pubDate>Tue, 27 Jun 2017 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/keyctl-link-key-has-been-revoked/</guid><description>A quick guide to diagnosing and resolving the &amp;lsquo;Key has been revoked&amp;rsquo; error in the Linux kernel keyring using keyctl commands.</description></item><item><title>Namenode Loglevel</title><link>https://lukehebert.com/post/namenode-loglevel/</link><pubDate>Tue, 27 Jun 2017 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/namenode-loglevel/</guid><description>How to set the HDFS Namenode StateChange log level to DEBUG via the web UI or the command line, and when that helps with troubleshooting.</description></item><item><title>NTP Errors</title><link>https://lukehebert.com/post/ntp-errors/</link><pubDate>Tue, 27 Jun 2017 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/ntp-errors/</guid><description>A host health test flags NTP clock drift when the system clock falls out of sync with its NTP servers. This guide walks through diagnosing and resolving common NTP synchronization failures.</description></item><item><title>SSL Certificate Debugging with openssl s_client</title><link>https://lukehebert.com/post/ssl-certificate-debugging-openssl-s-client/</link><pubDate>Tue, 27 Jun 2017 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/ssl-certificate-debugging-openssl-s-client/</guid><description>A practical cheat sheet of openssl s_client commands for inspecting, verifying, and troubleshooting SSL certificates in production environments.</description></item><item><title>Wrong Number! Taming the Kerberos Identity Crisis</title><link>https://lukehebert.com/post/kerberos-krb-ap-err-not-us-or-bad-tgs-server-name/</link><pubDate>Tue, 27 Jun 2017 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/kerberos-krb-ap-err-not-us-or-bad-tgs-server-name/</guid><description>A practical look at why the MIT krb5 KDC rejects a TGS-REQ with KRB_AP_ERR_NOT_US, including the exact validation logic and the most common root causes behind the error.</description></item><item><title>Where's all my RAM?</title><link>https://lukehebert.com/post/wheres-all-my-ram/</link><pubDate>Fri, 21 Mar 2014 00:00:00 +0000</pubDate><guid>https://lukehebert.com/post/wheres-all-my-ram/</guid><description>Ever wonder why the output of free -m seems to make it look like your system is out of memory?</description></item></channel></rss>