常用查日志操作
定位group位置
新的部署方式实施后,如何定位到group所在的机器
新的部署方式:https://doc.guanmai.cn/系统运维/运维部署/机器按区部署2018-12-17/
先在gate机器上执行gmdeploy list 查找需要定位的group是否在某个灰度中,如果在,其灰度信息中包含机器名
若无灰度信息
主要查找lb-nginx-1,A1-web-nginx-1两台机器的nginx配置(lb-nginx-2与lb-nginx-1配置相同)这两台机器都可以从gate机器ssh上去
以现在(2018-12-24)为例:
lb-nginx-1:
less /etc/nginx/sites-enabled/{station|manage|bshop}
以station为例
map $COOKIE_group_id $station_backup_nginx {
# 转发到A3的group
~*^(9999)$ http://station_nginx_A3;
# 转发到A2的group
~*^(339|302|376|338|394|162|635|289|277|452|357|501|496|481|278|620|762|415|441|457|174|11|72|604|363|32|862|809|708|733|750)$ http://station_nginx_A2;
# 转发到A1的group
default http://station_nginx_A1;
}
A2,A3只有一台机器,如果被转发到A2,A3,可以直接去A2,A3查log
A1中有多个worker,如果被转发到A1,需要再查一次A1-web-nginx-1的nginx配置
A1-web-nginx-1:
less /etc/nginx/sites-enabled/{station|manage|bshop}
已station为例
# 非灰度,vip客户,会按这个规则分机器
map $COOKIE_group_id $station_master_upstream {
include /etc/nginx/master_map/map_station;
}
less /etc/nginx/master_map/map_station
现阶段
"~*^([0-9]|[1-9][0-9]|[1-4][0-9]{2})$" 10.104.226.4:7001; #worker1 0~499会发到这
default 10.104.227.243:7001; # worker2 其他的发到这
日志
我们的日志主要分三种,nginx日志,uwsgi日志,工程日志
工程日志:
放在各台机器的/data/logs/{工程代号} 下面,主要有
access:记录请求起始和结束时间,请求参数和返回结果等简略信息
app:记录所有在代码中打的log
error:记录logger.error打的log
所有的日志有唯一的request_id,若一次请求需要经历多个工程,各工程中log的request_id是一致的,可以通过request_id来了解请求处理流程
该位置的日志仅保留4天,之前的日志放在gate.guanmai.cn:/data/logs/backup/{工程代号}下
uwsgi日志:
放在工程的website/logs/或logs下
一般用来观察工程是否有流量
如工程日志中无<<END>>,说明在请求处理中,进程被干掉,可以去看uwsgi日志中是否有报错,常见报错类型:uwsgi超时或请求头过长(414)
nginx日志:
放在各台机器的/var/logs/nginx下,记录的信息较少,一般用来观察是否有流量,且目前(2018-12-24),nginx的配置限制的比uwsgi配置的限制要松(超时时间/请求头长度/...)(主观印象),所以大部分error都会记录在uwsgi的log
常用命令
查找access.log中有haha的行 -a 不要忽略二进制数 -C 10 查看上下10行
grep 'haha' access.log -a -C 10
查找 access.log中没有haha的行
grep -v 'haha' access.log
查看文件开头/结尾10行
head/tail -n 10 access.log
从尾部循环读取access.log -{n}f 先读取结尾n行在循环读取写入 不加n则默认读取10行
tail -f/100f access.log
把每一行数据 -d ' ' 按 ' ' 切分 -f 6 取切分后的第六部分
cut -d ' ' -f 6
查看行数/词数/字节数
wc -l/-w/-c