使用Python脚本写日志记录集群信息

Posted on 2021-08-19 21:12  Bumon  阅读(98)  评论(0)    收藏  举报

使用Python脚本写日志记录集群信息

背景

最近本地hadoop集群经常出现ssh连不上,ping不通的问题,而且根目录会突然空间不足,于是领到了一个集群运维的任务。那运维的第一步就是先写个脚本记录下系统的信息,帮助定位问题发生在什么地方。写这篇博客主要参考了以下链接:

https://www.cnblogs.com/linuxchao/p/linuxchao-log.html

https://blog.csdn.net/pansaky/article/details/90710751

官方文档:https://docs.python.org/zh-cn/3/howto/logging.html#logging-basic-tutorial

文本过滤:https://blog.csdn.net/lingfengliujian/article/details/78276894

py定时启动:https://www.jb51.net/article/170416.htm

python脚本定时启动

注意python需要用绝对路径

sudo vim /etc/crontab
*/2 * * * * root /usr/bin/python3 /ght/cus_hadoop_log/log_1.py

重启服务

service cron restart
/etc/init.d/cron restart
#查看进程
sudo service cron status

master的路径在/home/ljq/cus_hadoop_log

原来配置到根目录,但应该是写权限的问题,日志并不能被记录到log文件中

scp传输文件

scp -r ./cus_hadoop_log/ ljq@cluster-slave1:~/
scp -r ./cus_hadoop_log/ ljq@cluster-slave2:~/

网卡 eno1 enp4s0

内容

大概就是看看本机的ip地址有没有发生变化,以及ping其他主机还有外网能否ping通,如果出现问题就写到warn.log文件中


结果

(base) ljq@cluster-master:~/cus_hadoop_log$ cat warn.log 
2021-07-30 04:10:11,751 - root - WARNING - bilibili.com-【外网ping不通!请检查网络】
2021-07-31 07:22:11,789 - root - WARNING - bilibili.com-【外网ping不通!请检查网络】
2021-07-31 07:24:11,937 - root - WARNING - bilibili.com-【外网ping不通!请检查网络】
2021-07-31 08:12:11,541 - root - WARNING - bilibili.com-【外网ping不通!请检查网络】

(base) ljq@cluster-slave1:~/cus_hadoop_log$ cat warn.log 
2021-07-31 07:08:11,534 - root - WARNING - bilibili.com-【外网ping不通!请检查网络】
2021-07-31 07:26:12,003 - root - WARNING - bilibili.com-【外网ping不通!请检查网络】
2021-07-31 07:28:11,188 - root - WARNING - bilibili.com-【外网ping不通!请检查网络】

ljq@cluster-slave2:~/cus_hadoop_log$ cat warn.log 
2021-07-29 22:46:11,820 - root - WARNING - bilibili.com-【外网ping不通!请检查网络】
2021-07-31 07:10:16,086 - root - WARNING - bilibili.com-【外网ping不通!请检查网络】
2021-07-31 07:20:14,336 - root - WARNING - bilibili.com-【外网ping不通!请检查网络】

warn日志里面看到都有不一致的时间发生外网ping不通的情况……这定位不到问题所在呀…

遇到的问题

win和linux回车不一致报错

-bash: ./log_0.py: /usr/bin/python^M: bad interpreter: No such file or directory

解决办法:

vim xxx.py
#然后输入下面内容,注意不是在插入模式里输入
:set ff=unix

​ 这样还是太麻烦了,后来了解到根本原因是编码格式,我用的是Vscode,直接在界面右下角修改:

image

ascii和utf8编码问题

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 42: ordinal not in range(128)

解决:在代码首部添加以下代码

import sys
reload(sys)
sys.setdefaultencoding('utf-8')