国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

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

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

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

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

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

寫在最前面

本文僅包含ELK7.3.0部署!

部署環境:

 

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

 

ELK分布式集群部署方案

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

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

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

環境均采用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部署

主節點部署

創建配置文件和數據存放目錄

?
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
# 節點名稱
node.name: es-master
# 是否可以成為master節點
node.master: true
# 是否允許該節點存儲數據,默認開啟
node.data: false
# 網絡綁定
network.host: 0.0.0.0
# 設置對外服務的http端口
http.port: 9200
# 設置節點間交互的tcp端口
transport.port: 9300
# 集群發現
discovery.seed_hosts:
 - 172.17.0.2:9300
 - 172.17.0.3:9301
# 手動指定可以成為 mater 的所有節點的 name 或者 ip,這些配置將會在第一次選舉中進行計算
cluster.initial_master_nodes:
 - 172.17.0.2
# 支持跨域訪問
http.cors.enabled: true
http.cors.allow-origin: "*"
# 安全認證
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
# 拉取鏡像,可以直接構建容器,忽略此步
docker pull elasticsearch:7.3.0
 
# 構建容器
## 映射5601是為Kibana預留的端口
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:宿主機與容器時間同步。

從節點部署

創建配置文件和數據存放目錄

?
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
# 節點名稱
node.name: es-slave1
# 是否可以成為master節點
node.master: true
# 是否允許該節點存儲數據,默認開啟
node.data: true
# 網絡綁定
network.host: 0.0.0.0
# 設置對外服務的http端口
http.port: 9201
# 設置節點間交互的tcp端口
transport.port: 9301
# 集群發現
discovery.seed_hosts:
 - 172.17.0.2:9300
 - 172.17.0.3:9301
# 手動指定可以成為 mater 的所有節點的 name 或者 ip,這些配置將會在第一次選舉中進行計算
cluster.initial_master_nodes:
 - 172.17.0.2
# 支持跨域訪問
http.cors.enabled: true
http.cors.allow-origin: "*"
# 安全認證
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
# 拉取鏡像,可以直接構建容器,忽略此步
docker pull elasticsearch:7.3.0
 
# 構建容器
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日志收集服務最佳實踐

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

修改ES配置文件es-master.yml、es-slave1.yml中的discovery.seed_hostscluster.initial_master_nodes為對應的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確認查看ES集群信息,可以看到有主從節點部署成功:

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

 節點部署常用API:

 

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

查看所有分片

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

 

Kibana7.3.0部署

創建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的遠程訪問
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日志收集服務最佳實踐

部署Kibana

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

?
1
2
3
4
5
6
7
8
9
10
11
# 拉取鏡像,可以直接構建容器,忽略此步
docker pull docker.elastic.co/kibana/kibana:7.3.0
 
# 構建容器
## --network=container 表示共享容器網絡
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日志收集服務最佳實踐

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

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

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}"
 
        # 設置為true表示如果你有一個自定義的模板叫logstash,那么將會用你自定義模板覆蓋默認模板logstash
        template_overwrite => true
    }
}

 部署Logstash

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 拉取鏡像,可以直接構建容器,忽略此步
docker pull logstash:7.3.1
 
# 構建容器
# xpack.monitoring.enabled 打開X-Pack的安全和監視服務
# xpack.monitoring.elasticsearch.hosts 設置ES地址,172.17.0.2為es-master容器ip
# docker允許在容器啟動時執行一些命令,logsatsh -f 表示通過指定配置文件運行logstash,/usr/share/logstash/config/logstash-sample.conf是容器內的目錄文件
 
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),詳細Logstash配置。 查看到如下日志則表示安裝成功: 

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

Filebeat7.3.0部署

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

例如,實現將所有非“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"
        // 是否對正則規則取反
        negate => true
        // previous 表示合并到上一行,next 表示合并到下一行
        what => "previous"
    }
 
  }
}

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

創建Filebeat配置文件

?
1
2
3
## /mnt/omc-dev/logs 為應用日志目錄,必須將應用的部署目錄映射出來
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:
  # 當前目錄下的所有.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
# 拉取鏡像,可以直接構建容器,忽略此步
docker pull docker.elastic.co/beats/filebeat:7.3.0
 
# 構建容器
## --link logstash 將指定容器連接到當前連接,可以設置別名,避免ip方式導致的容器重啟動態改變的無法連接情況,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日志收集服務最佳實踐

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

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

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

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

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

索引創建完成,到Discover視圖就可以通過索引模式查詢日志了。

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

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

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

2020.6.28更新

最近發生了一起Logstash導致的物理內存暴漲問題。

簡單闡述一下主要問題:

目前單服務單日日志量在2.2GB左右,由于早期沒有限制Logstash內存,導致大量數據上來時,Logstash瘋狂占用內存與IO。

隨著近日,在同一服務器上面應用服務流量上漲,最終導致內存不足,出現OutOfMemoryError問題。

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

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

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

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

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 日本a在线 | 欧美日韩在线免费 | 日韩一区二区三区在线观看 | 日韩高清在线一区 | 草久久久 | 国产精品久久久久久久久大全 | 国产一级高清视频 | 欧美精品91 | 免费看日本黄色片 | 精品国产精品 | 亚洲精品久久久久久下一站 | 99精品国自产在线 | 日韩毛片免费视频一级特黄 | 精品在线看 | 国产日产久久高清欧美一区 | 国产精品二区一区二区aⅴ污介绍 | 日日摸夜夜添夜夜添特色大片 | 日本高清不卡视频 | 亚洲综合成人在线 | 91色乱码一区二区三区 | 精品亚洲一区二区 | 欧美日本韩国一区二区 | 黄色片网站在线免费观看 | 成人av小说| 人人插| 亚洲影视一区 | 成人午夜网 | 日韩成人中文字幕 | 精品久久久久久亚洲综合网 | 国产毛片久久久 | 成人午夜网站 | 久久久中文 | 免费在线看a| 永久91嫩草亚洲精品人人 | 成人在线精品 | 欧美一级一区 | 久久男人天堂 | 精品少妇一区二区三区在线播放 | 国产在线91| 中国电影黄色一级片免费观看 | 久久一区 |