ELK-Stack部署指南

      網(wǎng)友投稿 943 2022-05-29

      參考文章

      elastic官網(wǎng):https://www.elastic.co

      Elasticsearch中文社區(qū):http://elasticsearch.cn/

      部署安裝filebeat:https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-elk-stack-on-ubuntu-14-04

      Topbeat:https://www.digitalocean.com/community/tutorials/how-to-gather-infrastructure-metrics-with-topbeat-and-elk-on-ubuntu-14-04

      Packetbeat:https://www.digitalocean.com/community/tutorials/how-to-gather-infrastructure-metrics-with-packetbeat-and-elk-on-ubuntu-16-04

      最佳實(shí)踐:http://udn.yyuap.com/doc/logstash-best-practice-cn/output/elasticsearch.html

      架構(gòu)設(shè)計(jì)

      日志轉(zhuǎn)發(fā)收集軟件:

      Filebeat: 將syslog等日志發(fā)送到Logstash的客戶端服務(wù)器上,作為日志傳送代理,利用lumberjack?工具網(wǎng)絡(luò)協(xié)議與Logstash進(jìn)行通信。

      Topbeat: 將CPU,內(nèi)存,進(jìn)程活動(dòng)和系統(tǒng)負(fù)載等服務(wù)器數(shù)據(jù)發(fā)送到Logstash實(shí)例。當(dāng)與ELK堆棧(Elasticsearch,Logstash和Kibana)一起使用時(shí),Topbeat可以用作其他系統(tǒng)度量可視化工具(如Prometheus或Statsd)的替代選項(xiàng)。

      Packetbeat: 可以運(yùn)行在應(yīng)用服務(wù)器上或者獨(dú)自的服務(wù)器。當(dāng)運(yùn)行在獨(dú)自服務(wù)器上時(shí),需要從交換機(jī)的鏡像端口或者竊聽(tīng)設(shè)備上獲取網(wǎng)絡(luò)流量。

      應(yīng)用程序等產(chǎn)生的日志直接推送至日志服務(wù)器中,經(jīng)過(guò)logstash的處理最終推送至elasticsearch中,在kibana上進(jìn)行展示,并通過(guò)Nginx限制用戶訪問(wèn)。可以在logstash的Filter上定制解析規(guī)則和報(bào)警規(guī)則,定時(shí)將不可讀日志文件解析為可讀的json文件進(jìn)行處理,當(dāng)日志有嚴(yán)重的錯(cuò)誤時(shí)可通過(guò)logstash的Output定制郵件模板進(jìn)行報(bào)警。

      安全問(wèn)題:所有服務(wù)盡可能只對(duì)內(nèi)網(wǎng)ip暴露(通過(guò)防火墻實(shí)現(xiàn)),減少對(duì)外暴露的服務(wù),并且以低權(quán)限賬戶運(yùn)行。跨節(jié)點(diǎn)的服務(wù)(如filebeat,topbeat,packetbeat等)連接一律采用SSL雙向認(rèn)證的方案,提高安全性。

      準(zhǔn)備環(huán)境

      日志收集服務(wù)器端如下,并準(zhǔn)備將要收集日志的其他服務(wù)器。

      操作系統(tǒng):Ubuntu 14.04

      RAM:4GB

      CPU:2

      安裝java8

      將Oracle Java PPA添加到apt中:

      sudo add-apt-repository -y ppa:webupd8team/java

      更新apt包數(shù)據(jù)庫(kù):

      sudo apt-get update

      使用此命令安裝最新的穩(wěn)定版本的Oracle Java 8(并接受彈出的許可協(xié)議):

      sudo apt-get -y install oracle-java8-installer

      現(xiàn)在安裝了Java 8,我們來(lái)安裝ElasticSearch。

      安裝Elasticsearch

      Elasticsearch可以通過(guò)添加Elastic的包源列表與包管理器一起安裝。

      運(yùn)行以下命令將Elasticsearch公共GPG密鑰導(dǎo)入到apt中:

      wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

      創(chuàng)建Elasticsearch源列表:

      echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list

      更新apt包數(shù)據(jù)庫(kù):

      sudo apt-get update

      使用此命令安裝Elasticsearch:

      sudo apt-get -y install elasticsearch

      Elasticsearch現(xiàn)已安裝。我們來(lái)編輯配置:

      sudo vi /etc/elasticsearch/elasticsearch.yml

      您將要限制對(duì)Elasticsearch實(shí)例(端口9200)的外部訪問(wèn),因此外部人員無(wú)法通過(guò)HTTP API讀取數(shù)據(jù)或關(guān)閉Elasticsearch集群。找到指定network.host,取消注釋它并將其值替換為“l(fā)ocalhost”的行,如下所示:

      elasticsearch.yml摘錄(更新)

      network.host: localhost

      保存并退出elasticsearch.yml。

      現(xiàn)在啟動(dòng)elasticsearch:

      sudo service elasticsearch restart

      然后在啟動(dòng)時(shí)運(yùn)行以下命令啟動(dòng)Elasticsearch:

      sudo update-rc.d elasticsearch defaults 95 10

      現(xiàn)在Elasticsearch正在運(yùn)行,我們來(lái)安裝Kibana。

      安裝Kibana

      Kibana可以通過(guò)添加Elastic的包源列表來(lái)安裝包管理器。

      創(chuàng)建Kibana源列表:

      echo "deb http://packages.elastic.co/kibana/4.4/debian stable main" | sudo tee -a /etc/apt/sources.list.d/kibana-4.4.x.list

      更新apt包數(shù)據(jù)庫(kù):

      sudo apt-get update

      使用此命令安裝Kibana:

      sudo apt-get -y install kibana

      Kibana現(xiàn)已安裝,打開(kāi)Kibana配置文件以進(jìn)行編輯:

      sudo vi /opt/kibana/config/kibana.yml

      在Kibana配置文件中,找到指定server.host并將IP地址(默認(rèn)為“0.0.0.0”)替換為“l(fā)ocalhost”的行:

      kibana.yml摘錄(更新)

      server.host: "localhost"

      保存并退出。這個(gè)設(shè)置使得Kibana只能由本地主機(jī)訪問(wèn)。我們將使用Nginx反向代理來(lái)允許外部訪問(wèn)。

      現(xiàn)在啟用Kibana服務(wù),并啟動(dòng)它:

      sudo update-rc.d kibana defaults 96 9

      sudo service kibana start

      在使用Kibana Web界面之前,我們必須設(shè)置一個(gè)反向代理。現(xiàn)在,我們來(lái)做Nginx。

      安裝Nginx

      因?yàn)槲覀兣渲昧薑ibana來(lái)監(jiān)聽(tīng)localhost,所以我們必須設(shè)置一個(gè)反向代理來(lái)允許外部訪問(wèn)它。為此,我們將使用Nginx。

      注意:如果您已經(jīng)有要使用的Nginx實(shí)例,請(qǐng)隨意使用。只要確保配置Kibana所以它是由你的Nginx服務(wù)器可達(dá)(你可能要更改的host值,在/opt/kibana/config/kibana.yml,你Kibana服務(wù)器的專用IP地址或主機(jī)名)。另外,建議您啟用SSL / TLS。

      使用apt來(lái)安裝Nginx和Apache2-utils:

      sudo apt-get install nginx apache2-utils

      使用htpasswd創(chuàng)建一個(gè)名為“kibanaadmin”的管理員用戶(您應(yīng)該使用其他名稱),可以訪問(wèn)Kibana Web界面:

      sudo htpasswd -c /etc/nginx/htpasswd.users kibanaadmin

      在提示符下輸入密碼。記住這個(gè)登錄,你將需要它來(lái)訪問(wèn)Kibana Web界面。

      現(xiàn)在打開(kāi)您喜歡的編輯器中的Nginx默認(rèn)服務(wù)器塊。我們將使用vi:

      sudo vi /etc/nginx/sites-available/default

      刪除文件的內(nèi)容,并將以下代碼塊粘貼到文件中。請(qǐng)務(wù)必更新server_name以符合您服務(wù)器的名稱:

      / etc / nginx / sites-available / default

      server {

      listen 80;

      server_name example.com;

      auth_basic "Restricted Access";

      auth_basic_user_file /etc/nginx/htpasswd.users;

      location / {

      proxy_pass http://localhost:5601;

      proxy_http_version 1.1;

      proxy_set_header Upgrade $http_upgrade;

      proxy_set_header Connection 'upgrade';

      proxy_set_header Host $host;

      proxy_cache_bypass $http_upgrade;

      }

      }

      保存并退出。這將Nginx配置為將您的服務(wù)器的HTTP流量指向正在偵聽(tīng)的Kibana應(yīng)用程序localhost:5601。此外,Nginx將使用htpasswd.users我們之前創(chuàng)建的文件,并需要基本身份驗(yàn)證。

      現(xiàn)在重新啟動(dòng)Nginx,使我們的更改生效:

      sudo service nginx restart

      Kibana現(xiàn)在可通過(guò)您的FQDN或ELK服務(wù)器的公共IP地址訪問(wèn),即http:// elk \ _server \ _public \ _ip /。如果您在網(wǎng)絡(luò)瀏覽器中進(jìn)入“kibanaadmin”憑據(jù),您應(yīng)該會(huì)看到一個(gè)Kibana歡迎頁(yè)面,它將要求您配置索引模式。我們稍后再回到安裝所有其他組件之后。

      安裝Logstash

      Logstash軟件包可以從與Elasticsearch相同的存儲(chǔ)庫(kù)中獲得,我們已經(jīng)安裝了該公鑰,因此我們來(lái)創(chuàng)建Logstash源代碼列表:

      echo 'deb http://packages.elastic.co/logstash/2.2/debian stable main' | sudo tee /etc/apt/sources.list.d/logstash-2.2.x.list

      更新apt包數(shù)據(jù)庫(kù):

      sudo apt-get update

      使用此命令安裝Logstash:

      sudo apt-get install logstash

      已安裝Logstash,但尚未配置。

      生成SSL證書(shū)

      由于我們將使用Filebeat將客戶端服務(wù)器中的日志發(fā)送到我們的ELK服務(wù)器,因此我們需要?jiǎng)?chuàng)建SSL證書(shū)和密鑰對(duì)。Filebeat使用證書(shū)來(lái)驗(yàn)證ELK Server的身份。創(chuàng)建使用以下命令存儲(chǔ)證書(shū)和私鑰的目錄:

      sudo mkdir -p /etc/pki/tls/certs

      sudo mkdir /etc/pki/tls/private

      現(xiàn)在您有兩個(gè)生成SSL證書(shū)的選項(xiàng)。如果您有DNS設(shè)置,將允許您的客戶端服務(wù)器解析ELK服務(wù)器的IP地址,請(qǐng)使用選項(xiàng)2。否則,選項(xiàng)1將允許您使用IP地址。

      選項(xiàng)1:IP地址

      如果您沒(méi)有DNS設(shè)置,將允許您收集日志的服務(wù)器來(lái)解析您的ELK服務(wù)器的IP地址,則必須將ELK Server的私有IP地址添加到subjectAltName(SAN)字段我們即將生成的SSL證書(shū)。為此,請(qǐng)打開(kāi)OpenSSL配置文件:

      sudo vi /etc/ssl/openssl.cnf

      查找[ v3_ca ]文件中的部分,并在其下添加此行(用ELK Server的私有IP地址替換):

      openssl.cnf摘錄(更新)

      subjectAltName = IP: ELK_server_private_IP

      保存并退出。

      現(xiàn)在使用以下命令在適當(dāng)?shù)奈恢茫? etc / pki / tls /)生成SSL證書(shū)和私鑰:

      cd /etc/pki/tls

      sudo openssl req -config /etc/ssl/openssl.cnf -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt

      該logstash-forwarder.crt文件將被復(fù)制到所有將日志發(fā)送到Logstash服務(wù)器,但我們會(huì)做到這一點(diǎn)稍晚。我們來(lái)完成我們的Logstash配置。如果您使用此選項(xiàng),請(qǐng)?zhí)^(guò)選項(xiàng)2并繼續(xù)進(jìn)行配置Logstash。

      選項(xiàng)2:FQDN(DNS)

      如果您使用專有網(wǎng)絡(luò)進(jìn)行DNS設(shè)置,則應(yīng)創(chuàng)建一個(gè)包含ELK Server專用IP地址的A記錄,該域名將在下一個(gè)命令中使用,以生成SSL證書(shū)。或者,您可以使用指向服務(wù)器的公共IP地址的記錄。只需確保您的服務(wù)器(您將要收集的服務(wù)器記錄的)將能夠?qū)⒂蛎馕龅侥腅LK服務(wù)器。

      現(xiàn)在,使用以下命令(在ELK服務(wù)器的FQDN中替換),在適當(dāng)?shù)奈恢茫? etc / pki / tls / ...)中生成SSL證書(shū)和私鑰:

      cd /etc/pki/tls; sudo openssl req -subj '/CN=ELK_server_fqdn/' -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt

      該logstash-forwarder.crt文件將被復(fù)制到所有將日志發(fā)送到Logstash服務(wù)器,但我們會(huì)做到這一點(diǎn)稍晚。我們來(lái)完成我們的Logstash配置。

      配置Logstash

      Logstash配置文件采用JSON格式,駐留在/etc/logstash/conf.d中。配置由三部分組成:輸入,濾波和輸出。

      我們來(lái)創(chuàng)建一個(gè)配置文件,02-beats-input.conf并設(shè)置我們的“filebeat”輸入:

      sudo vi /etc/logstash/conf.d/02-beats-input.conf

      插入以下輸入配置:

      02-beats-input.conf

      input {

      beats {

      port => 5044

      ssl => true

      ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"

      ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"

      }

      }

      保存并退出。這指定了一個(gè)beats在tcp端口上偵聽(tīng)的輸入,它將5044使用我們之前創(chuàng)建的SSL證書(shū)和私鑰。

      現(xiàn)在我們創(chuàng)建一個(gè)調(diào)用的配置文件10-syslog-filter.conf,在這里我們將添加一個(gè)syslog消息的過(guò)濾器:

      sudo vi /etc/logstash/conf.d/10-syslog-filter.conf

      插入以下syslog?過(guò)濾器配置:

      10-syslog-filter.conf

      filter {

      if [type] == "syslog" {

      grok {

      match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }

      add_field => [ "received_at", "%{@timestamp}" ]

      add_field => [ "received_from", "%{host}" ]

      }

      syslog_pri { }

      date {

      match => [ "syslog_timestamp", "MMM? d HH:mm:ss", "MMM dd HH:mm:ss" ]

      }

      }

      }

      保存并退出。此過(guò)濾器查找標(biāo)記為“syslog”類(lèi)型(由Filebeat)類(lèi)型的日志,它將嘗試grok用于解析傳入的syslog日志,使其結(jié)構(gòu)化和查詢。

      最后,我們將創(chuàng)建一個(gè)名為30-elasticsearch-output.conf:

      sudo vi /etc/logstash/conf.d/30-elasticsearch-output.conf

      插入以下輸出配置:

      /etc/logstash/conf.d/30-elasticsearch-output.conf

      output {

      elasticsearch {

      hosts => ["localhost:9200"]

      sniffing => true

      manage_template => false

      index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"

      document_type => "%{[@metadata][type]}"

      }

      }

      保存并退出。此輸出基本上配置Logstash,以將所有節(jié)拍數(shù)據(jù)存儲(chǔ)在運(yùn)行于localhost:9200所使用節(jié)拍命名的索引(在我們的例子中為filebeat)的Elasticsearch中。

      如果要為使用Filebeat輸入的其他應(yīng)用程序添加過(guò)濾器,請(qǐng)務(wù)必命名文件,以便它們?cè)谳斎牒洼敵雠渲弥g進(jìn)行排序(即在02和30之間)。

      使用以下命令測(cè)試您的Logstash配置:

      sudo service logstash configtest

      Configuration OK如果沒(méi)有語(yǔ)法錯(cuò)誤,它應(yīng)該顯示。否則,嘗試讀取錯(cuò)誤輸出以查看您的Logstash配置有什么問(wèn)題。

      重新啟動(dòng)Logstash并啟用它,使配置更改生效:

      sudo service logstash restart

      sudo update-rc.d logstash defaults 96 9

      接下來(lái),我們將加載示例Kibana儀表板。

      加載Kibana儀表板

      Elastic提供了幾個(gè)示例Kibana儀表板和Beats索引模式,可以幫助您開(kāi)始使用Kibana。雖然我們不會(huì)在本教程中使用儀表板,但是我們將加載它們,因此我們可以使用它包含的Filebeat索引模式。

      首先,將示例儀表盤(pán)存檔下載到您的主目錄:

      cd ~

      curl -L -O https://download.elastic.co/beats/dashboards/beats-dashboards-1.1.0.zip

      unzip使用以下命令安裝軟件包:

      sudo apt-get -y install unzip

      接下來(lái),提取存檔的內(nèi)容:

      unzip beats-dashboards-*.zip

      并使用以下命令將示例儀表板,可視化和Beats索引模式加載到Elasticsearch中:

      cd beats-dashboards-*

      ./load.sh

      這些是我們剛加載的索引模式:

      [packetbeat-] YYYY.MM.DD

      [topbeat-] YYYY.MM.DD

      [filebeat-] YYYY.MM.DD

      [winlogbeat-] YYYY.MM.DD

      當(dāng)我們開(kāi)始使用Kibana時(shí),我們將選擇Filebeat索引模式作為默認(rèn)值。

      在Elasticsearch中加載文件搜索索引模板

      因?yàn)槲覀冇?jì)劃使用Filebeat將日志發(fā)送到Elasticsearch,所以我們應(yīng)該加載一個(gè)Filebeat索引模板。索引模板將配置Elasticsearch,以智能方式分析傳入的Filebeat字段。

      首先,將Filebeat索引模板下載到您的主目錄:

      cd ~

      curl -O https://gist.githubusercontent.com/thisismitch/3429023e8438cc25b86c/raw/d8c479e2a1adcea8b1fe86570e42abab0f10f364/filebeat-index-template.json

      然后使用以下命令加載模板:

      curl -XPUT 'http://localhost:9200/_template/filebeat?pretty' -d@filebeat-index-template.json

      如果模板正確加載,您應(yīng)該會(huì)看到如下消息:

      Output:

      {

      "acknowledged" : true

      }

      現(xiàn)在我們的ELK服務(wù)器已準(zhǔn)備好接收Filebeat數(shù)據(jù)了,我們繼續(xù)在每個(gè)客戶端服務(wù)器上設(shè)置Filebeat。

      設(shè)置Filebeat(添加客戶端服務(wù)器)

      復(fù)制SSL證書(shū)

      在您的ELK服務(wù)器上,將先決條件教程中創(chuàng)建的SSL證書(shū)復(fù)制到客戶端服務(wù)器(替換客戶端服務(wù)器的地址和您自己的登錄名):

      scp /etc/pki/tls/certs/logstash-forwarder.crt user@client_server_private_address:/tmp

      提供登錄憑據(jù)后,請(qǐng)確保證書(shū)副本成功。客戶端服務(wù)器和ELK服務(wù)器之間的通信是必需的。

      現(xiàn)在,在您的客戶端服務(wù)器上,將ELK服務(wù)器的SSL證書(shū)復(fù)制到相應(yīng)的位置(/ etc / pki / tls / certs):

      sudo mkdir -p /etc/pki/tls/certs

      sudo cp /tmp/logstash-forwarder.crt /etc/pki/tls/certs/

      現(xiàn)在我們將安裝Topbeat軟件包。

      安裝Filebeat包

      在客戶端服務(wù)器上,創(chuàng)建Beats源列表:

      echo "deb https://packages.elastic.co/beats/apt stable main" |? sudo tee -a /etc/apt/sources.list.d/beats.list

      它還使用與Elasticsearch相同的GPG密鑰,可以使用以下命令安裝:

      wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

      然后安裝Filebeat包:

      sudo apt-get update

      sudo apt-get install filebeat

      已安裝Filebeat,但尚未配置。

      配置文件

      ELK-Stack部署指南

      現(xiàn)在我們將配置Filebeat以連接到我們的ELK服務(wù)器上的Logstash。本節(jié)將引導(dǎo)您修改Filebeat附帶的示例配置文件。當(dāng)你完成這些步驟,你應(yīng)該有一個(gè)看起來(lái)像一個(gè)文件這樣。

      在客戶端服務(wù)器上,創(chuàng)建并編輯Filebeat配置文件:

      sudo vi /etc/filebeat/filebeat.yml

      注意:?Filebeat的配置文件采用YAML格式,這意味著縮進(jìn)非常重要!請(qǐng)務(wù)必使用與這些說(shuō)明相同數(shù)量的空格。

      在文件頂部附近,您將看到該prospectors部分,您可以在哪里定義探礦者,指定哪些日志文件應(yīng)該發(fā)貨,以及應(yīng)如何處理。每個(gè)探礦者由-字符指示。

      我們將修改現(xiàn)有探礦派syslog和auth.log以Logstash。在下面paths,注釋掉該- /var/log/*.log文件。這將阻止Filebeat將該目錄中的每一個(gè)都發(fā)送.log到Logstash。然后添加新條目syslog和auth.log。完成后應(yīng)該看起來(lái)像這樣:

      filebeat.yml摘錄1的5

      ...

      paths:

      - /var/log/auth.log

      - /var/log/syslog

      #??????? - /var/log/*.log

      ...

      然后找到指定document_type:,取消注釋它并將其值更改為“syslog”的行。修改后應(yīng)該看起來(lái)像這樣:

      filebeat.yml摘錄2的5

      ...

      document_type: syslog

      ...

      這指定此探測(cè)器中的日志類(lèi)型為syslog(它是Logstash篩選器所查找的類(lèi)型)。

      如果要將其他文件發(fā)送到ELK服務(wù)器,或?qū)ilebeat如何處理日志進(jìn)行任何更改,請(qǐng)隨時(shí)修改或添加探測(cè)器條目。

      接下來(lái),在該output部分下,找到所說(shuō)的行,它表示elasticsearch:彈性搜索輸出部分(我們不會(huì)使用)。刪除或注釋掉整個(gè)Elasticsearch輸出部分(直到所說(shuō)的行#logstash:)。

      找到注釋掉的Logstash輸出部分,由說(shuō)明的行#logstash:指示,并通過(guò)刪除前面的內(nèi)容取消注釋#。在本節(jié)中,取消注釋hosts: ["localhost:5044"]行。更改localhost為您的ELK服務(wù)器的私有IP地址(或主機(jī)名,如果您使用該選項(xiàng)):

      filebeat.yml摘錄3 of 5

      ### Logstash as output

      logstash:

      # The Logstash hosts

      hosts: ["ELK_server_private_IP:5044"]

      這將配置Filebeat以連接到您的ELK服務(wù)器上的Logstash端口5044(我們?yōu)橹爸付ǖ腖ogstash輸入的端口)。

      直接在hosts條目下,并且用相同的縮進(jìn),添加以下行:

      filebeat.yml摘錄4/5

      bulk_max_size: 1024

      接下來(lái),找到該tls部分,并取消注釋。然后取消注釋指定的行certificate_authorities,并將其值更改為["/etc/pki/tls/certs/logstash-forwarder.crt"]。它應(yīng)該看起來(lái)像這樣:

      filebeat.yml摘錄5的5

      ...

      tls:

      # List of root certificates for HTTPS server verifications

      certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]

      這將配置Filebeat以使用我們?cè)贓LK服務(wù)器上創(chuàng)建的SSL證書(shū)。

      保存并退出。

      現(xiàn)在重新啟動(dòng)Filebeat以使我們的更改到位:

      sudo service filebeat restart

      sudo update-rc.d filebeat defaults 95 10

      現(xiàn)在Filebeat被發(fā)送syslog,并auth.log以您的ELK服務(wù)器上Logstash!對(duì)于您希望收集日志的所有其他服務(wù)器重復(fù)此部分。

      測(cè)試Filebeat安裝

      如果您的ELK堆棧正確設(shè)置,F(xiàn)ilebeat(在您的客戶端服務(wù)器上)應(yīng)該將您的日志發(fā)送到ELK服務(wù)器上的Logstash。Logstash應(yīng)該將Filebeat數(shù)據(jù)加載到Elasticsearch的日期戳索引中filebeat-YYYY.MM.DD。

      在您的ELK服務(wù)器上,驗(yàn)證Elasticsearch確實(shí)通過(guò)使用以下命令查詢Filebeat索引來(lái)接收數(shù)據(jù):

      curl -XGET 'http://localhost:9200/filebeat-*/_search?pretty'

      你應(yīng)該看到一堆如下的輸出:

      Sample Output:

      ...

      {

      "_index" : "filebeat-2016.01.29",

      "_type" : "log",

      "_id" : "AVKO98yuaHvsHQLa53HE",

      "_score" : 1.0,

      "_source":{"message":"Feb? 3 14:34:00 rails sshd[963]: Server listening on :: port 22.","@version":"1","@timestamp":"2016-01-29T19:59:09.145Z","beat":{"hostname":"topbeat-u-03","name":"topbeat-u-03"},"count":1,"fields":null,"input_type":"log","offset":70,"source":"/var/log/auth.log","type":"log","host":"topbeat-u-03"}

      }

      ...

      如果您的輸出顯示0次總匹配,Elasticsearch不會(huì)在您搜索的索引下加載任何日志,您應(yīng)該檢查您的設(shè)置是否有錯(cuò)誤。

      設(shè)置Topbeat(添加客戶端服務(wù)器)

      復(fù)制SSL證書(shū)

      在您的ELK服務(wù)器上,將先決條件教程中創(chuàng)建的SSL證書(shū)復(fù)制到客戶端服務(wù)器(替換客戶端服務(wù)器的地址和您自己的登錄名):

      scp /etc/pki/tls/certs/logstash-forwarder.crt user@client_server_private_address:/tmp

      提供登錄憑據(jù)后,請(qǐng)確保證書(shū)副本成功。客戶端服務(wù)器和ELK服務(wù)器之間的通信是必需的。

      現(xiàn)在,在您的客戶端服務(wù)器上,將ELK服務(wù)器的SSL證書(shū)復(fù)制到相應(yīng)的位置(/ etc / pki / tls / certs):

      sudo mkdir -p /etc/pki/tls/certs

      sudo cp /tmp/logstash-forwarder.crt /etc/pki/tls/certs/

      現(xiàn)在我們將安裝Topbeat軟件包。

      安裝Topbeat包

      在客戶端服務(wù)器上,確保Beats源列表存在。打開(kāi)/etc/apt/sources.list.d/beats.list編輯:

      sudo vi /etc/apt/sources.list.d/beats.list

      確保該行存在(如果它不存在則將其粘貼):

      /etc/apt/sources.list.d/beats.list

      deb https://packages.elastic.co/beats/apt stable main

      保存并退出。

      Topbeat使用與Elasticsearch和Filebeat相同的GPG密鑰,可以使用以下命令安裝:

      wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

      然后安裝Topbeat軟件包:

      sudo apt-get update

      sudo apt-get install topbeat

      Tobeat現(xiàn)在已安裝但尚未配置。

      配置文件

      現(xiàn)在我們將配置Topbeat連接到我們的ELK服務(wù)器上的Logstash。本節(jié)將引導(dǎo)您修改Topbeat附帶的示例配置文件。當(dāng)你完成這些步驟,你應(yīng)該有一個(gè)看起來(lái)像一個(gè)文件這樣。

      在客戶端服務(wù)器上,創(chuàng)建和編輯Topbeat配置文件:

      sudo vi /etc/topbeat/topbeat.yml

      注意:?Topbeat的配置文件采用YAML格式,這意味著縮進(jìn)非常重要!請(qǐng)務(wù)必使用與這些說(shuō)明相同數(shù)量的空格。

      在文件頂部附近,您將看到該input部分,您可以在其中指定哪些指標(biāo)和統(tǒng)計(jì)信息應(yīng)發(fā)送到ELK服務(wù)器。我們將使用默認(rèn)輸入設(shè)置,但可以隨意更改以適應(yīng)您的需要。

      在該output部分下,找到所說(shuō)的行,它表示elasticsearch:彈性搜索輸出部分(我們不會(huì)使用)。刪除或注釋掉整個(gè)Elasticsearch輸出部分(直到所說(shuō)的行#logstash:)。

      找到注釋掉的Logstash輸出部分,由說(shuō)明的行#logstash:指示,并通過(guò)刪除前面的內(nèi)容取消注釋#。在本節(jié)中,取消注釋hosts: ["localhost:5044"]行。更改localhost為您的ELK服務(wù)器的私有IP地址(或主機(jī)名,如果您使用該選項(xiàng)):

      topbeat.yml - 1的2

      ### Logstash as output

      logstash:

      # The Logstash hosts

      hosts: ["ELK_server_private_IP:5044"]

      這將配置Topbeat連接到您的ELK服務(wù)器上的Logstash端口5044(我們?cè)谇疤釛l件教程中指定了Logstash輸入的端口)。

      接下來(lái),找到該tls部分,并取消注釋。然后取消注釋指定的行certificate_authorities,并將其值更改為["/etc/pki/tls/certs/logstash-forwarder.crt"]。它應(yīng)該看起來(lái)像這樣:

      topbeat.yml - 2的2

      ...

      tls:

      # List of root certificates for HTTPS server verifications

      certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]

      這將配置Topbeat以在先決條件教程中使用我們?cè)贓LK服務(wù)器上創(chuàng)建的SSL證書(shū)。

      保存并退出。

      現(xiàn)在重新啟動(dòng)Topbeat以使我們的更改到位:

      sudo service topbeat restart

      sudo update-rc.d topbeat defaults 95 10

      現(xiàn)在,Topbeat將您的客戶端服務(wù)器的系統(tǒng),進(jìn)程和文件系統(tǒng)指標(biāo)發(fā)送到您的ELK服務(wù)器!對(duì)于您希望以Topbeat指標(biāo)衡量的所有其他服務(wù)器重復(fù)此部分。

      測(cè)試Topbeat安裝

      如果您的ELK堆棧設(shè)置正確,則Topbeat(在客戶端服務(wù)器上)應(yīng)將您的日志發(fā)送到ELK服務(wù)器上的Logstash。Logstash應(yīng)該將Topbeat數(shù)據(jù)加載到帶有日期戳索引的Elasticsearch中topbeat-YYYY.MM.DD。

      在您的ELK服務(wù)器上,驗(yàn)證Elasticsearch確實(shí)通過(guò)使用以下命令查詢Topbeat索引來(lái)接收數(shù)據(jù):

      curl -XGET 'http://localhost:9200/topbeat-*/_search?pretty'

      你應(yīng)該看到一堆如下的輸出:

      Sample Output:

      {

      "_index" : "topbeat-2016.02.01",

      "_type" : "process",

      "_id" : "AVKeLSdP4HKUFv4CjZ7K",

      "_score" : 1.0,

      "_source":{"@timestamp":"2016-02-01T18:51:43.937Z","beat":{"hostname":"topbeat-01","name":"topbeat-01"},"count":1,"proc":{"cpu":{"user":0,"user_p":0,"system":50,"total":50,"start_time":"12:54"},"mem":{"size":0,"rss":0,"rss_p":0,"share":0},"name":"jbd2/vda1-8","pid":125,"ppid":2,"state":"sleeping"},"type":"process","@version":"1","host":"topbeat-01"}

      }

      如果您的輸出顯示0次總匹配,Elasticsearch將不會(huì)在您搜索的索引下加載任何Topbeat數(shù)據(jù),您應(yīng)該檢查您的設(shè)置是否有錯(cuò)誤。

      設(shè)置Packetbeat(添加客戶端服務(wù)器)

      復(fù)制SSL證書(shū)

      在您的ELK服務(wù)器上,將先決條件教程中創(chuàng)建的SSL證書(shū)復(fù)制到客戶端服務(wù)器(替換客戶端服務(wù)器的地址和您自己的登錄名):

      scp /etc/pki/tls/certs/logstash-forwarder.crt user@client_server_private_address:/tmp

      提供登錄憑據(jù)后,請(qǐng)確保證書(shū)副本成功。客戶端服務(wù)器和ELK服務(wù)器之間的通信是必需的。

      現(xiàn)在,在您的客戶端服務(wù)器上,將ELK服務(wù)器的SSL證書(shū)復(fù)制到相應(yīng)的位置(/ etc / pki / tls / certs):

      sudo mkdir -p /etc/pki/tls/certs

      sudo cp /tmp/logstash-forwarder.crt /etc/pki/tls/certs/

      現(xiàn)在我們將安裝Topbeat軟件包。

      安裝Topbeat包

      在客戶端服務(wù)器上,確保Beats源列表存在。打開(kāi)文件/etc/apt/sources.list.d/beats.list進(jìn)行編輯:

      sudo nano /etc/apt/sources.list.d/beats.list

      如果您以前安裝了出貨單,則此文件可能已包含以下行:

      /etc/apt/source.list.d/beats.list

      deb https://packages.elastic.co/beats/apt stable main

      如果文件為空白,或者該行不存在,請(qǐng)?zhí)砑硬⒈4嫖募H缓笸顺鼍庉嬈鳌?/p>

      要安裝此源碼,我們需要一個(gè)GPG密鑰。Packetbeat使用與Elasticsearch相同的GPG密鑰,我們使用以下命令安裝:

      wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

      現(xiàn)在,安裝Packetbeat包:

      sudo apt-get update

      sudo apt-get install packetbeat

      Packetbeat現(xiàn)已安裝,但需要先配置才能使用。

      配置文件

      Packetbeat需要知道要記錄的內(nèi)容以及發(fā)送數(shù)據(jù)的位置。我們將其配置為連接到我們的ELK服務(wù)器上的Logstash,并定義我們希望觀看哪種流量。我們將通過(guò)修改Packetbeat附帶的默認(rèn)配置文件來(lái)實(shí)現(xiàn)。

      在客戶端服務(wù)器上,編輯Packetbeat配置文件:

      sudo nano /etc/packetbeat/packetbeat.yml

      注意:?Packetbeat的配置文件采用YAML格式,這意味著縮進(jìn)非常重要!請(qǐng)務(wù)必使用與這些說(shuō)明相同數(shù)量的空格。

      在文件頂部附近,您將看到該input部分,您可以在其中指定哪些指標(biāo)和統(tǒng)計(jì)信息應(yīng)發(fā)送到ELK服務(wù)器。我們將使用默認(rèn)輸入設(shè)置,但可以隨意更改以適應(yīng)您的需要。

      選擇從中捕獲流量的網(wǎng)絡(luò)接口。在Linux上,Packetbeat支持捕獲安裝了Packetbeat的服務(wù)器發(fā)送或接收的所有消息。為此,any用作設(shè)備:

      packetbeat.yml

      # Select the network interfaces to sniff the data. You can use the "any"

      # keyword to sniff on all connected interfaces.

      interfaces:

      device: any

      在本protocols節(jié)中,配置Packetbeat可以找到每個(gè)協(xié)議的端口。如果您使用任何非標(biāo)準(zhǔn)端口,請(qǐng)?jiān)诖颂幪砑印7駝t,默認(rèn)值應(yīng)該很好。

      packetbeat.yml

      protocols:

      dns:

      ports: [53]

      include_authorities: true

      include_additionals: true

      http:

      ports: [80, 8080, 8081, 5000, 8002]

      memcache:

      ports: [11211]

      mysql:

      ports: [3306]

      pgsql:

      ports: [5432]

      redis:

      ports: [6379]

      thrift:

      ports: [9090]

      mongodb:

      ports: [27017]

      接下來(lái),我們需要告訴Packetbeat發(fā)送數(shù)據(jù)的位置。

      在該output部分下,找到開(kāi)頭的行elasticsearch:,表示彈性搜索輸出部分。我們不會(huì)使用此部分,因此刪除或注釋整個(gè)Elasticsearch輸出部分,直到所說(shuō)的行#logstash:)。

      開(kāi)始在這里刪除:

      packetbeat.yml

      ### Elasticsearch as output

      elasticsearch:

      # Array of hosts to connect to.

      # Scheme and port can be left out and will be set to the default (http and 9200)

      ...

      并繼續(xù)刪除,直到找到這一行:

      packetbeat.yml

      ### Logstash as output

      我們不會(huì)將數(shù)據(jù)發(fā)送到Elasticsearch,而是將其發(fā)送到Logstash。所以找到被注釋掉的Logstash輸出部分,#logstash:.通過(guò)刪除前面的那行以由Uncomment開(kāi)頭的行指示#。然后取消注釋hosts: ["localhost:5044"]行并更改localhost為您的ELK服務(wù)器的私有IP地址。配置文件的部分應(yīng)如下所示:

      packetbeat.yml

      ### Logstash as output

      logstash:

      # The Logstash hosts

      hosts: ["your_ELK_server_private_ip_address:5044"]

      這將配置Packetbeat以連接到端口上的ELK服務(wù)器上的5044Logstash,這是我們?cè)谇疤峤坛讨袨長(zhǎng)ogstash輸入指定的端口。

      接下來(lái),找到該tls部分,并刪除前面的注釋tls:。然后取消注釋指定的行certificate_authorities,并將其值更改為["/etc/pki/tls/certs/logstash-forwarder.crt"]:

      packetbeat.yml

      tls:

      # List of root certificates for HTTPS server verifications

      certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]

      這將配置Packetbeat以使用我們從ELK服務(wù)器復(fù)制的證書(shū)。沒(méi)有這個(gè),客戶端將無(wú)法建立連接。

      如果您想要仔細(xì)檢查您的配置文件,請(qǐng)將此與此示例進(jìn)行比較,這樣可以避免大部分不必要的注釋來(lái)提高可讀性:

      packetbeat.yml

      ############################# Sniffer #########################################

      interfaces:

      device: any

      ############################# Protocols #######################################

      protocols:

      dns:

      ports: [53]

      include_authorities: true

      include_additionals: true

      http:

      ports: [80, 8080, 8081, 5000, 8002]

      memcache:

      ports: [11211]

      mysql:

      ports: [3306]

      pgsql:

      ports: [5432]

      redis:

      ports: [6379]

      thrift:

      ports: [9090]

      mongodb:

      ports: [27017]

      ############################# Output ##########################################

      output:

      ### Logstash as output

      logstash:

      hosts: ["your_ELK_server_private_ip_address:5044"]

      tls:

      certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]

      ############################# Logging #########################################

      logging:

      files:

      rotateeverybytes: 10485760 # = 10MB

      檢查您的配置后,保存文件并退出文本編輯器。

      現(xiàn)在重新啟動(dòng)Packetbeat以使您的更改到位:

      sudo service packetbeat restart

      并且當(dāng)您的服務(wù)器重新啟動(dòng)時(shí),將Packetbeat配置為啟動(dòng):

      sudo update-rc.d packetbeat defaults 95 10

      對(duì)于您要監(jiān)視的任何其他服務(wù)器重復(fù)此部分。

      Packetbeat現(xiàn)在應(yīng)該監(jiān)聽(tīng)網(wǎng)絡(luò)流量并將其發(fā)送到Logstash。我們來(lái)看看它是否正常工作。

      測(cè)試Packetbeat安裝

      此時(shí),您的客戶端服務(wù)器上的Packetbeat應(yīng)該將您網(wǎng)絡(luò)流量的日志發(fā)送到ELK服務(wù)器上的Logstash。Logstash應(yīng)該將Packetbeat數(shù)據(jù)加載到Elasticsearch中,該索引被稱為日期戳索引?packetbeat-YYYY.MM.DD。我們來(lái)測(cè)試一下這個(gè)工作原理是在客戶端機(jī)器上創(chuàng)建一個(gè)簡(jiǎn)單的HTTP請(qǐng)求,并在ELK服務(wù)器上的Elasticsearch中查找該請(qǐng)求。

      在您的客戶端服務(wù)器上,用于curl發(fā)出請(qǐng)求http://www.elastic.co。

      curl http://www.elastic.co/ > /dev/null

      然后,在您的ELK服務(wù)器上,驗(yàn)證Elasticsearch確實(shí)通過(guò)使用以下命令查詢Packetbeat索引來(lái)接收數(shù)據(jù):

      curl -XGET 'http://localhost:9200/packetbeat-*/_search?pretty'

      你應(yīng)該看到一堆如下的輸出:

      Output

      {

      "_index" : "packetbeat-2016.09.29",

      "_type" : "http",

      "_id" : "AVdDG6pDqHsDFrI4DAlI",

      "_score" : 1.0,

      "_source" : {

      如果您的輸出顯示0次總點(diǎn)擊次數(shù),Elasticsearch將不會(huì)在您搜索的索引下加載任何Packetbeat數(shù)據(jù),您應(yīng)該在幾秒鐘后再次嘗試,因?yàn)榭赡苄枰芏虝r(shí)間才能拾取數(shù)據(jù)。如果您在等待后仍然看不到任何結(jié)果,請(qǐng)檢查您的設(shè)置是否有錯(cuò)誤。確保您已將Packetbeat的配置文件指向您轉(zhuǎn)移的證書(shū),因?yàn)槿绻窂讲徽_,它將以靜默方式失敗。

      日志分析服務(wù) LOG

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:[當(dāng)人工智能遇上安全] 1.人工智能真的安全嗎?浙大團(tuán)隊(duì)外灘大會(huì)分享AI對(duì)抗樣本技術(shù)
      下一篇:Spark RDD常用算子整理
      相關(guān)文章
      国产成人精品亚洲2020| 亚洲色大成WWW亚洲女子| 亚洲第一成人影院| 亚洲人成高清在线播放| 亚洲av最新在线网址| 亚洲综合日韩久久成人AV| 精品久久久久亚洲| 亚洲国产精品无码观看久久| 亚洲人成网站色7799| 亚洲欧美日韩国产精品一区| 亚洲av无码片在线观看| 亚洲一区二区三区久久| 亚洲毛片免费观看| 亚洲二区在线视频| 国产成人亚洲合集青青草原精品 | 亚洲电影在线播放| 亚洲欧洲在线观看| 99久久精品国产亚洲| 亚洲精品视频专区| 亚洲国产精品线观看不卡| 亚洲日韩中文字幕天堂不卡| 亚洲国产综合在线| 亚洲国产av美女网站| 91亚洲视频在线观看| 亚洲成年网站在线观看| 亚洲色大成网站WWW国产| 亚洲AV日韩AV永久无码色欲 | 无码久久精品国产亚洲Av影片| 亚洲精品无码不卡| 亚洲精品美女在线观看播放| 亚洲videos| 亚洲人成人伊人成综合网无码| 亚洲av日韩综合一区久热| 午夜亚洲av永久无码精品| MM131亚洲国产美女久久| 亚洲国产精品无码AAA片| 亚洲高清资源在线观看| 亚洲人成电影青青在线播放| 亚洲欧美日韩中文二区| 亚洲日韩VA无码中文字幕| 国产亚洲色婷婷久久99精品|