ELK-elkstack-使用消息隊列

来源:https://www.cnblogs.com/zhanglianghhh/archive/2018/09/08/9609826.html
-Advertisement-
Play Games

日誌通過logstash收集到redis,之後從logstash從redis讀取數據存入到ES 1. logstash使用redis測試 通過標準輸入到redis中 logstash配置與啟動 redis查看 2. httpd日誌收集到redis中 logstash配置與啟動 使用谷歌、火狐或者IE ...


 

       日誌通過logstash收集到redis,之後從logstash從redis讀取數據存入到ES

 

 

 

1. logstash使用redis測試

       通過標準輸入到redis中

 

logstash配置與啟動

 1 [yun@mini03 config]$ pwd
 2 /app/logstash/config
 3 [yun@mini03 config]$ cat redis_test.conf 
 4 input{
 5   stdin{}
 6 }
 7 
 8 filter{
 9 }
10 
11 output{
12   redis {
13     data_type => "list"
14     # 生產環境需要規劃
15     db => 1
16     host => "mini03"
17     port => 6379
18     key => "redis_test"
19   }
20 }
21 
22 ### 使用yun用戶即可
23 [yun@mini03 ~]$ /app/logstash/bin/logstash -f /app/logstash/config/redis_test.conf 
24 …………
25 111
26 222
27 333
28 444
29 123555
30 1234
31 654321zhags

 

redis查看

 1 [root@mini03 ~]# redis-cli -h mini03 -p 6379
 2 mini03:6379> select 1
 3 OK
 4 mini03:6379[1]> KEYS *  # 生產環境禁止使用該命令
 5 1) "redis_test"
 6 mini03:6379[1]> type redis_test
 7 list
 8 mini03:6379[1]> llen redis_test
 9 (integer) 7
10 mini03:6379[1]> lindex redis_test -1
11 "{\"host\":\"mini03\",\"message\":\"654321zhags\",\"@timestamp\":\"2018-08-29T13:58:02.184Z\",\"@version\":\"1\"}"

 

 

2. httpd日誌收集到redis中

logstash配置與啟動

 1 [yun@mini03 config]$ pwd
 2 /app/logstash/config
 3 [yun@mini03 config]$ cat redis_httpd_test.conf 
 4 input{
 5   file{
 6     path => ["/var/log/httpd/access_log"]
 7     type => "httpd-access-log"
 8     start_position => "beginning"
 9   }
10 }
11 
12 filter{
13 }
14 
15 output{
16   redis {
17     data_type => "list"
18     # 生產環境需要規劃
19     db => 1
20     host => "mini03"
21     port => 6379
22     key => "apache-access-log"
23   }
24 }
25 
26 #### 使用root用戶,涉及許可權
27 [root@mini03 ~]# /app/logstash/bin/logstash -f /app/logstash/config/redis_httpd_test.conf  # 使用root用戶

 

       使用谷歌、火狐或者IE瀏覽器訪問

 

redis查看

[root@mini03 ~]# redis-cli -h mini03 -p 6379
mini03:6379> select 1
OK
mini03:6379[1]> KEYS *
1) "apache-access-log"
2) "redis_test"
mini03:6379[1]> llen apache-access-log
(integer) 28
mini03:6379[1]> lindex apache-access-log -1
"{\"message\":\"10.0.0.1 - - [29/Aug/2018:22:08:30 +0800] \\\"GET /aaabbb/?aaa=bbb HTTP/1.1\\\" 404 205 \\\"-\\\" \\\"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0\\\"\",\"type\":\"httpd-access-log\",\"path\":\"/var/log/httpd/access_log\",\"host\":\"mini03\",\"@timestamp\":\"2018-08-29T14:08:31.442Z\",\"@version\":\"1\"}"

  

 

3. logstash從redis讀取數據標準輸出

       註意:該logstash在mini02上讀取mini03上redis的數據

       讀取之後先使用grok進行過濾

       之後進行標準輸出【命令行輸出】

 

