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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

elk 第二篇 , 为elk加入redis, 替换下beats(个人感觉不错2)

發(fā)布時(shí)間:2024/9/20 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 elk 第二篇 , 为elk加入redis, 替换下beats(个人感觉不错2) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

為elk加入redis, 替換下beats

這是elk的第二篇文章

  • 編譯安裝日志分析平臺(tái) elk + filebeat
elk支持多種輸入輸出方法 ,本文章主要描述通過redis做隊(duì)列中間件 ,緩解elk平臺(tái)的壓力

使用場景

數(shù)據(jù)不可控時(shí) ,例如日志不是文件 , 而是由TCP直接推送到elk的 ,filebeats就無法使用了

當(dāng)然redis是可以和beats一起使用的, 例如beats讀取文件解析后輸出到redis ,再由elk正常流程處理, 具體的這里不做討論

優(yōu)勢(shì)

在通過logstash之前走redis , 分散壓力不至于logstash負(fù)載太高 ,處理緩慢甚至宕機(jī)

流程圖

elk

請(qǐng)看第一篇文章 :?編譯安裝日志分析平臺(tái) elk + filebeat

redis

什么是redis

Redis是一個(gè)支持多種數(shù)據(jù)結(jié)構(gòu)的開源(BSD許可)內(nèi)存型數(shù)據(jù)庫 , 除此之外它甚至可以被用作持久化數(shù)據(jù)庫,緩存器和消息隊(duì)列?查看更多

如何安裝redis

極其簡單 ,使用yum或下載源碼make即可 , 不再贅述

  • yum安裝
yum -y install redis
  • 源碼安裝
cd /opt wget http://download.redis.io/releases/redis-4.0.11.tar.gz || curl -O http://download.redis.io/releases/redis-4.0.11.tar.gztar xzvf redis-4.0.11.tar.gz && \cd redis-4.0.11 && \ yum -y install gcc && \make

配置redis

可以不配置 ,但是筆者需要從外部鏈接redis ,所以把監(jiān)聽地址修改為局域網(wǎng)IP?
大家按需執(zhí)行即可

配置文件位置:?
yum :?/etc/redis.conf?
源碼 :?/opt/redis-4.0.11/redis.conf

# 修改監(jiān)聽地址 sed -i 's/^bind 127.0.0.1/bind 192.168.1.147/' /opt/redis-4.0.11/redis.conf # 修改監(jiān)聽端口 sed -i 's/^port 6379/port 6379/' /opt/redis-4.0.11/redis.conf

啟動(dòng)redis

這里也分兩種?
yum安裝啟動(dòng)方法

systemctl redis start

源碼安裝啟動(dòng)方法

/opt/redis-4.0.11/src/redis-server /opt/redis-4.0.11/redis.conf &

啟動(dòng)完成就像這樣 , 然后回車即可

配置elk

和第一篇中為elk加入beats一樣 , 只需要編輯logstash的配置文件就可以了

修改logstash的輸入輸出配置

為了避免你已經(jīng)手動(dòng)修改了配置文件 , 我們不再使用sed為改為手動(dòng)修改配置文件

使用你喜愛的編輯器打開 /opt/logstash-6.3.2/config/logstash-io.conf

在input代碼塊中增加如下內(nèi)容并保存

