ELK 5.1部署

ELK已經(jīng)升級(jí)到6了,希望使用6的同學(xué),可以查看Ken同學(xué)的這篇文章

參考:
ELK部署詳解
centos7虛擬機(jī)安裝elasticsearch5.0.x-安裝篇
logstash-best-practice-cn
官網(wǎng)

0 前言

本文主要是基于參考第一篇ELK部署詳解所寫窝剖。另起一篇的目的主要是ELK目前已更新到5.1错英,原文的一些地方需要改動(dòng)题翰;而是正如作者所言,ELK的部署文章非常少淌山,而更新到5.1的更是少,正是作者的無私奉獻(xiàn)顾瞻,自己才能很快完成絕大部分的部署泼疑。故也將自己的部署過程結(jié)合發(fā)布,盡量記錄成all in one荷荤,希望能夠幫助到以后的童鞋部署王浴。

服務(wù)器環(huán)境:

  • 主機(jī):2(elk1, elk2)
  • 系統(tǒng):CentOS7 Ubuntu 16.04
  • 配置:1c2g
  • 網(wǎng)絡(luò): 互通(elk1-192.168.204.133梅猿, elk2-192.168.204.129)
  • ELK版本:elasticsearch-5.1 kibana-5.1 logstash-5.1 logstash-forwarder-0.4.0 redis-3.2

1 安裝

1.1 java1.8安裝

注意java1.8是必須安裝的版本選擇正確的版本氓辣,CentOS7和Ubuntu16.04都是64位,如果是老版本的操作系統(tǒng)袱蚓,注意查下操作系統(tǒng)的位數(shù)钞啸,然后下載對(duì)應(yīng)的jdk。下載地址
0) 安裝前如果是centos的話喇潘,需要先刪掉對(duì)應(yīng)open-jdk体斩。
1) 對(duì)于Centos可以使用rpm下載進(jìn)行安裝。(提示:wget會(huì)很慢颖低,可以用下載工具或者去CSDN下載)
2)Ubuntu的話絮吵,沒有deb直接安裝,但使用tar安裝發(fā)現(xiàn)更簡(jiǎn)單:

  • 下載后忱屑,解壓蹬敲,比如jdk-8u111-linux-x64.tar.gz:
    tar -zvxf jdk-8u111-linux-x64.tar.gz
  • 移動(dòng)目錄,比如/usr/java(**如果不是root用戶莺戒,需使用sudo執(zhí)行伴嗡。同時(shí)所有的安裝最好不要直接使用root用戶 **):
    mv jdk1.8.0_111 /usr/java/
  • 修改/usr/java目錄權(quán)限(之后的elasticsearch和logstash會(huì)放在這個(gè)路徑下,原因后續(xù)說明)
    sudo chgrp -R YourUsername /usr/java/
    sudo chown -R YourUsername /usr/java
  • 配置環(huán)境變量:
    CentOS7(使用tar包安裝):比如使用bash从铲,vim ~/.bash_profile
    export JAVA_HOME=/usr/java/jdk1.8.0_111 export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
    Ubuntu16.04:vim ~/.profile
    export JAVA_HOME=/usr/java/jdk1.8.0_111 export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
    (修改完注意登出瘪校,或者使用source 配置文件生效)
  • 測(cè)試java版本:
    java -version
成功截圖

1.2 安裝elasticsearch

本次安裝是兩臺(tái),elk1作為主節(jié)點(diǎn),elk2為從節(jié)點(diǎn)阱扬。
如果是新手泣懊,建議下載TAR或者ZIP,然后mv/usr/java(原因是如果直接系統(tǒng)起麻惶,你發(fā)現(xiàn)啟動(dòng)了馍刮,但是好像不能訪問啊。用踩。渠退。我最開始拿的CentOS7安裝rpm,發(fā)現(xiàn)elasticsearch和logstash都不好使脐彩。而TAR啟動(dòng)的是bin下的可執(zhí)行文件碎乃,即使出現(xiàn)錯(cuò)誤,也會(huì)有一些提示信息惠奸;另外梅誓,這種方式,配置文件都在路徑下佛南,所以很方便修改配置梗掰;而在/etc下,很容易改錯(cuò)位置嗅回,也不易記住)
es下載地址
下載完依次:
1) 解壓及穗,并移至/usr/java/
unzip elasticsearch-5.1.1.zip
mv elasticsearch-5.1.1 /usr/java
2) 進(jìn)入/usr/java/elasticsearch-5.1.1,在config路徑下編輯elasticsearch.yml(配置是yml文件绵载,不是elasticsearch.conf):
主節(jié)點(diǎn)的配置:

node.name: elk-node-1
network.host: elk1
node.master: true
discovery.zen.ping.unicast.hosts: ["elk1", "elk2"]

