python監控日誌
㈠ elastalert的簡單運用
elastalert 是yelp使用 python 開發的 elasticsearch 告警工具。
github: https://github.com/Yelp/elastalert
很多人使用ELK stack來做日誌收集分析, Kibana 強大而方便,跟蹤分析統計樣樣俱全,然而,但是,卻有一個問題。Automation!你讓我每天寫 query 、查 kibana ?死給你看。
於是yelp的懶鬼們開發了 elastalert ,配好 yaml ,你只要等著收郵件就好了。
elastalert依照一定頻率查詢es,將查詢結果對比告警閾值,超過閾值即進行告警。告警方式包括但不局限於郵箱、jira等。雖然官方沒有提供微信等告警方式,但是也有第三方版本可以使用。
使用elastalert需要配置rule.yaml文檔,來定義你要進行告警的條件、內容。
我們可以定義多個yaml,同時進行多種告警。也即對於每個rule.yaml,其包含一種告警發生規則,即閾值;包含一些告警方式,即email、jira等。
使用elastalert的步驟簡單分為以下幾步:
1. 安裝elastalert
2. 配置config.yaml
3. 建立elastalert的索引
4. 配置規則yaml
5. 測試你的規則
6. 運行elastalert
elastalert文檔齊全,以上步驟在官方文檔種又詳細介紹:
http://elastalert.readthedocs.io/en/latest/running_elastalert.html
我們來看一個簡單的 example_rule.yaml 例子:
你可能一看就明白這個 yaml 做了哪些事情,但是我們還是把它分成三段來具體了解一下:
ip、port、index、query,通過這四項來定義我們要監控的文檔。filter指的是es query(DSL) 中的filter。
在yaml中配置filter:
http://elastalert.readthedocs.io/en/latest/recipes/writing_filters.html
關於filter:
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-filter-context.html
type 即告警模式,elastalert官方提供了11種 type ,簡單說一下:
+ any(全部): 定義要監控文檔中的每個命中都會生成一個警報
+ blacklist(黑名單): 檢查和名單中的特定欄位,如果他們在黑名單中則匹配
+ whitelist(白名單): 與黑名單類似,此規則會將某個欄位與白名單進行比較,如果白名單不包含此詞,則匹配
+ change(變化): 監視某個欄位,當該欄位改變時匹配
+ frequency(頻率): 給定事件范圍內,至少有一定數量時匹配
+ spike(環比): 給定時間段內的事件量比前一時間段大或小時,匹配
+ flatline(基線): 某個時間段內的時間總數低於給閾值
+ new_term(新詞): 當指定欄位出現新的詞時匹配
+ cardinality(基數): 當某個時間段內特定欄位的唯一值總數高或低於閾值時,匹配
+ metric_aggregation(聚合): 計算窗孔中度量值高或低於閾值時匹配
+ percentage_match(百分比): 匹配值所佔百分比高或低與閾值時匹配。
FYI: http://elastalert.readthedocs.io/en/latest/ruletypes.html#rule-types
例子中我們選擇郵件告警,發送到 [email protected]
發送郵件需要配置郵件伺服器,可以配置在config.yaml中,也可以在rule.yaml分別配置。
3.1
alert_subject 更改郵件的標題
alert_text_type: alert_text_only 因為我們要自定義郵件內容,所以使用 alert_text_only
alert_text 自定義郵件內容, {} 用於引用參數,參考python的string format。此處我需要格式化日期格式,故在{}中添加參數 :%Y-%m-%d %H:%M:%S
alert_text_args 這里的參數依次對應 alert_text 中的 {}。此處可用的參數包括 elastalert_status/elastalert 中文檔內 _source/match_body 下的所有欄位,以及一些保留欄位。可用的欄位存儲在此 dict 中
㈡ 如何利用Python自動監控網站並發送郵件告警
1、監控網站
監控網站其實就是去爬網頁的源碼,每次對比或檢查網頁源碼特定位置的html代碼是否有變化即可,具體可以用
fromurllibimportrequest
page=request.urlopen("網址")
html=page.read()
就可以獲取網頁源碼;
2、發送高警
建議別用郵件,郵件發多幾次就會認為你的發件箱有發垃圾郵件的嫌疑。用 喵提醒 ,是個公眾號,可以免費發提醒到手機上。調用方法也和監控網頁代碼類似,具體自己看喵提醒的教程。
㈢ 我的的python語言腳本監控的伺服器日誌,日誌出現錯誤的時候根據錯誤關鍵字進行語音告警。可是最近出現
應該是split後生成的列表的原始超過2個了。看下面的簡單的例子就知道了。
其實應該看一下生成後的長度,做個保護,否則像你這種賦值,只要列表長度不為2,都會異常。
>>> x=[1,2,3]
>>> a,b=x
Traceback (most recent call last):
File "<interactive input>", line 1, in <mole>
ValueError: too many values to unpack
㈣ 運維需要學什麼
運維工程師一般有系統運維、網路運維、運維開發、資料庫運維、雲運維等方向,今天主要介紹系統運維工程師所需要具備的一些技能和考證方面。
系統運維工程師必備技能
系統運維工程師不僅需要有Linux基本操作技能,還應該會伺服器硬體、以及企業里常用的雙機集群、Windows、VMware、資料庫等技能,這樣才能有擔任合格的系統運維工程師。
需要特別注意企業里物理機都是用雙機集群,一定要掌握雙機集群的技能,包括Linux雙機集群、Windows雙機集群、Oracle Rac資料庫集群、sql Server資料庫集群等。
㈤ python 執行函數長時間不打日誌,檢測是否還在運行
pyhon的一個函數在執行I/O參數比如文件讀寫,socket正在等待數據時是不能幹其他事情的,包括打日誌。如果想讓一個文件准備好讀寫了或者一個socket有數據可以直接接收時讓操作系統通知程序的話,可以試試select庫
㈥ 在docker中遠程調用PhantomJS
背景:寫了一個爬蟲程序使用的docker部署,部署後在docker中安裝PhantomJS 比較麻煩,於是想到了再另一個docker容器中部署一個PhantomJS ,通過遠程調用的方式來使用它
通過java 調用:
通過python調用,先運行 pip install selenium安裝selenium
監控一下docker的日誌,發現調用成功
參考:
㈦ 大數據如何入門
首先我們要了解Java語言和Linux操作系統,這兩個是學習大數據的基礎,學習的順序不分前後。
大數據
Java :只要了解一些基礎即可,做大數據不需要很深的Java 技術,學java SE 就相當於有學習大數據基礎。
Linux:因為大數據相關軟體都是在Linux上運行的,所以Linux要學習的扎實一些,學好Linux對你快速掌握大數據相關技術會有很大的幫助,能讓你更好的理解hadoop、hive、hbase、spark等大數據軟體的運行環境和網路環境配置,能少踩很多坑,學會shell就能看懂腳本這樣能更容易理解和配置大數據集群。還能讓你對以後新出的大數據技術學習起來更快。
Hadoop:這是現在流行的大數據處理平台幾乎已經成為大數據的代名詞,所以這個是必學的。Hadoop裡麵包括幾個組件HDFS、MapRece和YARN,HDFS是存儲數據的地方就像我們電腦的硬碟一樣文件都存儲在這個上面,MapRece是對數據進行處理計算的,它有個特點就是不管多大的數據只要給它時間它就能把數據跑完,但是時間可能不是很快所以它叫數據的批處理。
Zookeeper:這是個萬金油,安裝Hadoop的HA的時候就會用到它,以後的Hbase也會用到它。它一般用來存放一些相互協作的信息,這些信息比較小一般不會超過1M,都是使用它的軟體對它有依賴,對於我們個人來講只需要把它安裝正確,讓它正常的run起來就可以了。
Mysql:我們學習完大數據的處理了,接下來學習學習小數據的處理工具mysql資料庫,因為一會裝hive的時候要用到,mysql需要掌握到什麼層度那?你能在Linux上把它安裝好,運行起來,會配置簡單的許可權,修改root的密碼,創建資料庫。這里主要的是學習SQL的語法,因為hive的語法和這個非常相似。
Sqoop:這個是用於把Mysql里的數據導入到Hadoop里的。當然你也可以不用這個,直接把Mysql數據表導出成文件再放到HDFS上也是一樣的,當然生產環境中使用要注意Mysql的壓力。
Hive:這個東西對於會SQL語法的來說就是神器,它能讓你處理大數據變的很簡單,不會再費勁的編寫MapRece程序。有的人說Pig那?它和Pig差不多掌握一個就可以了。
Oozie:既然學會Hive了,我相信你一定需要這個東西,它可以幫你管理你的Hive或者MapRece、Spark腳本,還能檢查你的程序是否執行正確,出錯了給你發報警並能幫你重試程序,最重要的是還能幫你配置任務的依賴關系。我相信你一定會喜歡上它的,不然你看著那一大堆腳本,和密密麻麻的crond是不是有種想屎的感覺。
Hbase:這是Hadoop生態體系中的NOSQL資料庫,他的數據是按照key和value的形式存儲的並且key是唯一的,所以它能用來做數據的排重,它與MYSQL相比能存儲的數據量大很多。所以他常被用於大數據處理完成之後的存儲目的地。
Kafka:這是個比較好用的隊列工具,隊列是干嗎的?排隊買票你知道不?數據多了同樣也需要排隊處理,這樣與你協作的其它同學不會叫起來,你干嗎給我這么多的數據(比如好幾百G的文件)我怎麼處理得過來,你別怪他因為他不是搞大數據的,你可以跟他講我把數據放在隊列里你使用的時候一個個拿,這樣他就不在抱怨了馬上灰流流的去優化他的程序去了,因為處理不過來就是他的事情。而不是你給的問題。當然我們也可以利用這個工具來做線上實時數據的入庫或入HDFS,這時你可以與一個叫Flume的工具配合使用,它是專門用來提供對數據進行簡單處理,並寫到各種數據接受方(比如Kafka)的。
Spark:它是用來彌補基於MapRece處理數據速度上的缺點,它的特點是把數據裝載到內存中計算而不是去讀慢的要死進化還特別慢的硬碟。特別適合做迭代運算,所以演算法流們特別稀飯它。它是用scala編寫的。Java語言或者Scala都可以操作它,因為它們都是用JVM的。
㈧ 如何用python寫監控日誌函數
def write_log(username,operation): ''' 寫日誌函數 :param username:用戶名 :param operation:用戶的操作信息 :return: ''' w_time = time.strftime('%Y-%m-%d %H%M%S') with open('log.txt','a+') as fw: log_content = '%s %s %s \n'%(w_tim...
㈨ 監控日誌在哪
張工負責維護他公司電腦系統,保證24小時運行不出
問題, 經常人在機房時候
沒有吊問題,人一走,就出大小問題,大的問題有時
候突然伺服器掉網,造成業務阻斷,又有如突然某個
業務程序莫名其妙退出,影響了業務正常進行,人回
家睡覺了,第二天到公司,被上司大罵並扣了獎金。
有了前例,張工每次回家都提心吊膽,睡不好覺。連
中午出去吃飯都提心吊膽。
自從張工上網下載了福州鼎嵌DQ-WARING智能手機-服
務器系統日誌遠程監控軟體並安裝到手機後,他可以
在睡覺或外出就餐的時候若第一時間聽到手機軟體鬧
鈴告警,並打開手機界面查看系統日誌文件告警內容
,並立刻到機房,及時處理故障,恢復業務。伺服器
側只需安裝一個小程序,定時讀取DQ-WARING.LOG文件
即可。java/c/c#/vb/c++程序或shell或python只需將
需要告警的內容文本寫入DQ-WARING.LOG文件,並編寫
0,1,2,3告警級別即可。
比如當腳本檢測硬碟只剩10%時候,寫入「硬碟xxx空
間即將爆滿-0」,手機端即可告警並看到該文本內容
。
又比如,當業務伺服器的網路掉網時您業務中斷時,
則心跳信號失去了,則發出告警。(保證手機不欠話
費的前提下)。
又比如,當張工剛好整理好下班回家途中,突然某程
序退出,則導致DQ-WARING.LOG長時間沒更新,手機即
可判斷某程序退出。
歡迎大家下載該系統日誌維護手機助手,為您解除後
顧之憂。聯系人鼎嵌江老師。