日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

ELK 日志管理系统,再次尝试记录

發(fā)布時(shí)間:2025/4/16 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ELK 日志管理系统,再次尝试记录 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.


簡(jiǎn)介:

第二次嘗試 ELK 記錄...

工作流程:

1、客戶(hù)端的 Logstash 將日志信息采集到之后傳輸給 Redis 做消息隊(duì)列
2、然后服務(wù)端的 Logstash 將日志從 Redis 中取出之后根據(jù)日志規(guī)則將數(shù)據(jù)序列化( 方便查詢(xún) )完成后存入 Elasticsearch 文本數(shù)據(jù)庫(kù)中
3、最后通過(guò) Kibana 展示數(shù)據(jù),可以根據(jù)序列化好的數(shù)據(jù)做查詢(xún)過(guò)濾、數(shù)據(jù)聚合等操作

環(huán)境描述:

192.168.214.20 服務(wù)端( Logstash 、Elasticsearch 、Redis 、Nginx 、Kibana4 )
192.168.214.30 客戶(hù)端( Logstash )

一、客戶(hù)端操作

shell > yum -y install java

1、安裝 Logstash

shell > cd /usr/local/src ; wget https://download.elastic.co/logstash/logstash/logstash-1.5.2.tar.gz shell > tar zxf logstash-1.5.2.tar.gz shell > mv logstash-1.5.2 /usr/local/logstash

2、編寫(xiě)配置文件

shell > vim /usr/local/logstash/logstash.conf# Logstash.confinput {file {type => "apache_access"path => ["/tmp/access.log"]start_position => "beginning"} }output { # stdout { # codec => rubydebug # }redis {host => "192.168.214.20"port => 6379data_type => "list"key => "logstash-redis"} }

## input 段定義從哪里采集日志,beginning 代表服務(wù)啟動(dòng)時(shí)從日志文件頭部開(kāi)始導(dǎo)入日志,而不是監(jiān)聽(tīng)新生成的日志( 當(dāng)然導(dǎo)入完成也會(huì)變成監(jiān)聽(tīng)新生成的日志 )
## output 段定義將日志數(shù)據(jù)輸送到指定的 Redis 服務(wù)中,類(lèi)型為 list ,key 為 logstash-redis
## stdout 段是為了簡(jiǎn)單驗(yàn)證有沒(méi)有采集到日志數(shù)據(jù)( 效果:會(huì)在終端輸出日志信息,rubydebug 為輸出格式,可以不設(shè)置 codec 看看有什么區(qū)別 )

3、檢查配置文件

shell > /usr/local/logstash/bin/logstash -f /usr/local/logstash/logstash.conf -t Configuration OK

## 啟動(dòng)前先檢查一下配置文件是否正確
## OK ,客戶(hù)端配置完畢,暫時(shí)不啟動(dòng)( 因?yàn)榉?wù)端的 Redis 服務(wù)還沒(méi)有,現(xiàn)在啟動(dòng)會(huì)報(bào)錯(cuò):傳輸失敗 )

二、服務(wù)端操作

1、安裝 Elasticsearch

shell > cd /usr/local/src ; wget https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.6.0.tar.gz shell > tar zxf elasticsearch-1.6.0.tar.gz shell > mv elasticsearch-1.6.0 /usr/local/elasticesearch

2、配置 Elasticsearch

shell > vim /usr/local/elasticesearch/config/elasticsearch.ymlcluster.name: my_es node.name: "Master"

## cluster.name 集群名稱(chēng),局域網(wǎng)內(nèi)只要這個(gè)名稱(chēng)相同,那么就可以自動(dòng)組成一個(gè)集群
## nod.name 節(jié)點(diǎn)名稱(chēng)
## 這些都是可以不用修改的,采用默認(rèn)參數(shù)即可( 要知道,Elasticsearch 是一個(gè)數(shù)據(jù)庫(kù),所以功能遠(yuǎn)遠(yuǎn)不止這些 )

shell > vim /usr/local/elasticesearch/bin/elasticsearch.in.shif [ "x$ES_MIN_MEM" = "x" ]; thenES_MIN_MEM=64m fi if [ "x$ES_MAX_MEM" = "x" ]; thenES_MAX_MEM=256m

## Elasticsearch 可用的最大、最小內(nèi)存數(shù)( 根據(jù)實(shí)際情況來(lái)吧 )

3、啟動(dòng) Elasticsearch

