1. 程式人生 > 其它 >使用Python指令碼寫日誌記錄叢集資訊

使用Python指令碼寫日誌記錄叢集資訊

使用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,直接在介面右下角修改:

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')