亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

使用MySQL語句來查詢Apache服務(wù)器日志的方法

 更新時間:2015年06月26日 15:35:25   投稿:goldensun  
這篇文章主要介紹了使用MySQL語句來查詢Apache服務(wù)器日志的方法,五個實例均基于Linux系統(tǒng)進行演示,需要的朋友可以參考下

Linux 有一個顯著的特點,在正常情況下,你可以通過日志分析系統(tǒng)日志來了解你的系統(tǒng)中發(fā)生了什么,或正在發(fā)生什么。的確,系統(tǒng)日志是系統(tǒng)管理員在解決系統(tǒng)和應(yīng)用問題時最需要的第一手資源。我們將在這篇文章中著重講解 Apache HTTP web server 生成的 Apache access 日志。

這次,我們會通過另類的途徑來分析 Apache access 日志,我們使用的工具是 asql。asql 是一個開源的工具,它能夠允許使用者使用 SQL 語句來查詢?nèi)罩?,從而通過更加友好的格式展現(xiàn)相同的信息。
Apache 日志背景知識

Apache 有兩種日志:

  •     Access log:存放在路徑 /var/log/apache2/access.log (Debian) 或者 /var/log/httpd/access_log (Red Hat)。Access Log 記錄所有 Apache web server 執(zhí)行的請求。
  •     Error log:存放在路徑 /var/log/apache2/error.log (Debian) 或者 /var/log/httpd/error_log (Red Hat)。Error log 記錄所有 Apache web server 報告的錯誤以及錯誤的情況。Error 情況包括(不限于)403(Forbidden,通常在請求被拒絕訪問時被報告),404(Not found,在請求資源不存在時被報告)。

雖然管理員可以通過配置 Apache 的配置文件來自定義 Apache access log 的詳細程度,不過在這篇文章中,我們會使用默認的配置,如下:
   

復制代碼 代碼如下:
遠程 IP - 請求時間 - 請求類型 - 響應(yīng)代碼 - 請求的 URL - 遠程的瀏覽器信息 (也許包含操作系統(tǒng)信息)

因此一個典型的 Apache 日志條目就是下面這個樣子:

   

復制代碼 代碼如下:
192.168.0.101 - - [22/Aug/2014:12:03:36 -0300] "GET /icons/unknown.gif HTTP/1.1" 200 519 "http://192.168.0.10/test/projects/read_json/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:30.0) Gecko/20100101 Firefox/30.0"

但是 Apache error log 又是怎么樣的呢?因為 error log 條目主要記錄 access log 中特殊的請求(你可以自定義),所以你可以通過 access log 來獲得關(guān)于錯誤情況的更多信息(example 5 有更多細節(jié))。

此外要提前說明的, access log 是系統(tǒng)級別的日志文件。要分析虛擬主機的日志文件,你需要檢查它們相應(yīng)的配置文件(例如: 在 /etc/apache2/sites-available/[virtual host name] 里(Debian))。
在 Linux 上安裝 asql

asql 由 Perl 編寫,而且需求以下兩個 Perl 模塊:SQLite 的 DBI 驅(qū)動以及 GNU readline。
在 Debian, Ubuntu 以及其衍生發(fā)行版上安裝 asql

使用基于 Debian 發(fā)行版上的 aptitude,asql 以及其依賴會被自動安裝。

  # aptitude install asql

在 Fedora,CentOS,RHEL 上安裝 asql

在 CentOS 或 RHEL 上,你需要啟用 EPEL repository,然后運行以下代碼。在 Fedora 中,直接運行以下代碼:

  # sudo yum install perl-DBD-SQLite perl-Term-Readline-Gnu
  # wget http://www.steve.org.uk/Software/asql/asql-1.7.tar.gz
  # tar xvfvz asql-1.7.tar.gz
  # cd asql
  # make install

asql 是如何工作的?

從上面代碼中的依賴中你就可以看出來,asql 轉(zhuǎn)換未結(jié)構(gòu)化的明文 Apache 日志為結(jié)構(gòu)化的 SQLite 數(shù)據(jù)庫信息。生成的 SQLite 數(shù)據(jù)庫可以接受正常的 SQL 查詢語句。數(shù)據(jù)庫可以通過當前以及之前的日志文件生成,其中也包括壓縮轉(zhuǎn)換過的日志文件,類似 access.log.X.gz 或者 access_log.old。

首先,從命令行啟動 asql:

  # asql

你會進入 asql 內(nèi)置的 shell 交互界面。

2015626152358755.png (325×77)

輸入 help 列表可執(zhí)行的命令:

2015626152422067.png (599×475)

首先在 asql 中加載所有的 access 日志:

   

復制代碼 代碼如下:
asql > load <apache-access-logs 的路徑>

比如在 Debian 下:

   

復制代碼 代碼如下:
asql > load /var/log/apache2/access.*

在 CentOS/RHEL 下:

   

復制代碼 代碼如下:
asql > load /var/log/httpd/access_log*

當 asql 完成對 access 日志的加載后,我們就可以開始數(shù)據(jù)庫查詢了。注意一下,加載后生成的數(shù)據(jù)庫是 "temporary" (臨時)的,意思就是數(shù)據(jù)庫會在你退出 asql 的時候被清除。如果你想要保留數(shù)據(jù)庫,你必須先將其保存為一個文件。我們會在后面介紹如何這么做(參考 example 3 和 4)。

2015626152440806.png (395×120)

生成的數(shù)據(jù)庫有一個名為 logs 的表。輸入下面的命令列出 logs 表中提供的域:

