ELK是三款開源軟件的縮寫,即:ElasticSearch + Logstash + Kibana。這三個工具組合造成了一套實用、易用的監控架構,可抓取系統日誌、apache日誌、nginx日誌、mysql日誌等多種日誌類型,目前不少公司用它來搭建可視化的集中式日誌分析平臺。
ElasticSearch:是一個分佈式的RESTful風格的搜索和數據分析引擎,同時還提供了集中存儲功能,它主要負責將logstash抓取來的日誌數據進行檢索、查詢、分析等。
Logstash:日誌處理工具,負責日誌收集、轉換、解析等,並將解析後的日誌推送給ElasticSearch進行檢索。
Kibana:Web前端,能夠將ElasticSearch檢索後的日誌轉化爲各類圖表,爲用戶提供數據可視化支持。
Filebeat:輕量型日誌採集器,負責採集文件形式的日誌,並將採集來的日誌推送給logstash進行處理。
Winlogbeat:輕量型windows事件日誌採集器,負責採集wondows的事件日誌,並將採集來的日誌推送給logstash進行處理。javascript
因爲我這邊是測試環境,因此ElasticSearch + Logstash + Kibana這三個軟件我都是裝在一臺機器上面,若是是生產環境,建議分開部署,而且ElasticSearch可配置成集羣方式。
IP:192.168.2.207(ELK服務器,CentOS 7)
IP:192.168.2.203(filebeat,nginx服務器,CentOS 7)
IP:192.168.2.204(filebeat,apache服務器,CentOS 7)
IP:192.168.2.206(winlogbeat,windows 10)php
一、關閉 selinux 和防火牆(這裏暫時關閉iptables,部署完成後再開啓)css
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config sed -i 's/SELINUXTYPE=targeted/#&/' /etc/selinux/config setenforce 0 # 能夠設置配置文件永久關閉 systemctl stop firewalld.service
二、安裝配置iptables前端
yum -y install iptables iptables-services vim /etc/sysconfig/iptables # 添加以下端口策略 -A INPUT -p tcp -m state --state NEW -m tcp --dport 9200 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 5601 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 5044 -j ACCEPT
啓動iptablesjava
systemctl start iptables.service
systemctl enable iptables.service # 將iptables加入開機啓動
查看iptables狀態systemctl status iptables.service
重啓系統reboot # 更改selinux須要重啓系統纔會生效
三、安裝java 8及相關軟件yum -y install vim wget java java-devel
查看java版本java -version
四、下載ELK及相關軟件
ELK服務器需下載
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.rpm
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.2.4-x86_64.rpm
wget https://artifacts.elastic.co/downloads/logstash/logstash-6.2.4.rpm
Linux節點服務器需下載
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.2.4-x86_64.rpm
windows節點服務器需下載node
一、yum方式安裝ELKmysql
yum localinstall -y elasticsearch-6.2.4.rpm yum localinstall -y kibana-6.2.4-x86_64.rpm yum localinstall -y logstash-6.2.4.rpm
二、建立ELK存放數據和日誌目錄linux
mkdir -pv /data/elasticsearch/{data,logs} mkdir -pv /data/logstash/{data,logs} chown -R elasticsearch.elasticsearch /data/elasticsearch/ chown -R logstash.logstash /data/logstash/
三、修改ELK配置文件nginx
vim /etc/elasticsearch/elasticsearch.yml
path.data: /data/elasticsearch/data path.logs: /data/elasticsearch/logs network.host: 0.0.0.0 http.port: 9200 vim /etc/logstash/logstash.yml path.data: /data/logstash/data path.logs: /data/logstash/logs
vim /etc/logstash/conf.d/logstash.conf # 添加以下內容 input { beats { port => 5044 codec => plain { charset => "UTF-8" } } } output { elasticsearch { hosts => "127.0.0.1:9200" manage_template => false index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}" document_type => "%{[@metadata][type]}" } }
vim /etc/kibana/kibana.yml
server.port: 5601 server.host: "192.168.2.207" elasticsearch.url: "http://localhost:9200"
四、安裝配置nginx
安裝nginx和http用戶認證工具sql
yum -y install epel-release yum -y install nginx httpd-tools
修改nginx配置
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak vim /etc/nginx/nginx.conf
把下圖中這一段註釋掉
vim /etc/nginx/conf.d/kibana.conf # 添加以下內容 server { listen 80; server_name kibana; auth_basic "Restricted Access"; auth_basic_user_file /etc/nginx/kibana-user; //http認證文件 location / { proxy_pass http://192.168.2.207:5601; //代理的kibana地址 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; } }
生成http用戶認證文件,生成文件kibana-user,並添加用戶henhhhtpasswd -cm /etc/nginx/kibana-user henhh
此處須要輸入兩遍密碼
五、啓動ELK和nginx
systemctl daemon-reload # 從新加載全部配置文件 systemctl start elasticsearch logstash kibana nginx # 啓動ELK和nginx systemctl enable elasticsearch logstash kibana nginx # 將ELK和nginx加入開機啓動 systemctl status elasticsearch logstash kibana nginx #查看ELK和nginx啓動狀態
查看端口是否已監聽
六、查看elasticsearch狀態curl -XGET 'http://192.168.2.207:9200/_cluster/state/nodes?pretty'
查看elasticsearch的master
curl -XGET 'http://192.168.2.207:9200/_cluster/state/master_node?pretty' curl -XGET 'http://192.168.2.207:9200/_cat/master?v'
查看健康狀態
curl -XGET 'http://192.168.2.207:9200/_cat/health?v' curl -XGET 'http://192.168.2.207:9200/_cluster/health?pretty'
對於這個健康狀態green(綠色)爲最好
安裝filebeat,進入到以前下載安裝包的目錄,執行yum方式安裝yum localinstall -y filebeat-6.2.4-x86_64.rpm
修改filebeat配置
vim /etc/filebeat/filebeat.yml
- type: log enabled: true - /var/log/*.log - /var/log/messages filebeat.config.modules: path: ${path.config}/modules.d/*.yml reload.enabled: false setup.template.settings: index.number_of_shards: 3 setup.kibana: host: "192.168.2.207:5601" #output.elasticsearch: //咱們輸出到logstash,把這行註釋掉 #hosts: ["localhost:9200"] //這行也註釋掉 output.logstash: hosts: ["192.168.2.207:5044"]
啓用nginx模塊filebeat modules enable nginx
修改nginx模塊配置
vim /etc/filebeat/modules.d/nginx.yml
- module: nginx access: enabled: true var.paths: ["/var/log/nginx/access.log*"] error: enabled: true var.paths: ["/var/log/nginx/error.log*"]
啓用apache模塊filebeat modules enable apache2
修改apache模塊配置
vim /etc/filebeat/modules.d/apache2.yml
- module: apache2 access: enabled: true var.paths: ["/var/log/httpd/access_log*"] error: enabled: true var.paths: ["/var/log/httpd/error_log*"]
啓動filebeat
systemctl start filebeat systemctl enable filebeat systemctl status filebeat
解壓winlogbeat-6.2.4-windows-x86_64.zip,以管理員方式運行PowerShell,進入到解壓後的目錄,執行.\install-service-winlogbeat.ps1來安裝服務。若是報錯提示在此係統上禁止腳本運行,那就執行PowerShell.exe -ExecutionPolicy UnRestricted -File .\install-service-winlogbeat.ps1,即可安裝成功。
修改配置文件 :winlogbeat.yml
winlogbeat.event_logs: - name: Application ignore_older: 72h - name: Security - name: System setup.template.settings: index.number_of_shards: 3 setup.kibana: host: "192.168.2.207:5601" #output.elasticsearch: //咱們輸出到logstash,因此這行註釋掉 #hosts: ["localhost:9200"] //這行也註釋掉 output.logstash: hosts: ["192.168.2.207:5044"] logging.to_files: true logging.files: path: D:/winlogbeat/winlogbeat/Logs logging.level: info
使用如下命令檢查配置文件的正確性,出現Config OK說明配置文件正確。.\winlogbeat.exe test config -c .\winlogbeat.yml -e
啓動winlogbeat服務
打開service(服務),找到winlogbeat,啓動它。
命令行啓動方式,執行下面命令Start-Service winlogbeat
瀏覽器訪問http://192.168.2.207,輸入以前經過htpasswd認證的用戶名和密碼登錄kibana。
點擊Management,而後點擊Index Patterns,再點擊Create index pattern
輸入filebeat-,而後點擊Next step
選擇@timestamp,而後點擊Create index pattern
按照此方法再建立一個名爲winlogbeat-的索引模式。
建立好後,點擊Discover,就能夠看到以下圖頁面的日誌內容了。