一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

云服務(wù)器|WEB服務(wù)器|FTP服務(wù)器|郵件服務(wù)器|虛擬主機|服務(wù)器安全|DNS服務(wù)器|服務(wù)器知識|Nginx|IIS|Tomcat|

服務(wù)器之家 - 服務(wù)器技術(shù) - 服務(wù)器知識 - Docker部署ELK7.3.0日志收集服務(wù)最佳實踐

Docker部署ELK7.3.0日志收集服務(wù)最佳實踐

2021-05-12 18:31邪惡八進制 服務(wù)器知識

這篇文章主要介紹了Docker部署ELK7.3.0日志收集服務(wù)最佳實踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

寫在最前面

本文僅包含ELK7.3.0部署!

部署環(huán)境:

 

系統(tǒng) CentOS 7
Docker Docker version 19.03.5
CPU 2核
內(nèi)存 2.5G
磁盤 30G(推薦設(shè)置,磁盤不足可能會引發(fā)es報錯)
Filebeat v7.3.0,單節(jié)點
ElasticSearch v7.3.0,兩份片
Kibana v7.3.0,單節(jié)點
Logstash v7.3.1,單節(jié)點

 

ELK分布式集群部署方案

Docker部署ELK7.3.0日志收集服務(wù)最佳實踐

linux中elasticsearch用戶擁有的內(nèi)存權(quán)限太小,至少需要262144,報錯信息(max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]),因此先修改系統(tǒng)配置。

?
1
2
3
4
5
6
7
# 修改配置sysctl.conf
vi /etc/sysctl.conf
# 添加下面配置:
vm.max_map_count=262144
# 重新加載:
sysctl -p
# 最后重新啟動elasticsearch,即可啟動成功。

環(huán)境均采用Docker部署,為了更方便的使用Docker命令,我們安裝一下bash-completion自動補全插件:

?
1
2
3
4
# 安裝依賴工具bash-complete
yum install -y bash-completion
ource /usr/share/bash-completion/completions/docker
source /usr/share/bash-completion/bash_completion

部署順序:ES --> Kibana --> Logstash --> Filebeat

ElasticSearch7.3.0部署

主節(jié)點部署

創(chuàng)建配置文件和數(shù)據(jù)存放目錄

?
1
2
mkdir -p {/mnt/es1/master/data,/mnt/es1/master/logs}
vim /mnt/es1/master/conf/es-master.yml

 es-master.yml配置

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# 集群名稱
cluster.name: es-cluster
# 節(jié)點名稱
node.name: es-master
# 是否可以成為master節(jié)點
node.master: true
# 是否允許該節(jié)點存儲數(shù)據(jù),默認(rèn)開啟
node.data: false
# 網(wǎng)絡(luò)綁定
network.host: 0.0.0.0
# 設(shè)置對外服務(wù)的http端口
http.port: 9200
# 設(shè)置節(jié)點間交互的tcp端口
transport.port: 9300
# 集群發(fā)現(xiàn)
discovery.seed_hosts:
 - 172.17.0.2:9300
 - 172.17.0.3:9301
# 手動指定可以成為 mater 的所有節(jié)點的 name 或者 ip,這些配置將會在第一次選舉中進行計算
cluster.initial_master_nodes:
 - 172.17.0.2
# 支持跨域訪問
http.cors.enabled: true
http.cors.allow-origin: "*"
# 安全認(rèn)證
xpack.security.enabled: false
#http.cors.allow-headers: "Authorization"
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
 
#解決跨域問題
#http.cors.enabled: true
#http.cors.allow-origin: "*"
#http.cors.allow-methods: OPTIONS, HEAD, GET, POST, PUT, DELETE
#http.cors.allow-headers: "X-Requested-With, Content-Type, Content-Length, X-User"

pull鏡像時會有些慢,耐心等待! 

?
1
2
3
4
5
6
7
8
9
10
11
12
# 拉取鏡像,可以直接構(gòu)建容器,忽略此步
docker pull elasticsearch:7.3.0
 