(注意:node.name只是一個(gè)邏輯名稱埂陆,兩臺(tái)不一樣即可;如果也想像上面network.host是一個(gè)邏輯名字娃豹,請(qǐng)?jiān)趆osts文件進(jìn)行配置才能使用焚虱;否則,請(qǐng)老老實(shí)實(shí)寫本機(jī)IP)
從節(jié)點(diǎn)的配置:

node.name: elk-node-2
network.host: elk2
node.master: false
discovery.zen.ping.unicast.hosts: ["elk1", "elk2"]

(題外:我稍微看了下官方doc懂版,其實(shí)默認(rèn)node.master的true鹃栽,在es集群?jiǎn)?dòng)的時(shí)候,第一臺(tái)作為主節(jié)點(diǎn)躯畴,來進(jìn)行自動(dòng)管理民鼓。)
3)啟動(dòng)elasticsearch:
cd /usr/java/elasticsearch-5.1.1 ./bin/elasticsearch
4)如果不設(shè)置,第一次會(huì)報(bào)一些錯(cuò)誤私股,見參考[centos7虛擬機(jī)安裝elasticsearch5.0.x-安裝篇](呵呵摹察,RPM就不會(huì)這么直接了。所以到這里倡鲸,希望能理解為什么直接用tar或者zip直接安裝。還是講清楚場(chǎng)景黄娘,自己開發(fā)調(diào)試這么可以峭状,生產(chǎn)環(huán)境還是要做好系統(tǒng)啟動(dòng)的配置):

  • vm.max_map_count需要調(diào)大:
    臨時(shí)修改vm.max_map_count: sudo sysctl -w vm.max_map_count=262144
    永久:sudo 編輯 /etc/sysctl.conf克滴,增加vm.max_map_count=262144
  • 修改JVM內(nèi)存(默認(rèn)2g,我改為1g)优床,sudo vim /usr/java/elasticsearch/config/jvm.options
    -Xms1g -Xmx1g
  • 應(yīng)用打開文件數(shù)不夠大:vim /etc/security/limits.conf
    YourUsername hard nofile 65536 YourUsername soft nofile 65536
    重新按照3)啟動(dòng)elasticsearch
    如果啟動(dòng)發(fā)現(xiàn)正常劝赔,但是curl測(cè)試不通(默認(rèn)es端口是9200),可能是:
    ① 有可能network.host配置的是127.0.0.1胆敞,官方有解釋道這樣的話es只監(jiān)聽接收本地的9200端口着帽,如果只是單機(jī),可以修改為0.0.0.0移层,則可監(jiān)聽本地所有地址的請(qǐng)求仍翰。
    ② 如果是虛機(jī),而且是VirtualBox的話观话,注意開下防火墻予借,不然主機(jī)即使映射,也沒辦法聯(lián)通频蛔。
    5)檢測(cè)是否啟動(dòng)成功的方法
    ① 檢測(cè)是否可以訪問:curl -XGET 'elk1:9200/?pretty' 灵迫,成功返回:
{
  "name" : "elk-node-1",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "fU1cY9L2RGO_QHbDNj_Q3A",
  "version" : {
    "number" : "5.1.1",
    "build_hash" : "5395e21",
    "build_date" : "2016-12-06T12:36:15.409Z",
    "build_snapshot" : false,
    "lucene_version" : "6.3.0"
  },
  "tagline" : "You Know, for Search"
}

② 檢測(cè)系統(tǒng)狀態(tài):curl -XGET 'elk1:9200/_cat/health?v&pretty'

epoch      timestamp cluster       status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1483811310 01:48:30  elasticsearch green           2         2     12   6    0    0        0             0                  -                100.0%

③ 檢測(cè)單一節(jié)點(diǎn)狀態(tài):curl -XGET 'elk1:9200/_cat/nodes?v&pretty'

ip              heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
192.168.204.133            9          85   9    0.03    0.08     0.06 mdi       *      elk-node-1
192.168.204.129            9          96   0    0.00    0.00     0.00 di        -      elk-node-2

啟動(dòng)的日志可以在/usr/java/elasticsearch-5.1.1/logs下查看

1.3 Kibana安裝

下載地址
1) Kibana我只安裝單機(jī),直接使用yum 安裝rpm包
2)配置:可以參考配置以下(技巧:如果和默認(rèn)配置一致晦溪,則那項(xiàng)內(nèi)容可以不進(jìn)行配置瀑粥。比如我實(shí)際只配置了下面的elasticsearch.url和server.host參數(shù)):

server.port: 5601
server.host: "0.0.0.0"
elasticsearch.url: "http://elk1:9200"

1.4 redis安裝

