VOL.XII · 运维排障系列 · LOG KEYWORDS FIELD MANUAL

日志关键词
速查手册

LINUX · NGINX · DOCKER
KUBERNETES · MYSQL · REDIS
JENKINS · ELK · 后端应用
────────────────
9 COMPONENTS · 100+ KEYWORDS
GREP TEMPLATES INCLUDED
致命 FATAL — 红色 警告 WARN — 琥珀色 信息 INFO — 绿色 每条关键词含排查方向 反向索引:现象 → 关键词
全部 100+ 条 · 输入过滤

实际排障流程是反向的:你先看到日志里的 keyword,再去判断是什么故障。本册就是那个反向索引——看到关键词 → 秒定组件 → 直接去排查

COLOR LEGEND 致命 · 服务不可用,立即处理 警告 · 降级/超时,影响体验 信息 · 状态提示,可分析
01
通用 Linux / 系统层
GENERAL LINUX · KERNEL · SYSTEM RESOURCES
关键词含义排查方向
Permission denied 权限不足,进程无法访问文件或目录 ls -la 查属主;id 确认运行用户;chmod/chown 修正
Operation not permitted 通常是 Linux capability 或 SELinux/AppArmor 拦截 dmesg | grep -i avcgetcap 查 capability;容器加 --privileged 临时验证
No space left on device 磁盘满 inode 耗尽(两者都要查) df -h 查空间;df -i 查 inode;du -sh /* 定位大目录
Too many open files 文件描述符耗尽,新连接/文件无法打开 ulimit -nlsof -p PID | wc -l/etc/security/limits.conf 调大
Cannot allocate memory 内存不足,malloc 失败 free -hcat /proc/meminfo;检查是否内存泄漏
Out of memory / OOM OOM Killer 触发,进程被强制 kill dmesg -T | grep -i oomgrep -i killed /var/log/messages;调 vm.swappiness 或加内存
Killed process OOM 在 dmesg 里的痕迹,含被 kill 的 PID 和进程名 dmesg -T | grep "Killed process";定位进程再查内存用量
关键词含义排查方向
Connection refused 端口没监听,或被防火墙拦截 ss -tlnp 确认监听;iptables -L 查防火墙;telnet host port 连通测试
Connection reset 对端发送 RST,常见于 keepalive 超时或服务重启 检查对端服务状态;调大 keepalive 超时;排查 LB/Nginx 关闭连接的配置
Connection timed out 网络不通或对端无响应,TCP 握手超时 pingtraceroute;检查安全组/ACL;mtr 定位丢包节点
No route to host 路由表缺失,或防火墙直接 DROP(非 REJECT) ip route showip neigh 查 ARP;检查 VPC 路由表/安全组
Address already in use 端口被占用,服务无法启动 ss -tlnp | grep PORTlsof -i :PORT;kill 占用进程或改端口
Broken pipe 写入已关闭的连接(对端已断开) 通常是上游服务关闭或超时;检查服务存活状态;适当加重试逻辑
关键词含义排查方向
I/O error 磁盘硬件故障,读写失败 dmesg | grep -iE "error|ata|scsi"smartctl -a /dev/sdX 检查 S.M.A.R.T
Read-only file system 文件系统被内核自动转为只读(I/O 错误保护) 先修复硬件问题;fsck -y /dev/sdX(卸载后);重新 mount 为读写
Input/output error 同 I/O error,硬盘故障或控制器异常 同上;云盘则联系云厂商;排查内核日志 dmesg -T
02
Nginx
ACCESS LOG STATUS CODES · ERROR LOG KEYWORDS
关键词含义排查方向
" 499 " 客户端主动断开,Nginx 已收到请求但客户端超时走了 上游响应慢;排查 proxy_read_timeout 配置;awk '$9==499' access.log | awk '{print $7}' | sort | uniq -c
" 502 " 上游连接失败,Backend 挂了或端口错误 检查 upstream 服务状态;curl -v upstream:port;看 error.log 里的 connect() failed
" 503 " 上游主动返回不可用,或 no live upstreams upstream 健康检查;所有后端节点状态;限流是否触发 503
" 504 " 上游响应超时,超过 proxy_read_timeout 调大 proxy_read_timeout;排查 upstream 慢查询/GC 暂停
" 413 " 请求体超过 client_max_body_size 限制 调大 client_max_body_size;或在 location 块单独配置
" 444 " Nginx 主动关闭连接(不响应),常配合 deny 屏蔽恶意请求 属于主动防御;检查对应 location/server_name 的 deny 规则
关键词含义排查方向
upstream timed out 后端响应超过 proxy_read_timeout(默认 60s) 确认 upstream 接口响应时间;加大 timeout 或优化后端性能
connect() failed TCP 连接后端失败(Connection refused 或 timeout) 后端服务是否存活;端口是否正确;网络/安全组是否放行
no live upstreams upstream 组内所有节点均已标记 down nginx -s reload 后状态重置;排查所有 backend;检查健康检查配置
upstream prematurely closed 后端提前关闭连接(进程崩溃或主动退出) 查 upstream 进程日志;是否有未捕获异常;OOM 被 kill
SSL_do_handshake() failed SSL 握手失败,证书或协议版本不匹配 openssl s_client -connect host:443;检查证书链、协议版本(TLSv1.2+)
worker_connections are not enough 并发连接超过 worker_connections 上限 调大 worker_connections;同步调大系统 ulimit -n
open() failed 文件找不到(404 根源)或权限不足 检查 root 路径配置;文件是否存在;nginx 用户是否有读权限
client intended to send too large 同 413,请求体超限(error.log 版) 调大 client_max_body_size
03
Docker
CONTAINER RUNTIME · IMAGE · NETWORK
关键词含义排查方向
OCI runtime create failed 容器启动失败,OCI 运行时(runc)错误 看完整错误信息后几行;通常跟着具体原因(no such file、exec failed 等)
no such file or directory 镜像内文件缺失,或挂载路径宿主机不存在 docker run -it IMAGE sh 进镜像检查;确认 volume 宿主机路径存在
executable file not found in $PATH CMD/ENTRYPOINT 指定的命令在容器内找不到 docker run -it IMAGE which COMMAND;检查 Dockerfile CMD 拼写;确认基础镜像包含该工具
exec format error 镜像架构与宿主机不匹配(ARM 镜像跑在 AMD64 上) file /bin/ls 查宿主架构;拉对应架构镜像;或 docker buildx 多架构构建
port is already allocated 宿主机端口被其他容器或进程占用 ss -tlnp | grep PORTdocker ps 查是否已有容器占用;改端口映射
network ... not found 引用的 Docker 网络不存在 docker network lsdocker network create NAME 先创建网络
pull access denied 镜像仓库权限不足,或镜像名/tag 不存在 docker login REGISTRY;确认镜像名和 tag;私有仓库检查 imagePullSecret
manifest unknown 指定的镜像 tag 在仓库不存在 docker search IMAGE;去 Docker Hub 确认可用 tag
context deadline exceeded 拉镜像超时,registry 连接慢或网络问题 配置国内镜像加速;检查 /etc/docker/daemon.json 的 registry-mirrors;代理网络
no space left on device → Docker /var/lib/docker 磁盘满,无法创建容器层 docker system dfdocker system prune -a 清理;或扩容磁盘
04
Kubernetes
POD STATUS · EVENTS · API SERVER
关键词含义排查方向
ImagePullBackOff 镜像拉取失败并进入退避重试 kubectl describe pod 看 Events;检查 imagePullSecret;镜像名/tag 是否正确
ErrImagePull 拉镜像首次失败(ImagePullBackOff 的前置状态) 同上;先确认节点有无网络访问 registry 的权限
CrashLoopBackOff 容器反复崩溃重启(最常见!) kubectl logs POD --previous;查进程退出原因;检查 liveness probe 配置是否过严
CreateContainerConfigError ConfigMap 或 Secret 引用错误,容器无法创建 kubectl describe pod;确认引用的 configmap/secret 存在于同一 namespace
RunContainerError 容器运行时启动失败(OCI 层面) 查节点 kubelet 日志;journalctl -u kubelet -n 100;检查 securityContext
OOMKilled 容器内存超过 limits 限制,被 cgroup 强制 kill 调大 resources.limits.memory;排查内存泄漏;kubectl top pod 监控
Evicted 节点资源压力触发驱逐(磁盘/内存不足) kubectl describe node 查 Conditions;清理磁盘/扩容;设置 PodDisruptionBudget
Pending Pod 调度不上去(资源不足/节点亲和性不满足) kubectl describe pod 看 Events;kubectl get nodes;检查 nodeSelector/taints
ContainerCreating 卡在容器创建,通常是 volume 挂载或 CNI 问题 kubectl describe pod;检查 PVC 状态;查 CNI 插件日志(calico/flannel)
Terminating 卡在终止状态,finalizer 未清除 kubectl patch pod NAME -p '{"metadata":{"finalizers":null}}' 强制清除 finalizer
关键词含义排查方向
FailedScheduling 调度失败,没有满足条件的节点 查资源是否充足;检查 nodeSelector、taints、affinity;kubectl describe node
FailedMount Volume 挂载失败,PV/PVC 问题 kubectl get pv,pvc;检查 StorageClass;查节点是否能访问存储后端
FailedAttachVolume 云盘/块存储挂载失败 检查云盘是否被其他节点占用;重启 node;查云厂商存储 CSI 驱动日志
Unhealthy 健康检查失败(liveness 或 readiness probe) kubectl describe pod 看 probe 配置;手动 curl 检查端点;调整 initialDelaySeconds
NodeNotReady 节点失联,kubelet 停止心跳 SSH 进节点;systemctl status kubelet;检查节点资源(CPU/内存/磁盘)
DiskPressure / MemoryPressure / PIDPressure 节点资源压力告警,即将触发驱逐 kubectl describe node;清理日志/镜像;docker system prune;扩容节点
NetworkNotReady CNI 网络插件未就绪 检查 CNI Pod 状态(kube-system namespace);查 CNI 配置文件 /etc/cni/net.d/
关键词含义排查方向
context deadline exceeded etcd 慢或 API Server 与 etcd 之间网络问题 检查 etcd 集群状态;etcdctl endpoint health;查 etcd 磁盘 IO 性能
x509: certificate 证书过期或 CN/SAN 不匹配 openssl x509 -in CERT -text -noout 检查 SAN/CN/过期时间;kubeadm certs renew all
Unauthorized / Forbidden RBAC 权限不足,ServiceAccount 或 User 缺少权限 kubectl auth can-i VERB RESOURCE --as=SA;检查 ClusterRole/RoleBinding;添加权限
05
MySQL
CONNECTION · LOCK · REPLICATION · RESOURCE
关键词含义排查方向
Too many connections 连接数达到 max_connections 上限 SHOW STATUS LIKE 'Max_used_connections';调大 max_connections;用连接池复用连接
Access denied for user 账号密码错误,或 host 不匹配 SELECT user,host FROM mysql.user;确认 host 是 % 还是具体 IP;FLUSH PRIVILEGES
Can't connect to MySQL server 服务未启动,或端口/bind-address 配置错误 systemctl status mysqlss -tlnp | grep 3306;检查 bind-address
Lost connection to MySQL server 网络抖动,或 wait_timeout/interactive_timeout 过短 SHOW VARIABLES LIKE '%timeout%';调大 wait_timeout;应用层加重连逻辑
MySQL server has gone away 长连接超过 wait_timeout 被服务端关闭,客户端感知 调大 max_allowed_packetwait_timeout;连接池配置心跳/validationQuery
关键词含义排查方向
Lock wait timeout exceeded 行锁等待超过 innodb_lock_wait_timeout(默认 50s) SHOW ENGINE INNODB STATUS;查 information_schema.INNODB_TRX 找长事务;kill 阻塞事务
Deadlock found 两个事务互相等待对方的锁,InnoDB 自动回滚一方 SHOW ENGINE INNODB STATUS\G 看 LATEST DETECTED DEADLOCK;优化事务顺序;减少事务粒度
Waiting for table metadata lock MDL 锁,DDL 语句被长事务/查询阻塞 SELECT * FROM performance_schema.metadata_locks;找并 kill 持有 MDL 的 session
关键词含义排查方向
Slave_IO_Running: No IO 线程停止,无法从 master 拉 binlog SHOW SLAVE STATUS\G;查 Last_IO_Error;检查 master 连通性和账号权限
Slave_SQL_Running: No SQL 线程停止,无法回放 binlog 查 Last_SQL_Error;跳过错误 SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1 或 GTID 模式下跳过
Seconds_Behind_Master 主从延迟秒数,大于 0 说明从库落后主库 查从库 IO/CPU 是否饱和;开启并行复制 slave_parallel_workers;减少主库大事务
Got fatal error 1236 主库 binlog 位置错乱,从库无法继续同步 重新定位 binlog 位点;或使用 GTID 模式 MASTER_AUTO_POSITION=1
Error 1062 主键冲突,双写或重放时重复插入 确认是否有双写;从库设 slave_skip_errors=1062(谨慎);排查数据一致性
06
Redis
MEMORY · PERSISTENCE · CLUSTER · AUTH
关键词含义排查方向
OOM command not allowed 内存达到 maxmemory 且策略为 noeviction,写命令被拒 INFO memory;调大 maxmemory 或改淘汰策略为 allkeys-lru;清理大 key
MISCONF Redis is configured to save RDB 持久化失败,通常是磁盘满或权限问题 df -h /var/lib/redis;或 CONFIG SET stop-writes-on-bgsave-error no(临时解除写限制)
LOADING Redis is loading 启动后正在加载 RDB/AOF,期间不可写 等待加载完成;大 RDB 文件加载慢,可考虑关闭 AOF 或减小 RDB 体积
READONLY You can't write 在从节点执行了写命令 确认连接的是主节点;Sentinel/Cluster 模式检查客户端路由;INFO replication
NOAUTH Authentication required Redis 设置了 requirepass 但客户端未认证 客户端配置 AUTH password;检查配置文件 requirepass
WRONGPASS 密码错误 确认密码;Redis 6.0+ 用 ACL 管理,检查 ACL LIST
max number of clients reached 连接数达到 maxclients 上限 INFO clients;调大 maxclients;检查是否连接泄漏(未释放)
CLUSTERDOWN 集群部分槽位丢失,无主节点覆盖 redis-cli --cluster check HOST:PORT;修复故障节点;重新分配槽位
MOVED / ASK 集群重定向,客户端未正确处理 Cluster 模式 使用支持 Cluster 的客户端;确认客户端开启了 cluster mode
Background saving error bgsave 失败,磁盘或 fork 内存问题 检查磁盘空间;系统是否允许 overcommit:vm.overcommit_memory=1
07
Jenkins / CI
JVM · PIPELINE · AGENT · SSH
关键词含义排查方向
java.lang.OutOfMemoryError Jenkins JVM 堆内存不足 调大 -Xmx(如 -Xmx4g);JENKINS_OPTS 或 jvm.options 配置;排查内存泄漏插件
GC overhead limit exceeded GC 耗时超过 98%,几乎无效,JVM 抛出此错误 加大堆内存;清理 Jenkins 工作区和旧 build 历史;升级 Jenkins 版本
workspace ... is offline Jenkins Agent 掉线 检查 Agent 节点状态;重连 Agent;查 Agent 日志 agent.log;SSH/JNLP 连接配置
Build step failed with exception Pipeline 步骤抛出异常 看上下文的 Exception 类型和堆栈;通常是脚本语法、插件版本、外部服务不可用
Cannot run program Pipeline 中的命令找不到(PATH 问题) 在 pipeline 中加 PATH 环境变量;或用绝对路径;检查 tool 配置(maven/jdk)
No such DSL method Pipeline 语法错误或插件缺失 检查插件是否安装;查 Jenkins Pipeline 语法文档;在 Pipeline Syntax 页验证
Permission denied (publickey) SSH 认证失败,private key 问题 Jenkins Credentials 中检查 SSH key;ssh -i KEY user@host -v 调试;确认公钥已加到 authorized_keys
08
Prometheus / ELK
METRICS · TSDB · ELASTICSEARCH · LOGSTASH
关键词含义排查方向
context deadline exceeded 抓取 exporter 超时(scrape_timeout) 调大 scrape_timeout;优化 exporter 慢查询;减少 metrics 数量
out of order sample 时间戳乱序,通常是节点时钟不同步 chronyc tracking / timedatectl;同步 NTP;检查 exporter 时间戳来源
sample limit exceeded 单次抓取指标数量超过 sample_limit 调大 sample_limit;或为对应 job 单独配置;减少高基数 label
tsdb: out of bounds 写入时间超出 TSDB 时间窗口(retention 或 backfill 边界) 检查数据时间戳是否正常;--storage.tsdb.allow-overlapping-blocks
关键词含义排查方向
cluster_block_exception 集群写入被阻断,通常是磁盘水位触发只读保护 GET _cluster/settings;清理磁盘;调 cluster.routing.allocation.disk.watermark.*;解除只读:PUT _settings {"index.blocks.read_only_allow_delete":null}
FORBIDDEN/12/index read-only 同上,索引被置为只读的 ES 错误码表述 同上;清理磁盘后手动解除只读标志
circuit_breaking_exception 内存熔断,查询/聚合消耗内存超过阈值 优化查询(加过滤条件、减少 aggregation 层级);调大 JVM heap;增加节点
unassigned_shards 分片未分配,集群 RED/YELLOW 状态 GET _cluster/allocation/explain;查节点磁盘是否满;检查 replica 数量与节点数关系
master_not_discovered_exception Master 节点选举失败,集群不可用 检查 discovery.seed_hosts;确认 master eligible 节点数量(需 >1 且奇数);检查网络分区
OutOfMemoryError ES JVM 堆内存耗尽 调大 heap(建议不超过物理内存 50%,且 ≤31GB);检查 fielddata 使用量;优化聚合查询
关键词含义排查方向
Pipeline aborted Logstash Pipeline 配置错误或运行时异常导致中止 bin/logstash -f CONFIG --config.test_and_exit 先验证配置;查完整 error 堆栈
_grokparsefailure Grok 正则未匹配,日志解析失败 用 Grok Debugger 调试 pattern;加 match => ["message", "PATTERN1|PATTERN2"] 多 pattern 容错
09
后端应用 / 业务层
SPRING · GO · PYTHON · NODE · 业务异常
关键词含义排查方向
NullPointerException空指针异常,最常见业务 Bug查堆栈行号;字段未初始化或数据库查不到数据;Optional 未判空
IllegalArgumentException参数非法,通常是前端传参错误查请求参数是否符合校验规则;日志里打印入参值;@Valid 校验失败
DataIntegrityViolationException数据库约束违反(唯一索引、外键)确认数据是否重复;批量插入时主键冲突;ON DUPLICATE KEY
OptimisticLockException乐观锁更新失败并发修改同一数据;重试机制;版本号(@Version)字段未传或过期
TransactionRollbackException事务回滚异常看嵌套事务;@Transactional 传播行为;异常被吞没导致回滚失败
DataAccessException数据访问层通用异常查具体子类型;常见为连接失败或 SQL 错误;检查数据库驱动兼容性
关键词含义排查方向
Connection is not available数据库连接池耗尽(如 HikariCP)maximumPoolSize;是否有慢 SQL 长期占用连接;调大超时 connectionTimeout
SQLSyntaxErrorExceptionSQL 语法错误打印错误 SQL 语句;检查表名、字段名是否拼写错误;数据库方言与驱动是否匹配
TimeoutException数据库查询超时调大 queryTimeout;索引缺失导致慢查询;分页查询大表
Cannot acquire JDBC connection获取连接超时连接池满了或数据库挂了;检查数据库存活;查 maxLifetimeidleTimeout
Connection refused (DB)数据库服务未启动或端口错误telnet db_host 3306;检查 bind-address;安全组规则
关键词含义排查方向
ReadTimeoutException调用下游服务读取超时下游服务慢;调整 readTimeout 参数;重试机制
ConnectTimeoutException调用下游连接超时下游服务宕机;网络不通;防火墙/安全组拦截
FeignExceptionFeign 调用失败(含状态码)e.printStackTrace() 看响应体;检查断路器是否触发;重试次数限制
RetryableException重试异常重试策略过重(死循环);检查 maxAttempts;幂等性是否破坏
CircuitBreakerOpenException熔断器打开下游服务故障率过高;调整熔断阈值;人工关闭熔断或快速恢复
Socket hang upTCP 连接被对端关闭(Node.js 常见)请求体过大;GC 暂停导致超时;调大 keepAliveTimeout
关键词含义排查方向
TraceId: [xxxx]请求追踪 ID(需集成 Sleuth/MDC)用 TraceID 跨服务串联日志;ELK 中按 traceId 聚合;定位全链路
No registered service服务未注册到 Eureka/Nacos检查服务启动日志;注册中心状态;健康检查配置
LoadBalancerException负载均衡异常(无法选到节点)所有服务实例都下线了;刷新服务列表;检查 ribbon.eureka.enabled
RedisConnectionFailureRedis 连接失败检查 Redis 服务是否存活;password 是否配错;connectTimeout 超时
KafkaConsumerExceptionKafka 消费异常检查消费者组偏移量;序列化/反序列化错误;手动提交偏移量失败
关键词含义排查方向
BeanCreationException (Spring)Bean 初始化失败查依赖循环;@Configuration 中 Bean 缺失;@ComponentScan 范围
NoSuchBeanDefinitionExceptionBean 未定义检查 @Service/@Repository 是否扫描到;@Autowired 类型是否匹配
runtime error: invalid memory address (Go)空指针/内存越界查指针初始化;nil 切片操作;defer recover() 捕获 panic
context deadline exceeded (Go)超时(Gin + context.WithTimeout)调大超时;检查下游调用耗时;c.Request.Context() 传递
DoesNotExist (Django)get() 查不到数据改用 filter().first();添加 try-except;加日志
IntegrityError (Django)数据库完整性错误DataIntegrityViolationException;检查 unique_together
UnhandledPromiseRejection (Node)Promise 未捕获异常添加 process.on('unhandledRejection');查 async/await 未加 try-catch
通用 — 高频组合
grep -iE "error|fail|fatal|panic|timeout|refused|denied" /var/log/app.log
过滤今天的错误
grep "$(date +%Y-%m-%d)" /var/log/xxx.log | grep -iE "error|fail"
Nginx — 真实错误(排除噪音)
grep -iE "error|crit|emerg" /var/log/nginx/error.log | grep -v "favicon"
OOM — 内核日志
dmesg -T | grep -iE "oom|killed process|out of memory"
K8s — 找异常 Pod
kubectl get pods -A | grep -vE "Running|Completed"

# 批量查看异常 Pod 日志
kubectl get pods -A | grep CrashLoopBackOff | awk '{print $1,$2}' | \
  xargs -n2 sh -c 'kubectl logs $2 -n $1 --previous 2>&1 | tail -20' _
后端 — 找业务异常
grep -iE "NullPointer|IllegalArgument|DataIntegrity|TransactionRollback" /app/logs/backend.log
MySQL — 慢查询
# 慢查询日志分析
mysqldumpslow -s t -t 10 /var/log/mysql/slow.log
磁盘 — 空间排查
# 磁盘空间
df -h
# inode
df -i
# 找大目录
du -sh /* 2>/dev/null | sort -rh | head -10