# 構(gòu)建容器
## 映射5601是為Kibana預(yù)留的端口
docker run -d -e ES_JAVA_OPTS="-Xms256m -Xmx256m" \
-p 9200:9200 -p 9300:9300 -p 5601:5601 \
-v /mnt/es1/master/conf/es-master.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mnt/es1/master/data:/usr/share/elasticsearch/data \
-v /mnt/es1/master/logs:/usr/share/elasticsearch/logs \
-v /etc/localtime:/etc/localtime \
--name es-master elasticsearch:7.3.0

/etc/localtime:/etc/localtime:宿主機與容器時間同步。

從節(jié)點部署

創(chuàng)建配置文件和數(shù)據(jù)存放目錄

?
1
2
mkdir -p {/mnt/es1/slave1/data,/mnt/es1/slave1/logs}
vim /mnt/es1/slave1/conf/es-slave1.yml

 es-slave1.yml配置

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 集群名稱
cluster.name: es-cluster
# 節(jié)點名稱
node.name: es-slave1
# 是否可以成為master節(jié)點
node.master: true
# 是否允許該節(jié)點存儲數(shù)據(jù),默認(rèn)開啟
node.data: true
# 網(wǎng)絡(luò)綁定
network.host: 0.0.0.0
# 設(shè)置對外服務(wù)的http端口
http.port: 9201
# 設(shè)置節(jié)點間交互的tcp端口
transport.port: 9301
# 集群發(fā)現(xiàn)
discovery.seed_hosts:
 - 172.17.0.2:9300
 - 172.17.0.3:9301
# 手動指定可以成為 mater 的所有節(jié)點的 name 或者 ip,這些配置將會在第一次選舉中進行計算
cluster.initial_master_nodes:
 - 172.17.0.2
# 支持跨域訪問
http.cors.enabled: true
http.cors.allow-origin: "*"
# 安全認(rèn)證
xpack.security.enabled: false
#http.cors.allow-headers: "Authorization"
bootstrap.memory_lock: false
bootstrap.system_call_filter: false

pull鏡像時會有些慢,耐心等待! 

?
1
2
3
4
5
6
7
8
9
10
11
# 拉取鏡像,可以直接構(gòu)建容器,忽略此步
docker pull elasticsearch:7.3.0
 
# 構(gòu)建容器
docker run -d -e ES_JAVA_OPTS="-Xms256m -Xmx256m" \
-p 9201:9200 -p 9301:9300 \
-v /mnt/es1/slave1/conf/es-slave1.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mnt/es1/slave1/data:/usr/share/elasticsearch/data \
-v /mnt/es1/slave1/logs:/usr/share/elasticsearch/logs \
-v /etc/localtime:/etc/localtime \
--name es-slave1 elasticsearch:7.3.0

修改配置重啟容器

?
1
2
3
# 查看主從容器IP
docker inspect es-master
docker inspect es-slave1

Docker部署ELK7.3.0日志收集服務(wù)最佳實踐

Docker部署ELK7.3.0日志收集服務(wù)最佳實踐

修改ES配置文件es-master.yml、es-slave1.yml中的discovery.seed_hostscluster.initial_master_nodes為對應(yīng)的IP!重啟容器:

?
1
2
3
4
5
6
7
docker restart es-master
 
docker restart es-slave1
 
# 查看es日志
 
docker logs -f --tail 100f es-master

訪問http://IP:9200/_cat/nodes確認(rèn)查看ES集群信息,可以看到有主從節(jié)點部署成功:

Docker部署ELK7.3.0日志收集服務(wù)最佳實踐

 節(jié)點部署常用API:

 

API 功能
http://IP:9200 查看ES版本信息
http://IP:9200/_cat/nodes

查看所有分片

http://IP:9200/_cat/indices 查看所有索引

 

Kibana7.3.0部署