① redis由于我已安裝,我覺得tar包下載再安裝比較麻煩三圆,而我直接使用yum和apt-get進(jìn)行安裝:
CentOS7:可以從rpmfind下載redis3的包redis-3.2.6-1.el7.remi.x86_64.rpm
Ubuntu16.04:sudo apt-get install redis-server
② 然后啟動(dòng)redis狞换, sudo service redis start
③檢查:redis-cli是否連通本地server

1.5 安裝logstash

這個(gè)圖必須說一下,因?yàn)榭次臋n你會(huì)經(jīng)诚邮酰看到logstash pipline哀澈,具體這個(gè)是什么,這個(gè)圖一看就明白:

Paste_Image.png

下載地址
下載完依次:
1) 老樣子度气,解壓并mv/usr/java下
2) 為logstash-forwarder進(jìn)行免密配置:
vim /etc/pki/tls/openssl.cnf:
# 這塊如果是多個(gè)割按,可以寫成IP1:xxx, IP2:xxx...;注意是在[ v3_ca ]的后面編輯,而不是其他位置 subjectAltName = IP: 127.0.0.1
②生成證書:
$cd /etc/pki/tls $sudo openssl req -config /etc/pki/tls/openssl.cnf -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt
如果在后面的logstash-forwarder報(bào)錯(cuò):Failed to tls handshake with 127.0.0.1 x509: cannot validate certificate for 127.0.0.1 because it doesn't contain any IP SANs磷籍,一定注意回去檢查①中的IP配置是否寫在[ v3_ca ]
③如果logstash和logstash-forwarder不是一臺(tái)機(jī)器适荣,需要將生產(chǎn)的證書從logstash拷貝到logstash-forwarder的機(jī)器上:

scp private/logstash-forwarder.key root@target_server_ip:/etc/pki/tls/private
scp certs/logstash-forwarder.crt root@target_server_ip:/etc/pki/tls/certs

3)修改config配置,這里多說一句院领,其實(shí)配置就是和上圖一一對(duì)應(yīng)的弛矛,需要三部分INPUT、FILTER和OUTPUT比然。剛開始FILTER篩選可以忽略丈氓。
此外,[ELK]部署詳解原文,配置了兩個(gè)万俗,其實(shí)相當(dāng)于上圖串行了兩個(gè)logstash pipline湾笛。(千萬不要認(rèn)為redis-input是input,redis-out是output闰歪,其實(shí)他們每一個(gè)都是一個(gè)logstash pipeline)先從logstash-forwarder到redis嚎研,然后redis再到elasticsearch。這個(gè)部分我配置出錯(cuò)了好幾次库倘,千萬注意括號(hào)的對(duì)應(yīng)關(guān)系(vim可以用shift+%來找到對(duì)應(yīng)的配置)上一份我的配置:
cd /usr/java/logstash-5.1.1/
config/redis-input.yml

input {
  lumberjack {
    port => 5043
    type => "logs"
    ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
    ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
  }
}
filter{
}

output {
    redis {
        host => "127.0.0.1"
        port => 6379
        data_type => "list"
        key => "logstash:redis"
    }
}

config/redis-output.yml

input {
    redis {
        data_type => "list"
        key => "logstash:redis"
        host => "127.0.0.1"
        port => 6379
    }
}
filter{
}
output {
    elasticsearch {
        hosts => ["elk1:9200"]
        index => "%{type}-%{+YYYY.MM.dd}"
        document_type => "%{type}"
        # workers => 100 出錯(cuò)临扮,說不支持,暫時(shí)先去掉
        template_overwrite => true
    }
}

4) 所以如果你直接配置完兩個(gè)教翩,無法啟動(dòng)杆勇,可以依次進(jìn)行啟動(dòng):
cd /usr/java/logstash-5.1.1 ./bin/logstash -f config/redis-input.yml ./bin/logstash -f config/redis-output.yml
5)在[ELK]部署一節(jié),提到自己的腳本迂曲。你可以在logstash-5.1.1的bin目錄新建一個(gè)sh腳本文件靶橱,比如mylogstash.sh:

  • 修改文件conf()函數(shù)的配置:
function conf()
{
    script_name="logstash"
    start_command=/usr/java/logstash-5.1.1/bin/logstash
    conf_file=/usr/java/logstash-5.1.1/config/redis-input.yml
    output_conf=/usr/java/logstash-5.1.1/config/redis-output.yml
    log_path=/usr/java/logstash-5.1.1/logs/logstash_output.log

    log_input_path=/usr/java/logstash-5.1.1/logs/logstash_input.log

    works=2
}
  • 賦予執(zhí)行權(quán)限chmod u+x mylogstash.sh,然后就可以用比如path/to/logstash/bin/mylogstash.sh [start|stop|...]進(jìn)行一鍵操作
    6)而外路捧,如果配置完理解的話关霸,發(fā)現(xiàn)logstash重要的是配置input、output(filter其實(shí)也很常用)杰扫,在logstash中稱為plugins队寇,可以在官方logstash的doc右側(cè)目錄,查找input output filter進(jìn)行查詢章姓。

