Graylog日誌管理單機部署、日誌節點的Sidecar配置以及簡單的警告事件郵件發送

應該是上個星期的上個星期,下了個任務,要做Graylog的部署以及文檔,emmm….帶log,肯定是和日誌有關係了唄,不過也沒聽過啊,去搜了一下,確實,也不少帖子博客相關的都有安裝部署,還是yum安裝,這不簡單去了么,趕緊屢了一遍,接下來直接就照着做了,但是,奈何公司的網不行呢,我yum配置完了,install全失敗,沒整;之後發現還有好多是docker的方法,可以啊,來試試(其實看到docker我就知道也差不多了,因為我鏡像就沒下成功過),試了一下,真行啊,果然不行。

安裝部署主要需要3個軟件,MongoDB、Elasticsearch以及Graylog,當時測試時只有Graylog的yum安裝是成功的,所以,順便就把相關的rpm包下載留下來,其實MongoDB的yum安裝也是沒什麼問題的,不過我自己的環境不穩定,直接用在官網下的tgz包安裝的;

 

由於我自己的情況受限,就儘可能使用我這裡行得通的方法來安裝了:

(如果網絡環境允許,官方 //docs.graylog.org/en/4.0/pages/installation.html 的方法是非常方便的)

部署環境是一台虛擬機,CentOS7,之後準備幾個可能需要單獨下載的包,之後就是各種安裝時需要的其他依賴包,版本根據自己需求而定:

(這裡說一下,我是測試環境,下面步驟中安裝都是yum install或解壓即用的方式,因為要寫文檔上交,所以肯定以後會有內網環境安裝部署的情況,把整個過程需要的安裝包都留下來是有必要的,之後可以在內網環境下部署本地yum倉庫,使用yum install進行安裝就方便多了,可以使用 yumdownloader 或修改 /etc/yum.conf 中 keepcache=1 保留緩存包)

GPG-KEY-elasticsearch(Elastic GPG的密鑰 rpm –import //artifacts.elastic.co/GPG-KEY-elasticsearch ,可以使用wget或curl -o . 下載

elasticsearch-7.11.1-linux-x86_64.tar.gz(官網下載 //www.elastic.co/cn/downloads/elasticsearch )

filebeat-6.6.0-x86_64.rpm(官方提供 //www.elastic.co/cn/downloads/beats/filebeat )

mongodb-linux-x86_64-enterprise-rhel70-4.4.3.tgz(官網下載 //www.mongodb.com/try/download/enterprise 或 //www.mongodb.com/download-center/enterprise/releases/archive)

graylog-server-4.0.5-1.noarch.rpm(官方給的yum源下載保留的,下載官方的壓縮包也可以)

graylog-sidecar-1.0.2-1.x86_64.rpm(官方提供 //github.com/Graylog2/collector-sidecar/releases )

graylog_sidecar_installer_1.0.2-1.exe(官方提供 //github.com/Graylog2/collector-sidecar/releases ,這是windows安裝的包)

 

 

下面是我自己的安裝部署流程 (點擊傳送):

文檔內容依次是:—> 服務端的安裝部署

                             —> CentOS端的Sidecar安裝及Web界面設置

                             —> Windows端的Sidecar安裝及Web界面設置

                             —> Web界面設置簡單的警告事件及郵件發送

 


 

服務端的安裝部署

 –返回目錄–

 

配置部分系統資源,並安裝各種依賴包:

    ##修改部分系統資源呢配置
[root@graylog ~]# vi /etc/security/limits.conf
*       soft    nofile  65536
*       hard    nofile  65536
*       soft    nproc   65536
*       hard    nproc   65536

[root@graylog ~]# vi /etc/sysctl.conf
vm.max_map_count=262144

[root@graylog ~]# sysctl -p


    ##關閉透明大頁
    ##(關閉透明大頁主要是MongoDB的運行問題,若本機不做其他服務的運行,MongoDB數據庫負載不大,則可以不進行關閉,)
[root@graylog ~]# cat /sys/kernel/mm/transparent_hugepage/enabled 
[always] madvise never

[root@graylog ~]# vi /etc/default/grub
GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet transparent_hugepage=never"

[root@graylog ~]# grub2-mkconfig -o /boot/grub2/grub.cfg

##安裝java
-1.8.0-openjdk及其他依賴包 [root@graylog ~]# yum install -y java-1.8.0-openjdk vim ntpdate pwgen cyrus-sasl cyrus-sasl-gssapi cyrus-sasl-plain krb5-libs libcurl net-snmp openldap openssl xz-libs net-snmp 這裡我們可以重啟一下機器,上面系統資源配置是重啟生效,但是不重啟也不會影響下面的安裝。

 

安裝MongoDB:

    ##解壓文件,並創建所需組、用戶以及目錄
[root@graylog ~]# tar -xvf mongodb-linux-x86_64-enterprise-rhel70-4.4.3.tgz -C /usr/local/
[root@graylog ~]# cd /usr/local/
[root@graylog local]# mv mongodb-linux-x86_64-enterprise-rhel70-4.4.3 mongodb
[root@graylog local]# cd
[root@graylog ~]# groupadd -r mongod
[root@graylog ~]# useradd -r -g 996 -u 996 -s /bin/false -d /var/lib/mongo mongod(UID、GID根據實際情況)
[root@graylog ~]# mkdir -pv /var/lib/mongo
[root@graylog ~]# mkdir -pv /var/log/mongodb
[root@graylog ~]# chown -R mongod:mongod /var/lib/mongo
[root@graylog ~]# chown -R mongod:mongod /var/log/mongodb


    ##修改命令PATH路徑
[root@graylog ~]# vi /etc/profile
export PATH=/usr/local/mongodb/bin:$PATH

[root@graylog ~]# source /etc/profile


    ##編輯配置文件
[root@graylog ~]# vi /etc/mongod.conf
systemLog:path: 
    /var/log/mongodb/mongod.log
storage:
    dbPath: /var/lib/mongo


    ##啟動數據庫並設置開機啟動
[root@graylog ~]# mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --fork

[root@graylog ~]# vi /etc/rc.local
/usr/local/mongodb/bin/mongod -f /etc/mongod.conf

[root@graylog ~]# chmod +x /etc/rc.d/rc.local


    ##查看數據庫是否運行
[root@graylog ~]# ps -ef | grep mongo

 

安裝Elasticsearch

    ##安裝Elastic GPG密鑰,解壓文件
[root@graylog ~]# rpm --import GPG-KEY-elasticsearch
    ##或是聯網環境下,直接在線導入
[root@graylog ~]# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
[root@graylog ~]# useradd ela
    ##為ela用戶設置個密碼
[root@graylog ~]# passwd ela
[root@graylog ~]# tar -xvf elasticsearch-7.11.1-linux-x86_64.tar.gz -C /home/ela
[root@graylog ~]# chown ela:ela /home/ela/elasticsearch-7.11.1 -R
    ##Elasticsearch不允許使用root用戶啟動,會報各種錯,如不能創建進程,找不到JAVA路徑等,啟動需要以普通用戶身份執行,所以之前創建的用戶,為了使服務正常啟動,同時注意軟件目錄的所屬問題,不是普通用戶所屬依然會報錯
[root@graylog ~]# su - ela
[ela@graylog ~]$ mv elasticsearch-7.11.1 elasticsearch


    ##啟動服務並設置開機啟動
[ela@graylog ~]$ /home/ela/elasticsearch/bin/elasticsearch &
    ##切換為root用戶
[ela@graylog ~]$ su -
[root@graylog ~]# vi /etc/rc.local
su - ela -c '/home/ela/elasticsearch/bin/elasticsearch &'


    ##查看服務是否啟動運行
[root@graylog ~]# ps -ef | grep ela
(Elasticsearch運行進程信息特別長,一下就能看到,若沒有,需要排錯,查看權限等)

 

安裝Graylog

    ##安裝Graylog,有rpm包,安裝就方便多了,包名稱補全按照實際情況做
[root@graylog ~]# yum localinstall graylog-server-4.0.5-1.noarch.rpm


    ##修改Graylog配置文件
[root@graylog ~]# vi /etc/graylog/server/server.conf
    ## passworde_secret可以通過命令:pwgen -N 1 -s 96 來隨機生成,根據實際情況填寫
password_secret = 6Z06fZHU2DwuOf9X8fhnvphCd3OM7oqwLECRRcejvjpieSvVtwu08yHYHIKDi56bAxRvtCOZ3xKKiBqyt00XYCgVa0oETB0L
    ## admin用戶生成密碼,請記住你的密碼,請根據實際情況填寫編碼並記錄正常不加密的密碼,配置文件中填寫加密後的字符串(密碼生成命令:echo -n 123123 | sha256sum)
root_password_sha2 = e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
    ## 時區寫現在的就行(亞洲/上海)
root_timezone = Asia/Shanghai
    ## elasticsearch 相關配置
    ## 單機本地配置,則填寫本地127地址即可,默認9200端口不改
elasticsearch_hosts = //127.0.0.1:9200
elasticsearch_shards =1 
elasticsearch_replicas = 0
    ## mongodb 連接配置,單機本機mongodb,沒有設置驗證
mongodb_uri = mongodb://localhost/graylog
    ## 電子郵件smtp,設置為自己的郵箱smtp服務,enabled=true為開啟郵箱發送功能
transport_email_enabled = true
    ## 開啟smtp功能的郵箱,一般都是官方的地址,不同服務商端口號可能不同,示例是網易郵箱,端口465
transport_email_hostname = smtp.163.com
transport_email_port = 465
transport_email_use_auth = true
transport_email_use_tls = false
transport_email_use_ssl = true
    ## auth_username為發送郵件的郵箱,根據實際情況填寫
transport_email_auth_username = 發件人@163.com
    ## 這個是開啟smtp功能後給的驗證密碼,並不是你本身登錄的密碼
transport_email_auth_password = FJSLKJSJGFLKSJG
transport_email_subject_prefix = [graylog]
transport_email_from_email = 發件人@163.com
    ## 配置地址,服務端本機ip+port
http_bind_address = 192.168.3.134:9000

    ##若需要則手動添加java路徑,啟動沒有報錯則不要配置,一般都不出錯
[root@graylog ~]# vi /etc/sysconfig/graylog-server
JAVA=/usr/bin/java(根據實際情況修改)


    ##啟動服務
[root@graylog ~]# systemctl enable graylog-server
[root@graylog ~]# systemctl start graylog-server

 

測試登錄
瀏覽器訪問://192.168.3.134:9000(訪問自己的IP啊)
賬戶:admin(初始設置,直接填寫)
密碼:123123(本機實驗,實際情況就是需要加密的設定密碼)

 

注意事項:
1. 系統的資源配置修改為65536,否則可能觸發MongoDB和Elasticsearch運行錯誤;
2. Elasticsearch服務一定以普通用戶運行,不能以root用戶執行啟動,軟件目錄的所有者必須是也是運行的普通用戶,如執行 chown ela:ela /home/ela/elasticsearch-7.11.1 -R ;
3. Graylog服務運行後Web訪問會有一定延遲,但不超過1分鐘,若長時間沒有進入,顯示拒絕連接,多是server.conf配置文件的IP地址填寫不正確導致,文檔配置中所有192等開頭的IP地址均為要根據實際情況修改的,而127.0.0.1和0.0.0.0或localhost則不做修改;
4. 本文檔為所有服務均在一個服務器主機的情況,若需要將某個服務分到另外的主機上,一定要對應好server.conf中各個服務的銜接IP地址;

 

 

 

 

 到這,服務端的操作就完成了,你可以訪問到你的網頁,但是現在還沒有配置日誌節點,每個需要收集日誌的節點主機均需要配置Sidecars;

 

  –返回目錄–


 

CentOS端的Sidecar安裝及Web界面設置

  –返回目錄–

 

接下來我們來配置Sidecars,服務上了,收不到日誌,就是浪費電,目前我自己測試配置了Linux的CentOS7端和自己的windows主機的日誌;

下面的步驟大部分為我的截圖,Web界面的操作,若是寫可能有些不清楚;

 

官方的安裝文檔中的圖非常清除的描述了各個主機之間與服務安裝的關係和連接情況:

( //docs.graylog.org/en/4.0/pages/sidecar.html )

每個日誌源端均需要配置一個Sidecar服務,其是負責聯繫服務端進行日誌傳輸工作的;

 

 

 

 

 

 

 

節點安裝Sidecar服務並進行配置

    ##此包通過官方給的GitHub地址下載,其中有版本對照,參照官方(//docs.graylog.org/en/4.0/pages/sidecar.html),順便可以把windows的也下下來
[root@mysql57 ~]# rpm -ivh graylog-sidecar-1.0.2-1.x86_64.rpm


    ##獲得值後返回命令行填寫配置文件
[root@mysql57 ~]# vi /etc/graylog/sidecar/sidecar.yml
    ## 該處填寫為服務端的IP地址及端口號,後面的/api/不要刪除
server_url: "//192.168.3.134:9000/api/"
    ## 該值即為之前在Web界面創建並生成的令牌值,一定要對應,否則不能連接
server_api_token: "1457n0qgqanf2emv65btu3fsd41gps23521aqbv2v23vcipi5cj0"
    ## 該值為本節點在Web界面展示的源端名稱,注意與其他節點區分
node_name: "mysql57"
    ## 打開此選項
send_status: true


    ##安裝服務並啟動
[root@mysql57 ~]# graylog-sidecar -service install
[root@mysql57 ~]# systemctl start graylog-sidecar
    ##(配置文件若更改需要重新啟動一次服務)
[root@mysql57 ~]# systemctl enable graylog-sidecar
    ##(記得配置開機自動啟動,否則開機後sidecar服務不運行,服務端不能獲取到該節點日誌)


    ##安裝日誌獲取的依賴軟件
[root@mysql57 ~]# rpm -ivh filebeat-6.6.0-x86_64.rpm

 

 

 

 

 

 

 

 

 

至此,我們在CentOS7上面部署節點Sidecar的操作就結束了,其中日誌的路徑和類型等根據自己實際情況來做改變,不過一般的日誌選Beats都可以。

 

  –返回目錄–


 

Windows端的Sidecar安裝及Web界面設置

  –返回目錄–

 

接下來是windows的節點,來安裝Sidecar軟件

在安裝軟件之前,根據我們前面設置好的Inputs(依然選擇使用Beats)來指定一個端口給windows,並需要確認已經創建了Token並獲取了值
之後在windows主機上安裝Sidecar軟件,雙擊 graylog_sidecar_installer_1.0.2-1.exe ,
進入後下一步到下圖界面進行參數配置,正確輸入後進行Install,之後完成即可;

 

以管理員身份運行cmd進行服務安裝並啟動

 

安裝服務

C:\Program Files\graylog\sidecar\graylog-sidecar.exe -service install

啟動服務

C:\Program Files\graylog\sidecar\graylog-sidecar.exe” -service start

 

按windows鍵 + R 並輸入 services.msc 進入服務管理界面

 

找到Graylog Sidecar服務,並確認其啟動並屬於 自動 啟動類型

 

之後就是Web端配置獲取信息了

 

 

 

 

 

 

 

 

到此,我們又能獲取到windows上面的日誌了;

以上是從服務端再到客戶端日誌節點的安裝部署,其中很多配置都要根據自己所在的實際情況去填寫或選擇。

 

  –返回目錄–


 

Web界面設置簡單的警告事件及郵件發送

  –返回目錄–

 

配置中有許多自定義鍵值,基本為非必要字段,可以不進行添加,有相關需求可以自行進行添加,Email的相關變量附加到本文檔結尾,由於翻譯問題,可能會出現偏差;

更詳細的參數描述或使用方法偏多,請前往至官網閱讀://docs.graylog.org/en/4.0/pages/alerts.html#fields

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

以上是警報事件郵件的發送設置,當你收到測試郵件的時候就已經證明服務與你的郵箱可以正常聯繫了,不過還是要注意警報事件的設置;

以下是官方文檔中鍵值變量的翻譯,是我拿谷歌翻譯直接翻譯的,有的讀起來都不太明白,沒辦法,英語水平極度有限(沒有翻譯軟件幫助,我基本都看不懂),最好是去官網仔細研究一下;

事件定義元數據
有關創建警報的事件定義的信息。
event_definition_id (字符串)-事件定義的數據庫ID
event_definition_type(字符串)-事件定義類型的內部名稱(aggregation-v1或correlation-v1)
event_definition_title (字符串)-在用戶界面中設置的標題
event_definition_description (字符串)-在用戶界面中設置的描述
job_definition_id (字符串)-與計劃的事件定義關聯的內部作業定義ID
job_trigger_id (字符串)-與作業的當前執行關聯的內部ID

 

活動數據
event 該事件存儲在Graylog中

id (字符串)-存儲事件的消息ID
event_definition_id(字符串)-與event_definition_id元數據部分中的相同
event_definition_type(字符串)-與event_definition_type元數據部分中的相同
origin_context(字符串)-創建此事件的消息或事件的URN(event或message)。可以為空
timestamp(DateTime)-該事件描述的時間戳,可以設置為基礎事件或消息(請參閱參考資料origin_context)
timestamp_processing (DateTime)-該事件的時間戳由Graylog創建
timerange_start(DateTime)-用於創建此事件的數據Graylog窗口的開始。可以為空
timerange_end(DateTime)-用於創建此事件的數據Graylog窗口的末尾。可以為空
streams -(字符串)-事件存儲在其中的流ID的列表
source_streams (字符串)-事件提取數據的流ID的列表
alert(布爾)-是否將此事件視為警報。始終true用於具有通知的事件定義
message (字符串)-描述此事件的人性化消息
source (字符串)-創建此事件的Graylog服務器的主機名
key_tuple (字符串)-組成事件鍵的值列表
key (字符串)-事件的鍵為單個字符串
priority (長整數)-事件的優先級值
fields (Map <String,String>)-附加到事件的自定義字段

積壓
backlog (消息摘要列表)-導致生成此警報的消息或事件的列表
id (字符串)-消息ID
index(字符串)-消息存儲在其中的索引的名稱。與一起使用id可在Graylog中唯一標識消息
source(字符串)-source消息的字段
message(字符串)-message消息的字段
timestamp(DateTime)-timestamp消息的字段
stream_ids (字符串)-消息的流ID
fields (Map <String,Object>)-可以迭代消息的其餘字段

 

 –返回目錄–