logstash配置與啟動

[yun@mini02 config]$ pwd
/app/logstash/config
[yun@mini02 config]$ cat redis_stdout.conf 
input{
  redis {
    data_type => "list"
    db => 1
    host => "mini03"
    port => 6379
    key => "apache-access-log"
  }
}

filter{
  grok {
    match => { "message" => "%{HTTPD_COMBINEDLOG}" }
  }
}

output{
  stdout { codec => rubydebug }
}

###### 使用yun用戶即可
[yun@mini02 ~]$ /app/logstash/bin/logstash -f /app/logstash/config/redis_stdout.conf
……………………
{
        "request" => "/noindex/css/fonts/Bold/OpenSans-Bold.ttf",
        "message" => "10.0.0.1 - - [30/Aug/2018:17:22:13 +0800] \"GET /noindex/css/fonts/Bold/OpenSans-Bold.ttf HTTP/1.1\" 404 238 \"http://mini03/noindex/css/open-sans.css\" \"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36\"",
       "@version" => "1",
          "bytes" => "238",
           "auth" => "-",
       "referrer" => "\"http://mini03/noindex/css/open-sans.css\"",
       "response" => "404",
           "type" => "httpd-access-log",
       "clientip" => "10.0.0.1",
     "@timestamp" => 2018-08-30T09:22:13.950Z,
          "ident" => "-",
           "verb" => "GET",
           "path" => "/var/log/httpd/access_log",
           "host" => "mini03",
          "agent" => "\"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36\"",
      "timestamp" => "30/Aug/2018:17:22:13 +0800",
    "httpversion" => "1.1"
}
{
        "request" => "/?refresh=1m&orgId=1",
        "message" => "10.0.0.1 - - [30/Aug/2018:17:22:13 +0800] \"GET /?refresh=1m&orgId=1 HTTP/1.1\" 403 4897 \"-\" \"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36\"",
       "@version" => "1",
          "bytes" => "4897",
           "auth" => "-",
       "referrer" => "\"-\"",
       "response" => "403",
           "type" => "httpd-access-log",
       "clientip" => "10.0.0.1",
     "@timestamp" => 2018-08-30T09:22:13.949Z,
          "ident" => "-",
           "verb" => "GET",
           "path" => "/var/log/httpd/access_log",
           "host" => "mini03",
          "agent" => "\"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36\"",
      "timestamp" => "30/Aug/2018:17:22:13 +0800",
    "httpversion" => "1.1"
}
……………………

  

4. elkstack-使用redis作為消息隊列【彙總】

       在mini03的logstash讀取httpd的日誌,並存儲到redis

 

4.1. mini03的 logstash配置如下:

 1 [yun@mini03 config]$ pwd
 2 /app/logstash/config
 3 [yun@mini03 config]$ cat redis_httpd_test.conf 
 4 input{
 5   file{
 6     path => ["/var/log/httpd/access_log"]
 7     type => "httpd-access-log"
 8     start_position => "beginning"
 9   }
10 }
11 
12 filter{
13 }
14 
15 output{
16   redis {
17     data_type => "list"
18     # 生產環境需要規劃
19     db => 1
20     host => "mini03"
21     port => 6379
22     key => "apache-access-log"
23   }
24 }
25 
26 ######## 使用root用戶,涉及許可權
27 [root@mini03 ~]# /app/logstash/bin/logstash -f /app/logstash/config/redis_httpd_test.conf    
28 ………………

 

       在mini02的logstash讀取redis信息,並存儲在ES

 