創(chuàng)建Kibana配置文件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
vim /mnt/kibana.yml
#
## ** THIS IS AN AUTO-GENERATED FILE **
##
#
## Default Kibana configuration for docker target
server.name: kibana
#配置Kibana的遠(yuǎn)程訪問
server.host: "0.0.0.0"
#配置es訪問地址
elasticsearch.hosts: [ "http://127.0.0.1:9200" ]
#漢化界面
i18n.locale: "zh-CN"
 
#xpack.monitoring.ui.container.elasticsearch.enabled: true

查看es-master容器ID

?
1
docker ps|grep es-master

Docker部署ELK7.3.0日志收集服務(wù)最佳實踐

部署Kibana

注意將命令中的40eff5876ffd 修改成es-master容器ID,拉取鏡像,情耐性等待!

?
1
2
3
4
5
6
7
8
9
10
11
# 拉取鏡像,可以直接構(gòu)建容器,忽略此步
docker pull docker.elastic.co/kibana/kibana:7.3.0
 
# 構(gòu)建容器
## --network=container 表示共享容器網(wǎng)絡(luò)
docker run -it -d \
-v /mnt/kibana.yml:/usr/share/kibana/config/kibana.yml \
-v /etc/localtime:/etc/localtime \
-e ELASTICSEARCH_URL=http://172.17.0.2:9200 \
--network=container:40eff5876ffd \
--name kibana docker.elastic.co/kibana/kibana:7.3.0

 查看Kibana容器日志,看到如下圖所示日志則表示啟動成功

?
1
docker logs -f --tail 100f kibana

Docker部署ELK7.3.0日志收集服務(wù)最佳實踐

 訪問http://IP:5601,可能會出現(xiàn)503,等一會在訪問就OK了。可以訪問到Kibana控制臺則表示Kibana已安裝成功,并已于es-master建立連接。

Docker部署ELK7.3.0日志收集服務(wù)最佳實踐

Logstash7.3.1部署

編寫Logstash配置文件

vim /mnt/logstash-filebeat.conf

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
input {
  # 來源beats
  beats {
    # 端口
    port => "5044"
  }
}
# 分析、過濾插件,可以多個
filter {
  grok {
    # grok 表達式存放的地方
    patterns_dir => "/grok"
    
    # grok 表達式重寫
    # match => {"message" => "%{SYSLOGBASE} %{DATA:message}"}
    
    # 刪除掉原生 message字段
    overwrite => ["message"]
 
  # 定義自己的格式
    match => {
        "message" => "%{URIPATH:request} %{IP:clientip} %{NUMBER:response:int} \"%{WORD:sources}\" (?:%{URI:referrer}|-) \[%{GREEDYDATA:agent}\] \{%{GREEDYDATA:params}\}"
    }
  }
 # 查詢歸類插件
 geoip {
    source => "message"
  }
}
output {
    # 選擇elasticsearch
    elasticsearch {
        # es 集群
        hosts => ["http://172.17.0.2:9200"]
      #username => "root"
      #password => "123456"
 
        # 索引格式
        index => "omc-block-server-%{[@metadata][version]}-%{+YYYY.MM.dd}"
 
        # 設(shè)置為true表示如果你有一個自定義的模板叫l(wèi)ogstash,那么將會用你自定義模板覆蓋默認(rèn)模板logstash
        template_overwrite => true
    }
}

 部署Logstash

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 拉取鏡像,可以直接構(gòu)建容器,忽略此步
docker pull logstash:7.3.1
 
# 構(gòu)建容器
# xpack.monitoring.enabled 打開X-Pack的安全和監(jiān)視服務(wù)
# xpack.monitoring.elasticsearch.hosts 設(shè)置ES地址,172.17.0.2為es-master容器ip
# docker允許在容器啟動時執(zhí)行一些命令,logsatsh -f 表示通過指定配置文件運行l(wèi)ogstash,/usr/share/logstash/config/logstash-sample.conf是容器內(nèi)的目錄文件
 
docker run -p 5044:5044 -d \
-v /mnt/logstash-filebeat.conf:/usr/share/logstash/config/logstash-sample.conf \
-v /etc/localtime:/etc/localtime \
-e elasticsearch.hosts=http://172.17.0.2:9200 \
-e xpack.monitoring.enabled=true \
-e xpack.monitoring.elasticsearch.hosts=http://172.17.0.2:9200 \
--name logstash logstash:7.3.1 -f /usr/share/logstash/config/logstash-sample.conf

