以下为我认为技术支持需要掌握的简单的运维操作命令

1.查看服务日志

打个比方,需要查看schedule日志

docker ps|grep schedule

会获取schedule的容器id,下图左边的1bd31a716bbd就是schedule的容器id

https://office.netease.com/api/admin/file/download?path=cowork/2024/08/13/e9b07ac1cc5545d6a0d66aa04a09bca4.png

然后docker logs -f 1bd31a --tail 200 就可以查看schedule的容器日志,--tail 200的作用是限制logs的输出,不然会太多一直打印。

其他的容器日志同理,docker ps|grep 服务名,获取id后,docker logs -f <容器id> --tail 200即可查看日志。

那我会查看日志了,我怎么把他导出到一个文件拿出来给开发看,或者说容器重启后日志就没了,我想保存下当前日志怎么弄呢?

以上述schedule日志为例,怎么导出?

docker logs -f 1bd31a > schedule.log

> 的作用是将输出重定向到一个文件中,覆盖掉原先的文件的内容,如果是新文件就是将内容导出到新文件。

2.更新镜像操作,尤其是web

某些客户是有测试环境的,测试环境的更新web、更新其他服务镜像的操作可以自行操作,生产环境的自己有把握也可以自行操作,或者让运维操作,或者运维在旁观看,技术支持操作。

登录环境后,首先查看服务环境是什么版本,是单机还是多机,怎么判断呢

如下图所示,服务名带有youdata就是单机,如果是ydswarm就是多机,镜像tag8.18就是818版本,判断这个的目的在于web镜像更新需要在单机做还是多机都需要做。

https://office.netease.com/api/admin/file/download?path=cowork/2024/08/13/1bb2073ec99542bdb25d5278711ef74c.png

怎么查看web镜像:

如下图,22a9开头的字段就是镜像id,怎么查看镜像id就通过docker images|grep 服务名 命令就可以

https://office.netease.com/api/admin/file/download?path=cowork/2024/08/13/e1e002c3bbd947c199de29888bfb1d9a.png

在操作更新之前,习惯是需要备份下镜像

docker tag localhost:5000/yddocker/web:lts-8.18 localhost:5000/yddocker/web:lts-8.18_bakxxxx(xxxx通常为日期)

这一步操作是为了备份镜像,防止万一更新后出了问题可以再使用之前的镜像,方便回滚。

然后将需要更新的web镜像包解压,

https://office.netease.com/api/admin/file/download?path=cowork/2024/08/13/cc6695aecf89489684c62a5fe83fa34f.png

tar xvf web-8.18-240802-1516-8f8155-f43e52-4708fe.tar.gz

https://office.netease.com/api/admin/file/download?path=cowork/2024/08/13/d556b02248d5473db7ee50facfadf445.png

解压后会有个tar包,和一个带有包日期的config文件,现在基本上config都是对的上的,不用管,但我的习惯还是比对下md5值。如下图:

https://office.netease.com/api/admin/file/download?path=cowork/2024/08/13/1f70d83ca6b84aaf9dbeca1498b1be08.png

这么做的意义是为了保证新的web包和原先的config下的文件是完全一致的,这样服务不会出问题。

然后load新的web镜像包

docker load -i web-lts-8.18-4708fe.tar

执行完成后,docker images|grep web 检查下镜像id是否对的上,比如web-lts-8.18-4708fe.tar这个包就是4708fe开头的镜像id。

最后重启web,inner-web服务

docker service update --force youdata_web

docker service update --force youdata_inner-web

如果环境是双机,甚至是三机的环境,就需要每台机器上都需要做一次上述的操作,最后重启web,inner-web的命令为

docker service update --force ydswarm_web

docker service update --force ydswarm_inner-web

执行完成后,dp|grep web查看web容器启动的时间,或者dv ls查看整体的服务状态

curl localhost/api/dash/hello 调用接口查看返回是否有数据,有数据就更新完成。

3.更换LICENSE

拿到license之后,需要上传到服务器上传到/youdata/目录下。

将原来的license进行备份:

https://office.netease.com/api/admin/file/download?path=cowork/2024/08/13/f86f5763f22f4895bd64eb5969713c14.png

然后将上传的新LICENSE改名后弄到/youdata/目录下

https://office.netease.com/api/admin/file/download?path=cowork/2024/08/13/6dd4e79cb15e46c3bd76a2ae7a56667b.png

mv LICENSE /youdata

最有一步通过命令(bash /youdata/scripts/status_reset.sh youdata)重启所有服务:

等待执行完毕

如果是多机器或者双机需要每台机器的/youdata下都传新的LICENSE,并执行bash /youdata/scripts/status_reset.sh ydswarm这个命令。等待执行完成。

最后一步再清理一下da的缓存

单机清理redis缓存

进入服务器里面,使用dx youdata_redis命令,进入redis,执行bash:

https://office.netease.com/api/admin/file/download?path=cowork/2024/08/13/d9a5bc2f4f004965912e183544e205bd.png

然后执行 redis-cli -a youdata:

https://office.netease.com/api/admin/file/download?path=cowork/2024/08/13/887a4e64425c410c8f6bfbc28d463f42.png

在执行flushall命令和dbsize :

https://office.netease.com/api/admin/file/download?path=cowork/2024/08/13/b997e4dc631a48bbbbbbcab571b1a6dc.png

执行完成之后exit退出就可以了

如何再redis清理da缓存

进入服务器里面,查看清理的命令,cat /youdata/scripts/status_reset.sh:

https://office.netease.com/api/admin/file/download?path=cowork/2024/08/13/e55a3f986e95444583a8de4bf707466f.png

redis-cli -a youdata scan 0 match "da*" count 10000000 | xargs redis-cli -a youdata DEL

进入redis容器里面:

dx youdata_redis

https://office.netease.com/api/admin/file/download?path=cowork/2024/08/13/842cd367ecbc4469b52a8046bb2d8b31.png

执行上面的语句:

https://office.netease.com/api/admin/file/download?path=cowork/2024/08/13/d9c5f5ac16534aa091c4484c5877cde9.png

多执行几次,当(integer)为0的时候,才算清理完成

https://office.netease.com/api/admin/file/download?path=cowork/2024/08/13/2a2a8264e3294510884312cee0bea1b9.png

然后退出redis容器(exit命令),重启一下da容器:docker service update --force youdata_da。

重启完成之后刷新一下页面就可以了。

4.基础监控查看

基础监控是monitor组件,dv ls查看服务有无monitor开头的,没有就是没有部署监控,有的话就是部署了监控服务

监控服务的配置文件在/youdata/installer下的docker-stack.monitor.yaml,登陆监控的用户名密码默认是

youdata,YOUDATA_2017security。如果有改动会在下图的grafana服务里修改。

https://office.netease.com/api/admin/file/download?path=cowork/2024/08/15/68f8895de1ea47ee845e850d29031730.png

5.查看服务日志

容器日志有时候太多,看不出有用的信息,需要进入宿主机日志目录下看对应服务日志。

/youdata/logs下有多个服务名称的文件夹:

https://office.netease.com/api/admin/file/download?path=cowork/2024/08/13/b56f10cef62043528e6715b71bfed11b.png

需要看哪个服务日志,进入到对应文件夹,看对应日期的log就可以

查看log的命令 less xxxxx.log就可以,按q退出。