2015626152501628.png (564×364)

一個名為 .asql 的隱藏文件,保存于用戶的 home 目錄下,記錄用戶在 asql shell 中輸入的命令歷史。因此你可以使用方向鍵瀏覽命令歷史,按下 ENTER 來重復執(zhí)行之前的命令。
asql 上的示例 SQL 查詢

下面是幾個使用 asql 針對 Apache 日志文件運行 SQL 查詢的示例:

Example 1:列出在 2014 年 10 月中請求的來源 / 時間以及 HTTP 狀態(tài)碼。

  SELECT source, date, status FROM logs WHERE date >= '2014-10-01T00:00:00' ORDER BY source;


2015626152520020.jpg (640×92)

    Example 2:從小到大顯示單個客戶端處理的請求大?。╞ytes)。

   

 SELECT source, SUM(size), AS NUMBER FROM logs GROUP BY source ORDER BY Number DESC;

2015626152552610.jpg (640×197)    Example 3:在當前目錄中保存數(shù)據(jù)庫為 [filename]。

   

復制代碼 代碼如下:
save [filename]

2015626152616152.png (401×153)

    這樣做可以避免使用 load 命令對日志的語法分析所占用的處理時間。

Example 4:在重新進入 asql 后載入數(shù)據(jù)庫。

   

復制代碼 代碼如下:
restore [filename]

2015626152712677.png (581×208)

    Example 5:返回 access 日志中記錄的 error 情況。在這個例子中,我們將顯示所有返回 HTTP 狀態(tài)碼為 403(access forbidden)的請求。

 

  SELECT source, date, status, request FROM logs WHERE status='403' ORDER BY date

2015626152812705.jpg (640×157)

    這個例子想要表現(xiàn)的是:雖然 asql 只分析 access 日志,我們還是可以通過使用請求的狀態(tài)域來顯示有 error 情況的請求。
小結(jié):

我們體驗了 asql 如何幫助我們分析 Apache 日志文件,并將結(jié)果通過友好的格式輸出。雖然你也可以通過使用命令行的工具(例如 cat 與 grep,uniq,sort,wc 等等之間的管道)來實現(xiàn)類似功能,與此比較起來 asql 展示了它如同瑞士軍刀一般的強大功能,使我們在自己的需求下能夠通過標準 SQL 查詢語句來過濾日志。

希望這篇教程能幫助到你們。

相關(guān)文章

  • Oracle中實現(xiàn)MySQL show index from table命令SQL腳本分享

    Oracle中實現(xiàn)MySQL show index from table命令SQL腳本分享

    這篇文章主要介紹了Oracle中實現(xiàn)MySQL show index from table命令SQL腳本分享,本文只是模擬了Mysql中的show index from table命令,需要的朋友可以參考下
    2014-10-10
  • oracle 數(shù)據(jù)庫啟動階段分析

    oracle 數(shù)據(jù)庫啟動階段分析

    這篇文章主要介紹了oracle 數(shù)據(jù)庫啟動階段分析,包括三個階段的詳細介紹,需要的朋友可以了解下。
    2017-09-09
  • Oracle修改表空間大小的方法

    Oracle修改表空間大小的方法

    這篇文章主要介紹了Oracle修改表空間大小的方法,實例講述了Oracle通過命令行實現(xiàn)修改Oracle表空間大小的方法,非常簡單實用,需要的朋友可以參考下
    2015-12-12
  • oracle創(chuàng)建用戶過程詳解

    oracle創(chuàng)建用戶過程詳解

    這篇文章主要介紹了oracle創(chuàng)建用戶過程詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Oracle 使用TOAD實現(xiàn)導入導出Excel數(shù)據(jù)

    Oracle 使用TOAD實現(xiàn)導入導出Excel數(shù)據(jù)

    本文主要介紹Oracle中使用TOAD工具實現(xiàn)Excel導入導出的功能,希望能幫到大家。
    2016-05-05
  • Oracle鎖表解決方法的詳細記錄

    Oracle鎖表解決方法的詳細記錄

    在開發(fā)Oracle數(shù)據(jù)庫時,我們常遇到頻繁操作的Oracle數(shù)據(jù)表,會出現(xiàn)Oracle鎖表,下面這篇文章主要給大家介紹了關(guān)于Oracle鎖表解決方法的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • Oracle數(shù)據(jù)庫處理多媒體信息

    Oracle數(shù)據(jù)庫處理多媒體信息

    Oracle數(shù)據(jù)庫處理多媒體信息...
    2007-03-03
  • oracle SQL命令大全

    oracle SQL命令大全

    oracle SQL命令,學習oracle的朋友有福了。
    2009-06-06
  • oracle中commit之后進行數(shù)據(jù)回滾的方法

    oracle中commit之后進行數(shù)據(jù)回滾的方法

    這篇文章主要介紹了oracle中commit之后如何進行數(shù)據(jù)回滾,本文給大家分享兩種方法,每種方法都給大家介紹的比較詳細,需要的朋友可以參考下
    2021-12-12
  • Oracle數(shù)據(jù)庫表空間超詳細介紹

    Oracle數(shù)據(jù)庫表空間超詳細介紹

    Oracle數(shù)據(jù)庫的數(shù)據(jù)存放在表空間中,表空間是一個邏輯的概念,它是由數(shù)據(jù)文件組成,表空間大小由數(shù)據(jù)文件的數(shù)量和大小決定,下面這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫表空間的相關(guān)資料,需要的朋友可以參考下
    2023-05-05

最新評論