Ubuntu 16.04 下部署 Graylog 2.x 日誌伺服器

2022-01-01 奇妙的Linux世界

Graylog 是一個開源的日誌管理系統,集中式收集、索引、分析其它伺服器發來的日誌。它是由 Java 語言編寫的,能夠接收 TCP、UDP、AMQP 協議發送的日誌信息,並且使用 Mongodb 做為後臺資料庫。它還有一個使用 Ruby 編寫的 Web 管理接口,可以輕鬆管理 Graylog 和查詢日誌。

Graylog 可以收集監控多種不同應用的日誌。本文只是會為了示範說明,會把用到的組件全部安裝到一個單獨的伺服器上。對於大型、生產系統你可以把組件分開安裝在不同的伺服器上,這樣可以提高效率。

Graylog 2 的組件

Graylog 2 有 4 個基本組件:


下面是 Graylog 2 各組件之間的關係圖


安裝和配置 Graylog 2環境依賴

Graylog 2 需要以下環境依賴:

一臺 Ubuntu 16.04 伺服器,至少有 2 GB 的 RAM。

Elasticsearch (>= 2.x,推薦使用最新穩定版本。)

MongoDB (>= 2.4,推薦使用最新穩定版本。)

Oracle Java SE 或 OpenJDK (>= 8,推薦使用最新穩定版本。)


如果你的 Ubuntu Server 是最小化安裝的,還需要提前安裝以下軟體包:

$ sudo apt-get install apt-transport-https  uuid-runtime pwgen

安裝 Java JDK

Elasticsearch 是基於 Java 的應用,我們首先需要安裝 OpenJDK 或 Oracle JDK。這裡我們選擇安裝 OpenJDK 8:

$ sudo apt-get update && sudo apt-get install openjdk-8-jdk

如果你的系統上存在多個 Java 版本,可使用以下指令設置默認使用版本。

$ update-alternatives --config java

安裝 Elasticsearch

Elasticsearch 是 Graylog 一個主要的組件,負責分析和索引日誌。Graylog 2.3.x 開始支持 Elasticsearch 5.x, 這裡我們就安裝 Elasticsearch 5.x 版本。

# 添加 GPG 籤名密鑰$ wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -# 添加 Eleasticsearch 源$ echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list# 安裝 Elasticsearch$ sudo apt-get update && sudo apt-get install elasticsearch

編輯 Elasticsearch 配置文件:

$ sudo vim /etc/elasticsearch/elasticsearch.yml# 把 cluster.name 設置為 graylog。cluster.name: graylog

修改配置後,你需要重啟 Elasticsearch:

$ sudo systemctl daemon-reload$ sudo systemctl restart elasticsearch.service

如果要把 Elasticsearch 服務加入隨系統啟動,可以執行以下命令:

$ sudo systemctl enable elasticsearch.service

測試 Elastisearch 工作是否正常

Elastisearch 默認使用 9200 埠接收 http 請求,這裡使用 curl 指令進行一個簡單的請求測試。

$ curl -X GET http://localhost:9200{"name" : "V8jWSvJ","cluster_name" : "graylog","cluster_uuid" : "8cnTgvEzRZ2U81LTYq5nEw","version" : {"number" : "5.6.3","build_hash" : "1a2f265","build_date" : "2017-10-06T20:33:39.012Z","build_snapshot" : false,"lucene_version" : "6.6.1"},"tagline" : "You Know, for Search"}

查看 Elasticsearch 的健康狀態

$ curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'{"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}

安裝 MongoDB

Ubuntu 16.04 默認安裝源中包含的 MongoDB (目前版本是 2.6.10) 是支持 Graylog 2.3.x 或更高版本的。

$ sudo apt-get install mongodb-server

啟動 MongoDB 服務

$ sudo systemctl start mongodb

如果要把 MongoDB 服務加入隨系統啟動,可以執行以下命令:

$ sudo systemctl enable mongodb

安裝 Graylog Server

Graylog Server 負責接收和處理日誌。

