首頁

目前文章總數:157 篇

  

最後更新:2024年 12月 07日

0052. 在CentOS Linux作業系統架設免費開源 GrayLog 收集Log資訊

日期:2023年 10月 22日

標籤: Linux CentOS Asp.net Core Web MVC Web Elasticsearch Java Ningx

摘要:C# 學習筆記


注意事項1:此篇是2023.10.22文章,如果是安裝非以下套件版本
      可能安裝過程會有相依性問題
注意事項2:此篇範例是將套件安裝在同一個Server下,並假定已安裝Nginx
應用所需:1. Linux主機 (本篇用CentOS 版本:7.8.2003)
     2. Java (版本:1.8.0)
     3. MongoDB (版本:6.0)
     4. GrayLog (版本:5.1)
     5. Elasticsearch (版本:7.17.14)
     6. Nginx (版本:nginx/1.24.0)
解決問題:架設GrayLog Server收集Log,並且透過GrayLog WebUI介面查詢Log
基本介紹:本篇分為四大部分。
第一部分:安裝Elasticsearch
第二部分:安裝MongoDB
第三部分:安裝GrayLog
第四部分:GrayLog WebUI測試






第一部分:安裝Elasticsearch

Step 1:介紹

Elasticsearch是一個開源搜尋引擎,用於開源即時搜尋和分析大規模數據
Wiki說明:Wiki
GrayLog與相依的主要原因如下:

特色   說明
1. 高效的全文搜尋 Elasticsearch提供快速、強大的全文搜尋功能,使 Graylog 能夠在大規模的日誌資料中執行高效的搜尋操作。
2. 即時資料分析 基於Elasticsearch 讓 Graylog 可實現複雜的查詢和分析操作,可快速反映分析內容。



Step 2:安裝Java 1.8.0

Elasticsearch 依賴於Java套件,需要先安裝Java
進入CentOS後輸入以下:

sudo yum install java-1.8.0-openjdk-headless



Step 3:安裝Elasticsearch-GPG

安裝 Elasticsearch 的 GPG 密鑰
CentOS輸入以下:

sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch



Step 4:安裝Elasticsearch-新增檔案

在CentOS的目錄下新增 /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




Step 5:安裝Elasticsearch

檔案配置好後,因為標記為7.x 因此只會安裝主版號為7的最新套件
Centos輸入以下:

sudo yum install elasticsearch




Step 6:調整Elasticsearch配置

安裝完成後,請於 /etc/elasticsearch/elasticsearch.yml 開啟該檔案
將在cluster.name 的地方設定為 grayLog
※因為我們要將Elasticsearch與GrayLog相依


Step 7:啟動Elasticsearch

安裝後,依序輸入以下指令,讓其啟動,並保持開機的時侯自動執行
Centos依序輸入以下:
6-1. 開機自動啟動

sudo systemctl enable elasticsearch.service


6-2. 現在立刻執行
※現在會執行失敗是正常,因為GrayLog尚未安裝,最後重啟Server時,一切都會正常

sudo systemctl start elasticsearch.service





第二部分:安裝MongoDB

Step 1:介紹

MongoDB 是一種 NoSQL 資料庫,其特點是文件存儲,具分散式處理架構之數據庫。
Wiki說明:Wiki
GrayLog主要依賴於MongoDB做存儲,因此必需安裝

Step 2:安裝MongoDB-新增檔案

在CentOS的目錄下新增 /etc/yum.repos.d/elasticsearch.repo 檔案
內容如下,請新增:

[mongodb-org-6.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/6.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc




Step 3:安裝MongoDB-主程式

因為已經配置好指定版本,因此指令不需要輸入版號
CentOS輸入以下:

sudo yum install mongodb-org




Step 4:啟動MongoDB

安裝後,依序輸入以下指令,讓其啟動,並保持開機的時侯自動執行
Centos依序輸入以下:
4-1. 開機自動啟動

sudo systemctl enable mongod


4-2. 現在立刻執行

sudo systemctl start mongod





第三部分:安裝GrayLog

Step 1:介紹

GrayLog是Log(日誌)管理與分析的開源平台軟體
Wiki說明:Wiki
GrayLog簡要優缺點出:

優點   說明
1. 開源且免費 適合小型和中小型組織,並且提供免費的Log收集
2. 高效能 與Elasticsearch、MongoDB結合,擁有強大的搜尋和過濾功能
3. 即時監控和儀表板 提供WebUI可視覺化介面
4. 分散式架構支持 可以橫向擴展,多點的情況下亦可適合大型組織分析Log


缺點   說明
1. 學習曲線 查詢語法、與介面使用、配置、管理等都需要學習
2. 部署複雜 相依Elasticsearch、MongoDB,加上本身GrayLog具彈性配置,導致部署複雜
3. 儲存空間大 因相依MongoDB,使用BSON(二進位Json)的關係,在大量的Log寫入後,空間會大量占用



Step 2:安裝GrayLog庫

添加GrayLog 5.1官方庫到Server
進入CentOS後輸入以下:

sudo rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-5.1-repository_latest.rpm



Step 3:安裝GrayLog庫-新增檔案

在CentOS 的目錄 /etc/yum.repos.d/graylog.repo 新增此檔案
檔案內容如下:

[graylog]
name=graylog
baseurl=https://packages.graylog2.org/repo/el/stable/5.1/$basearch/
gpgcheck=1
repo_gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-graylog




Step 4:取得GrayLog Sha2密碼-1

GrayLog強制需要設定密碼,需要安裝用戶先產生sha2的密碼,以便取得 root_password_sha2
CentOS輸入以下:

echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1



Step 5:取得GrayLog Sha2密碼-2

這邊範例是輸入123fff,然後得到一串雜湊
得到以下(每個人的會不同):

425de316d06a663e755e6b8ad72b92f8fc313afd18dc29fd485a9f1284fb678c




Step 6:取得GrayLog 安全密碼

接著要取得 password_secret
先輸入以下:

< /dev/urandom tr -dc A-Z-a-z-0-9 | head -c${1:-96};echo;


可以得到(每個人的會不同):

jDH2Eo5m6zjjwgIA2y3d6sBFmvXArC4SVlfXlMLmhD4OFFDKFSyleuIZ2aHY0d2iLvAtVd2pUGFoaB-HZISqlx7dE7CcoBAt




Step 7:配置GrayLog conf設定檔

安裝完後還需要接著進入目錄 /etc/graylog/server/server.conf 開啟檔案,進行配置,依序配置以下:
7-1. 設定 root_password_sha2 (對應Step 5)


7-2. 設定 password_secret (對應Step 6)


7-3. 設定 root_timezone = ROC (預設UTC,依照所需而設定,ROC為亞洲)


7-4. 設定 allow_leading_wildcard_searches = true (設true表示可以用 * 查詢Log)



Step 8:啟動GrayLog

安裝後,依序輸入以下指令,讓其啟動,並保持開機的時侯自動執行
Centos依序輸入以下:
8-1. 開機自動啟動

sudo systemctl enable graylog-server.service


4-2. 現在立刻執行

sudo systemctl start graylog-server.service



Step 9:配置Nginx-1

要啟動GrayLog WebUI還需要對Nginx做配置
進入Nginx目錄 /etc/nginx/conf.d/graylog.conf 並新增檔案graylog.conf
※預設只會有default.conf


Step 10:配置Nginx-2

將以下內容輸入到檔案graylog.conf 中
listen 9001 是webUI的端口,其中proxy_pass的9000是GrayLog Server安裝時的預設Port號

server {
    listen       9001;
    server_name  localhost;

    location / {
            proxy_set_header Host $http_host;
      proxy_set_header X-Forwarded-Host $host;
      proxy_set_header X-Forwarded-Server $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Graylog-Server-URL http://$server_name/;
      proxy_pass       http://127.0.0.1:9000;    
      }
}





Step 11:重新開機

上述都設定完成後,重新開機

reboot





第四部分:GrayLog WebUI測試

Step 1:GrayLog查詢網站

重新開機後進入 -> http://192.168.51.62:9001/
可以看到以下畫面,帳號預設是admin 密碼是設定的Sha2(這裡用123fff)


Step 2:GrayLog - 登入

登入後入如下,進入Welcome畫面


Step 3:GrayLog - 配置收Log-1

選擇右上角的System -> Input
我們要收集Log需要從WebUI開通


Step 4:GrayLog - 配置收Log-2

依序選擇選擇
1. 選擇 GELP UDP (說明:UDP傳輸的結構化Log)
2. 點擊 Launch New Input
3. 輸入想要顯示的 Title
4. 設定Port (說明:設定的Port才能接收日誌)
都完成後點擊最下方保存,配置就完成了



Step 5:GrayLog - 測試發送Log

以下是測試用的Asp.net Core WebSite 發送GrayLog的測試代碼
執行後預期Server要收到訊息MilkTeaGreen Test publish


Step 5:GrayLog - 成功收到Log

依序點擊以下,查詢Log
1. Log搜尋頁
2. 查詢全部
3. 剛剛發送的Log已出現在下方