簡單安裝ELK分析日志及使用心得

ELK是由Elasticsearch、Logstash、Kibana三個組件組成的。
Elasticsearch:是ELK的核心插件,是一個基于Lucene的搜索服務器,它提供一個分布式多用戶能力的全文搜索引擎,能夠達到實時搜索,穩定,可靠,快速,安裝方便。Elasticsearch服務會開啟兩個端口,9200和9300,其中9200是對外服務的,9300是對集群內交互使用的。
Logstash:日志收集工具,可以從本地磁盤,網絡服務(自己監聽端口,接受用戶日志),消息隊列中收集各種各樣的日志。然后對日志進行分析整理,輸出到指定的輸出,(如elasticsearch、redis、終端等。)監聽9600端口。
Kibana:是一個可視化日志web展示工具,對Elasticsearch中存儲的日志進行展示。監聽5601端口。

在這里我直接三個組件裝在同一臺機器上面,也可以把他們分開。
192.168.40.15 elasticsearch logstash kibana

由于ES與logstash都需要JDK環境,所以要先安裝JDK環境,最好是安裝1.8或者以上的。

[root@elkserver ~]# java -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

安裝ES:

[root@elkserver src]# tar -xf elasticsearch-5.6.3.tar.gz
[root@elkserver src]# mv elasticsearch-5.6.3/  /usr/local/elasticsearch
[root@elkserver src]# cd /usr/local/elasticsearch/
##修改配置文件:
[root@elkserver elasticsearch]# vim config/elasticsearch.yml
node.name: elkserver
network.host: 192.168.40.15
discovery.zen.minimum_master_nodes: 1
##在配置文件末尾添加:
http.cors.enabled: true
http.cors.allow-origin: "*"  ##這兩句是為了后面安裝head插件使用的。

安裝head插件
head插件能夠生成集群的統計數據,并提供瀏覽器查詢,同時還能對elasticsearch索引進行結構化查詢。

cd /usr/local/elasticsearch
mkdir head
cd head
git clone https://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head/
yum install -y npm*    ##安裝npm命令
npm install    ##運行緩慢
npm install -g grunt-cli
##修改配置文件
[root@elkserver elasticsearch-head]# vim Gruntfile.js connect: {server: {options: {port: 9100,hostname: '0.0.0.0',   ##添加這行,冒號后面有空格base: '.',keepalive: true}}}
##修改elasticsearch的JVM運行內存,這個可以根據需要更改,但是-Xms和-Xmx的值必須一樣,不然啟動報錯[root@elkserver elasticsearch-head]# vim /usr/local/elasticsearch/config/jvm.options
-Xms1g
-Xmx1g
##修改Linux最大打開文件數
vim /etc/security/limits.conf
* soft nofile 655350   ##在末尾添加
* hard nofile 655350
[root@elkserver ~]# ulimit -n
655350
##修改sysctl.conf文件
[root@elkserver ~]# vim /etc/sysctl.conf 
vm.max_map_count=655350
[root@elkserver ~]# sysctl -p

將ES的head插件啟動,然后創建普通用戶,啟動ES,ES只能使用普通用戶啟動