4.2. mini02的logstash配置

 1 [yun@mini02 config]$ pwd
 2 /app/logstash/config
 3 [yun@mini02 config]$ cat redis_es.conf 
 4 input{
 5   redis {
 6     data_type => "list"
 7     db => 1
 8     host => "mini03"
 9     port => 6379
10     key => "apache-access-log"
11   }
12 }
13 
14 filter{
15   grok {
16     match => { "message" => "%{HTTPD_COMBINEDLOG}" }
17   }
18 }
19 
20 output{
21   # es有3台,隨便指定一臺即可  也可以是多台如 ["127.0.0.1:9200","127.0.0.2:9200"]
22   elasticsearch {
23     hosts => ["mini01:9200", "mini02:9200", "mini03:9200"]
24     index => "httpd-access-log-%{+YYYY.MM.dd}"
25   }
26 }
27 
28 ####### 使用yun用戶即可
29 [yun@mini02 ~]$ /app/logstash/bin/logstash -f /app/logstash/config/redis_es.conf  
30 ………………

 

4.3. 瀏覽器訪問httpd

瀏覽器

1 # 可以通過谷歌、火狐、IE訪問
2 http://mini03/    
3 http://mini03/indweg.html    

 

Linux命令行訪問

1 [yun@mini02 ~]$ ab -n40 -c 1 http://mini03/
2 [yun@mini02 ~]$ ab -n40 -c 1 http://mini03/wet/bdhw/    

 

4.4. 信息查看

elasticsearch-head查看

 

kibana查看

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、前臺的表單: <form enctype="multipart/form-data" method="post" id="inportFile" name="inportFile"><input type="file" name="excelfile" id="excelfile"/></for ...
  • 這次我選擇安裝Gentoo,用來做我學習的筆記。這次我是使用虛擬機安裝Gentoo,一是方便操作,二是可以看著手冊,一邊看一邊操作,嚴格按照手冊上的步驟執行,一般是不會出現問題的。 查看手冊最好學會看英文原版的,因為更新快,中文原版的可能很久無法更新,也會導致安裝失敗。 這裡提供amd 64位的英文 ...
  • 1、切換至root 或 然後輸入密碼 這種只切換身份,不切換home工作目錄 或 然後輸入密碼 這種不僅切換身份,而且切換home工作目錄 2、切換至普通用戶(比如:oracle) 然後輸入密碼 這種只切換身份,不切換home工作目錄 或 然後輸入密碼 這種不僅切換身份,而且切換home ...
  • 計劃任務 cron 計劃任務: 讓系統在將來的指定時間點執行某些任務(程式);任務可以周期性執行也可以僅僅執行一次。 Linux系統中計劃任務:at和cron服務是操作系統內置的2個服務,預設情況是安裝好的。 at服務:指定某個時間一次性執行某個任務,依賴於系統後臺atd進程 cron服務:指定時間 ...
  • 一.查看進程命令ps 1.1 預設ps 命令 在預設情況下,ps命令只會顯示運行在當前控制臺下,屬於當前用戶的進程,在上圖中,我們只運行了bash shell以及ps命令本身。 上圖中顯示了程式的進程ID(1538,1583),它們運行在TTY終端, 以及進程已有的CPU(TIME)時間。 1.2  ...
  • asp.net core 2.1 部署 centos7 Kestrel 非常適合從 ASP.NET Core 提供動態內容。 但是,Web 服務功能不像伺服器(如 IIS、Apache 或 Nginx)那樣功能豐富。 反向代理伺服器可以從 HTTP 伺服器卸載服務靜態內容、緩存請求、壓縮請求和 SS ...
  • 除了 "yum" 命令,還有些簡單的命令,在此記錄一下,加深記憶: 查詢記憶體和交換分區。 查看當前環境是否安裝某rpm軟體包 ...
  • 1. 配置安裝源 因為預設是使用Ubuntu官方伺服器,國內電腦使用外國伺服器較慢,所以需使用國內的伺服器(以下清華大學伺服器為例)。 方法一: (此過程很慢,實在不動就取消吧,載入一部分也夠用,以後要用在去把源寫入文件) 方法二: 1.到清華官網複製源列表 2.打開終端輸入: 3.把複製的源列表粘 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...