這里需要注意es集群地址,這里我們只配置es-master的ip(172.17.0.2),詳細(xì)Logstash配置。 查看到如下日志則表示安裝成功: 

Docker部署ELK7.3.0日志收集服務(wù)最佳實踐

Filebeat7.3.0部署

Filebeat 并不是一個必須的組件,通過Logstash我們同樣也可以實現(xiàn)日志的搬運工作。

例如,實現(xiàn)將所有非“20”開頭的日志進行合并,可以使用如下Logstash配置:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
input {
  # 來源beats
  beats {
    # 端口
    port => "5044"
  }
  file {
    type => "server-log"
    path => "/logs/*.log"
    start_position => "beginning"
    codec=>multiline{
        // 正則表達式,所有“20”前綴日志, 如果你的日志是以“[2020-06-15”這類前綴則,可以替換成"^["
        pattern => "^20"
        // 是否對正則規(guī)則取反
        negate => true
        // previous 表示合并到上一行,next 表示合并到下一行
        what => "previous"
    }
 
  }
}

注意,F(xiàn)ilebeat必須與應(yīng)用部署在同一服務(wù)器,這里應(yīng)用采用docker部署,/mnt/omc-dev/logs應(yīng)用日志文件的映射目錄,如果你也是通過docker進行服務(wù)部署,請記得通過【-v /mnt/omc-dev/logs:/應(yīng)用工作/logs】日志文件映射出來哦!

創(chuàng)建Filebeat配置文件

