1. 程式人生 > >Graylog日誌管理單機部署、日誌節點的Sidecar配置以及簡單的警告事件郵件傳送

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

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

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

 

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

(如果網路環境允許,官方 https://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 https://artifacts.elastic.co/GPG-KEY-elasticsearch ,可以使用wget或curl -o . 下載)

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

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

mongodb-linux-x86_64-enterprise-rhel70-4.4.3.tgz(官網下載 https://www.mongodb.com/try/download/enterprise 或 https://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(官方提供 https://github.com/Graylog2/collector-sidecar/releases )

graylog_sidecar_installer_1.0.2-1.exe(官方提供 https://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 = http://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

 

測試登入
瀏覽器訪問:http://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介面的操作,若是寫可能有些不清楚;

 

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

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

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

 

 

 

 

 

 

 

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

    ##此包通過官方給的GitHub地址下載,其中有版本對照,參照官方(https://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: "http://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的相關變數附加到本文件結尾,由於翻譯問題,可能會出現偏差;

更詳細的引數描述或使用方法偏多,請前往至官網閱讀:https://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>)-可以迭代訊息的其餘欄位

 

 --返回目