Ubuntu Serverのsyslog、auth.logを別のサーバでインポートし内容を復元したい

実現したいこと

Ubuntuサーバーの通信内容であるsyslogを別のUbuntuサーバーにインポートして復元したいと考えています。最終的にはsyslogの内容を別のサーバが認識されている状態が目標です。

発生している問題・分からないこと

元のサーバーのsyslogを文字列として一行ずつDBに保存、別サーバーで取り出してsyslogに直接書き込んだところ、ログとして認識されませんでした。しかもsyslogに直接書き込むことは禁止されているため有効ではありません。

該当のソースコード

Server

1def syslog_collection(): 2 try: 3 with open(sys_log_file_path, "r", encoding="utf-8") as sys_log_file: 4 for line in sys_log_file: 5 #print(line) 6 # JSON形式に変換 7 r=line.split(' ',5) 8 s=r[0]+' '+r[1]+' '+r[2] 9 result1.append({'timestamp':s,'hostname':r[3],'method':r[4],'message':r[5]}) 10 #print(result1) 11 with open(sys_json_file_path, "w", encoding="utf-8") as sys_json_file: 12 # JSON形式に整形して書き込み 13 json.dump(result1, sys_json_file, ensure_ascii=False, indent=4) 14 15 # 元のログファイルを削除したい場合 16 #os.remove(sys_log_file_path) 17 18 except (FileNotFoundError, json.JSONDecodeError) as e: 19 print(f"変換エラー: {sys_log_file_path} - {e}") 20 21 with open('syslog.json')as f: 22 di=json.load(f) 23 #MongoDBsave 24 25 collect_id=db.syslog_test3.insert_many(di) 26 print(collect_id) 27 for a in db.syslog_test3.find(): 28 print(a) 29 client.close() 30

another_Server

1#syslog復元 2def syslog_restore() 3 #ログをmongoDBから取得 4 client=MongoClient('x.x.x.x',27017) 5 db=client['log'] 6 collect=db['syslog_test3'] 7 print(collect.find_one()) 8 json_dict=json.loads(collect.find_one()) 9 print(json_dict) 10 11def clear_syslog(): 12 try: 13 #syslogを停止 14 subprocess.run(['sudo', 'service', 'rsyslog', 'stop'], check=True) 15 16 #ログファイルを切り詰める 17 subprocess.run(['sudo', 'truncate', '-s', '0', '/var/log/syslog'], check=True) 18 19 # 再起動 20 subprocess.run(['sudo', 'service', 'rsyslog', 'start'], check=True) 21 22 print("Syslog has been cleared.") 23 except subprocess.CalledProcessError as e: 24 print(f"Error: {e}") 25 syslog_restore() 26

試したこと・調べたこと

上記の詳細・結果

stackoverflowで質問していますが解答されていません。

補足

特になし

コメントを投稿

0 コメント