shell > /usr/local/elasticesearch/bin/elasticsearch -d shell > netstat -anpt | grep 9200 tcp 0 0 :::9200 :::* LISTEN 1263/java

## -d 后臺(tái)運(yùn)行,默認(rèn)監(jiān)聽(tīng) TCP 9200 端口

shell > curl -X GET 127.0.0.1:9200 {"status" : 200,"name" : "Master","cluster_name" : "my_es","version" : {"number" : "1.6.0","build_hash" : "cdd3ac4dde4f69524ec0a14de3828cb95bbb86d0","build_timestamp" : "2015-06-09T13:36:34Z","build_snapshot" : false,"lucene_version" : "4.10.4"},"tagline" : "You Know, for Search" }

## 這是一些基本信息

shell > curl -X GET 127.0.0.1:9200/_cat =^.^= /_cat/allocation /_cat/shards /_cat/shards/{index} /_cat/master /_cat/nodes /_cat/indices /_cat/indices/{index} /_cat/segments /_cat/segments/{index} /_cat/count /_cat/count/{index} /_cat/recovery /_cat/recovery/{index} /_cat/health /_cat/pending_tasks /_cat/aliases /_cat/aliases/{alias} /_cat/thread_pool /_cat/plugins /_cat/fielddata /_cat/fielddata/{fields}

## 怎么說(shuō)呢,所支持的一些指令吧

shell > curl -X GET 127.0.0.1:9200/_cat/master 6LEg6Ap4Qq-9HYUbEoy9Bw localhost.localdomain 127.0.0.1 Master

## 例如查看 master 信息

shell > curl -X GET 127.0.0.1:9200/_cat/master?v id host ip node 6LEg6Ap4Qq-9HYUbEoy9Bw localhost.localdomain 127.0.0.1 Master

## 結(jié)尾加了 ?v 可以顯示各字段意思

4、Elasticsearch 安裝插件

shell > /usr/local/elasticesearch/bin/plugin -i mobz/elasticsearch-head

## 可以使用 plugin 命令跟 -i 參數(shù),自動(dòng)下載并安裝插件
## 如果因網(wǎng)絡(luò)問(wèn)題不能這樣安裝時(shí),可以將插件包手動(dòng)下載到機(jī)器上,使用 ./plugin -u file:///usr/local/src/插件包.zip -i head 這樣安裝

shell > /usr/local/elasticesearch/bin/plugin -l Installed plugins:- head

## 使用 -l 可以列出已經(jīng)安裝過(guò)的插件
## 訪(fǎng)問(wèn) URL : http://192.168.214.20:9200/_plugin/head 查看插件頁(yè)面,記得防火墻開(kāi)啟 TCP 9200 端口

shell > /usr/local/elasticesearch/bin/plugin -i lukas-vlcek/bigdesk

## 這是一個(gè)用來(lái)監(jiān)控集群狀態(tài)的插件,如: CPU 、內(nèi)存 、索引數(shù)據(jù)、搜索情況、HTTP 連接數(shù)等
## 手動(dòng)下載時(shí),例如第一個(gè)插件的地址就是 https://github.com/mobz/elasticsearch-head

5、Redis

shell > cd /usr/local/src ; wget http://download.redis.io/releases/redis-3.0.2.tar.gz shell > tar zxf redis-3.0.2.tar.gz shell > cd redis-3.0.2 ; make ; make install shell > mkdir /usr/local/redis shell > cp /usr/local/src/redis-3.0.2/redis.conf /usr/local/redis/ shell > sed -i '/daemonize/s/no/yes/' /usr/local/redis/redis.conf shell > sed -i 's#dir ./#dir /usr/local/redis#' /usr/local/redis/redis.conf shell > redis-server /usr/local/redis/redis.conf shell > redis-cli ping PONG

## Redis 已經(jīng)啟動(dòng)成功,記得防火墻開(kāi)放 TCP 6379 端口,不然客戶(hù)端收集到的日志信息傳輸不過(guò)來(lái)

6、先來(lái)個(gè)小測(cè)試

1> 客戶(hù)端啟動(dòng) Logstash

shell > /usr/local/logstash/bin/logstash -f /usr/local/logstash/logstash.conf &

2> 客戶(hù)端導(dǎo)入日志( 找線(xiàn)上的日志導(dǎo)入到本地指定的日志文件中 )

3> 服務(wù)端查看 Redis 能否接收到數(shù)據(jù)

