ELK CentOS 安裝教學
因最近常常看到群組在推 ELK 日誌分析,因此也剛好最近都在玩 Graylog
日誌分析,順便安裝起來,來比較看看這兩套的差異性是什麼。
ELK 簡介
ELK 是一個日誌分析平台,主要由 Elasticsearch
、Logstash
、Kibana
這三套開源套件組合成。
Elasticsearch
是一個開源全文搜索和分析引擎,它可以實現數據的實時全文搜索,可以處理大規模日誌數據,例如:Nginx、Tomcat、系統日誌等功能。
Logstash
負責日誌收集和轉發,支持日誌過濾、普通Log、自定義 json 格式的日誌解析。
Kibana
通過接口調用 Elasticsearch
的數據,並進行前端數據可視化。
運行環境
CentOS 7、Elasticsearch 7.5、Kibana 7.5、logstash 7.5
安裝過程
- 此套件服務需要
Java
套件來執行服務,因此要先安裝開源的OpenJDK
套件。
yum -y install java-openjdk-devel java-openjdk
Elasticsearch套件
首先到 Elasticsearch 官方 下載公共密鑰
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
新增 ELK
來源庫
- Elasticsearch 7.x
cat <<EOF | sudo tee /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF
- Elasticsearch 6.x
cat <<EOF | sudo tee /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF
- 加入來源庫之後導入
GPG
密鑰
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
- 更新
YUM
套件包索引
yum clean all
yum makecache
- 開始安裝
Elasticsearch
服務
yum -y install elasticsearch
- 設定
JVM
選項,(例如:記憶體限制)/etc/elasticsearch/jvm.options
這是預設的記憶體最小值及最大值
-Xms1g
-Xmx1g
如果記憶體不足可以修改成如下
-Xms256m
-Xmx512m
- 啟動服務
systemctl enable --now elasticsearch.service
- 測試是否有正常運行
curl http://127.0.0.1:9200
正常運行如下
{
"name" : "CentOS7-ELK",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "04nHZJcnRQypvdnrLlGBOQ",
"version" : {
"number" : "7.5.2",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "8bec50e1e0ad29dad5653712cf3bb580cd1afcdf",
"build_date" : "2020-01-15T12:11:52.313576Z",
"build_snapshot" : false,
"lucene_version" : "8.3.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
- 建立一個測試索引
curl -X PUT "http://127.0.0.1:9200/mytest_index"
執行結果如下
{"acknowledged":true,"shards_acknowledged":true,"index":"mytest_index"}
Kibana套件
- 下指令安裝
yum -y install kibana
- 設定
kibana.yml
設定檔
vim /etc/kibana/kibana.yml
將下面這三個註解刪掉
server.port: 5601
server.host: "localhost"
elasticsearch.hosts: ["http://localhost:9200"]
- 啟動服務
systemctl enable --now kibana
Logstash套件
- 下指令安裝
yum -y install logstash
安裝其他搭配 ELK 套件
-
其他套件:
Filebeat
:用於日誌的輕量型採集器,通過提供一種轉發和匯總日誌與文件的輕量級方法,讓簡單的事情不再繁雜。Metricbeat
:用於從系統和服務收集指標。Metricbeat
能夠以一種輕量型的方式,傳送各種系統和服務統計數據,從 CPU 到記憶體,從 Redis 到 Nginx ,不一而足。Packetbeat
:輕量型網路數據收集器,用於深挖網線上傳輸的數據,了解應用程序動態。Packetbeat
是一款輕量型網路數據包分析器,能夠將數據發送至Logstash
或Elasticsearch
。Heartbeat
:用於正常運行時間監視的輕量型收集器,它通過主動控測幫助您監視服務的可用性。Auditbeat
:輕量型審計日誌收集器,可幫助您審核系統上用戶和進程的活動。
-
套件安裝指令
yum install filebeat auditbeat metricbeat packetbeat heartbeat-elastic -y
Nginx套件
- 使用 Web 服務來進行網頁連線
yum install epel-release -y
yum install nginx httpd-tools -y
- 新增
ELK
設定檔
vim /etc/nginx/conf.d/elkstack.conf
- 輸入下面的設定
server {
listen 80;
server_name elkstack;
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/htpasswd.kibana;
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.conf
裡面有一段設定要刪除
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
- 設定
ELK
訪問頁面帳號密碼
htpasswd -c /etc/nginx/htpasswd.kibana admin
- 測試是否可以正常登入