Skip to main content

Graylog 4 安裝及設定 - Debian 10

BUBU 因最近有採買一台性能比較好的主機,將原本舊的設備上的服務都轉移到這台新設備上運行,因此之前無法使用 log 伺服器,現在可以重新架設一台並且轉換系統來運行服務。

110.10.02 內容修改為 Debian 10 版本,並且修正安裝流程

運行環境


本工作室環境都是在 「Proxmox VE 」 虛擬系統上架設,都是以 「 LXC 」模式為主,除非有特殊狀況會告知使用 「 VM 」 模式

  • 系統環境: Debian 10
  • Web 服務: Nginx 1.20

更新系統


  • 更新系統
sudo apt update && sudo apt upgrade
  • 安裝必要的套件服務
sudo apt install apt-transport-https openjdk-11-jre-headless uuid-runtime pwgen dirmngr gnupg wget

安裝MongoDB


  • 新增加 MongoDB 來源庫
wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
echo "deb http://repo.mongodb.org/apt/debian buster/mongodb-org/4.2 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list
  • 安裝 MongoDB 服務
sudo apt-get update
sudo apt-get install -y mongodb-org
  • 設定 MongoDB 啟動服務
重新載入系統設定檔
sudo systemctl daemon-reload

開機時自動啟動
sudo systemctl enable mongod.service

啟動 MongoDB 服務
sudo systemctl restart mongod.service

查看目前該服務狀態
sudo systemctl --type=service --state=active | grep mongod

安裝 Elasticsearch


  • 新增加 Elasticsearch 來源庫
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/oss-7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
  • 安裝 Elasticsearch
sudo apt update && sudo apt install elasticsearch-oss
  • 修改 Elasticsearch 設定檔
sudo tee -a /etc/elasticsearch/elasticsearch.yml > /dev/null <<EOT
cluster.name: graylog
action.auto_create_index: false
EOT
  • 設定 Elasticsearch 啟動服務
重新載入系統設定檔
sudo systemctl daemon-reload

開機自動啟動服務
sudo systemctl enable elasticsearch.service

啟動 Elasticsearch 服務
sudo systemctl restart elasticsearch.service

查檢目前該服務狀態
sudo systemctl --type=service --state=active | grep elasticsearch.service
  • 檢查Elasticsearch健康狀況
curl –XGET localhost:9200/_cluster/health?pretty=true

若一切正常,應該會得到以下訊息內容

curl: (3) Failed to convert –XGET to ACE; string contains a disallowed character

{
  "cluster_name" : "graylog",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 0,
  "active_shards" : 0,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}

安裝 Graylog Server


  • 新增加 Graylog 來源庫
wget https://packages.graylog2.org/repo/packages/graylog-4.1-repository_latest.deb
sudo dpkg -i graylog-4.1-repository_latest.deb
  • 安裝 Graylog 服務
sudo apt-get update && sudo apt-get install graylog-server graylog-integrations-plugins
  • 設置Graylog管理員的密鑰

利用pwgen輔助工具產生密碼for server.conf中的password_secret

SECRET=$(pwgen -s 96 1)

sudo -E sed -i -e 's/password_secret =.*/password_secret = '$SECRET'/' /etc/graylog/server/server.conf
  • 查看 /etc/graylog/server/server.conf 內容,password_secret 參數如下

graylog-password_secret-01.png

  • 設定 Graylog 管理員 admin 的密碼,由於密碼使用 SHA 雜湊演算法,我們需要把明文密碼轉換為 hash 值,然後賦值給 root_password_sha2 參數。

例如:以下列命令產生密碼為 test1234hash 值。

echo -n test1234 | sha256sum | awk '{print $1}'

  • 以下是產生出來的畫面

graylog-hash-02.png

  • 將以上命令產出之 Hash 值,填入到 server.confroot_password_sha2 參數。 vim /etc/graylog/server/server.conf

graylog-hash-03.png

  • 設定 Graylog 服務,開啟設定檔 vim /etc/graylog/server/server.conf
這是設定 http 
http_bind_address = 0.0.0.0:9000 (192.168.x.x為Graylog Server IP)

設定郵件
root_email = "[email protected]"

設定時區,不然收到的記錄會是國際標準時區
root_timezone = ROC # 重要,若不設定為ROC,則進來Log的timestamp會變成以UTC時間紀錄,

# 允許wildcard搜尋語法
allow_leading_wildcard_searches = true

  • 設定 Graylog 啟動服務
啟重 Graylog 服務
systemctl start graylog-server.service

開機時自動啟重 Graylog 服務
systemctl enable graylog-server.service

登錄 Graylog Web


  • 使用瀏覽器訪問 http://graylog_public_IP_domain:9000/,你應該可以看到一個登錄介面,使用帳號 admin 和前面設置的密碼登入。

graylog-login-04.png

設定rsyslog設定檔


  • 如果是使用syslog回報的話,那這個設定檔要做個小設定,不然會無法正常回其他台設備回報先進到 rsyslog設定檔
vim /etc/rsyslog.conf
  • 新增加內容如下
移到最下面增加一行
這是用 TPC 來接收
#*.* @@remote-host:514
這是用 UDP 來接收
#*.* @127.0.0.1:10514 Prot號要跟Graylog裡面設定的要一樣
*.* @127.0.0.1:10514;RSYSLOG_SyslogProtocol23Format

重新啟動 rsyslog 服務

systemctl restart rsyslog

登入Graylog設定syslog服務


  1. 增加syslog服務

graylog-05.png

  1. 選擇你想要接收的服務,例:Syslog UDP

graylog-06.png

  1. 新增畫面,接收的名稱及Port號,填完之後存檔,就可以開始接收記錄了。

graylog-07.png

使用 NGINX 代理方式來連線


安裝 Nginx 官方提供的版本

# 安裝必要套件
sudo apt install curl gnupg2 ca-certificates lsb-release

# 想要使用的版本請自己選擇
# 來源庫新增加穩定版 nginx 服務
echo "deb http://nginx.org/packages/debian `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

# 來源庫新增加主線 nginx 服務
echo "deb http://nginx.org/packages/mainline/debian `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

# 導入官方金鑰來確認該套件安全性
curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo apt-key add -

# 驗證現在的金鑰是否正確
sudo apt-key fingerprint ABF5BD827BD9BF62

# 輸出的指紋如下 573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62
pub   rsa2048 2011-08-19 [SC] [expires: 2024-06-14]
      573B FD6B 3D8F BC64 1079  A6AB ABF5 BD82 7BD9 BF62
uid   [ unknown] nginx signing key <[email protected]>

# 安裝 nginx 服務
sudo apt update
sudo apt install nginx

# 啟動及自動啟動服務
systemctl start nginx ; systemctl enable nginx
  • 新增給 Graylog 服務設定檔 vim /etc/nginx/conf.d/graylog.conf
server {
    listen 80;
    server_name 你的ip或網址;
    #
    access_log /var/log/nginx/graylog_access.log;
    error_log /var/log/nginx/graylog_error.log;
    #
    fastcgi_buffers 64 4K;
    #
    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 https://$server_name/;
        proxy_pass http://127.0.0.1:9000;
    }
    #
    location /graylog/ {
        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/graylog/;
        rewrite ^/graylog/(.*)$ /$1 break;
        proxy_pass http://127.0.0.1:9000;
    }
}

  • 啟動及自動啟動服務
systemctl start nginx ; systemctl enable nginx
  • 再到 Graylog vim /etc/graylog/server/server.conf 設定
http_publish_uri = http://192.168.x.x/
  • 重啟 Graylog
systemctl restart graylog-server



參考相關網頁