shell > redis-cli 127.0.0.1:6379> keys * 1) "logstash-redis"

## 可以看到有一個(gè)名為 logstash-redis 的 key( 正是客戶(hù)端定義的 key )

127.0.0.1:6379> lrange logstash-redis 0 -11) "{\"message\":\"121.42.0.30 - - [17/Jul/2015:18:01:21 +0800] \\\"POST /include/fckeditor/editor/filemanager/browser/default/connectors/asp/connector.asp?Command=FileUpload&Type=File&CurrentFolder=%2F HTTP/1.1\\\" 404 279\",\"@version\":\"1\",\"@timestamp\":\"2015-07-20T15:31:46.914Z\",\"host\":\"localhost.localdomain\",\"path\":\"/tmp/access.log\",\"type\":\"apache_access\"}"2) "{\"message\":\"121.42.0.30 - - [17/Jul/2015:18:01:23 +0800] \\\"POST /plugins/fckeditor/editor/filemanager/browser/default/connectors/asp/connector.asp?Command=FileUpload&Type=File&CurrentFolder=%2F HTTP/1.1\\\" 404 279\",\"@version\":\"1\",\"@timestamp\":\"2015-07-20T15:31:46.941Z\",\"host\":\"localhost.localdomain\",\"path\":\"/tmp/access.log\",\"type\":\"apache_access\"}"

## 使用指令查看這個(gè) key 中的數(shù)據(jù),0 -1 表示從頭到尾全部查看,最終發(fā)現(xiàn)有 89 條數(shù)據(jù)
## 而此時(shí)在客戶(hù)端上執(zhí)行 wc -l < /tmp/access.log 發(fā)現(xiàn)得到的結(jié)果也是 89 條,說(shuō)明數(shù)據(jù)傳輸沒(méi)有問(wèn)題

7、Logstash

## 安裝方式跟客戶(hù)端一樣,只是配置文件有所不同而已

shell > vim /usr/local/logstash/logstash.conf# Logstash.confinput {redis {host => "127.0.0.1"port => 6379data_type => "list"key => "logstash-redis"type => "redis-input"} }filter {grok {match => { "message" => "%{IPORHOST:client_ip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] \"(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:http_version})?|%{DATA:raw_request})\" %{NUMBER:response} (?:%{NUMBER:bytes}|-)" }} }output {stdout {codec => rubydebug }# elasticsearch { # host => "127.0.0.1" # port => 9200 # protocol => 'http' # } }

## input 段定義從 Redis 中取數(shù)據(jù)
## output 段定義將序列化好的數(shù)據(jù)寫(xiě)入本機(jī)的 Elasticsearch 中( 上面注釋掉是為了查看規(guī)則是否匹配成功 )
## filter 段定義將取出的數(shù)據(jù)序列化( 根據(jù)日志格式編寫(xiě)匹配規(guī)則 )

141.212.122.34 - - [18/Jul/2015:14:54:51 +0800] "GET /x HTTP/1.1" 400 226

## 這是我的日志格式,非常簡(jiǎn)單,匹配規(guī)則每個(gè) %{} 對(duì)應(yīng)一個(gè)字段,要完全匹配才會(huì)出結(jié)果,否則匹配失敗
## 編寫(xiě)規(guī)則時(shí)可以根據(jù)這里的定義自由組合,地址:https://github.com/logstash-plugins/logstash-patterns-core/blob/master/patterns/grok-patterns
## 上面的一長(zhǎng)串其實(shí)直接定義為 match => { "%{COMMONAPACHELOG}" } 即可,單獨(dú)寫(xiě)出來(lái)是為了記錄自由組合時(shí)格式是怎么樣的

shell > /usr/local/logstash/bin/logstash -f /usr/local/logstash/logstash.conf -t Configuration OK shell > /usr/local/logstash/bin/logstash -f /usr/local/logstash/logstash.conf &

## 配置文件沒(méi)有問(wèn)題,那么就啟動(dòng)

{"message" => "121.42.0.30 - - [17/Jul/2015:18:02:47 +0800] \"GET /phpMyAdmin/scripts/setup.php HTTP/1.1\" 404 226","@version" => "1","@timestamp" => "2015-07-20T15:31:47.963Z","host" => "localhost.localdomain","path" => "/tmp/access.log","type" => "apache_access","client_ip" => "121.42.0.30","ident" => "-","auth" => "-","timestamp" => "17/Jul/2015:18:02:47 +0800","verb" => "GET","request" => "/phpMyAdmin/scripts/setup.php","http_version" => "1.1","response" => "404","bytes" => "226" }

