日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

简单安装ELK分析日志及使用心得

發布時間:2023/12/19 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 简单安装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

輸入相應的索引,然后建立索引庫,然后就可以制作各種各樣的圖形分析日志,kibana提供了很多中圖形,根據需要選擇分析。


記得ELK是實時的日志分析,所以kibana的web界面右上角的時間如果設置不好就看不到導入的日志了。

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

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的简单安装ELK分析日志及使用心得的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。