第一章 什麼是ELK前端
通俗來說,ELK是由Elasticsearch、Logstash、Kibana 三個開源軟件的組成的一個組合體,這三個軟件當中,每一個軟件用於完成不一樣的功能,ELK 又稱爲ELK stack,官方域名爲stactic.co,ELK stack的主要優勢有以下幾個:java
處理方式靈活: elasticsearch是實時全文索引,具備強大的搜索功能node
配置相對簡單:elasticsearch所有使用JSON 接口,logstash使用模塊配置,kibana的配置文件部分更簡單。python
檢索性能高效:基於優秀的設計,雖然每次查詢都是實時,可是也能夠達到百億級數據的查詢秒級響應。mysql
集羣線性擴展:elasticsearch和logstash均可以靈活線性擴展linux
前端操做絢麗:kibana的前端設計比較絢麗,並且操做簡單nginx
是一個高度可擴展的開源全文搜索和分析引擎,它可實現數據的實時全文搜索搜索、支持分佈式可實現高可用、提供API接口,能夠處理大規模日誌數據,好比Nginx、Tomcat、系統日誌等功能。web
能夠經過插件實現日誌收集和轉發,支持日誌過濾,支持普通log、自定義json格式的日誌解析。redis
主要是經過接口調用elasticsearch的數據,並進行前端數據可視化的展示。sql
第二章 安裝準備
2.1 安裝JDK環境
yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel -y [root@elk3 tools]# echo "export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.51.x86_64 \ > export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar\ > export PATH=$PATH:$JAVA_HOME/bin" >> /etc/profile [root@elk2 ~]# source /etc/profile [root@elk3 tools]# java -version openjdk version "1.8.0_161" OpenJDK Runtime Environment (build 1.8.0_161-b14) OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)
2.2 修改文件限制
# 修改系統文件 vim /etc/security/limits.conf #增長的內容 * soft nofile 65536 * hard nofile 65536 * soft nproc 2048 * hard nproc 4096
2.3 調整進程數
#修改系統文件 vim /etc/security/limits.d/20-nproc.conf #調整成如下配置 * soft nproc 4096 root soft nproc unlimited
2.4 調整虛擬內存&最大併發鏈接
#修改系統文件 vim /etc/sysctl.conf #增長的內容 vm.max_map_count=655360 fs.file-max=655360
2.5 建立普通用戶
groupadd elk useradd elk -g elsearch -p 123456 chown -R elk.elk /server/tools/elasticsearch-6.2.3
2.6 建立數據目錄
mkdir -p /var/data/elasticsearch && chown -R elk.elk /var/data/elasticsearch mkdir -p /var/log/elasticsearch && chown -R elk.elk /var/log/elasticsearch
第三章 部署ELK
Elasticsearch是一個高度可擴展的開源全文搜索和分析引擎。它容許您快速,近實時地存儲,搜索和分析大量數據。它一般用做支持具備複雜搜索功能和需求的應用程序的底層引擎/技術。
3.1 安裝Elasticsearch
cat >/server/tools/elasticsearch-6.2.3/config/elasticsearch.yml <<END cluster.name: ES node.name: ES0 path.data: /var/data/elasticsearch path.logs: /var/log/elasticsearch network.host: 10.0.0.19 http.port: 9200 transport.tcp.port: 9300 discovery.zen.ping.unicast.hosts: ["10.0.0.19:9300", "10.0.0.21:9300","10.0.0.22:9300"] discovery.zen.minimum_master_nodes: 2 END cat >/server/tools/elasticsearch-6.2.3/config/elasticsearch.yml <<END cluster.name: ES node.name: ES1 path.data: /var/data/elasticsearch path.logs: /var/log/elasticsearch network.host: 10.0.0.21 http.port: 9200 transport.tcp.port: 9300 discovery.zen.ping.unicast.hosts: ["10.0.0.19:9300", "10.0.0.21:9300","10.0.0.22:9300"] discovery.zen.minimum_master_nodes: 2 END cat >/server/tools/elasticsearch-6.2.3/config/elasticsearch.yml <<END cluster.name: ES node.name: ES2 path.data: /var/data/elasticsearch path.logs: /var/log/elasticsearch network.host: 10.0.0.22 http.port: 9200 transport.tcp.port: 9300 discovery.zen.ping.unicast.hosts: ["10.0.0.19:9300", "10.0.0.21:9300","10.0.0.22:9300"] discovery.zen.minimum_master_nodes: 2 END
啓動
elk@elk1 elasticsearch-6.2.3]$ ./bin/elasticsearch
3.2 安裝logstash
[root@elk3 ~]# mkdir -p /server/tools [root@elk3 ~]# cd /server/tools/ [root@elk3 tools]# tar xf kibana-6.2.3-linux-x86_64.tar.gz [root@elk3 tools]# tar xf logstash-6.2.3.tar.gz 數據&日誌目錄 #建立Logstash數據目錄 #建立Logstash日誌目錄 mkdir -p /var/data/logstash && chown -R elk.elk /var/data/logstash mkdir -p /var/logs/logstash && chown -R elk.elk /var/logs/logstash 配置數據&日誌目錄 #打開目錄 cd /server/tools/logstash-6.2.3/ #修改配置 vim config/logstash.yml #增長如下內容 path.data: /var/data/logstash path.logs: /var/logs/logstash 配置Redis&Elasticsearch [root@elk3 config]# cat system.conf input { file { path => "/var/log/*" type => "system" start_position => "beginning" } } output { elasticsearch { hosts => ["10.0.0.21:9200","10.0.0.19:9200","10.0.0.22:9200"] index => "system-%{+YYYY.MM.dd}" } } [root@elk3 config]# 注:該配置就是從redis中讀取數據,而後寫入指定的elasticsearch
啓動
切換普通用戶 [root@elk3 config]# su - elk #進入Logstash根目錄 [elk@elk3 ~]$ cd /server/tools/logstash-6.2.3/ #啓動 /bin/logstash -f config/system.conf 啓動成功後,在啓動輸出的最後一行會看到以下信息: [2018-04-03T10:54:35,819][INFO ][logstash.pipeline ] Pipeline started succesfully {:pipeline_id=>"main", :thread=>"#<Thread:0x15a6d6d9 run>"} [2018-04-03T10:54:36,086][INFO ][logstash.agent ] Pipelines running {:count=>1, :pipelines=>["main"]}
3.3 安裝kibana
[root@elk3 tools]# tar xf kibana-6.2.3-linux-x86_64 chown elk:elk /server/tools/kibana-6.2.3-linux-x86_64 #修改配置 #進入kibana根目錄 cd /server/tools/kibana-6.2.3-linux-x86_64 #修改配置 vi config/kibana.yml #修改如下內容 [root@elk3 kibana-6.2.3-linux-x86_64]# egrep -v "^#|^$" config/kibana.yml server.port: 5601 server.host: "10.0.0.24" elasticsearch.url: "http://10.0.0.21:9200" [root@elk3 kibana-6.2.3-linux-x86_64]# 啓動 切換普通用戶啓動 [root@elk3 kibana-6.2.3-linux-x86_64]# su - elk [elk@elk3 ~]$ cd /server/tools/kibana-6.2.3-linux-x86_64/ [elk@elk3 kibana-6.2.3-linux-x86_64]$ bin/kibana
瀏覽器訪問
http://10.0.0.24:5601
第四章 Filebeat配置
系統Filebeat模塊收集並分析由基於Unix / Linux的常見發行版的系統日誌記錄服務建立的日誌。
安裝 curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.2.3-x86_64.rpm rpm -vi filebeat-6.2.3-x86_64.rpm 安裝插件 bin/elasticsearch-plugin install ingest-geoip bin/elasticsearch-plugin install ingest-user-agent 修改/etc/filebeat/filebeat.yml以設置鏈接信息 output.elasticsearch: hosts: ["<es_url>"] username: "elastic" password: "<password>" setup.kibana: host: "<kibana_url>" 啓用並配置系統模塊 filebeat modules enable system 修改/etc/filebeat/modules.d/system.yml文件中的設置。 啓動Filebeat filebeat setup systemctl restart filebeat.service
配置nginx和mysql日誌查詢 #vim /etc/filebeat/modules.d/mysql.yml - module: mysql # Error logs error: enabled: true # Set custom paths for the log files. If left empty, # Filebeat will choose the paths depending on your OS. var.paths: ["/data/mysql/czypweb.err*"] # Slow logs slowlog: enabled: true # Set custom paths for the log files. If left empty, # Filebeat will choose the paths depending on your OS. var.paths: ["/data/mysql/mysql-slow.log*"] #vim /etc/filebeat/modules.d/nginx.yml - module: nginx # Access logs access: enabled: true # Set custom paths for the log files. If left empty, # Filebeat will choose the paths depending on your OS. var.paths: ["/usr/local/openresty/nginx/logs/access.log*"] # Error logs error: enabled: true # Set custom paths for the log files. If left empty, # Filebeat will choose the paths depending on your OS. var.paths: ["/usr/local/openresty/nginx/logs/error.log*"] 修改filebeat配置文件開啓模塊功能
作完以上子啊瀏覽器面板查看
第5章 System metrics
系統Metricbeat模塊從主機收集CPU,內存,網絡和磁盤統計信息。它收集系統範圍的統計信息以及每一個進程和每一個文件系統的統計信息。
下載 curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-6.2.3-x86_64.rpm sudo rpm -vi metricbeat-6.2.3-x86_64.rpm 配置 /etc/metricbeat/metricbeat.yml metricbeat.config.modules: path: ${path.config}/modules.d/*.yml reload.enabled: true reload.period: 10s output.elasticsearch: hosts: ["<es_url>"] username: "elastic" password: "<password>" setup.kibana: host: "<kibana_url>" 啓用並配置系統模塊 metricbeat modules enable system 1 啓動Metricbeat metricbeat setup service metricbeat start systemctl enable metricbeat.service開機自啓