1.6 logstash-forwarder

為什么要用Logstash Forwarder呢佳遣?看過logstash-best-practice-cn這節(jié)就明白是為了增加安全性。
1) 下載相關(guān)
官方的默認(rèn)都下載鏈接到logstash凡伊,所以需要github看方法進(jìn)行安裝零渐。
2) 配置:看配置是用于文件的監(jiān)控,以下是監(jiān)控logstash和nginx的日志:
/etc/logstash-forwarder.conf

{
  # The network section covers network configuration :)
  "network": {
    # A list of downstream servers listening for our messages.
    # logstash-forwarder will pick one at random and only switch if
    # the selected one appears to be dead or unresponsive
    "servers": [ "127.0.0.1:5043" ],

    # The path to your client ssl certificate (optional)
    #"ssl certificate": "./logstash-forwarder.crt",
    #"ssl certificate": "/etc/pki/tls/certs/logstash-forwarder.crt",
    # The path to your client ssl key (optional)
    "ssl key": "/etc/pki/tls/private/logstash-forwarder.key",

    # The path to your trusted ssl CA file. This is used
    # to authenticate your downstream server.
    "ssl ca": "/etc/pki/tls/certs/logstash-forwarder.crt",

    # Network timeout in seconds. This is most important for
    # logstash-forwarder determining whether to stop waiting for an
    # acknowledgement from the downstream server. If an timeout is reached,
    # logstash-forwarder will assume the connection or server is bad and
    # will connect to a server chosen at random from the servers list.
    "timeout": 15
  },

  # The list of files configurations
  "files": [
    # An array of hashes. Each hash tells what paths to watch and
    # what fields to annotate on events from those paths.
    {
      "paths": [ "/var/log/message.log"],
      "fields": { "type": "logstash" }
    },
    {
      "paths": [ "/var/log/nginx/access.log"],
      "fields": { "type": "web1_nginx" }
    }
    #{
      #"paths": [
        # single paths are fine
        #"/var/log/messages",
        # globs are fine too, they will be periodically evaluated
        # to see if any new files match the wildcard.
        #"/var/log/*.log"
      #],

      # A dictionary of fields to annotate on each event.
      #"fields": { "type": "syslog" }
    #}, {
      # A path of "-" means stdin.
      #"paths": [ "-" ],
      #"fields": { "type": "stdin" }
    #}, {
      #"paths": [
        #"/var/log/apache/httpd-*.log"
      #],
      #"fields": { "type": "apache" }
    #}
  ]
}

3) 啟動(dòng)(我是在CentOS上使用系忙,所以使用sudo service logstash-forwarder start
4)題外:看官方推薦使用的叫beats诵盼,看配置和forwarder非常像,所以有興趣可以研究下银还。

1.7 nginx的安裝配置

這個(gè)按照[ELK部署詳解]原文的安裝并配置nginx用于HTTP訪問進(jìn)行配置即可风宁。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蛹疯,隨后出現(xiàn)的幾起案子戒财,更是在濱河造成了極大的恐慌,老刑警劉巖捺弦,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饮寞,死亡現(xiàn)場(chǎng)離奇詭異孝扛,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)骂际,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門疗琉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來冈欢,“玉大人歉铝,你說我怎么就攤上這事〈粘埽” “怎么了太示?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)香浩。 經(jīng)常有香客問我类缤,道長(zhǎng),這世上最難降的妖魔是什么邻吭? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任餐弱,我火速辦了婚禮,結(jié)果婚禮上囱晴,老公的妹妹穿的比我還像新娘膏蚓。我一直安慰自己,他們只是感情好畸写,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布驮瞧。 她就那樣靜靜地躺著,像睡著了一般枯芬。 火紅的嫁衣襯著肌膚如雪论笔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天千所,我揣著相機(jī)與錄音狂魔,去河邊找鬼。 笑死淫痰,一個(gè)胖子當(dāng)著我的面吹牛最楷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播黑界,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼管嬉,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了朗鸠?” 一聲冷哼從身側(cè)響起蚯撩,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎烛占,沒想到半個(gè)月后胎挎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沟启,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年犹菇,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了德迹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡揭芍,死狀恐怖胳搞,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情称杨,我是刑警寧澤肌毅,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站姑原,受9級(jí)特大地震影響悬而,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜锭汛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一笨奠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧唤殴,春花似錦般婆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至廉侧,卻和暖如春页响,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背段誊。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工闰蚕, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人连舍。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓没陡,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親索赏。 傳聞我的和親對(duì)象是個(gè)殘疾皇子盼玄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容