基於python實現日誌收集
指令碼:
#! /usr/bin/python
# encoding:utf-8
import paramiko
import time
import os
import re
import codecs
import commands
from time import localtime
from datetime import datetime,date
# 執行命令
def sftp_exec_command(command):
list = []
try:
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(host, 22, user, password)
std_in, std_out, std_err = ssh_client.exec_command(command)
for line in std_out:
list.append(line.strip("\n"))
ssh_client.close()
return list
except Exception, e:
print e
# 上傳檔案
def sftp_upload_file(server_path, local_path):
try:
t = paramiko.Transport((host, 22))
t.connect(username=user, password=password)
sftp = paramiko.SFTPClient.from_transport(t)
sftp.put(local_path, server_path)
t.close()
except Exception, e:
print e
# 下載檔案
def sftp_down_file(server_path, local_path):
try:
t = paramiko.Transport((host, 22))
t.connect(username=user, password=password)
sftp = paramiko.SFTPClient.from_transport(t)
sftp.get(server_path, local_path)
t.close()
except Exception, e:
print e
# 讀配置檔案
def read_conf(loc_conf):
l = []
conf = open(loc_conf, 'r');
for line in conf:
dic = dict()
if line.startswith('host'):
lst = line.strip().split(',')
for i in xrange(len(lst)):
str = lst[i]
idx = str.index('=')
key = str[0:idx]
value = str[idx + 1:]
dic[key] = value
l.append(dic)
return l
#d 讀配置檔案,返回列表List
conf = read_conf('E:/applog/log.cnf')
# 指定本地儲存路徑
target_log_dir = "E:/applog/"
today = time.strftime('%Y%m%d')
now = time.strftime('%H%M%S')
# 建立當天目錄
local_today = target_log_dir+today
isExists = os.path.exists(local_today)
# cmd_find = "find %s -mtime 0 -name '*'" %log_path
if not isExists:
os.mkdir(local_today)
print 'Sucessfully created today dir: %s' %local_today
# 記錄日誌
log_file = local_today + '/collect.log'
print log_file
collect_log = file(log_file, 'a+')
# if __name__ == '__main__':
# sftp_exec_command("df -h")
# sftp_upload_file("/home/oracle/test.html", "D:/doubanhtml/douban0.html")
# sftp_down_file("/u01/app/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl.log", "D:/alert_orcl.log")
if __name__ == '__main__':
for a in xrange(len(conf)):
# 遍歷配置檔案列表
host = conf[a]['host']
port = 22
timeout = 30
user = conf[a]['user']
password = conf[a]['password']
app_name = conf[a]['name']
app_path = conf[a]['path']
# password = raw_input("Input your password plz:")
# 建立程式目錄
local_app = target_log_dir + today + '/' + app_name
isExists = os.path.exists(local_app)
# cmd_find = "find %s -mtime 0 -name '*.trc'" %log_path
if not isExists:
os.makedirs(local_app)
print >>collect_log,'*******Sucessfully created app directory : %s*******' %local_app
collect_log.write('\n')
# 將遠端日誌路徑傳入app_path_list,進行遍歷抓取
app_path_list = []
app_path_list.append(app_path)
for log_path in app_path_list:
print >>collect_log,'====starting get logs of app:%s->%s->%s====' %(app_name,host,log_path)
collect_log.write('\n')
cmd_find = "find %s -newermt %s -name '*.*'" % (log_path,today)
lt = sftp_exec_command(cmd_find)
print >>collect_log,'--Sucessfully get logs:'
for each in lt:
# 取檔名
filename = each.split('/')[-1]
local_app_log = local_app + '/' + filename
# alert_path_final=alert_path.decode('unicode-escape').encode('utf-8')
sftp_down_file(each, local_app_log)
print >>collect_log,each
collect_log.write('\n')
配置檔案 log.cnf:
host=192.168.48.10,user=oracle,password=oracle,path=/u01/app/oracle/diag/rdbms/orcl/orcl/trace,name=ora
host=192.168.48.10,user=oracle,password=oracle,path=/home/oracle,name=ora_home
根據需要修改即可。另外需要實現建好本地外層路徑,更改路徑後在Linux下也可執行。也可以使用pyinstaller打包成exe執行。
收集日誌 collect.log
*******Sucessfully created app directory : E:/applog/20171207/ora******* ====starting get logs of app:ora->192.168.48.10->/u01/app/oracle/diag/rdbms/orcl/orcl/trace==== --Sucessfully get logs: /u01/app/oracle/diag/rdbms/orcl/orcl/trace/test.trc *******Sucessfully created app directory : E:/applog/20171207/ora_home******* ====starting get logs of app:ora_home->192.168.48.10->/home/oracle==== --Sucessfully get logs: /home/oracle/201712061.trc /home/oracle/.viminfo /home/oracle/.bash_history /home/oracle/oracheck/oracheck_171126.log /home/oracle/20171206.trc
相關推薦
基於python實現日誌收集
指令碼: #! /usr/bin/python # encoding:utf-8 import paramiko import time import os import re import codecs import commands from time import
HTML 基於 Python 實現分頁功能
ner mode 一個 div 樣式 def navi itl import 前面的話: 1. 網頁引用的bootstrap 中的表格,所以需要引入樣式類 2. 第一次寫文章,不喜勿噴。有不足的地方,可留言我改正,在此先謝過。 HTML代碼: <
基於Python實現的四則運算生成程序
個人 目錄 [] class 是否 time 除法 slist 設計實現 Github項目地址:傳送門 小組成員:黃曉彬(代碼實現) 黃鈺城(代碼審查) 需求: 1. 使用 -n 參數控制生成題目的個數。 2. 使用 -r 參數控制題目中數值(自然數、真分數和真分數分母)的
[原始碼和文件分享]基於Python實現的論壇帖子情感分析
一、課程專案 Scuinfo文字分類分析 二、專案類容 爬取川大匿名社群SCUinfo在一段時間內的帖子,對其進行情感分類分析,包括情緒分類(積極,消極),帖子內容關聯分析等。 三、個人工作完成報告 3.1 工作概述 負責資料收集、預處理以及簡單的情感分析 3.2 爬蟲方
基於flume的日誌收集系統配置
大資料系統中通常需要採集的日誌有: 系統訪問日誌 使用者點選日誌 其他業務日誌(比如推薦系統的點選日誌) 在收集日誌的時候,一般分為三層結構:採集層、彙總層和儲存層,而不是直接從採集端將資料傳送到儲存端,這樣的好處有: 如果儲存端如Hadoop叢集、Kafka等需要停
基於python實現網路課程秒刷
在平時的工作生活中,我們總是會遇到一些需要網路課程的學習,最常見的就像駕校的網路課程學習,黨員課程學習,工作技能網路學習等。如下圖所示,這是公司內部的一個黨員學習互動平臺,該平臺每個月都有一定的學習任務。 &nbs
博導推薦給我一本基於Python實現爬蟲的書, 最適合程式猿們看的!
網際網路包括了至今為止最有效的資料集,並且大年夜大年夜區域性能地下收費拜候。但這些資料根基上不克不及複用。它們被嵌入在網站的佈局、樣式中,得抽取出來才調應用。我們從網頁中抽取資料的過程就是我們熟知的彙集爬蟲,網際網路期間每天都有大年夜大年夜量的資訊被頒佈發表到彙集上,彙集爬蟲也愈來愈有效。
神經網路演算法(基於Tensorflow、基於Python實現BP)
1. 演算法思想 神經網路可分為兩個過程,前向傳播和反向傳播過程。前向傳播是對線性結果的非線性轉化,獲得對映關係,此非線性對映關係可依據層數的增加而累加;反向傳播是對前向傳播結果的誤差進行修正,依據各種型別的梯度下降演算法更新梯度,使得前向傳播的結果能更接近真
基於python 實現對圖片進行SVD
實現對圖片進行SVD 之前在學習截斷式SVD的時候, 不知道為什麼截斷式SVD後能夠近似原矩陣? 或者說奇異值究竟有什麼含義? 看了以下知乎的答案後, 有了很形象的理解 奇異值的物理意義是什麼?
Python實現日誌檔案寫入或者列印--類似於Java的Log4j
開發過Java的應該都知道Log4j的重要性,尤其是在開發測試中,能夠讓開發和測試人員方便找的bug,Python也有和Log4j相同功能的庫那就是logging庫,其功能非常強大,在開發測試中很方便,我是將其作為工具使用的,程式碼syslog.py如下: #!/usr/b
基於mongodb的日誌收集模組設計
由於log4mongo0.7.4.jar只支援mongodb2.X版本,但是現在的mongodb都已經3.6了。然後我再找找,它的新版本log4mongo0.9.0.jar版本,整合進去發現報錯了,看了一些資料說是自身bug(可能是水平有限,沒找到解決辦法)?因此我就參考網上
Spring AOP 基於註解實現日誌記錄+自定義註解
一、寫一個自定義註解 註解中包括配置方法所在模組名稱,以及功能名稱,當然我們在註解裡可以自定義。import java.lang.annotation.Documented; import java.lang.annotation.ElementType; im
基於ELK的日誌收集系統的心得
elasticsearch+logstash+kinana搭建的日誌收集系統 elasticsearch是基於倒排序查詢的查詢引擎,什麼叫倒排序?比如mysql建立的索引是正排序,對於規範化資料(比如表格,元資料)而言基本使用正排序索引,倒排序一般用於文字之類的查詢,典型
支持中文的基於詞為基本粒度的前綴樹(prefix trie)python實現
情況 key -s path join ret int blank ref Trie樹,也叫字典樹、前綴樹。可用於”predictive text”和”autocompletion”。亦可用於統計詞頻(邊插入Trie樹邊更新或加入詞頻)。 在計算機科學中。
基於LAMP實現web日誌管理查看
日誌 web 管理 前言:日誌是一個重要的信息庫,如何高效便捷的查看系統中的日誌信息,是系統管理員管理系統的必備的技術。實現方式: 1、將日誌存儲於數據庫。 2、采用LAMP架構,搭建PHP應用,通過web服務訪問數據庫,提取日誌信息,展現到web頁面。基本結構圖:一、搭建日誌服務器
python實現王者榮耀英圖片收集
pytho 獲取圖片 所有 orien 發現 mark 請求 發出 view 一個python寫的小爬蟲項目,爬蟲相關的很容易寫,關鍵是怎麽找到爬取圖片的位置。 圖片位置分析 hero_list_url = 'http://pvp.qq.com/web201605
Go實現海量日誌收集系統(二)
fig encode 文件配置 sar 架構 cli 代碼執行 CP lob 一篇文章主要是關於整體架構以及用到的軟件的一些介紹,這一篇文章是對各個軟件的使用介紹,當然這裏主要是關於架構中我們agent的實現用到的內容 關於zookeeper+kafka 我們需要先把兩
基於共現發現人物關系的python實現
默認字體 print matplot str raw 需要 out med jieba分詞 基於共現發現人物關系的python實現 參考鏈接: 提取《釜山行》人物關系, 用Python的networkx繪制精美網絡圖 1.共現關系 在文獻計量學中,關鍵詞的共詞方法常用來確定
利用Python實現掃描日誌關鍵字!Python真的無所不能!
dal pst ould 實現 掃描 count 格式 .py oid 我們在壓力測試過程會收集到很多log,怎樣快速從中找到有用信息呢?讓python腳本幫我們做這部分工作吧! 廢話不說,上代碼 環境:win10 + python2.7.14 countTime.py
利用Python實現讀取Nginx日誌,並將需要信息寫入到數據庫。
creat rip ger form use nginx日誌 zabbix 創建 auth #!/usr/bin/env python # coding: utf-8 # Auther:liangkai # Date:2018/6/26 11:26 # License: (