如何保證一個項目是可監控可維護的

     線上系統經常由於網絡問題或者操作系統原因無法自由訪問控制,而且不能隨意的debug調試,所以一個成熟的架構必須有一系列的監控措施,包括後臺日誌、訪問日誌、緩存日誌、硬件使用情況等。

 

     一個優秀的監控平臺可以有效的保證系統的正常運行,可以在系統出現問題的時候提供充足的多方面的信息進行分析觀察得以用最小的代價恢復正常穩定運行。另外可以在第一時間進行預警,比如內存不足、磁盤不足等硬件情況。

 

     線上系統的環境如下

CentOS 5.5  操作系統 
Oracle 10G   數據庫版本
JDK 1.6.x     編譯環境
ANT 1.8.x    發佈環境 
MEMCACHED  1.4.5  緩存環境,用於減少數據庫讀寫操作
Nginx 0.8               代理服務器,用於靜態文本緩存      
Php 5.2.x               主要用於第三方的軟件,比如論壇、文件資源庫
mysql 5.1.x            主要用於第三方軟件使用,比如論壇
Nagios                   監控平臺
Awstats                 日誌統計分析

Log4j                     應用系統日誌輸出工具

其他還有activemq、solr、等應用暫時不說,只是針對監控所涉及的一些內容做下說明。 用到的監控工具主要是Nagios和Awstats.

 

Nagios可以做下面事情:

- 監視網絡服務 (SMTP, POP3, HTTP, NNTP, PING等)
- 監視主機機羣資源 (各個主機的進程, 磁盤,內存等)
- 監視數據庫的運行情況

- 簡單的插件設計可以輕鬆擴展Nagios的監視功能,比如Nagios-Plugins-Memcached可以用於監控memcached。
- 服務等監視的併發處理,查看各個服務器的併發數據量
- 錯誤通知功能 (通過email, pager, 或其他用戶自定義方法)
- 可指定自定義的事件處理控制器
- 可選的基於瀏覽器的WEB界面以方便系統管理人員查看網絡狀態,各種系統問題,以及日誌等等

       - 可以通過手機查看系統監控信息
      這個軟件主要是針對硬件和操作系統的一些內容進行監控記錄。
 
      使用Awstats的最大好處是簡單、不需要額外開發,可以直接支持Apache的日誌;功能強大、可以統計非常多的內容。
      Awstats可以統計以下內容     
     一:訪問量,訪問次數,頁面瀏覽量,點擊數,數據流量等
  二:精確到每月、每日、每小時的數據
  三:訪問者國家
  四:訪問者IP
  五:Robots/Spiders的統計
  六:紡客持續時間
  七:對不同Files type 的統計信息
  八:Pages-URL的統計
  九:訪客操作系統瀏覽器等信息
  十:其它信息(搜索關鍵字等等)
     通過該日誌分析,可以查看客戶的興趣愛好度以及各個頁面的訪問效率和訪問量,便於針對性的進行具體優化。
 
      Log4j是Apache的一個開放源代碼項目,它可以控制日誌信息輸送的目的地是控制檯、文件,我們也可以控制每一條日誌的輸出格式;通過定義每一條日誌信息的級別,更加細緻地控制日誌的生成過程。
      Log4j由三個重要的組件構成:日誌信息的優先級,日誌信息的輸出目的地,日誌信息的輸出格式.日誌信息的優先級從高到低有ERROR、WARN、 INFO、DEBUG,分別用來指定這條日誌信息的重要程度;日誌信息的輸出目的地指定了日誌將打印到控制檯還是文件中;而輸出格式則控制了日誌信息的顯示內容.
 
   
log4j.rootLogger=DEBUG,CONSOLE,A1,im
log4j.addivity.org.apache=true
# 應用於控制檯
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=DEBUG
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
#log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[thread] n%c[CATEGORY]%n%m[MESSAGE]%n%n
#應用於文件
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=file.log
log4j.appender.FILE.Append=false
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
# Use this layout for LogFactor 5 analysis
# 應用於文件回滾
log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender
log4j.appender.ROLLING_FILE.Threshold=ERROR
log4j.appender.ROLLING_FILE.File=rolling.log //文件位置,也可以用變量${java.home}、rolling.log
log4j.appender.ROLLING_FILE.Append=true //true:添加 false:覆蓋
log4j.appender.ROLLING_FILE.MaxFileSize=10KB //文件最大尺寸
log4j.appender.ROLLING_FILE.MaxBackupIndex=1 //備份數
log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

#應用於socket
log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender
log4j.appender.SOCKET.RemoteHost=localhost
log4j.appender.SOCKET.Port=5001
log4j.appender.SOCKET.LocationInfo=true
# Set up for Log Facter 5
log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout
log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[thread]%n%c[CATEGORY]%n%m[MESSAGE]%n%n

# Log Factor 5 Appender
log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender
log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000
# 發送日誌給郵件
log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
log4j.appender.MAIL.Threshold=FATAL
log4j.appender.MAIL.BufferSize=10
[email protected]
log4j.appender.MAIL.SMTPHost=www.wusetu.com
log4j.appender.MAIL.Subject=Log4J Message
lolog4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
# 用於數據庫
log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test
log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver
log4j.appender.DATABASE.user=root
log4j.appender.DATABASE.password=
log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES (’[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n’)
log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.File=SampleMessages.log4j
log4j.appender.A1.DatePattern=yyyyMMdd-HH’.log4j’
log4j.appender.A1.layout=org.apache.log4j.xml.XMLLayout
#自定義Appender
log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender
log4j.appender.im.host = mail.cybercorlin.net
log4j.appender.im.username = username
log4j.appender.im.password = password
log4j.appender.im.layout=org.apache.log4j.PatternLayout
log4j.appender.im.layout.ConversionPattern =[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
 
 
    實際應用中由於項目不斷的擴大,加入了短信應用服務器,加入了solr搜素引擎,加入了jms消息機制,應用了jta分佈事務等等,還有很多監控沒有做上去,比如一些異常的事務,關於solr的一些異常事務,關於activemq的一些異常事務,關於短信服務器的發送狀態和線程狀態。這些都是需要針對性的開發才能解決的問題。
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章