## 截取一段輸出信息來(lái)看,日志中的各項(xiàng)指標(biāo)都匹配到了,說(shuō)明規(guī)則沒(méi)有問(wèn)題
## 那么接下來(lái)就可以將 stdout 段注釋掉,將 Elasticsearch 段注釋取消,將結(jié)果寫(xiě)到 Elasticsearch 中了( 修改配置文件要重啟服務(wù),這個(gè)不用多說(shuō) )

shell > curl -X GET 127.0.0.1:9200/_cat/indices

## 重啟完服務(wù)查看 Elasticsearch 中有沒(méi)有索引時(shí),發(fā)現(xiàn)是空的!
## 這是正常現(xiàn)象,如果你現(xiàn)在去看 Redis 時(shí),就會(huì)發(fā)現(xiàn)也是空值,因?yàn)?Redis 作為消息隊(duì)列,Logstash 讀取完( 拿走 ) Redis 中的數(shù)據(jù),Redis 自然就成了空值。
## 再次導(dǎo)入一些日志信息測(cè)試

shell > curl -X GET 127.0.0.1:9200/_cat/indices yellow open logstash-2015.07.20 5 1 31 0 49.4kb 49.4kb

## 可以看到 Elasticsearch 已經(jīng)生成了索引( 有數(shù)據(jù)了 )

shell > curl -X GET 127.0.0.1:9200/_cat/shards?v index shard prirep state docs store ip node logstash-2015.07.20 2 p STARTED 7 10kb 127.0.0.1 Master logstash-2015.07.20 2 r UNASSIGNED logstash-2015.07.20 0 p STARTED 6 10.2kb 127.0.0.1 Master logstash-2015.07.20 0 r UNASSIGNED logstash-2015.07.20 3 p STARTED 6 9.6kb 127.0.0.1 Master logstash-2015.07.20 3 r UNASSIGNED logstash-2015.07.20 1 p STARTED 7 10.1kb 127.0.0.1 Master logstash-2015.07.20 1 r UNASSIGNED logstash-2015.07.20 4 p STARTED 5 9.3kb 127.0.0.1 Master logstash-2015.07.20 4 r UNASSIGNED

## 這樣再來(lái)看看,更清楚了

8、Kibana

shell > cd /usr/local/src ; wget https://download.elastic.co/kibana/kibana/kibana-4.1.1-linux-x64.tar.gz shell > tar zxf kibana-4.1.1-linux-x64.tar.gz shell > mv kibana-4.1.1-linux-x64 /usr/local/kibana shell > vim /usr/local/kibana/config/kibana.ymlelasticsearch_url: "http://127.0.0.1:9200"

## 這里也沒(méi)什么需要改的,確認(rèn)一下從哪讀取數(shù)據(jù)

shell > /usr/local/kibana/bin/kibana > /usr/local/kibana/kibana.log & netstat -anpt | grep 5601 tcp 0 0 0.0.0.0:5601 0.0.0.0:* LISTEN 1881/node

## 啟動(dòng)服務(wù),默認(rèn)監(jiān)聽(tīng) TCP 5601 端口,防火墻怎么做不用說(shuō)了吧
## 訪(fǎng)問(wèn) URL : http://192.168.214.20:5601

> 第一次訪(fǎng)問(wèn)要求創(chuàng)建一個(gè)索引( 沒(méi)有導(dǎo)入日志是不能創(chuàng)建索引的 ),可以使用默認(rèn)的 logstash-* ,也可以使用事件時(shí)間來(lái)創(chuàng)建索引( 能用時(shí)間匹配的情況下 )
> 接下來(lái)就可以查看日志信息了,第一個(gè)界面簡(jiǎn)單展示,第二個(gè)界面可以創(chuàng)建圖表,第三個(gè)界面可以將創(chuàng)建好的多個(gè)圖表放在一起,第四個(gè)界面是配置頁(yè),創(chuàng)建索引就在這里

## 頭次瀏覽可能會(huì)提示搜索不到信息,在右上角選擇合適的時(shí)間區(qū)間應(yīng)該就可以了

轉(zhuǎn)載于:https://www.cnblogs.com/wangxiaoqiangs/p/5798565.html

總結(jié)

以上是生活随笔為你收集整理的ELK 日志管理系统,再次尝试记录的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。