linux記錄-安裝elk記錄(參考博文)

什麼是ELK?

通俗來說,ELK是由Elasticsearch、Logstash、Kibana 、filebeat三個開源軟件的組成的一個組合體,這三個軟件當中,每一個軟件用於完成不一樣的功能,ELK 又稱爲ELK stack,官方域名爲stactic.co,ELK stack的主要優勢有以下幾個:
處理方式靈活: elasticsearch是實時全文索引,具備強大的搜索功能
配置相對簡單:elasticsearch所有使用JSON 接口,logstash使用模塊配置,kibana的配置文件部分更簡單。
檢索性能高效:基於優秀的設計,雖然每次查詢都是實時,可是也能夠達到百億級數據的查詢秒級響應。
集羣線性擴展:elasticsearch和logstash均可以靈活線性擴展
前端操做絢麗:kibana的前端設計比較絢麗,並且操做簡單前端

什麼是Elasticsearch:

是一個高度可擴展的開源全文搜索和分析引擎,它可實現數據的實時全文搜索搜索、支持分佈式可實現高可用、提供API接口,能夠處理大規模日誌數據,好比Nginx、Tomcat、系統日誌等功能。node

什麼是Logstash

能夠經過插件實現日誌收集和轉發,支持日誌過濾,支持普通log、自定義json格式的日誌解析。linux

什麼是kibana:

主要是經過接口調用elasticsearch的數據,並進行前端數據可視化的展示。nginx

什麼是Beats

Beats在這裏是一個輕量級日誌採集器,其實Beats家族有6個成員,早期的ELK架構中使用Logstash收集、解析日誌,可是Logstash對內存、cpu、io等資源消耗比較高。相比 Logstash,Beats所佔系統的CPU和內存幾乎能夠忽略不計git


爲何使用 ELK?

ELK組件在海量日誌系統的運維中,可用於解決如下主要問題:

  • 分佈式日誌數據統一收集,實現集中式查詢和管理
  • 故障排查
  • 安全信息和事件管理
  • 報表功能

ELK組件在大數據運維繫統中,主要可解決的問題以下:

  • 日誌查詢,問題排查,故障恢復,故障自愈
  • 應用日誌分析,錯誤報警
  • 性能分析,用戶行爲分析

1、elasticsearch部署:

1.新建用戶es:useradd esgithub

2.下載包npm

wget https://artifacts.elastic.co/downloads/logstash/logstash-6.6.0.tar.gz
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.6.0-linux-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.0.tar.gz
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.6.0-linux-x86_64.tar.gzjson

3.環境初始化化(IP  主機名  jdk  git  npm)bootstrap

4.解壓vim

tar xf elasticsearch-6.6.0.tar.gz

mv elasticsearch-6.6.0 es

mkdir  data

mkdir  logs

chown -R es.  es/

cd es/config
vi elasticsearch.yml # 編輯內容

cluster.name: elk
node.name: node-1
path.data: /es/data #固然這個目錄能夠你本身定
path.logs: /es/logs #固然這個目錄能夠你本身定
network.host: 你這臺的ip
http.port: 9200
discovery.zen.ping.unicast.hosts: ["你的ip"]
http.cors.enabled: true # 開放插件head訪問
http.cors.allow-origin: "*" # 開放插件head訪問
bootstrap.system_call_filter: false

啓動

cd es
./bin/elasticsearch &

配置

1、max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]

異常緣由:單進程可打開文件數不夠
解決辦法:

sudo vim /etc/security/limits.conf
在最下面一行添加(具體數值看你報錯的數,按照他推薦的來):
es soft nofile 65536 # 軟限制,小於等於下面的數值
es hard nofile 65536 # 硬限制
返回後從新登陸該帳戶(否則數量不變化)
ulimit -Hn # 查看數量是否爲65536

2、max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

異常緣由:jvm最大進程數低
解決辦法:

sudo vim /etc/sysctl.conf
而後添加下面這行
vm.max_map_count=655360
保存退出,而後查看
sysctl -p # 顯示的數量爲更改後的就沒問題了

3、(個人服務器並未報這個異常)

memory locking requested for elasticsearch process but memory is not locked
解決辦法:

vim /etc/security/limits.conf
es - memlock unlimited

4、(個人服務器並未報這個異常)

max number of threads [3802] for user [elastic] is too low, increase to at least [4096]
解決辦法:

$ vim /etc/security/limits.d/20-nproc.conf
es    - nproc 4096

最後敲下面這行命令若是顯示下面這樣的json就算成功了
curl http://192.168.66.128:9200

{
"name" : "node-1",
"cluster_name" : "elk",
"cluster_uuid" : "SgN1OKlHRy6eaeMKCEHJig",
"version" : {
"number" : "6.6.0",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "a9861f4",
"build_date" : "2019-01-24T11:27:09.439740Z",
"build_snapshot" : false,
"lucene_version" : "7.6.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}

安裝head插件(安裝完就能夠在瀏覽器顯示了)

git clone https://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head/
sudo npm install -g grunt-cli
sudo npm install # 這一步我報錯了,安裝phantomjs錯誤,可是無大礙。
修改Gruntfile.js:
connect: {
server: {
options: {
port: 9100,
hostname: "*", # 新增
base: '.',
keepalive: true
}
}
}

});

修改_site/app.js # 若是很差找這一行,進入vi後非編輯狀態下輸入/localhost就找到了
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://你的ip:9200"; # 修改成本身的服務

grunt server #啓動命令

 安裝logstash

tar xvf  logstash-6.6.0.tar.gz

mv  logstash-6.6.0  logstash

測試logstash服務是否正常

bin/logstash -e 'input { stdin { } } output { stdout {} }'

輸入hello  肯定

建立配置目錄和配置文件logstash/etc/nginx.conf

# 監聽5044端口做爲輸入
input {
beats {
port => "5044"
}
}
# 數據過濾
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
geoip {
source => "clientip"
}
}
# 輸出配置爲本機的9200端口,這是ElasticSerach服務的監聽端口
output {
elasticsearch {
hosts => ["192.168.66.128:9200"]
}
}

啓動服務

nohup bin/logstash -f etc/nginx.conf --config.reload.automatic &

安裝filebeat 

解壓文件

vim filebeat.yml

enabled: true
    - /var/log/nginx/*.log
   #output.elasticsearch:
# hosts: ["localhost:9200"]
output.logstash:
hosts: ["192.168.66.128:5044"]

驗證:egrep -v '^$|#' filebeat.yml

啓動FileBeat

nohup ./filebeat -e -c filebeat.yml &>/dev/null &

安裝kibana

tar xvf  kibana-6.6.0-linux-x86_64.tar.gz

mv  kibana-6.6.0-linux-x86_64  kibana

vim kibana/config/kibana/yaml

server.port: 5601

server.host: "192.168.66.128"

server.name: "es"

elasticsearch.preserveHost: true

elasticsearch.username: "es"
elasticsearch.password: "es"

i18n.locale: "cn"
xpack.monitoring.ui.container.elasticsearch.enabled: "true"

啓動

bin/kibana 

http://192.168.66.128:5601

Discover->輸入logstash-*,點擊」Next step」->選擇Time Filter,再點擊「Create index pattern」->頁面提示建立Index Patterns成功:

在下圖的此處能夠關鍵詞搜索:error*,也能夠查看nginx的報錯信息

配置tomcat

filebeat.yml添加

- type: log
enabled: true
paths:
- /usr/app/tomcat8087/logs/localhost_access_log.*.txt

重啓filebeat

kill -9 $(ps -ef | grep -i "filebeat" | awk '{print $2}')

nohup ./filebeat -e -c filebeat.yml &>/dev/null &

kibana搜索tomcat

相關文章
相關標籤/搜索