useradd elastic
passwd elastic##啟動head插件
[root@elkserver elasticsearch-head]# pwd
/usr/local/elasticsearch/head/elasticsearch-head
[root@elkserver elasticsearch-head]# grunt server &
##會開啟9100端口。
##切換到普通用戶啟動elasticsearch
[root@elkserver elasticsearch-head]# chown -R elastic:elastic /usr/local/elasticsearch/
[root@elkserver elasticsearch-head]# su - elastic
Last login: Sun Jun 10 13:15:09 CST 2018 on pts/0
[elastic@elkserver ~]$ nohup /usr/local/elasticsearch/bin/elasticsearch &
[1] 2339
[elastic@elkserver ~]$ nohup: ignoring input and appending output to ‘nohup.out’
##啟動成功是會開啟9200,9300兩個端口的。
##在瀏覽器打開可以利用head插件查看elasticsearch的集群及索引情況
![](https://s1.51cto.com/images/blog/201806/10/2ea5998c2fd589e6a539a5afe1b6f598.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

安裝Logstash
Logstash也是需要jdk環境,所以如果是在不同機器上部署的,需要安裝jdk環境,版本可以選擇和ES一樣的。

[root@elkserver src]# tar -xf logstash-5.6.3.tar.gz 
[root@elkserver src]# mv logstash-5.6.3 /usr/local/logstash
##創建日志處理文件的存放目錄
mkdir /logstash
cd /logstash
##接下來是重點,也是ELK的難點吧,就是將日志進行分析,使用正則匹配過濾日志中想要的內容。
120.79.189.51 - - [10/Jun/2018:12:58:12 +0800] "POST /wp-cron.php?doing_wp_cron=1528606692.3628709316253662109375 HTTP/1.1" 499 0 "-" "WordPress/4.8; http://120.79.189.51"這是日志中的一行,logstash的正則匹配默認是匹配一行,以回車符作為分隔符。
當然如果日志是json格式的那么就沒有需要處理直接輸出即可。
[root@elkserver logstash]# cat input_flter_output.conf 
input {file {path => "/logstash/test.log"type => "test.log"start_position => "beginning"}
}
filter {grok {match => {"message" => "(?<ip_addr>\d+?\.\d+?\.\d+?\.\d+?)\s-\s-\s\[(?<log_date>\d+?/\w+?/\d+?):(?<log_time>\d+?:\d+?:\d+?)\s+"}}}
output {stdout {codec => rubydebug}
}
這是logstash的日志分析文件,總共分為三個大部分,input、flter、output,其中input是輸入日志,這里選擇的是file文件,path是文件的路徑,type是文件的類型,這個可以自定義,主要用來區分每個日志,start_position是設定為beginning是指從文件的開頭開始讀取。
flter是處理日志的部分,使用grok這個強大的組件進行信息過濾,對于日志的正則匹配最總會以json的格式輸出,所以正則匹配的格式是(?<字段名>正則表達式過濾將要匹配的內容)在每個括號內創建過濾的內容,將不需要的內容放在括號外,可以一直做匹配知道日志結束,這里我只是簡單匹配日志前面的ip地址和日期時間。
針對正則匹配字段詳細說明:
正則匹配字段通過“(?<字段名>正則表達式)”來定義,我們看到“(?<ip_addr>\d+?\.\d+?\.\d+?\.\d+?”匹配了日志中的IP地址,然后將不需要的內容放在括號外面匹配,接著是日期和時間,使用同樣的方式,然后不需要的內容放在外面因為這里我只匹配了前面的一點內容,如果有需要提取,可以一直匹配,知道這一行結束,logstash默認只會匹配日志以行作為分割,下一行又是新的一次匹配了。output是處理輸出部分,這里我只是簡單輸出到終端,先實驗正則匹配沒問題后,將輸出指向elasticsearch。
##這里先看看終端的輸出內容,也就是經過logstash過濾后的日志
![](https://s1.51cto.com/images/blog/201806/10/d911c12532dffb112e5090eaafa08aa9.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
接下來將日志輸出到elasticsearch,修改output里面的內容即可。
output {elasticsearch {              ##指定輸出到ESaction => "index"      ##建立索引hosts => "192.168.40.15:9200"       ##ES地址端口index => "test_log-%{+yyyy.MM.dd}"    ##索引的名稱}stdout {codec => rubydebug}
}
然后再執行一次
/usr/local/logstash/bin/logstash -f input_flter_output.conf

安裝kibana

[root@elkserver src]# rpm -ivh kibana-5.6.3-x86_64.rpmvim /etc/kibana/kibana.yml
server.host: "192.168.40.15"   ##指定本地server地址
elasticsearch.url: "http://192.168.40.15:9200"     ##指定elasticsearch對外服務的url

接下來就是直接在瀏覽器打開kibana的web界面,然后建立索引庫,索引是只想elastic的,在logstash日志分析文件里面有建立了一個索引,索引的名稱是test_log-${日期}這樣的形式。
訪問kibana:http://192.168.40.15:5601
簡單安裝ELK分析日志及使用心得
輸入相應的索引,然后建立索引庫,然后就可以制作各種各樣的圖形分析日志,kibana提供了很多中圖形,根據需要選擇分析。
簡單安裝ELK分析日志及使用心得
簡單安裝ELK分析日志及使用心得
記得ELK是實時的日志分析,所以kibana的web界面右上角的時間如果設置不好就看不到導入的日志了。

轉載于:https://blog.51cto.com/lsfandlinux/2127235

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/451471.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/451471.shtml
英文地址,請注明出處:http://en.pswp.cn/news/451471.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

寄生式創業更容易成功

上次參加站長大會見識了不少創業團隊和個人站長&#xff0c;他們中許多人都曾有過或正在過著苦逼的日子&#xff0c;不過我見到更多的還是他們風光的一面&#xff0c;在這次大會我見到了很多成功的創業團隊&#xff0c;例如專門做微博營銷的團隊、依附于QQ空間的團隊、專做騰訊…

JS單引號嵌套的問題,怎么改才能對呢!

JS單引號嵌套的問題&#xff0c;怎么改才能對呢&#xff01; https://zhidao.baidu.com/question/416584343.html document.getElementById(celbid).innerHTML<inputname""type"text"οnblur"celchangeb(celaid,celbid);">;這段代碼是JS顯…

@RequestParam的作用

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 MVC另外一個特性是其提取和解析請求參數的能力。讓我們繼續重構上面的方法&#xff0c;并在其中添加RequestParam注解&#xff1a; Requ…

前端入門教程(七)CSS屬性設置

寬和高 width屬性可以為元素設置寬度。 height屬性可以為元素設置高度。 塊級標簽才能設置寬度&#xff0c;內聯標簽的寬度由內容來決定。 字體屬性 文字字體 font-family可以把多個字體名稱作為一個“回退”系統來保存。如果瀏覽器不支持第一個字體&#xff0c;則會嘗試下一個…

java 深入了解DTO及如何使用DTO

這篇文章主要來談論一下DTO使用的場合及其帶來的好處。首先要理解DTO是什么&#xff1f; DTO就是數據傳輸對象(Data Transfer Object)的縮寫。DTO模式&#xff0c;是指將數據封裝成普通的JavaBeans&#xff0c;在J2EE多個層次之間傳輸。 DTO類似信使&#xff0c;是同步系統中…

圖解CPU發展史

隨著科學技術和人們對物質水平要求的不斷提高&#xff0c;CPU作為電腦的核心組件&#xff0c;也發生了翻天覆地的變化&#xff0c;從1971年只有2300顆晶體管的Intel 4004微處理器到現在的以億為單位的Intel i7處理器&#xff0c;科技發展的步伐從未停止&#xff0c;隨著對原有技…

1031 查驗身份證

題目鏈接&#xff1a;https://pintia.cn/problem-sets/994805260223102976/problems/994805290334011392 題解&#xff1a; 1 #include <iostream>2 #include<cstdio>3 #include<string>4 using namespace std;5 6 int main() {7 int weigth[] { 7,9,10…

漫談程序員系列:一張圖道盡程序員的出路

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 《推背圖》相傳由唐太宗時期的司天監李淳風和袁天罡合著&#xff08;此兩人其實是超級武學高手&#xff0c;參見小椴的《開唐》&#xf…

使用@Order調整配置類加載順序

4.1 Order Spring 4.2 利用Order控制配置類的加載順序 4.2 演示 兩個演示bean package com.wisely.spring4_2.order;public class Demo1Service {}package com.wisely.spring4_2.order;public class Demo2Service {}兩個配置類,注意Order配置加載的順序 package com.wisely.…

[php] 高級教程

include 和 require 語句用于在執行流中插入寫在其他文件中的有用的代碼。 include 和 require 除了處理錯誤的方式不同之外&#xff0c;在其他方面都是相同的&#xff1a; require 生成一個致命錯誤&#xff08;E_COMPILE_ERROR&#xff09;&#xff0c;在錯誤發生后腳本會停止…

常見電腦字符編碼總結

一 、背景知識1、計算機中所有的數據都用01串來表示&#xff0c;至于一串01到底代表什么是由軟件來設定的。比如&#xff1a;01111101111101010111110111110101 可以理解為一條指令&#xff0c;也可以理解為4個字節的char字符&#xff0c;具體是什么要看這個數據是在代碼段還…

jsp+easyui+DataGrid 例子

轉自:https://blog.csdn.net/l3922768721/article/details/51597977 導入js和css <% page language"java" contentType"text/html; charsetUTF-8" pageEncoding"UTF-8"%> <% taglib uri"http://java.sun.com/jsp/jstl/core"…

@Pointcut的用法

Pointcut 是指那些方法需要被執行"AOP",是由"Pointcut Expression"來描述的.Pointcut可以有下列方式來定義或者通過&& || 和!的方式進行組合. args()args()execution()this()target()target()within()within()annotation其中execution 是用的最多的…

restful風格使用小例

1. 頁面傳參數寫法&#xff1a; http://write.blog.csdn.net/ 參數1 / 參數2 / 參數N restful風格是把參數 直接拼在 / 后面&#xff0c;而不是URL地址重寫方式。 2. 后臺接收用法&#xff1a;

Mac 10.12徹底關閉Dashboard

1、打開【系統偏好設置】。 2、點擊進入【Mission Control】。 3、中間有一項【Dashboard】&#xff0c;點擊它右邊的下拉菜單&#xff0c;選擇【關閉】&#xff0c;即可。 轉載于:https://www.cnblogs.com/EasonJim/p/9547489.html

BHO插件操作IE瀏覽器,js調用C#方法

BHO是IE瀏覽器的擴展程序&#xff0c;全名Browser Helper Object&#xff0c;文件格式為DLL文件。可對IE瀏覽器的界面和訪問內容進行修改操作。BHO只適用于IE瀏覽器&#xff0c;對其他任何瀏覽器都沒有作用。&#xff08;引用自百度百科>_<&#xff09; 本示例實現的功能…

多線程讀取文件File

Java代碼 import java.io.*; class DownThread extends Thread { //定義字節數組&#xff08;取水的竹筒&#xff09;的長度 private final int BUFF_LEN 32; //定義讀取的起始點 private long start; //定義讀取的結束點 private long end; …

LeetCode-----翻轉二叉樹

題目——翻轉二叉樹 翻轉一棵二叉樹。 示例&#xff1a; 輸入&#xff1a; 4/ \2 7/ \ / \ 1 3 6 9 輸出&#xff1a; 4/ \7 2/ \ / \ 9 6 3 1 備注: 這個問題是受到 Max Howell 的 原問題 啟發的 &#xff1a; 谷歌&#xff1a;我們90&#xff05;的工…

JAVA中字符串比較equals()和equalsIgnoreCase()的區別

1、使用equals( )方法比較兩個字符串是否相等。它具有如下的一般形式&#xff1a; boolean equals(Object str) 這里str是一個用來與調用字符串&#xff08;String&#xff09;對象做比較的字符串&#xff08;String&#xff09;對象。如果兩個字符串具有相同的字符和長度&…

Spring Boot 是什么,有什么用。

見&#xff1a;http://www.csdn.net/article/a/2016-05-12/15838098 maven/Java/web/bootstrap/dataTable/app開發QQ群&#xff1a;566862629。希望更多人一起幫助我學習。 首先&#xff0c;我們來看一下spring boot是什么&#xff0c;它幫助我們解決了哪些問題&#xff1a; …