ELK CentOS 安裝教學

因最近常常看到群組在推 ELK 日誌分析,因此也剛好最近都在玩 Graylog 日誌分析,順便安裝起來,來比較看看這兩套的差異性是什麼。

ELK 簡介


ELK 是一個日誌分析平台,主要由 ElasticsearchLogstashKibana 這三套開源套件組合成。 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 是一款輕量型網路數據包分析器,能夠將數據發送至 LogstashElasticsearch
    • 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
  • 測試是否可以正常登入

elk-01.png




參考相關網頁