# 下載安裝 Graylog Server 倉庫$ wget https://packages.graylog2.org/repo/packages/graylog-2.3-repository_latest.deb$ sudo dpkg -i graylog-2.3-repository_latest.deb# 安裝 Graylog Server$ sudo apt-get update && sudo apt-get install graylog-server

編輯 Graylog Server 配置文件:

設置 password_secret,首先使用 pwgen 命令生成密碼:

$ pwgen -N 1 -s 961jfPjMRn5XRsCdVWArjy1nulgXbUJJ8khuW0xQGrqUvJ1iXefhqSh12xsp1dZgkKVsOwiOuDLArh6TYafQE8QFDjEzUIU1tS

修改 password_secret 參數值:

$ sudo vim /etc/graylog/server/server.confpassword_secret = 1jfPjMRn5XRsCdVWArjy1nulgXbUJJ8khuW0xQGrqUvJ1iXefhqSh12xsp1dZgkKVsOwiOuDLArh6TYafQE8QFDjEzUIU1tS

設置 Graylog Server 管理員密碼 root_password_sha2,這個密碼用來登錄 Web 管理頁面。

假如你要把密碼設置為 000000 ,可以使用 sha256sum 命令來生成:

$ echo -n 000000 | sha256sum91b4d142823f7d20c5f08df69122de43f35f057a988d9619f6d3138485c9a203

修改 root_password_sha2 參數值:

$ sudo vim /etc/graylog/server/server.confroot_password_sha2 = 91b4d142823f7d20c5f08df69122de43f35f057a988d9619f6d3138485c9a203

註:password_secret 和 root_password_sha2 參數是必須設定的,否則 Graylog Server 將無法啟動。

如果你要設置管理員郵箱和時區,可以使用以下參數值:

$ sudo vim /etc/graylog/server/server.confroot_email = "admin@hi-linux.com"root_timezone = UTC

設置 Elasticsearch 節點:

$ sudo vim /etc/graylog/server/server.conf# Default: http://127.0.0.1:9200elasticsearch_hosts = http://192.168.100.212:9200

如果需要配置多個 Elasticsearch 節點或是需要認證的節點,可按以下格式配置:

elasticsearch_hosts = http://node1:9200,http://user:password@node2:19200

註:如不配置,默認是連接到本機的 Elasticsearch 節點。

其它一些和 Elasticsearch 的相關設置:

elasticsearch_index_prefix = graylogelasticsearch_connect_timeout = 10selasticsearch_max_docs_per_index = 20000000elasticsearch_max_total_connections = 20elasticsearch_max_number_of_indices = 20elasticsearch_shards = 1elasticsearch_replicas = 0

安裝 Graylog Web 接口

從 Graylog 2.x 版本開始,Graylog 已經默認集成了 Web 接口。

配置 Graylog Web 接口

$ sudo vim /etc/graylog/server/server.conf# 配置rest Api 的 URIrest_listen_uri = http://your_ip_or_domain:9001/# 配置 Web 界面的 URIweb_listen_uri = http://your_ip_or_domain:9000/

註: your_ip_or_domain 為你實際伺服器 IP 或域名。

啟動 Graylog Server 服務:

$ sudo systemctl daemon-reload$ sudo systemctl start graylog-server.service

如果要把 Graylog Server 服務加入隨系統啟動,可以執行以下命令:

$ sudo systemctl enable graylog-server.service

訪問 Graylog Web

使用瀏覽器訪問 http://your_ip_or_doamin:9000,能成功看到如下界面則表示安裝成功。默認用戶名為:admin,密碼為:root_password_sha2 參數中設置的。

添加一個需收集日誌的伺服器創建 Syslog UDP 輸入

Ubuntu 系統自帶 Rsyslog 服務無需安裝,只需要配置一下即可。

打開 Graylog Web 頁面,選擇 System->Inputs->Syslog UDP->Launch new input,添加一個要接收 Syslog 日誌的伺服器。

在彈出的窗口上輸入如下信息:


配置完成後就生成了一個監聽在 8514 埠上的 Syslog 服務端,下面可以用它來收集其它伺服器上的日誌。

本次測試採用同一臺伺服器做演示,所以綁定到所有網卡接口。如只在特定網絡中訪問,請按實際情況填寫 Bind address 的 IP 地址。

現在,我們的 Graylog Server 伺服器已經做好了接收其它伺服器發來日誌的準備。下面我們還需要配置需收集日誌伺服器,讓這些伺服器給 Graylog Server 伺服器發送日誌。

配置伺服器發送日誌到 Graylog

創建 rsyslog 配置文件 /etc/rsyslog.d/90-graylog.conf。

如果你的 rsyslog 版本 > 5.10,請按以下格式配置:

*.* @graylog_server_ip:8514;RSYSLOG_SyslogProtocol23Format

如果你的 rsyslog 版本 < 5.10,請按以下格式配置:

$template GRAYLOGRFC5424,"<%PRI%>%PROTOCOL-VERSION% %TIMESTAMP:::date-rfc3339% %HOSTNAME% %APP-NAME% %PROCID% %MSGID% %STRUCTURED-DATA% %msg%\n"*.* @graylog_server_ip:8514;GRAYLOGRFC5424

註:把 graylog_server_ip 替換為 Graylog 伺服器 IP 地址。

我這裡使用的是 rsyslog 8.16 版本,修改後類似下面:

$ sudo vim /etc/rsyslog.d/90-graylog.conf*.* @192.168.100.212:8514;RSYSLOG_SyslogProtocol23Format

重啟 rsyslog 服務使生效

$ sudo systemctl restart rsyslog

配置完成之後,回到 Graylog Web,點擊 Sources,查看是否有新添加 Rsyslog 來源的圖形。

搜素 Graylog

在 Graylog Web 上,點擊 Search 可以訪問 Graylog 搜索頁面。 在這裡可以根據條件查詢指定的日誌。


假如你要搜索 ssh 的活動日誌,輸入關鍵字 sshd,點搜索圖標:



一些常用的搜索語法

ssh

ssh login

"ssh login"

type:ssh

type:(ssh login)

type:"ssh login"

更詳細搜索語法可參考官方文檔: http://docs.graylog.org/en/2.3/pages/queries.html

到此為止,就完成了一個基本的可以從其它伺服器收集日誌的 Graylog 伺服器部署。當然 Graylog 還提供了其它一系列的豐富功能,比如儀錶板、警報和流等功能,期待我們下次進一步的探索吧。

參考文檔

http://www.google.com
http://blog.topspeedsnail.com/archives/6670
http://docs.graylog.org/en/2.3/pages/installation/os/ubuntu.html
https://marketplace.graylog.org/addons/a47beb3b-0bd9-4792-a56a-33b27b567856
https://www.digitalocean.com/community/tutorials/how-to-manage-logs-with-graylog-2-on-ubuntu-16-04



今日思想

人與人之間的差異,

最終在於業餘時間如何利用。

掌握了業餘時間,

你就掌握了人生。

——愛因斯坦



更多精彩熱文:



如果你覺得內容很贊,還等什麼?快快長按打賞吧,iOS的土豪們也是可以的喲!


