介紹
在本教程中,我們將介紹如何在Ubuntu 14.04上安裝Graylog v1.3.x(有時稱爲Graylog2),並將其配置爲在集中位置收集系統的syslog。Graylog是一個功能強大的日誌管理和分析工具,具有許多用例,從監控SSH登錄和異常活動到調試應用程序。它基於Elasticsearch,Java和MongoDB。
可以使用Graylog來收集和監視各種日誌,但我們將本教程的範圍限制爲syslog收集。此外,因爲我們正在演示Graylog的基礎知識,所以我們將在單個服務器上安裝所有組件。
關於Graylog Components
Graylog有四個主要組成部分:
- Graylog Server節點:用作接收和處理消息的工作者,並與所有其他非服務器組件通信。它的性能取決於CPU
- Elasticsearch節點:存儲所有日誌/消息。其性能取決於RAM和磁盤I / O.
- MongoDB:存儲元數據,不會遇到太多負載
- Web界面:用戶界面
以下是Graylog組件的示意圖(請注意,消息是從其他服務器發送的):
本教程將實現一個非常基本的Graylog設置,所有組件都安裝在同一臺服務器上。對於更大的生產設置,出於性能原因,建議在不同的服務器上安裝組件。
課程準備
本教程中描述的設置需要具有至少2GB RAM的Ubuntu 14.04服務器。您還需要root訪問權限,沒有服務器的同學可以在這裏購買,不過我個人更推薦您使用免費的騰訊雲開發者實驗室進行試驗,學會安裝後再購買服務器。
如果使用RAM小於2GB的VPS,則無法啓動所有Graylog組件。
我們開始安裝軟件吧!
安裝MongoDB
MongoDB安裝簡單快捷。運行以下命令將MongoDB公共GPG密鑰導入apt:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
創建MongoDB源列表:
echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list
更新您的apt包數據庫:
sudo apt-get update
使用以下命令安裝最新的穩定版MongoDB:
sudo apt-get install mongodb-org
MongoDB現在應該啓動並運行。讓我們繼續安裝Java。
安裝Java
Elasticsearch需要Java,所以我們現在就安裝它。我們將安裝Oracle Java 8,因爲這是Elastic推薦的。但是,如果您決定走這條路,它應該可以與OpenJDK一起使用。
sudo add-apt-repository ppa:webupd8team/java
更新您的apt包數據庫:
sudo apt-get update
使用此命令安裝最新穩定版本的Oracle Java 8(並接受彈出的許可協議):
sudo apt-get install oracle-java8-installer
現在已經安裝了Java,讓我們安裝Elasticsearch。
安裝Elasticsearch
Graylog 1.x僅適用於2.0版本的Elasticsearch,因此我們將安裝Elasticsearch 1.7.x. 通過添加Elastic的包源列表,可以將Elasticsearch與包管理器一起安裝。
運行以下命令將Elasticsearch公共GPG密鑰導入apt:
wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
如果你的提示只是掛在那裏,它可能正在等待你的用戶密碼(授權sudo
命令)。如果是這種情況,請輸入您的密碼。
echo "deb http://packages.elastic.co/elasticsearch/1.7/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-1.7.x.list
更新您的apt包數據庫:
sudo apt-get update
使用以下命令安裝Elasticsearch:
sudo apt-get -y install elasticsearch
Elasticsearch現已安裝。讓我們編輯配置:
sudo vi /etc/elasticsearch/elasticsearch.yml
找到指定的cluster.name
部分。取消註釋,並用“graylog-development”替換默認值,如下所示:
cluster.name: graylog-development
您需要限制對Elasticsearch實例(端口9200)的外部訪問,因此外人無法通過HTTP API讀取您的數據或關閉您的Elasticsearch集羣。找到指定的network.host
行,取消註釋,並將其值替換爲“localhost”,使其如下所示:
network.host: localhost
保存並退出elasticsearch.yml
。
現在啓動Elasticsearch:
sudo service elasticsearch restart
然後運行以下命令以在開啓時啓動Elasticsearch:
sudo update-rc.d elasticsearch defaults 95 10
片刻之後,運行以下命令以測試Elasticsearch是否正常運行:
curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'
現在Elasticsearch已啓動並運行,讓我們安裝Graylog服務器。
安裝Graylog Server
現在我們已經安裝了其他所需的軟件,讓我們安裝Graylog的服務器組件graylog-server
。
首先,使用以下命令將Graylog Debian軟件包下載到您的主目錄:
cd ~ wget https://packages.graylog2.org/repo/packages/graylog-1.3-repository-ubuntu14.04_latest.deb
然後使用以下命令將包添加到包管理器:
sudo dpkg -i graylog-1.3-repository-ubuntu14.04_latest.deb
然後使用以下命令安裝graylog-server
包:
sudo apt-get update sudo apt-get install apt-transport-https sudo apt-get install graylog-server
安裝pwgen,我們將用它來生成密碼密鑰:
sudo apt-get install pwgen
現在我們必須配置管理員密碼和密鑰。密碼密鑰在server.conf中由password_secret
參數配置。我們可以生成一個隨機密鑰,並使用以下兩個命令將其插入到Graylog配置中:
SECRET=$(pwgen -s 96 1) sudo -E sed -i -e 's/password_secret =.*/password_secret = '$SECRET'/' /etc/graylog/server/server.conf
通過創建一個指定shasum
所需的密碼,並且將其分配到root_password_sha2
所述Graylog配置文件中的參數,可以分配管理員密碼。使用以下命令創建所需密碼的shasum,用您自己的密碼替換突出顯示的“密碼”。sed命令爲您將其插入到Graylog配置中:
PASSWORD=$(echo -n password | shasum -a 256 | awk '{print $1}') sudo -E sed -i -e 's/root_password_sha2 =.*/root_password_sha2 = '$PASSWORD'/' /etc/graylog/server/server.conf
現在設置了管理員密碼,讓我們打開Graylog配置進行一些更改:
sudo vi /etc/graylog/server/server.conf
由於您在上述步驟中運行的命令,您應該看到password_secret
和root_password_sha2
會擁有隨機字符串。
現在我們將配置rest_transport_uri
,這是Graylog Web界面與服務器通信的方式。因爲我們要在單個服務器上安裝所有組件,所以讓我們將值設置爲127.0.0.1
,或localhost
。查找並取消註釋rest_transport_uri
,並更改其值,使其如下所示:
/etc/graylog/server/server.conf - 1/4
rest_transport_uri = http://127.0.0.1:12900/
接下來,因爲我們只有一個Elasticsearch分片(在此服務器上運行),我們將elasticsearch_shards
的值更改爲1:
elasticsearch_shards = 1
接下來,將elasticsearch_cluster_name
值更改爲“graylog-development”(與Elasticsearchcluster.name
相同):
elasticsearch_cluster_name = graylog-development
取消註釋這兩行以使用單播而不是多播來發現Elasticsearch實例:
/etc/graylog/server/server.conf - 4 of 4
elasticsearch_discovery_zen_ping_multicast_enabled = false elasticsearch_discovery_zen_ping_unicast_hosts = 127.0.0.1:9300
保存並退出。現在graylog-server
已配置並準備啓動。
使用service命令啓動Graylog服務器:
sudo start graylog-server
下一步是安裝Graylog Web界面。我們現在就這樣做!
安裝Graylog Web
使用以下命令安裝Graylog Web:
sudo apt-get install graylog-web
接下來,我們要配置Web界面的密鑰,即web.conf中的application.secret
參數。我們將生成另一個鍵,就像我們使用Graylog服務器配置一樣,並使用sed插入它,如下所示:
SECRET=$(pwgen -s 96 1) sudo -E sed -i -e 's/application\.secret=""/application\.secret="'$SECRET'"/' /etc/graylog/web/web.conf
現在使用以下命令打開Web界面配置文件:
sudo vi /etc/graylog/web/web.conf
現在我們需要更新Web界面的配置以指定graylog2-server.uris
參數。這是服務器REST URI的逗號分隔列表。由於我們只有一個Graylog服務器節點,因此該值應與rest_listen_uri
Graylog服務器配置中的值匹配。
/etc/graylog/web/web.conf摘錄
graylog2-server.uris="http://127.0.0.1:12900/"
現在配置了Graylog Web界面。啓動Graylog Web界面:
sudo start graylog-web
現在我們可以使用Graylog Web界面。我們現在就這樣做。
配置Graylog以接收syslog消息
登錄Graylog Web界面
在您喜歡的Web瀏覽器中,轉到服務器的公共IP地址的9000
端口:
In a web browser:http://graylog_public_IP:9000/
您應該看到一個登錄屏幕。輸入admin
您之前設置的用戶名和管理員密碼。
登錄後,您將看到如下內容:
頂部的紅色數字是通知。如果單擊它,您將看到一條消息,指出您有一個沒有任何運行輸入的節點。讓我們添加一個輸入來接收UDP上的syslog消息。
創建Syslog UDP輸入
要添加輸入以接收系統日誌消息,請單擊頂部菜單中的系統下拉列表。
現在,從下拉菜單中選擇Inputs。
從下拉菜單中選擇Syslog UDP,然後單擊Launch new input按鈕。
將彈出“啓動新輸入:Syslog UDP ”模式窗口。輸入以下信息(在服務器的私有IP地址中替換綁定地址):
- 標題:
syslog
- 港口:
8514
- 綁定地址:
graylog_private_IP
然後單擊Launch。
您現在應該在Local inputs部分看到一個名爲“syslog”的輸入(它應該有一個綠色框,旁邊顯示“running”),如下所示:
現在,我們的Graylog服務器已準備好從您的服務器接收端口8514
上的系統日誌消息。讓我們配置您的服務器,立即將他們的系統日誌消息發送給Graylog。
配置Rsyslog以將Syslog發送到Graylog Server
在所有客戶端服務器上,要將系統日誌消息發送到Graylog的服務器,請執行以下步驟。
在/etc/rsyslog.d中創建rsyslog配置文件。我們打將調用90-graylog.conf
:
sudo vi /etc/rsyslog.d/90-graylog.conf
在此文件中,添加以下行以配置rsyslog以將系統日誌消息發送到Graylog服務器(替換graylog_private_IP
爲Graylog服務器的專用IP地址):
/etc/rsyslog.d/90-graylog.conf
$template GRAYLOGRFC5424,"<%pri%>%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% %procid% %msg%\n" *.* @graylog_private_IP:8514;GRAYLOGRFC5424
保存並退出。從現在開始,此文件將作爲rsyslog配置的一部分加載。現在,您需要重新啓動rsyslog才能使更改生效。
sudo service rsyslog restart
在要監視的所有服務器上完成rsyslog配置後,請返回Graylog Web界面。
查看您的Graylog來源
在您喜歡的Web瀏覽器中,轉到服務器的公共IP地址的9000
端口:
In a web browser:http://graylog_public_IP:9000/
單擊頂部欄中的“ 來源 ”。您將看到已配置rsyslog的所有服務器的列表。
源的主機名在左側,右側是Graylog接收的消息數。
搜索您的Graylog數據
讓Graylog收集郵件一段時間後,您將能夠搜索郵件。例如,讓我們搜索“sshd”,看看我們的服務器上發生了什麼樣的SSH活動。以下是我們結果的片段:
如您所見,我們的示例搜索結果顯示了各種服務器的sshd日誌,以及許多失敗的root登錄嘗試。您的結果可能會有所不同,但它可以幫助您識別許多問題,包括未經授權的用戶如何嘗試訪問您的服務器。
除了所有源上的基本搜索功能外,您還可以搜索特定主機的日誌或特定時間範圍內的日誌。
例如,如果您想在事件發生後查看服務器或多個服務器的日誌,則搜索Graylog中的數據非常有用。集中日誌記錄可以更輕鬆地關聯相關事件,因爲您無需登錄多個服務器即可查看已發生的所有事件。
有關搜索欄如何工作的更多信息,請查看官方文檔:Graylog搜索
結論
現在您已經設置了Graylog,請隨時瀏覽它提供的其他功能。您可以將其他類型的日誌發送到Graylog,並設置提取器(或使用logstash等軟件重新格式化日誌),以使日誌更加結構化和可搜索。您還可以通過分離組件並添加冗餘來提高性能和可用性,從而擴展Graylog環境。
更多Ubuntu教程請前往騰訊雲+社區學習更多知識。
參考文獻:《How To Install Graylog 1.x on Ubuntu 14.04》