ELK日誌平臺:安裝配置搭建(1)

2021-02-14 運維網

ELK日誌平臺介紹

在搜索ELK資料的時候,發現這篇文章比較好,於是摘抄一小段:

日誌主要包括系統日誌、應用程式日誌和安全日誌。系統運維和開發人員可以通過日誌了解伺服器軟硬體信息、檢查配置過程中的錯誤及錯誤發生的原因。經常分析日誌可以了解伺服器的負荷,性能安全性,從而及時採取措施糾正錯誤。

通常,日誌被分散的儲存不同的設備上。如果你管理數十上百臺伺服器,你還在使用依次登錄每臺機器的傳統方法查閱日誌。這樣是不是感覺很繁瑣和效率低下。當務之急我們使用集中化的日誌管理,例如:開源的syslog,將所有伺服器上的日誌收集匯總。

集中化管理日誌後,日誌的統計和檢索又成為一件比較麻煩的事情,一般我們使用grep、awk和wc等Linux命令能實現檢索和統計,但是對於要求更高的查詢、排序和統計等要求和龐大的機器數量依然使用這樣的方法難免有點力不從心。

開源實時日誌分析ELK平臺能夠完美的解決我們上述的問題,ELK由ElasticSearch、Logstash和Kiabana三個開源工具組成。官方網站:https://www.elastic.co/cn/products/

---畫了一個ELK工作的原理圖-

如圖:Logstash收集AppServer產生的Log,並存放到ElasticSearch集群中,而Kibana則從ES集群中查詢數據生成圖表,再返回給Browser。

ELK平臺搭建

系統環境

System: Centos 7.3

ElasticSearch: 7.x

Logstash: 7.x

Kibana: 7.x

Filebeat: 7.x

Java: openjdk version  "1.8"

ELK下載:https://www.elastic.co/downloads/

一、安裝JDK以及ELKyum源

下載JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk9-downloads-3848520.html

本環境是下載的64位rpm包

#rpm -vih jdk-8u151-linux-x64.rpm

# 配置yum源,新建yum文件

Download and install the public signing key:

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

vim /etc/yum.repos.d/logstash.repo 

# 加入以下內容 

[logstash-7.x]

name=Elastic repository for 7.x packagesbaseurl=https://artifacts.elastic.co/packages/7.x/yum

gpgcheck=1

gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch

enabled=1

autorefresh=1

type=rpm-md

# 執行指令

yum clean

二、先安裝Elasticsearch

yum安裝

yum install elasticsearch

配置ElasticSearch

vim /etc/elasticsearch/elasticsearch.yml

#這裡指定的是集群名稱,需要修改為對應的,開啟了自發現功能後,ES會按照此集群名稱進行集群發現

cluster.name: my-cluster

# 節點名稱

node.name: node-1

#數據目錄

path.data: /var/lib/elasticsearch

# log目錄

path.logs: /var/log/elasticsearch

#不在啟動的時候鎖定內存

bootstrap.memory_lock: false

#修改一下ES的監聽地址,這樣別的機器也可以訪問

network.host: 0.0.0.0

#默認的埠號

http.port: 9200

# - Discovery -

# Pass an initial list of hosts to perform discovery when this node is started:

# The default list of hosts is ["127.0.0.1", "[::1]"]

discovery.seed_hosts: ["node-1"]

# Bootstrap the cluster using an initial set of master-eligible nodes:

cluster.initial_master_nodes: ["node-1"]

#最後添加以下內容

#開啟跨域訪問支持,默認為 false

http.cors.enabled: true

#跨域訪問允許的域名地址

http.cors.allow-origin: "*"

*******************************************

在構建Elasticsearch(ES)多節點集群的時候,通常情況下只需要將elasticsearch.yml中的cluster.name設置成相同即可,ES會自動匹配並構成集群。但是很多時候可能由於不同的節點在不同的網段下,導致無法自動獲取集群。此時可以將啟用單播,顯示指定節點的發現。具體做法是在elasticsearch.yml文件中設置如下兩個參數:

discovery.zen.ping.multicast.enabled: false

discovery.zen.ping.unicast.hosts: ["192.168.0.11", "192.168.0.12"]

***********************************************

配置完成後啟動elasticsearch,並查看進程

systemctl start elasticsearch.service

ps -ef | grep elasticsearch

查看Elasticsearch的信息

#curl  http://127.0.0.1:9200/

客戶端網頁訪問可能需要關掉防火牆 或 添加安全組策略:

Systemctl stop firewalld.service

注意事項:

修改系統參數,確保系統有足夠資源啟動Elasticsearch

設置內核參數

vim /etc/sysctl.conf

#增加以下參數

vm.max _map_count = 655360

執行以下命令,確保生效配置生效:

sysctl  –p

設置資源參數

vim  /etc/security/limits.conf

#修改

* soft nofile 65536

* hard nofile 131072

* soft nproc 65536

*hard nproc 131072

vim  /etc/security/limits.d/20-nproc.conf

#設置elk用戶參數

elk soft nproc 65536

如何和elasticsearch交互

安裝elasticsearch-head插件,ElasticSearch-head是一個H5編寫的ElasticSearch集群操作和管理工具,可以對集群進行傻瓜式操作。

安裝docker鏡像或者通過github下載elasticsearch-head項目都是可以的,1或者2兩種方式選擇一種安裝使用即可

使用docker的集成好的elasticsearch-head

# docker run -p 9100:9100 mobz/elasticsearch-head:5

docker容器下載成功並啟動以後,運行瀏覽器打開http://localhost:9100/

2. 使用git安裝elasticsearch-head

# yum install -y npm

# git clone git://github.com/mobz/elasticsearch-head.git

#git 下載不了就用下面的地址下載

wget https://github.com/mobz/elasticsearch-head/archive/master.zip

# 下載後解壓移動至此 /usr/local/elasticsearch-head

# cd elasticsearch-head

#npm install -g grunt

#由於國外鏡像太慢,使用的是國內鏡像代理安裝的

#npm install -g grunt-cli --registry=https://registry.npm.taobao.org --no-proxy

#npm install -g cnpm --registry=https://registry.npm.taobao.org

#cnpm install

# npm run start &

檢查埠是否起來

#netstat -antp | grep 9100

瀏覽器訪問測試是否正常

#http://IP:9100/

3. 增加自動啟動配置文件

vim /usr/local/elasticsearch-head/start.sh

#/bin/bash

sleep 2m  # 開機後等待2分鐘,因為ELK啟動需要時間

cd /usr/local/elasticsearch-head

/usr/bin/npm instll  # 正常是不需要再次安裝,不知為什麼有時需要重新安裝才可以用

sleep 20s

/usr/bin/npm run start &  # 後臺啟動服務

exit

# 再把此腳本添加自動啟動, /etc/rc.local 文件最後增加一行

/bin/sh /usr/local/elasticsearch-head/start.sh > /root/es_head.log &

三、filebeat、winlogbeat簡介和安裝配置

filebeat是基於原先 logstash-forwarder 的源碼開發而來,無需JAVA環境,運行起來更輕便,無疑是業務伺服器端的日誌收集工具。filebeat支持各Linux環境,同時支持Window環境。

winlogbeat 是專門收集Window系統日誌的收集工具。

filebeat主要配置就是這個配置文件了,設定好之後啟動服務就會自動從源拉取數據發送到指定位置,當數據為普通行數據時,filebeat會自動為其添加欄位信息,其中一項欄位 @timestamp 為filebeat讀取到這條數據的時間,默認格式為UTC時間,比中國大陸時間早8小時。

如果數據為json格式,而數據中已包含@timestamp欄位,filebeat處理時會把@timestamp欄位值替換為filebeat讀取到該行數據的當前UTC時間。

安裝:

官方下載:https://www.elastic.co/cn/products/beats

yum安裝Filebeat

yum install filebeat

啟動服務

systemctl start filebeat.service

源碼安裝Filebeat

下載:https://www.elastic.co/downloads/

解壓:tar -zxvf filebeat-7…….tar.gz

啟動

./filebeat -e -c filebeat.yml

-c:配置文件位置

-path.logs:日誌位置

-path.data:數據位置

-path.home:家位置

-e:關閉日誌輸出

-d 選擇器:啟用對指定選擇器的調試。 對於選擇器,可以指定逗號分隔的組件列表,也可以使用-d「*」為所有組件啟用調試.例如,-d「publish」顯示所有「publish」相關的消息。

後臺啟動filebeat

 ./filebeat -e -c filebeat.yml >/dev/null 2>&1 & 將所有標準輸出及標準錯誤輸出到/dev/null空設備,即沒有任何輸出

./filebeat -e -c filebeat.yml > filebeat.log & 

2、安裝winlogbeat,windows下filebeat安裝也類似,直接解壓即可

這裡 下載winlogbeat 解壓到 C:\Program Files

重新命名文件夾為winlogbeat

用管理員身份打開windows的 powershell

運行以下命令來安裝服務

PS C:\Users\Administrator> cd 'C:\Program Files\Winlogbeat'

PS C:\Program Files\Winlogbeat> .\install-service-winlogbeat.ps1

如果在系統上禁用了腳本執行,則需要為當前會話設置執行策略以允許腳本運行。

PowerShell.exe -ExecutionPolicy UnRestricted -File .\install-service-winlogbeat.ps1.

或者可以使用以下命令來關閉一些安全防護,輸入命令後按Y確認

PS C:\Program Files\Winlogbeat> set-executionpolicy remotesigned

PS C:\Program Files\Winlogbeat> set-executionpolicy Bypass

官方文檔:

https://www.elastic.co/guide/en/beats/winlogbeat/current/winlogbeat-installation.html

3、配置文件說明

filebeat 配置:





filebeat.inputs:

- type: log
enabled: true
paths: - E:/DB_Backup/Logs/*.txt

fields: log_topic: system_log
name: "192.168.0.232"
tags: ["dbbackup_log"]
multiline.pattern: '(^NEW)' multiline.negate: true multiline.match: after multiline.max_lines: 15
- type: log enabled: true
paths: - E:/DB_Backup/WEBEIMS/*.txt
encoding: GB2312
fields: log_topic: system_log
name: "192.168.0.232"
tags: ["dbbackup_log"]
multiline.pattern: '(^RAR)' multiline.negate: true multiline.match: after multiline.max_lines: 15












filebeat.config.modules: path: ${path.config}/modules.d/*.yml
reload.enabled: false


setup.template.settings: index.number_of_shards: 1


















output.logstash: hosts: ["192.168.0.77:5044"]





processors: - add_host_metadata: ~ - add_cloud_metadata: ~
- drop_fields: fields: ["agent.type","agent.version","agent.ephemeral_id","agent.id","agent.hostname","ecs.version","host.id","host.os.family","host.os.kernel","host.os.platform","host.os.version","host.architecture","host.containerized","host.os.codename","log.offset"]

logging.level: info





winlogbeat 配置:




winlogbeat.event_logs: - name: Application ignore_older: 72h - name: Security - name: System

fields: log_topic: system_log

setup.template.settings: index.number_of_shards: 1

name: "192.168.0.232"
tags: ["windows_system_log"]
















output.logstash: hosts: ["192.168.0.77:5044"]





processors: - add_host_metadata: ~ - add_cloud_metadata: ~

- drop_fields: fields: ["agent.name","agent.type","agent.version","host.os.family","host.os.kernel","host.os.platform","host.os.version","host.architecture","host.containerized","host.os.codename","log.offset","agent.ephemeral_id","agent.id","host.id","agent.hostname","host.os.family","host.os.kernel","host.os.platform","host.os.version","host.architecture","host.containerized","host.os.codename","agent.ephemeral_id","agent.id","host.id","agent.hostname","ecs.version","winlog.api","winlog.computer_name","winlog.event_data.AccountDomain","winlog.event_data.LogonID","winlog.event_data.SessionName","winlog.provider_guid","winlog.provider_name","winlog.record_id","winlog.task","winlog.version","winlog.process.pid","winlog.process.thread.id"]

logging.level: info






未完待續……

相關焦點

  • ELK 處理 Spring Boot 日誌,妙!
    現今大多採用的微服務架構,日誌被分散在不同的機器上,使得日誌的查詢變得異常困難。工欲善其事,必先利其器。如果此時有一個統一的實時日誌分析平臺,那可謂是雪中送碳,必定能夠提高我們排查線上問題的效率。本文帶您了解一下開源的實時日誌分析平臺 ELK 的搭建及使用。
  • 使用Docker搭建ELK日誌系統
    現在我用的版本是基於6.1.1版本的。目標收集Java日誌文件,並且根據文件的不同將日誌分類,比如:訂單日誌,客戶日誌等。安裝docker版本kibanakibana的作用主要是幫助我們將日誌文件可視化。便於我們操作,統計等。
  • 用docker快速搭建elk日誌平臺
    在後臺服務數量較多時,登陸機器查看日誌是非常低效的。所以需要一個集中的日誌查看平臺。elk便是為此誕生的。
  • ELK Stack 企業級日誌平臺
    安裝與集群配置安裝JDK# yum install open-jdk.1.8# java –versionopenjdk version "1.8.0_101"OpenJDK Runtime[elk@module-kzkt-02 logs]$ cd /opt/elasticsearch-5.3.1/bin/[elk@module-kzkt-02 bin]$ .
  • Docker 入門到實戰教程(十二)ELK+Filebeat搭建日誌分析系統
    下面開始搭建一.Docker安裝ElasticSearch2.1 官網安裝docker pull docker.elastic.co/elasticsearch/elasticsearch:7.6.12.2 設置參數在elasticsearch的docker版本文檔中,官方提到了vm.max_map_count的值在生產環境最少要設置成
  • elk的簡單搭建
    3.2、es安裝:3.2.1.下載安裝配置:1) 下載: wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.5.1-linux-x86_64.tar.gz2)解壓到指定目類下: tar -zxvd elasticsearch-7.5.1
  • ELK 是什麼?一文全面了解 ELK Stack 企業級日誌平臺
    3.1 Elasticsearch安裝與集群配置安裝JDK# yum install open-jdk.1.8# java –versionopenjdk version "1.8.0_elk[elk@module-kzkt-02 logs]$ cd /opt/elasticsearch-5.3.1/bin/[elk@module-kzkt-02 bin]$ .
  • ELK 日誌收集系統
    因此我們需要集中化的管理日誌,ELK則應運而生。ELK=ElasticSeach+Logstash+Kibana,本項目採用的是 ElasticSeach + Logstash + kafka + Kibana各個組件介紹2.1 LogstashLogstash 主要用於收集伺服器日誌,它是一個開源數據收集引擎,具有實時管道功能。
  • 我的ELK搭建筆記(阿里雲上部署)
    1.2.2 Trouble shooting for elasticsearch    1.2.3 安裝Logstash    1.2.4 Trouble Shooting for Logstash    1.2.5 安裝Kibana with x-pack    1.2.6 Kibana界面日誌檢索2 最佳實踐
  • 快速搭建ELK7.5版本的日誌分析系統--搭建篇
    Beats :輕量型採集器的平臺,從邊緣機器向 Logstash 和 Elasticsearch 發送數據。Filebeat:輕量型日誌採集器。-b14)Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)配置安裝ElasticSearchyum安裝安裝elasticsearch的yum源的密鑰(這個需要在所有伺服器上都配置)[root@elk-master ~]# rpm --import https://artifacts.elastic.co
  • 手把手教你搭建 ELK 實時日誌分析平臺
    本篇文章主要是手把手教你搭建 ELK 實時日誌分析平臺,那麼,ELK 到底是什麼呢?ELK 是三個開源項目的首字母縮寫,這三個項目分別是:Elasticsearch、Logstash 和 Kibana。
  • 小識牛刀:Docker+ELK打造微服務日誌收集平臺
    Elasticsearch可以安裝在本地,也可以作為SaaS使用。Logstash是日誌聚合器,它使用一個pipeline 來接收輸入,過濾數據,並推送日誌輸出。Logstash可以使用不同的輸入插件從不同的源獲取日誌,並以期望的方式推送日誌。Kibana是一個用來可視化Elasticsearch數據的軟體,是一個帶有Elasticsearch的插件。
  • 使用ELK處理Docker日誌(一)
    可以將ELK套件安裝在一個容器裡,也可以使用不同的容器來分別安裝各個組件。  logstash:    enabled: true    hosts:         - elk:5044使用日誌驅動Docker從1.12開始支持Logging Driver,允許將Docker日誌路由到指定的第三方日誌轉發層,可將日誌轉發到AWS CloudWatch,Fluentd,GELF或NAT伺服器。
  • Docker 搭建 ELK 日誌搜索平臺
    ELK 搭建流程1、規範化 Spring Boot 應用的日誌請參考 《Spring Boot Log4j2 日誌性能之巔》,此處為了收集、處理日誌信息,所以修改下日誌的 Pattern,將<Property
  • Kubernetes實戰之部署ELK Stack收集平臺日誌
    >1 ELK概念2 K8S需要收集哪些日誌3 ELK Stack日誌方案4 容器中的日誌怎麼收集5 K8S平臺中應用日誌收集準備環境一套正常運行的k8s集群,kubeadm安裝部署或者二進位部署即可ip地址角色備註192.168.73.136nfs192.168.73.138k8s-master
  • 用Ansible部署ELK STACK
    通常,安裝ELK很容易。 但是,為了開發與測試的目的,你可能會發現自己重複安裝了堆棧這一套東西。雖然安裝過程夠簡單,且不超過5分鐘,但使用一個單行解決方案來安裝和配置各組件會更好。這就是Ansible可派上用場的地方。Ansible可以使你自動創建、配置和管理機器。
  • 一文讀懂開源日誌管理方案 ELK 和 EFK 的區別
    # 編輯 sysctl.convi /etc/sysctl.conf# 添加下面配置vm.max_map_count=655360# 然後執行命令sysctl -pFilebeat 配置安裝 FilebeatDownload Filebeat
  • 開源日誌管理方案 ELK 和 EFK 的區別
    =655360# 然後執行命令sysctl -p這裡我們通過 rpm 的方式下載 Filebeat,注意這裡下載和我們 ELK 對應的版本(ELK 是 7.6.1,這裡也是下載 7.6.1,避免出現錯誤):wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.6.1
  • 分布式環境中如何使用聚合日誌系統ELK
    ELK配置安裝ELK的環境需要安裝JDK,這裡我會說一些簡單的配置,詳細的安裝大家可以自行上網搜索。source=dra」當我們解壓了Logstash軟體後,我們需要修改startup.options文件配置:cd logstash/config/startup.optionsLS_HOME=/home/elk/support
  • ELK logstash 處理MySQL慢查詢日誌
    ,不同的日誌格式,解析方法不同。下面來說說logstash處理多行日誌的例子,對MySQL慢查詢日誌進行分析,這個經常遇到過,網絡上疑問也很多。;select `Id`, `Url` from `File` where `Id` in ('201319', '201300');# Time: 160229 11:46:371、filebeat配置‍:我這裡是使用filebeat 1.1.1版本的,之前版本沒有multiline配置項,具體方法看後面那種。