相關焦點

  • 如何使用Graylog來收集日誌?
    Filebeat 是一個日誌文件託運工具,在你的伺服器上安裝客戶端後,Filebeat 會自動監控給定的日誌目錄或者指定的日誌文件,追蹤讀取這些文件,不停的讀取,並且轉發這些信息到 Elasticsearch 或者 Logstarsh 或者 Graylog 中存放。
  • 企業級日誌平臺新秀Graylog,比ELK輕量多了~
    Filebeat 工具介紹服務日誌收集方案:Filebeat + Graylog!Filebeat 是一個日誌文件託運工具,在你的伺服器上安裝客戶端後,filebeat 會自動監控給定的日誌目錄或者指定的日誌文件,追蹤讀取這些文件,不停的讀取,並且轉發這些信息到 elasticsearch 或者 logstarsh 或者 graylog 中存放。
  • 企業級日誌平臺新秀Graylog,比ELK輕量多了
    Filebeat 工具介紹服務日誌收集方案:Filebeat + Graylog!Filebeat 是一個日誌文件託運工具,在你的伺服器上安裝客戶端後,filebeat 會自動監控給定的日誌目錄或者指定的日誌文件,追蹤讀取這些文件,不停的讀取,並且轉發這些信息到 elasticsearch 或者 logstarsh 或者 graylog 中存放。
  • 企業級日誌平臺後起之秀 Graylog!
    依靠著更加簡潔,高效,部署使用簡單的優勢很快受到許多人的青睞。當然,在擴展性上面確實沒有比 ELK 好,但是其有商業版本可以選擇。Graylog - 工作流程介紹部署 graylog 最簡單的架構就是單機部署,複雜的也是部署集群模式,架構圖示如下所示。
  • 安裝 Graylog 日誌系統
    這節學習Graylog,它是一款可以和ELK 相提並論的集中式日誌管理系統,它能支持數據收集、檢索、可視化一整套流程。本節學習實驗用 Graylog 來管理容器Docker 日誌。Graylog 架構我們先看下Graylog 的架構圖:Graylog:接收多種設備和應用的日誌,並提供 Web 接口。
  • 部署 Graylog 日誌系統 - 每天5分鐘玩轉 Docker 容器技術(92)
    與 ELK 一樣,Graylog 的部署方案很靈活,快速搭建一個 all-in-one 的環境對於學習很有益處;部署一個高可用高伸縮性的集群對於生成環境也是必要的。接下來我們將在容器環境下搭建 Graylog。部署 GraylogGraylog 及其相關組件都將以容器的方式部署。
  • 使用EVE-NG模擬山石網科防火牆syslog日誌接入GrayLog4.1
    下面細說具體的步驟一、EVE-NG下模擬網絡設備syslog日誌 使用的是EVE-NG社區懶人版,測試使用hillstone山石網科防火牆連結: https://pan.baidu.com/s/15G_ONhBD7TpZo3w0vKmU0g 提取碼: xucy
  • Ubuntu 16.04+.Net Core+Docker+Nginx安裝部署
    本篇文章會一步步的描述從安裝到配置到部署的全部過程。在文章的結構和內容裡,筆者借鑑了很多其他博文的內容,但感覺其他博文中都只是實現了一部分或者沒有將配置內容寫全。筆者做的是整理一下自己的實際部署過程。目錄1. 準備工作2. 創建一個非root用戶3. 更新伺服器4.
  • ubuntu20.04系統伺服器生信基礎配置
    0.ubuntu伺服器網絡配置靜態IP和遠程連結1.開通網頁服務2.安裝必備的庫3.安裝Rstudio server語言4.安裝Shiny Server5.安裝JBrowser6.安裝Docker之前入門linux也是踩了好多坑,現在總結一下給大家先分享下伺服器配置的一些經驗。mac的電腦自帶終端很方便,直接可以練習linux命令。
  • 在 Ubuntu 16.04 上安裝和使用伺服器監控報警系統 Shinken
    我將會以 Ubuntu 16.04 Xenial Xerus 作業系統來作為 Shinken 伺服器和所監控的主機。第一步 安裝 Shinken 伺服器Shinken 是一個 Python 框架,我們可以通過 pip 安裝或者從源碼來安裝它,在這一步中,我們將用原始碼編譯安裝 Shinken。
  • Spring Boot 使用 Graylog 收集日誌
    /graylog/ graylog: image: graylog/graylog:3.0 environment: # CHANGE ME (must be at least 16 characters)!
  • Ubuntu 16.04下編譯安裝VLC
    最近嘗試在Ubuntu 16.04中使用VLC播放視頻,試了很多方法,要麼是編譯後打不開圖形界面,要麼是可以接受組播流,但不能正常解碼為視頻,最後終於找到方法,和大家分享一下,希望對你有幫助。1、安裝vlc編譯中的一些工具sudo apt-get install git libtool build-essential pkg-config autoconf2、獲取源碼wget ftp://ftp.videolan.org/pub/videolan/vlc/2.0.6/vlc-2.0.6.tar.xz(這個支持ubuntu 13.04
  • 如何用 Graylog 管理容器K8S日誌
    上一節我們介紹了graylog,它是一款可以和ELK 相提並論的集中式日誌管理系統,它能支持數據收集、檢索、可視化一整套流程,並且我們上一節學習了它的安裝
  • Ubuntu 16.04.5 LTS(Xenial Xerus)發布,該系列最後一個版本
    Canonical支持Ubuntu Linux作業系統的每個LTS(長期支持)版本,在Ubuntu桌面,伺服器和雲端鏡像上提供五年的安全和軟體更新,並且他們每六個月共收到五個點的版本。將不再為Ubuntu 16.04 LTS(Xenial Xerus)發布更多的點版本,因此如果您想在今天一年後在新計算機上部署作業系統,則必須下載Ubuntu 16.04.5 LTS鏡像和然後通過下載在相應時段內發布的所有安全更新來更新安裝。
  • Ubuntu 16.04/17.10 下安裝 Ubuntu Tweak
    下面說說Ubuntu 16.04 下安裝 Ubuntu Tweak的具體過程。首先下載相關deb包。文件可以到Linux公社資源站下載:--分割線--免費下載地址在 http://linux.linuxidc.com/用戶名與密碼都是www.linuxidc.com具體下載目錄在 /2017年資料/1月/30日/Ubuntu 16.04
  • Ubuntu Server 20.04.x LTS安裝配置圖解教程
    目前最新的伺服器版本是:Ubuntu Server 20.04.1 LTS(長期支持版本,5年技術支持)ubuntu-20.04.1目前為止沒有離線安裝鏡像,只有ubuntu-20.04.1-live-server-amd64.iso(多了個live)live代表安裝過程中需要網絡。
  • 如何在 Ubuntu 16.04 中安裝 Ceph 存儲集群
    -16-04/ 作者: Muhammad Arul譯者: wyangsunCeph 是一個高性能、可靠、可擴展的開源存儲平臺。在這個教程中,我將指導你在 Ubuntu 16.04 伺服器上安裝建立一個 Ceph 集群。Ceph 集群包括這些組件:Ceph OSD (ceph-osd) - 控制數據存儲,數據複製和恢復。Ceph 集群需要至少兩個 Ceph OSD 伺服器。這次安裝中我們將使用三個 Ubuntu 16.04 伺服器。
  • 在 Ubuntu Server 16.04 LTS 上安裝 LAMP
    在這篇文章中,我將描述如何在 Ubuntu Server 16.04 LTS 上安裝 LAMP,眾所周知 Ubuntu 是一個基於 Linux 的作業系統,因此它構成了 LAMP 的第一個部分,在接下來的操作中,我將默認你已經安裝了 Ubuntu Server 16.04。
  • 在 Ubuntu 16.04 為 Nginx 伺服器安裝 LEMP 環境(MariaDB,PHP 7 並支持 HTTP 2.0)
    在 Ubuntu 16.04 安裝 Nginx 以及 MariaDB,PHP7 並且支持 HTTP 2.0這篇教程會教你怎麼在 Ubuntu 16.04 的伺服器上安裝 LEMP (Nginx 和 MariaDB 以及 PHP7)。
  • 在 Ubuntu 16.04 Xenial Xerus 上安裝 Swift 3.0
    譯者:小鍋;校對:saitjr;定稿:CMB我們對「讓 Swift 3.0 在更多的 Linux 系統上運行」這件事充滿了熱情,因此我們開始在 Ubuntu 16.04例如:bash# apt-cache show swift-3.0Package: swift-3.0Conflicts: swift-2.2Version: 1:3.0-0ubuntu10+xenial1Architecture: amd64Installed-Size: 370463Maintainer: iachievedit (support@iachieved.it)Depends