首頁 系統教程 Linux 詳解Elasticsearch的基友Logstash

詳解Elasticsearch的基友Logstash

Jul 18, 2024 am 06:56 AM
linux linux教程 紅帽 linux系統 linux指令 linux認證 紅帽linux linux視頻

詳解Elasticsearch的基友Logstash

Logstash 是一款強大的資料處理工具,它可以實現資料傳輸,格式處理,格式化輸出,還有強大的插件功能,常用於日誌處理。

一、原理

Input

可以從文件中、儲存中、資料庫中抽取數據,Input有兩種選擇一個是交給Filter進行過濾、修剪。另一個是直接交給Output

Filter

能夠動態地轉換和解析資料。可以透過自訂的方式對資料資訊進行過濾、修剪

Output

提供眾多輸出選擇,您可以將資料傳送到您要指定的地方,並且能夠靈活地解鎖眾多下游用例。

詳解Elasticsearch的基友Logstash

二、安裝使用
1.安裝
wget https://artifacts.elastic.co/downloads/logstash/logstash-6.0.1.rpm
yum install -y ./logstash-6.0.1.rpm
2.Logstash設定檔
vim /etc/logstash/logstash.yml
path.data: /var/lib/logstash                                    # 数据存放路径
path.config: /etc/logstash/conf.d/*.conf                        # 其他插件的配置文件,输入输出过滤等等
path.logs: /var/log/logstash                                    # 日志存放路径
3.Logstash中的JVM設定檔

Logstash是一個基於Java開發的程序,需要運行在JVM中,可以透過配置jvm.options來針對JVM進行設定。例如記憶體的最大最小、垃圾清理機制等等。這裡僅列舉最常用的兩個。

JVM的記憶體分配不能太大不能太小,太大會拖慢作業系統。太小導致無法啟動。

vim /etc/logstash/jvm.options                               # logstash有关JVM的配置
-Xms256m                                                    # logstash最大最小使用内存
-Xmx1g
4.最簡單的日誌收集配置

安裝一個httpd來測試,設定Logstash收集Apache的accless.log日誌檔

yum install httpd
echo "Hello world" > /var/www/html/index.html               # 安装httpd,创建首页用于测试
vim /etc/logstash/conf.d/test.conf
input {
    file {                                                  # 使用file作为数据输入
        path => ['/var/log/httpd/access_log']               # 设定读入数据的路径
        start_position => beginning                         # 从文件的开始处读取,end从文件末尾开始读取
    }
}
output {                                                    # 设定输出的位置
    stdout {
        codec => rubydebug                                  # 输出至屏幕
    }
}
5.測試設定檔

logstash是自帶的命令但是沒有再環境變數中,所以只能使用絕對路徑來使用此命令。

/usr/share/logstash/bin/logstash -t  -f  /etc/logstash/conf.d/test.conf   # 测试执行配置文件,-t要在-f前面
Configuration OK                                                          # 表示测试OK
6.啟動logstash

在目前會話運行logstash後不要關閉這個會話暫時稱其為會話1,再打開一個新的視窗為會話2

/usr/share/logstash/bin/logstash  -f  /etc/logstash/conf.d/test.conf

啟動以後在會話2中使用curl指令進行測試

curl 172.18.68.14

然後在回到之前的會話1可以看到輸出的資訊

{
      "@version" => "1",
          "host" => "logstash.shuaiguoxia.com",
          "path" => "/var/log/httpd/access_log",
    "@timestamp" => 2017-12-10T14:07:07.682Z,
       "message" => "172.18.68.14 - - [10/Dec/2017:22:04:44 +0800] \"GET / HTTP/1.1\" 200 12 \"-\" \"curl/7.29.0\""
}

至此最簡單的Logstash配置就已經完成了,這裡僅是將收集到的直接輸出沒有進行過濾或修剪。

三、Elasticsearch與Logstash

上面的配置时Logsatsh从日志文件中抽取数据,然后输出至屏幕。那么在生产中往往是将抽取的数据过滤后输出到Elasticsearch中。下面讲解Elasticsearch结合Logstash

Logstash抽取httpd的access.log文件,然后经过过滤(结构化)之后输出给Elasticsearch Cluster,在使用Head插件就可以看到抽取到的数据。(Elasticsearch Cluster与Head插件搭建请查看前两篇文章)

詳解Elasticsearch的基友Logstash

配置Logstash

    vim /etc/logstash/conf.d/test.conf
    input {
    file {
        path => ['/var/log/httpd/access_log']
        start_position => "beginning"
    }
    }
    filter {
    grok {
        match => {
            "message" => "%{COMBINEDAPACHELOG}"
        }

        remove_field => "message"   
    }
    }
    output {
    elasticsearch {
        hosts => ["http://172.18.68.11:9200","http://172.18.68.12:9200","http://172.18.68.13:9200"]
        index => "logstash-%{+YYYY.MM.dd}"
        action => "index"
        document_type => "apache_logs"
    }
    }

启动Logstash

     /usr/share/logstash/bin/logstash -t -f /etc/logstash/conf.d/test.conf       # 测试配置文件
    Configuration OK
     /usr/share/logstash/bin/logstash  -f /etc/logstash/conf.d/test.conf         # 启动Logstash

测试

每个执行10次172.18.68.14,位Logstash的地址

    curl 127.0.0.1
    curl 172.18.68.14

验证数据

使用浏览器访问172.18.68.11:9100(Elastisearch 安装Head地址,前面文章有讲)

选择今天的日期,就能看到一天内访问的所有数据。

詳解Elasticsearch的基友Logstash

四、监控其他

监控Nginx日志

仅仅列了filter配置块,input与output参考上一个配置

    filter {
        grok {
                match => {
                        "message" => "%{HTTPD_COMBINEDLOG} \"%{DATA:realclient}\""
                }
                remove_field => "message"
        }
        date {
                match => ["timestamp","dd/MMM/YYYY:H:m:s Z"]
                remove_field => "timestamp"
        }
    }

监控Tomcat

仅仅列了filter配置块,input与output参考上一个配置

    filter {
        grok {
                match => {
                        "message" => "%{HTTPD_COMMONLOG}"
                }
                remove_field => "message"
        }
        date {
                match => ["timestamp","dd/MMM/YYYY:H:m:s Z"]
                remove_field => "timestamp"
        }
    } 
五、Filebeat

现在已经搭建成在节点安装Logstash并发送到Elasticsearch中去,但是Logstash是基于Java开发需要运行在JVM中,所以是一个重量级采集工具,仅仅对于一个日志采集节点来说使用Logstash太过重量级,那么就可以使用一个轻量级日志收集工具Filebeat来收集日志信息,Filebeat同一交给Logstash进行过滤后再Elasticsearch。这些在接下来的文章在进行讲解,先放一张架构图吧。

詳解Elasticsearch的基友Logstash

以上是詳解Elasticsearch的基友Logstash的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1602
29
PHP教程
1505
276
修復無法在Windows Google Chrome上傳文件 修復無法在Windows Google Chrome上傳文件 Jul 08, 2025 pm 02:33 PM

在GoogleChrome中上傳文件時遇到問題?這可能很煩人,對吧?無論您是將文檔附加到電子郵件、在社交媒體上共享圖像,還是提交工作或學校的重要文件,流暢的文件上傳過程都是至關重要的。因此,如果您的文件上傳在WindowsPC上的Chrome中持續失敗,可能會令人沮喪。如果您還沒有準備好放棄您最喜歡的瀏覽器,這裡有一些提示修復無法在WindowsGoogleChrome上傳文件1.從通用修復開始在我們了解任何高級故障排除技巧之前,最好先嘗試下面提到的一些基本解決方案。排除互聯網連接問題:互聯網連

如何在Linux上管理組 如何在Linux上管理組 Jul 06, 2025 am 12:02 AM

管理Linux用戶組需掌握查看、創建、刪除、修改及用戶歸屬調整等操作。查看用戶組信息可用cat/etc/group或getentgroup,查看用戶所屬組用groups[用戶名]或id[用戶名];創建組使用groupadd,可加-g指定GID;刪除空組用groupdel;添加用戶到組用usermod-aG,修改主組用usermod-g;從組移除用戶可通過編輯/etc/group或使用vigr命令;修改組屬性用groupmod-n(改名)或groupmod-g(改GID),並記得更新相關文件權限。

什麼是sudo命令,我什麼時候應該使用它? 什麼是sudo命令,我什麼時候應該使用它? Jul 02, 2025 am 12:20 AM

sudo代表“substituteuserdo”或“superuserdo”,允許用戶以其他用戶(通常是root)的權限運行命令。其核心用途包括:1.執行系統級操作如安裝軟件或編輯系統文件;2.訪問受保護目錄或日誌;3.管理服務如重啟nginx;4.修改全局設置如/etc/hosts。使用時系統會檢查/etc/sudoers配置並驗證用戶密碼,提供臨時權限而非持續以root身份登錄,確保安全性。最佳實踐包括:僅必要時使用、避免盲目執行網絡命令、用visudo編輯sudoers文件、連續操作可考慮

如何在Linux中找到我的私人和公共IP地址? 如何在Linux中找到我的私人和公共IP地址? Jul 09, 2025 am 12:37 AM

在Linux系統中,1.使用ipa或hostname-I命令可查看私有IP;2.使用curlifconfig.me或curlipinfo.io/ip可獲取公網IP;3.桌面版可通過系統設置查看私有IP,瀏覽器訪問特定網站查看公網IP;4.可將常用命令設為別名以便快速調用。這些方法簡單實用,適合不同場景下的IP查看需求。

安裝Linux的系統要求 安裝Linux的系統要求 Jul 20, 2025 am 03:49 AM

LinuxCanrunonModestHardwarewtareWithSpecificminimumRequirentess.A1GHZPROCESER(X86ORX86_64)iSNEDED,withAdual-Corecpurecommondend.r AmshouldBeatLeast512MbForCommand-lineUseor2Gbfordesktopenvironments.diskSpacePacereQuiresaminimumof5-10GB,不過25GBISBISBETTERFORAD

比特幣代號是什麼?比特幣是什麼樣式的代碼? 比特幣代號是什麼?比特幣是什麼樣式的代碼? Jul 22, 2025 pm 09:51 PM

比特幣作為數字世界的先驅,其獨特的代號和底層技術一直是人們關注的焦點。它的標準代號是 BTC,在某些符合國際標準的平台上也被稱為 XBT。從技術角度看,比特幣並非單一的代碼樣式,而是一個龐大且精密的開源軟件項目,其核心代碼主要由 C 語言編寫,並融合了密碼學、分佈式系統和經濟學原理,任何人都可以查看、審查和貢獻其代碼。

如何使用'關閉”命令 如何使用'關閉”命令 Jul 15, 2025 am 12:26 AM

Linux/macOS的shutdown命令可通過參數實現關機、重啟、定時操作等。 1.立即關機使用sudoshutdownnow或-h/-P參數;2.定時關機用 時間或具體時間點,取消用-c;3.重啟使用-r參數,支持定時重啟;4.注意需sudo權限,遠程操作謹慎,避免數據丟失。

如何讓PHP容器支持自動構建 PHP環境持續集成CI配置方式 如何讓PHP容器支持自動構建 PHP環境持續集成CI配置方式 Jul 25, 2025 pm 08:54 PM

要讓PHP容器支持自動構建,核心在於配置持續集成(CI)流程。 1.使用Dockerfile定義PHP環境,包括基礎鏡像、擴展安裝、依賴管理和權限設置;2.配置GitLabCI等CI/CD工具,通過.gitlab-ci.yml文件定義build、test和deploy階段,實現自動構建、測試和部署;3.集成PHPUnit等測試框架,確保代碼變更後自動運行測試;4.使用Kubernetes等自動化部署策略,通過deployment.yaml文件定義部署配置;5.優化Dockerfile,採用多階段構

See all articles