redis {key => "redis_log"data_type => "list"type => "redis"host => "192.168.1.147"port => "6379"threads => 12# 如果存進(jìn)redis的數(shù)據(jù)是json才需要這一行codec => "json" }

在input代碼塊的同級(jí)增加如下內(nèi)容并保存

這里是處理nginx日志的過濾器 , 稍候會(huì)講里面的grok語法 filter {if [type] == "redis" {grok {match => { "message" => "%{IPORHOST:remote_ip} - - \[%{HTTPDATE:datetime}\] \"(:?%{WORD:request_method} %{NOTSPACE:uri}) (:?HTTP/%{NUMBER:http_version})\" (:?%{NUMBER:http_code}) (:?%{NUMBER:contents_length}) \"(:?%{NOTSPACE:domail})\" \"(:?%{DATA:ua}) \((:?%{DATA:os})%{NUMBER:os_version}\) %{DATA}\) %{DATA:browser}/%{DATA:browser_version} (:?%{DATA:safari_version})\"" }}geoip {source => "client_ip"}date {match => [ "timestamp" , "dd/MMM/YYYY:HH:mm:ss Z" ]}} }

修改output代碼為如下這樣

這為了按類型劃分索引 output {if [type] == "redis" {elasticsearch {hosts => ["192.168.1.147:9200"]manage_template => falseindex => "redis-%{+YYYY.MM.dd}"}} else if [type] == "beats" {elasticsearch {hosts => ["192.168.1.147:9200"]manage_template => falseindex => "beats-%{+YYYY.MM.dd}"}} else {elasticsearch {hosts => ["192.168.1.147:9200"]manage_template => falseindex => "unkown-%{+YYYY.MM.dd}"}} }

最終配置文件大概會(huì)是這個(gè)樣子

input {beats {port => 5044type => "beats"}redis {key => "redis_log"data_type => "list"type => "redis"host => "192.168.1.147"port => "6379"threads => 12codec => "json"} }filter {if [type] == "redis" {grok {match => { "message" => "%{IPORHOST:remote_ip} - - \[%{HTTPDATE:datetime}\] \"(:?%{WORD:request_method} %{NOTSPACE:uri}) (:?HTTP/%{NUMBER:http_version})\" (:?%{NUMBER:http_code}) (:?%{NUMBER:contents_length}) \"(:?%{NOTSPACE:domail})\" \"(:?%{DATA:ua}) \((:?%{DATA:os})%{NUMBER:os_version}\) %{DATA}\) %{DATA:browser}/%{DATA:browser_version} (:?%{DATA:safari_version})\"" }}geoip {source => "client_ip"}date {match => [ "timestamp" , "dd/MMM/YYYY:HH:mm:ss Z" ]}} }output {if [type] == "redis" {elasticsearch {hosts => ["192.168.1.147:9200"]manage_template => falseindex => "redis-%{+YYYY.MM.dd}"}} else if [type] == "beats" {elasticsearch {hosts => ["192.168.1.147:9200"]manage_template => falseindex => "beats-%{+YYYY.MM.dd}"}} else {elasticsearch {hosts => ["192.168.1.147:9200"]manage_template => falseindex => "unkown-%{+YYYY.MM.dd}"}} }

然后和第一篇一樣 , 使用screen啟動(dòng)elk

screen -S elk /opt/elasticsearch-6.3.2/bin/elasticsearch & \ /opt/logstash-6.3.2/bin/logstash -f /opt/logstash-6.3.2/config/logstash-io.conf & \ /opt/kibana-6.3.2-linux-x86_64/bin/kibana &# 本次不切換回去了 # Ctrl A + c

如果配置沒有問題的話, 最后會(huì)輸出12行?[logstash.inputs.redis ] Registering Redis...?這樣的句子

會(huì)輸出12行因?yàn)槲覀冊(cè)趇nput部分指定了threads為12

然后我們?cè)倏匆豢词煜さ膋ibana , 并且做一些事情

如果啟動(dòng)完成但是看不到kibana ,就回到root關(guān)閉防火墻?systemctl stop firewalld

測(cè)試elk + redis

任何語言的redis客戶端都可以向redis推送數(shù)據(jù)

測(cè)試邏輯

鏈接到redis后, 向redis_log這個(gè)list結(jié)構(gòu)循環(huán)推送下面的日志內(nèi)容 127.0.0.1 - - [21/Aug/2018:06:00:32 +0800] "GET?/api/index/game-type HTTP/1.0" 200 269 "http://yooooooooo.com/"?"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36"

以php的predis客戶端為例向redis推送數(shù)據(jù)

predis下載地址 <?php use Predis\Client; require __DIR__ . '/src/Autoloader.php';Predis\Autoloader::register();// 使用predis來鏈接redis $client = new Client('tcp://192.168.1.147:6379'); // 開始一個(gè)死循環(huán) while (true) {// 每次向redis的redis_log這個(gè)list推送10000條數(shù)據(jù)foreach (range(0 ,10000) as $value) {$client->lpush('redis_log' ,'127.0.0.1 - - [21/Aug/2018:06:00:32 +0800] "GET /api/index/game-type HTTP/1.0" 200 269 "http://yooooooooo.com/" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36"');echo "$value \n";}// 推送完成休息一秒 sleep(1); }

運(yùn)行這個(gè)php例子

php ./pushToRedis.php

假設(shè)鏈接沒有問題 , 你會(huì)在elk那個(gè)終端里看到輸出 , 我這里因?yàn)榕渲昧薺son卻輸入的字符串 , 才會(huì)輸出的全是錯(cuò)誤

在kibana建立redis索引

來到 management 部分

一路下一步 ,創(chuàng)建完成

回到首頁(一定到確保左上角是redis... 如果不是就點(diǎn)名字旁邊的按鈕來切換到redis) ,然后打開自動(dòng)刷新 , 數(shù)據(jù)就會(huì)源源不斷的渲染到頁面上了

并且我們發(fā)現(xiàn) , 左側(cè)是篩選條件和右側(cè)的數(shù)據(jù)都多了很多字段 , 這就是修改配置文件時(shí) ,加入的filter段的功勞

大功告成

來源:https://segmentfault.com/a/1190000016145885

總結(jié)

以上是生活随笔為你收集整理的elk 第二篇 , 为elk加入redis, 替换下beats(个人感觉不错2)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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