?
1
2
3
## /mnt/omc-dev/logs 為應(yīng)用日志目錄,必須將應(yīng)用的部署目錄映射出來
mkdir -p {/mnt/omc-dev/logs,/mnt/filebeat/logs,/mnt/filebeat/data}
vim /mnt/filebeat/filebeat.yml
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
filebeat.inputs:
- type: log
 enabled: true
 paths:
  # 當(dāng)前目錄下的所有.log文件
  - /home/project/spring-boot-elasticsearch/logs/*.log
 multiline.pattern: '^20'
 multiline.negate: true
 multiline.match: previous
 
logging.level: debug
 
filebeat.config.modules:
 path: ${path.config}/modules.d/*.yml
 reload.enabled: false
 
setup.template.settings:
 index.number_of_shards: 1
 
setup.dashboards.enabled: false
 
setup.kibana:
 host: "http://172.17.0.2:5601"
 
# 不直接傳輸至ES
#output.elasticsearch:
# hosts: ["http://es-master:9200"]
# index: "filebeat-%{[beat.version]}-%{+yyyy.MM.dd}"
 
output.logstash:
 hosts: ["172.17.0.5:5044"]
 
#scan_frequency: 1s
close_inactive: 12h
backoff: 1s
max_backoff: 1s
backoff_factor: 1
flush.timeout: 1s
 
processors:
 - add_host_metadata: ~
 - add_cloud_metadata: ~

注意修改Logstash IP和端口。

?
1
2
3
4
5
6
7
8
9
10
11
# 拉取鏡像,可以直接構(gòu)建容器,忽略此步
docker pull docker.elastic.co/beats/filebeat:7.3.0
 
# 構(gòu)建容器
## --link logstash 將指定容器連接到當(dāng)前連接,可以設(shè)置別名,避免ip方式導(dǎo)致的容器重啟動態(tài)改變的無法連接情況,logstash 為容器名
docker run -d -v /mnt/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml \
-v /mnt/omc-dev/logs:/home/project/spring-boot-elasticsearch/logs \
-v /mnt/filebeat/logs:/usr/share/filebeat/logs \
-v /mnt/filebeat/data:/usr/share/filebeat/data \
-v /etc/localtime:/etc/localtime \
--link logstash --name filebeat docker.elastic.co/beats/filebeat:7.3.0

查看日志,我們在配置文件中將Filebeat的日志級別配置成了debug,因此會開到所有收錄到的信息

?
1
docker logs -f --tail 100f filebeat

Docker部署ELK7.3.0日志收集服務(wù)最佳實踐

可以看到,通過查詢ES索引,多出了三條索引,通過我們配置的按天進行索引分割,因為我這個環(huán)境已經(jīng)跑了三天了,所以存在三個omc服務(wù)的索引(omc 是一個定時任務(wù)的服務(wù),你也可以寫一個簡單的定時任務(wù)來進行測試)。

Docker部署ELK7.3.0日志收集服務(wù)最佳實踐

 接下來我們創(chuàng)建一個Kibana索引模式,并進行日志查詢:

Docker部署ELK7.3.0日志收集服務(wù)最佳實踐

 Docker部署ELK7.3.0日志收集服務(wù)最佳實踐

索引創(chuàng)建完成,到Discover視圖就可以通過索引模式查詢?nèi)罩玖恕?/p>

文章到這里就結(jié)束了,如果你還有別的服務(wù)需要引入的話,只需要將日志掛載到指定目錄就行了,當(dāng)然如果服務(wù)是部署在其他服務(wù)器上,則需要在服務(wù)器上部署Filebeat,并且要保證服務(wù)器之間網(wǎng)絡(luò)互通哦~~

最后,在這里推薦一個開源ELK自動化Docker部署項目:https://github.com/deviantony/docker-elk.git

--------------------------------------------------------

2020.6.28更新

最近發(fā)生了一起Logstash導(dǎo)致的物理內(nèi)存暴漲問題。

簡單闡述一下主要問題:

目前單服務(wù)單日日志量在2.2GB左右,由于早期沒有限制Logstash內(nèi)存,導(dǎo)致大量數(shù)據(jù)上來時,Logstash瘋狂占用內(nèi)存與IO。

隨著近日,在同一服務(wù)器上面應(yīng)用服務(wù)流量上漲,最終導(dǎo)致內(nèi)存不足,出現(xiàn)OutOfMemoryError問題。

隨后,通過設(shè)置優(yōu)化JVM內(nèi)存(具體我就不說了,網(wǎng)上一大把),并添加上Logstash響應(yīng)內(nèi)存配置,得以解決早前的遺留問題。

最后,將Logstash 添加到Kibana進行監(jiān)控(當(dāng)然你還可以將Logstash日志配置到ES上去):

https://blog.csdn.net/QiaoRui_/article/details/97667293

原文鏈接:https://blog.csdn.net/weixin_38652136/article/details/103644445

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久亚洲一级α片 | 女人麻豆国产香蕉久久精品 | 日韩免费观看成第15集 | 精品久久久久久 | 美女把小内内脱个精光打屁屁 | 欧美男女爱爱视频 | 国产成+人+综合+欧美 亚洲 | 午夜视频网站 | 欧美日韩一区二区三区在线视频 | 日本福利片国产午夜久久 | 成人深夜视频 | 好男人资源免费播放 | 日韩亚洲人成在线综合 | 亚洲精品九色在线网站 | 男女视频在线观看网站 | 国内精品一区视频在线播放 | 日本高清在线看 | 欧美一级激情 | 欧美亚洲国产成人不卡 | 国产欧美精品一区二区三区 | 欧美男人的天堂 | 亚洲色图欧美偷拍 | 国产精品成人免费福利 | 免费视频 久久久 | 免费看一区二区三区 | 国产成人免费在线视频 | gay 男同志被捆绑茎 | 4虎tv| 调教催眠| 四虎永久免费在线观看 | 8x8拨擦拨擦华人免费 | 扒开女人下面 | 精品国产乱码久久久久久免费 | 久久伊人精品青青草原2021 | 国产剧情麻豆刘玥视频 | 青草热视频| 日本一区二区三区久久精品 | 亚洲香蕉网久久综合影院3p | 牛牛在线观看 | 亚洲 欧美 另类 中文 在线 | 亚洲 欧美 在线观看 |