1. 程式人生 > >CentOS 7安裝部署ELK 6.2.4

CentOS 7安裝部署ELK 6.2.4

ELK CentOS7 日誌服務器 日誌管理 安裝ELK

一、ELK介紹

ELK是三款開源軟件的縮寫,即:ElasticSearch + Logstash + Kibana。這三個工具組合形成了一套實用、易用的監控架構,可抓取系統日誌、apache日誌、nginx日誌、mysql日誌等多種日誌類型,目前很多公司用它來搭建可視化的集中式日誌分析平臺。
ElasticSearch:是一個分布式的RESTful風格的搜索和數據分析引擎,同時還提供了集中存儲功能,它主要負責將logstash抓取來的日誌數據進行檢索、查詢、分析等。
Logstash:日誌處理工具,負責日誌收集、轉換、解析等,並將解析後的日誌推送給ElasticSearch進行檢索。
Kibana:Web前端,可以將ElasticSearch檢索後的日誌轉化為各種圖表,為用戶提供數據可視化支持。

Filebeat:輕量型日誌采集器,負責采集文件形式的日誌,並將采集來的日誌推送給logstash進行處理。
Winlogbeat:輕量型windows事件日誌采集器,負責采集wondows的事件日誌,並將采集來的日誌推送給logstash進行處理。

二、部署環境

由於我這邊是測試環境,所以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)

三、安裝前的準備工作

1、關閉 selinux 和防火墻(這裏暫時關閉iptables,部署完成後再開啟)

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

2、安裝配置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

啟動iptables

systemctl start iptables.service
systemctl enable iptables.service   # 將iptables加入開機啟動

查看iptables狀態
systemctl status iptables.service
重啟系統
reboot # 更改selinux需要重啟系統才會生效
3、安裝java 8及相關軟件
yum -y install vim wget java java-devel
查看java版本
java -version
技術分享圖片
4、下載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節點服務器需下載
技術分享圖片

四、安裝配置ELK

1、yum方式安裝ELK

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

2、創建ELK存放數據和日誌目錄

mkdir -pv /data/elasticsearch/{data,logs}
mkdir -pv /data/logstash/{data,logs}
chown -R elasticsearch.elasticsearch /data/elasticsearch/
chown -R logstash.logstash /data/logstash/

3、修改ELK配置文件

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"

4、安裝配置nginx
安裝nginx和http用戶認證工具

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,並添加用戶henhh
htpasswd -cm /etc/nginx/kibana-user henhh
此處需要輸入兩遍密碼
5、啟動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啟動狀態

查看端口是否已監聽
技術分享圖片
6、查看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(綠色)為最好

五、Linux節點服務器安裝配置filebeat

安裝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

六、windows節點服務器安裝配置winlogbeat

解壓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,就可以看到如下圖頁面的日誌內容了。
技術分享圖片

CentOS 7安裝部署ELK 6.2.4