Log findings
The checks page for Splunk: what Verbiqo recognises in the logs it reads through a Splunk connection. With Splunk attached (Ask Splunk), Verbiqo searches the database and cluster logs for known events, counts them per host, and adds them to the answer and the timeline. Each finding shows its first and last line.
How to read this page. Each section is one area. Why it helps says what you get from it. Ask is a question to type that runs it. The table under it lists what Verbiqo checks there: you do not run those one by one. When a check finds a problem, it appears under the answer as a finding, with its evidence and a suggested fix.
How to ask
Name the system and the time: any problems on the orders cluster in the last 24 hours?, what did MySQL log on db01 last night?, slow searches on the logging cluster yesterday. Attach the database or cluster too, and Verbiqo joins what it logged with what it shows now.
Verbiqo recognises the logs by their Splunk sourcetype and by their content. The settings that make these events appear in the logs are in PostgreSQL logs in Splunk and MySQL logs in Splunk; for SQL Server and Redis, SQL Server and Redis.
PostgreSQL log
Why it helps: Finds errors, slow statements, lock waits and restarts in the PostgreSQL log, with who logged them, so you see what happened even after it is over.
Ask Any problems on the orders cluster in the last 24 hours?
| Finding | What it means |
|---|---|
| Slow statements | Grouped by statement, with the time they took in all, and plans from auto_explain where logged. |
| Lock waits and deadlocks | Sessions waiting for locks, and deadlocks, with the statements involved. |
| Temporary files | Statements writing temporary files. |
| Checkpoints too frequent | Checkpoints closer together than their timeout. |
| Refused connections | Too many clients. |
| Failed logins and permission errors | With the roles involved. |
| Timeouts | Statements or sessions cancelled by a timeout. |
| Replica conflicts | Queries on a standby cancelled by replay. |
| WAL removed | A replica asking for WAL already removed: it needs a re-seed. |
| Archiving failed, disk full, out of memory | Each counted per host. |
| Wraparound warnings | PostgreSQL warning about transaction ID wraparound. |
| Crashes, shutdowns, start-ups, promotions | Dated for the timeline. |
| Configuration changes | Every setting changed on a reload. |
| Replication broken | A standby unable to reach its primary, or its WAL stream lost. |
| Connections refused during a restart | Clients turned away while the server was starting, shutting down or recovering. |
| Writes to a standby | Writes or primary-only functions sent to a standby or a read-only transaction, with the roles that sent them. |
| Prepared statements refused | Parameters that do not match, or statements missing from the session, as behind PgBouncer in transaction pooling. |
| Invalid statements | Tables, columns, functions or operators the database does not have, and SQL it cannot parse, with the roles and objects involved. |
| Constraint violations and bad values | Duplicate keys and other constraints, and values that do not fit their type. |
Who failed, and on which node. Each finding names the roles in its lines and says what each one is:
- a monitoring tool, recognised by its application or role name (for example SolarWinds DPA, pganalyze, Datadog, pgwatch, PMM, Zabbix);
- an application, when its lines show it writing or running statements on its own tables.
When every line of a finding comes from a monitoring tool, the finding says so: the tool’s own queries failed, and applications were not affected.
“recovery is in progress” is how a standby refuses a write, so Verbiqo names those hosts as standbys rather than calling the cluster down. A host whose lines show writes being checked against constraints, or sessions waiting on rows, is named as the primary.
The answer is held to both: a sentence saying the cluster is in recovery, or that a tool’s errors are application failures, is corrected or removed.
MySQL error and slow logs
Why it helps: Finds errors, crashes, replication breaks and slow statements in MySQL’s logs.
Ask What did MySQL log on db01 last night?
| Finding | What it means |
|---|---|
| Crashes and unclean starts | A crash, and a start after an unclean stop, counted once each. |
| Starts and shutdowns | Dated for the timeline. |
| Replication errors | Replication stopping on an error. |
| Group Replication | Members unreachable and back, expelled, joining, the primary leaving, a new primary elected, majority lost and restored, connections between members failing. |
| Deadlocks and long semaphore waits | InnoDB threads waiting on internal locks. |
| Page flushing and redo | Page cleaning falling behind; the redo log filling. |
| Resources | Disk or a table full, out of memory or threads, out of file descriptors. |
| Corruption | InnoDB reporting corruption. |
| Connections | Logins refused, connections ended without closing, protocol errors, deprecated authentication. |
| Binary logs | Binary logs that could not be purged. |
| Packets too large | Statements or rows larger than max_allowed_packet. |
| Slow statements | From the slow log, grouped by statement shape. The slow log must keep one event per Splunk event; Verbiqo names the sourcetype fix when it does not. |
Elasticsearch server and slow logs
Why it helps: Finds node failures, memory pressure, rejected work and slow searches in Elasticsearch’s logs.
Ask Slow searches on the logging cluster yesterday
| Finding | What it means |
|---|---|
| Health changes | Cluster health turning red or yellow, and back to green. |
| Master | The master changing; nodes unable to find or elect one. |
| Nodes | Nodes leaving and joining. |
| Heap | Garbage collection taking over a node; a node out of heap. |
| Disk | Nodes passing the high or flood-stage watermark. |
| Refusals | Requests refused by a circuit breaker, or rejected by a full thread pool. |
| Failures | Shards failing, lifecycle steps failing, snapshots failing, file descriptors running out. |
| Logins | Failed logins. |
| Deprecations | Uses of deprecated features, to fix before an upgrade. |
| Slow searches | From the search slow log, grouped by query shape, the slowest analyzed and rewritten. |
| Slow indexing | From the indexing slow log. |
SQL Server error log
Why it helps: Finds errors, failed logins, deadlocks and I/O warnings in the SQL Server error log.
Ask Any errors on the sales server last night?
From the ERRORLOG file, or the Windows Application event log where the same messages arrive with SourceName=MSSQLSERVER.
| Finding | What it means |
|---|---|
| Stack dumps and hangs | Internal errors that wrote a dump; schedulers that stopped yielding or deadlocked. |
| Corruption | Errors 823, 824 and 825, failed page checksums, CHECKDB finding errors. |
| CHECKDB | Each clean run, dated for the timeline. |
| Space | A transaction log full (9002), with the cause; a filegroup or disk full; slow or timed-out file growth; too many virtual log files. |
| Memory and I/O | Out of memory (701), memory paged out, I/O taking longer than 15 seconds (833), by file. |
| Availability groups | Each role change of the replica, and lease or quorum losses. |
| Backups | Backups that failed (3041). |
| Logins | Logins refused (18456), by login, client address and reason. |
| Deadlocks | Deadlocks written to the log by trace flag 1222 or 1204. |
| Starts and shutdowns | Dated for the timeline. |
Redis and Sentinel logs
Why it helps: Finds failovers, persistence failures and memory warnings in Redis and Sentinel logs.
Ask What happened to Redis in the last hour?
| Finding | What it means |
|---|---|
| Crashes | A crash with its bug report, or an abort for lack of memory. |
| Persistence | Snapshots or AOF writes failing; fsync of the AOF taking too long. |
| Host settings | Transparent huge pages on, memory overcommit off, a TCP backlog the kernel limits: logged once at start and nowhere else. |
| Replication | A replica losing its primary, replicas timing out or dropping, full resyncs, clients cut off at their output buffer limit. |
| Cluster and failover | The cluster going down and coming back, nodes marked failing, failovers and Sentinel switching the primary. |
| Starts and shutdowns | Dated for the timeline. |
Kubernetes events and component logs
Why it helps: Finds crashes, scheduling failures and component errors in cluster events and logs, even after the pods are gone.
Ask Any problems in the shop namespace yesterday?
Recognised by their content (event fields such as reason and involvedObject, or the kubelet's log format), whatever the sourcetype is called. That covers the Splunk Connect for Kubernetes and OpenTelemetry collectors' event sourcetypes, and the kubelet's journal.
| Finding | What it means |
|---|---|
| Crash loops | A container that keeps exiting soon after starting (CrashLoopBackOff). |
| OOMKilled | Containers killed for going over their memory limit. |
| Image pulls | Images that could not be fetched: a wrong tag, missing credentials, an unreachable registry. |
| Scheduling | Pods left Pending: not enough CPU or memory, taints, affinity, unbound volume claims. |
| Probes | Liveness, readiness and startup probes failing. |
| Evictions and node pressure | Pods evicted, and nodes short of disk, memory or process IDs. |
| Nodes not ready | NodeNotReady, PLEG not healthy, a kubelet that stopped reporting. |
| Volumes | Volumes that could not be attached or mounted, including Multi-Attach. |
| Pod networking | Pod sandboxes without a network: the CNI plugin down, or the node's address range used up. |
| Missing configuration | Containers not created because a secret, config map or key does not exist. |
| Autoscaling | Horizontal pod autoscalers that cannot read their metric. |
| Cluster DNS | CoreDNS errors and lookups through it timing out. |
| Control plane | etcd slow or changing leader, lost leases, the API unreachable. |
| Certificates | Expired or untrusted certificates in cluster components and webhooks. |
| Rollouts | Deployments past their progress deadline, and pods refused for a quota. |
| Init containers | Init containers failing, so the pod never starts. |
| Jobs | Jobs and CronJob runs that used up their retries or ran past their deadline. |
| Disruption budgets | Drains and scale-downs blocked by a pod disruption budget. |
| Cluster autoscaler | Pods waiting because no node could be added: a group at its maximum, no group that fits, cloud capacity. |
| Autoscaler limits | Horizontal pod autoscalers held at their maximum replicas. |
| Service mesh | Envoy and Istio sidecars not ready. |
| Containers stopped | Containers Kubernetes stopped, dated for the timeline. |
Application and service logs
Why it helps: Finds exceptions, timeouts and connection failures in your services’ own logs, grouped by kind.
Ask Why did checkout throw errors at 2pm?
Every other log is read for the failures applications have in common, in the words their runtimes, libraries and proxies use: Java, Scala and Akka, Python (with gunicorn, uWSGI and Celery), Node, Go, Rust, Ruby (with Rails, Puma and Unicorn), Elixir and Erlang, C and C++, .NET and PHP; nginx, Apache, Tomcat, HAProxy, Varnish and Envoy; the database, Oracle, MongoDB, Cassandra, Elasticsearch, Kafka, RabbitMQ, Redis, gRPC and cloud SDK clients, and the MongoDB, Kafka, RabbitMQ, ZooKeeper and Cassandra servers' own logs; and the Linux kernel. PHP-FPM logs are read here, not as PostgreSQL logs. In each question the two busiest unrecognised logs are read this way. Logs that carry no error level at all are searched by the model for what a failure is there, such as a status code (Ask Splunk).
| Finding | What it means |
|---|---|
| Out of memory | The runtime out of heap or memory, and the kernel's out-of-memory killer. |
| Crashes | Panics, segmentation faults, fatal runtime errors, stack overflows. |
| Unhandled exceptions | Errors nothing caught: Java, .NET, Node and Python. |
| Startup failures | Missing configuration, secrets, classes or modules. |
| Connections | Refused, reset or broken connections, and calls that timed out. |
| DNS | Host names that could not be resolved. |
| Resource limits | Out of file descriptors, full thread pools, full or read-only disks. |
| Database access | Connection pools exhausted, too many connections, deadlocks and lock wait timeouts. |
| TLS | Expired or untrusted certificates and failed handshakes. |
| Authentication | Expired or invalid tokens, refused credentials, 401 and 403 responses. |
| Resilience | Rate limits and quotas, open circuit breakers, retries exhausted. |
| Dependencies | Proxies with no healthy backend, server errors from called services, and Kafka, RabbitMQ and Redis client failures. |
| JVM | Full garbage collections and evacuation failures. |
| Kafka consumer groups | Rebalance storms. |
| PHP | Fatal errors (memory_limit, max_execution_time, uncaught errors), PHP-FPM out of workers (pm.max_children), slow and terminated scripts. |
| Web servers | nginx, Apache and Tomcat out of connections or workers; requests refused for a body or header too large. |
| Database connections | Connections lost under the application: the database restarting, failing over, or a firewall dropping idle ones. |
| MongoDB, Cassandra, Elasticsearch | No server or node reachable, writes to a former primary, too few replicas, rejected requests, write blocks. |
| gRPC | Calls failing as UNAVAILABLE or RESOURCE_EXHAUSTED, connections closing. |
| Cloud APIs | Access refused, credentials expired, throttling, no capacity in the region. |
| Ruby, Python servers, Elixir, Akka | Rails database errors and Puma or Unicorn worker timeouts; gunicorn and uWSGI worker timeouts, Celery task failures and lost workers; GenServer crashes; actor timeouts and failures. |
| C and C++ | Uncaught exceptions, memory corruption, failed assertions. |
| Proxies and caches | nginx rate and connection limits, TLS handshake failures, unreachable networks; Apache proxy errors; backends marked down by HAProxy or failing in Varnish. |
| Oracle | The ORA codes that need attention: internal errors, memory, undo, deadlocks, full tablespaces, the listener, credentials, a full archive destination or recovery area. |
| Data servers | MongoDB elections and storage errors; Kafka in-sync replicas shrinking and partitions offline; RabbitMQ alarms and partitions; ZooKeeper slow disk and lost sessions; Cassandra dropped messages, long pauses and nodes down. |
| Exit codes | 137 (killed, often for memory), 139 (segmentation fault), 143 (asked to stop). |
| Scheduled jobs | Spring scheduled tasks, Quartz jobs and Celery tasks that failed, and lookups that found no record the code expected. |
| Processes stopped | SIGTERM, SIGKILL and exit code 137, dated for the timeline. |
MongoDB, Kafka, RabbitMQ, ZooKeeper, Cassandra, etcd and PgBouncer
Why it helps: Finds the failures each of these servers logs, in its own wording.
Ask Any problems on the Kafka brokers today?
Each server's own log, recognised by the line format it writes, under any sourcetype name. Their clients' errors (an application that cannot reach them) are in the application checks below.
| Server | Findings |
|---|---|
| MongoDB | Elections and step-downs, rollbacks of writes, slow queries, connections refused at the limit, heartbeat failures, fatal assertions and storage-engine errors, failed authentication. |
| Kafka broker | In-sync replicas shrinking, partitions offline and unclean leader elections, controller changes, replica fetch errors, log-directory failures, ZooKeeper sessions expiring and KRaft fencing, out of memory or file descriptors. |
| RabbitMQ | Memory, disk and file-descriptor alarms (publishers blocked), network partitions, nodes down, consumers closed for not acknowledging, connections lost abruptly, quorum and mirrored queue events. |
| ZooKeeper | Slow writes to the transaction log, leader elections, client sessions expiring, quorum connection failures, connections refused at maxClientCnxns. |
| Cassandra | Dropped requests, long garbage-collection pauses, nodes down, tombstones, oversized batches and partitions, no space for compaction, out of memory. |
| etcd | Slow applies, slow disk syncs, leader changes and missed heartbeats, the space quota reached, members unreachable. |
| PgBouncer | Clients refused at max_client_conn, clients timing out waiting for a connection, PostgreSQL unreachable, failed logins, unsupported startup parameters, clients leaving abruptly. |
Access logs
Why it helps: Finds server errors and spikes in web and proxy access logs, by status and path.
Ask Any 5xx errors on the web tier this morning?
Any log whose lines carry an HTTP status: nginx, Apache, IIS, Envoy, Traefik, HAProxy, ingresses and cloud load balancers alike. Recognised by the status itself, as a field (status, sc_status, elb_status_code and similar) or in the line (Common and Combined Log Format, HAProxy's HTTP log, JSON). Counted over the whole window, beside whatever else reads the log.
| Finding | What it means |
|---|---|
| Server errors (5xx) | How many, as a share of the requests; by status, host and path; when they started and stopped. When there were none, that is said as a measured result for the window. |
| Rate limited (429) | Requests refused for coming too fast. |
| Refused credentials (401, 403) | When they are at least 1% of the requests. |
What Verbiqo does not recognise yet
Why it helps: Says plainly when a log’s format is not one Verbiqo knows, so silence is never mistaken for health.
Ask what errors don't you recognise yet? (or …in index apps). Verbiqo lists the error lines it has read on this connection that no check above recognises, the most frequent first: your own applications' error codes, messages from software not covered here. It answers from what earlier questions read, without searching. These lines are still found as errors by their level; they are just not named or explained.
Operating-system logs
Why it helps: Finds out-of-memory kills, disk errors and service failures in system logs.
Ask Did anything get OOM-killed on db01 last night?
Syslog and the systemd journal, recognised by their line formats under any sourcetype name. They also carry what applications write through them, so they are read for the application failures above too.
| Finding | What it means |
|---|---|
| Out of memory | The kernel's out-of-memory killer, naming the process it killed. |
| Kernel panics and bugs | Panics, kernel bugs, general protection faults. |
| Hung tasks and lockups | Processes blocked on the kernel for minutes, soft lockups, RCU stalls. |
| Disks | I/O errors and medium errors on a device. |
| File systems | Corruption, file systems turned read-only or shut down, no space left. |
| Services | systemd units that failed to start or exited with an error. |
| Network shares | NFS servers not responding, stale file handles. |
| Network links | Interfaces and bond members going down. |
| Clock | The clock drifting, jumping or unable to reach a time server. |
| Network stack | Packets dropped for a full connection-tracking table, SYN floods, TCP out of memory. |
| Crashes | Segmentation faults and core dumps. |
| Boots | Every boot, dated for the timeline. |
Patroni and pgBackRest
Why it helps: Finds failovers, leader changes and backup failures in Patroni and pgBackRest logs.
Ask Did the cluster fail over yesterday?
The tools around a PostgreSQL cluster, recognised by their own line formats.
| Finding | What it means |
|---|---|
| Leader changes | Promotions to leader (failovers and switchovers), and leaders stepping down or losing their lock. |
| Coordination store | Patroni unable to reach etcd, Consul or ZooKeeper, and its requests or watches on etcd breaking. |
| Slow loop | Patroni's heartbeat running late. |
| Rewinds and rebuilds | Nodes rewound or reinitialised to rejoin the cluster. |
| PostgreSQL down | Patroni finding PostgreSQL not running. |
| WAL archiving | Segments not archived in time, archive commands aborted. |
| Backups | Backups, expiry and checks aborted; repositories and stanzas out of step; every pgBackRest error by its code; each completed backup, dated for the timeline. |
Security events
Why it helps: Finds failed logins, privilege changes and suspicious access in security events.
Ask Any failed logins on the database servers today?
Windows Security, Linux authentication and SIEM alerts, with failed-then-successful logons, password spraying and cleared audit logs worked out for you: Security logs.