Elk7.2 Docker

正如官方所說的那樣 https://www.elastic.co/guide/en/elasticsearch/reference/current/vm-max-map-count.html,Elasticsearch默認使用mmapfs目錄來存儲索引。操作系統默認的mmap計數太低可能導致內存不足,我們可以使用下面這條命令來增加內存
為了防止ElasticSearch啟動報錯,max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]

vi /etc/sysctl.conf?

sysctl?-w vm.max_map_count=262144
?
添加配置

vm.max_map_count=655360


?
執行命令

sysctl -p


?
目錄結構

創建目錄

?

mkdir -p app/elk/elasticsearch/data/ app/elk/kibana/ app/elk/logstash/pipeline/


要授權給該目錄,否則elasticsearch無法啟動

chmod 777 app/elk/elasticsearch/data

?
創建各個文件夾下的文件

?

touch app/elk/docker-compose.yml app/elk/elasticsearch/elasticsearch.yml app/elk/kibana/kibana.yml app/elk/logstash/pipeline/logstash.conf app/elk/logstash/logstash.yml

?
把下列文件內容復制進去,不要落下

elasticsearch.yml---


## Default Elasticsearch configuration from Elasticsearch base image.
## https://github.com/elastic/elasticsearch/blob/master/distribution/docker/src/docker/config/elasticsearch.yml
#
cluster.name: "docker-cluster"
network.host: 0.0.0.0## X-Pack settings
## see https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-xpack.html
#
xpack.license.self_generated.type: trial
xpack.security.enabled: true
xpack.monitoring.collection.enabled: true?


#kibana.yml

## Default Kibana configuration from Kibana base image.
### https://github.com/elastic/kibana/blob/master/src/dev/build/tasks/os_packages/docker_generator/templates/kibana_yml.template.js
server.name: kibana
server.host: 0.0.0.0
##漢化kibana?
i18n.locale: "zh-CN"
elasticsearch.hosts: [ "http://elasticsearch:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true
### X-Pack security credentials
elasticsearch.username: elastic
elasticsearch.password: changeme


logstash.conf
注意下:我配置的是多來源日志,不同的系統,訪問不同的TCP端口,如果只有一個來源的話,就刪除掉一個就行

input {tcp {type => "springboot1"mode => "server"host => "0.0.0.0"port => 5000codec => json_lines}tcp {type => "springboot2"mode => "server"host => "0.0.0.0"port => 5010codec => json_lines}
}
output {if [type] == "springboot1" {elasticsearch {hosts => "elasticsearch:9200"index => "springboot1-logstash-%{+YYYY.MM.dd}"user => elasticpassword => changeme}}else if [type] == "springboot2" {elasticsearch {hosts => "elasticsearch:9200"index => "springboot2-logstash-%{+YYYY.MM.dd}"user => elasticpassword => changeme}}
}


logstash.yml

## Default Logstash configuration from Logstash base image.
### https://github.com/elastic/logstash/blob/master/docker/data/logstash/config/logstash-full.yml
http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://elasticsearch:9200" ]
#elasticsearch 這里寫的是你的ip
## X-Pack security credentials
xpack.monitoring.enabled: true
xpack.monitoring.elasticsearch.username: elastic
xpack.monitoring.elasticsearch.password: changeme


docker-compose.yml

version: "3"
services:###配置elasticsearchelasticsearch:image: elasticsearch:7.2.0container_name: elasticsearch user: rootprivileged: trueports:- "9200:9200"- "9300:9300"environment:discovery.type: single-node##es的密碼ELASTIC_PASSWORD: changeme#設置JVM最大(小)可用內存為1024,這個很重要,我一開始沒有設置這個,我的es起不來ES_JAVA_OPTS: "-Xmx1024m -Xms1024m" ES_JAVA_OPTS: "-Xmx1g -Xms1g"volumes:# 這里注意一下  如果你想吧docker中es的數據 映射出來 你本地的 /home/elasticsearch 必須擁有 777權限- /app/elk/elasticsearch/data/:/usr/share/elasticsearch/data- /app/elk/elasticsearch/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml#network_mode: host###配置Logstashlogstash:image: logstash:7.2.0container_name: logstashports:- "5000:5000/tcp"- "5010:5010/tcp"- "5000:5000/udp"- "9600:9600"#network_mode: hostuser: rootprivileged: trueenvironment:discovery.type: single-nodeES_JAVA_OPTS: "-Xmx256m -Xms256m"volumes:###將本機目錄/opt/elk/logstach/pipeline下的文件映射到docker容器里面- /app/elk/logstash/pipeline:/usr/share/logstash/pipeline- /app/elk/logstash/logstash.yml:/usr/share/logstash/config/logstash.ymldepends_on:- elasticsearch       ###配置Kibana  64位系統下內存約為1.4GB,32位系統下約為0.7GBkibana:image: kibana:7.2.0container_name: kibanauser: rootprivileged: trueports:- "5601:5601"volumes:###將本機目錄/opt/elk/kibana/kibana.yml下的文件映射到docker容器里面- /app/elk/kibana/kibana.yml:/usr/share/kibana/config/kibana.ymlenvironment:- ELASTICSEARCH_URL=http://elasticsearch:9200  #network_mode: hostdepends_on:- elasticsearch


通過docker-compose鏡像安裝啟動
下載慢的話最好配置下鏡像加速器 ,配置如下 登錄阿里云找到容器鏡像服務


cd /app/elk/
docker-compose up -d


Springboot 的logback.xml配置
1.maven安裝對應的包

<dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>6.4</version>
</dependency>



2.配置logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration><include resource="org/springframework/boot/logging/logback/base.xml" /><appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender"><!--配置logStash 服務地址--><destination>192.168.10.128:5000</destination><!-- 日志輸出編碼 --><encoder charset="UTF-8"class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder"><providers><timestamp><timeZone>UTC</timeZone></timestamp><pattern><pattern>{"logLevel": "%level","serviceName": "system-user","pid": "${PID:-}","thread": "%thread","class": "%logger{40}","message": "%message"}</pattern></pattern></providers></encoder></appender><root level="INFO"><appender-ref ref="LOGSTASH" /><appender-ref ref="CONSOLE" /></root>
</configuration>


?
如果是多來源的日志搜集,只要改下紅色框里的端口就行,剛才我配置的logstash.conf就是 兩個系統的 一個系統logback.xml 訪問5000端口,另一個系統訪問5010端口


運行起springboot 就能在kibana里看到索引

kibana訪問地址:http://192.168.10.128:5601/
賬號密碼 elastic changeme

在JAVA里打印了些日志

kibana里也有了

?

?

其他相關問題:

docker FATAL CLI ERROR Error: EACCES: permission denied, open '/usr/share/kibana/config/kibana.yml'

? ?問題原因及解決辦法
? ?原因是CentOS7中的安全模塊selinux把權限禁掉了,至少有以下三種方式解決掛載的目錄沒有權限的問題:
? ?1.在運行容器的時候,給容器加特權,及加上 --privileged=true 參數:
? ?docker run -i -t -v /soft:/soft --privileged=true 686672a1d0cc /bin/bash
? ?2.臨時關閉selinux:
? ?setenforce 0
? ?3.添加selinux規則,改變要掛載的目錄的安全性文本

使用的是docker版本的jenkins,運行后,出現如下錯誤:

[root@localhost CICD]# docker logs -f jenkins?
touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?


?
我jenkins掛載的目錄是 /opt/jenkins/xxxxx,root 用戶創建,而 jenkins user的uid為1000
所以需要進行 chown 設置,如下:

sudo chown -R 1000:1000 /opt/jenkins
?
然后重啟容器,錯誤就沒有了。
?

?

docker原生支持眾多的日志引擎,適用于各種不同的應用場景,本篇文檔對其作一個簡單的說明。

Docker日志引擎說明

docker支持的日志引擎如下:

  • none:關閉docker的回顯日志, docker logs 看不到任何輸出。使用這種方式也就意味著無法查看任何容器輸出的日志

  • json-file:把每個容器的回顯日志打到每個容器的內部, 形式為json 文件。在實際使用中, 有些容器在啟動后有大量的回顯日志, 尤其在程序內部報錯時打出的日志信息尤其巨大, 很可能會因為某幾個容器的json 日志過大而撐爆整個宿主機的磁盤

  • syslog:把所有容器的回顯日志打到系統的syslog中。

    目前harbor私有鏡像倉庫使用docker-compose方式啟動的話,就默認使用的這種方式。將所有容器的日志都集中收集到一個harbor-log的容器中,在執行docker logs的時候會提示"logs" command is supported only for "json-file" and "journald" loggin drivers (got: syslog)

  • journald:把所有容器的回顯日志打到系統的journald服務中,這是推薦的方式。

  • fluentd:把所有容器的回顯日志打到fluentd服務中

  • gelf 把所有容器的回顯日志打到支持 GELF(Graylog Extended Log Format) 格式的服務中, 比如Graylog或Logstash

修改docker日志引擎

  1. 修改docker配置文件/etc/docker/daemon.json如下:
    { "log-driver": "journald" }
  2. 在容器運行時指定其日志引擎:
    docker run --log-driver=journald alpint /bin/sh

journald配置說明

journald配置文件說明

?
  1. # /etc/systemd/jornald.conf示例:

  2. ?
  3. [Journal]

  4. #Storage=auto 存儲為自動模式, 其他模式有無日志模式, 純內存模式和純磁盤模式

  5. #Compress=yes 默認啟動壓縮功能

  6. #Seal=yes 默認加密, 日志文件為二進制文件, 無法 vim或tail 查看

  7. #SplitMode=uid

  8. #SyncIntervalSec=5m

  9. #RateLimitIntervalSec=30s

  10. #RateLimitBurst=1000

  11. #SystemMaxUse= 精確設置日志可以占用的最大磁盤空間

  12. #SystemKeepFree= 保證系統剩余的空間大小

  13. #SystemMaxFileSize=

  14. #SystemMaxFiles=100

  15. #RuntimeMaxUse=

  16. #RuntimeKeepFree=

  17. #RuntimeMaxFileSize=

  18. #RuntimeMaxFiles=100

  19. #MaxRetentionSec=

  20. #MaxFileSec=1month

  21. #ForwardToSyslog=no

  22. #ForwardToKMsg=no

  23. #ForwardToConsole=no

  24. #ForwardToWall=yes

  25. #TTYPath=/dev/console

  26. #MaxLevelStore=debug

  27. #MaxLevelSyslog=debug

  28. #MaxLevelKMsg=notice

  29. #MaxLevelConsole=info

  30. #MaxLevelWall=emerg

journald 默認配置下, 默認日志最大限制為所在文件系統容量的 10%

默認配置下, journald 的日志存放在 /var/log/journal 下, 如果該目錄在根分區下, 且根分區空間大小為10G, 那么 journald 存放日志最大的大小為1G, 超出1G 后將刪除最早的日志

也可以精確指定占用的空間大小:

SystemMaxUse=50M

journalctl基本用法

  • journalctl 從頭查看所有日志

  • journalctl -b 查看本次開機后的所有系統引導日志

  • journalctl -b -1 顯示上次開機后的系統引導日志, 以此類推

  • journalctl -f 類似于 tail -f或tailf

  • journalctl /usr/bin/dockerd 后加程序的絕對路徑,可以顯示該程序的所有日志信息

  • journalctl -xe systemd 啟動程序失敗時會提示你使用這個命令查看錯誤信息, 其中x 表示在日志輸出中增加一些解釋性的短文本, e表示立即跳轉至日志的尾部

journald注意事項

journald配置中,有兩個非常重要的優化項目:

?
  1. ForwardToSyslog=yes

  2. ForwardToWall=yes

以上兩個參數默認都是 yes 意味著 journald 收集日志后還會轉發到 syslog 中

由此造成的影響是: journald 雖然可以乖乖的按照上面的配置進行日志的清理, 但是 syslog 卻不在 journald 的控制范圍之內

在日志量很大的情況下,syslog中的日志量也變得巨大,所以我們需要把上面兩個參數的值改為no

重啟journald服務:

systemctl restart systemd-journald.service
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://ip0m9guf.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/386468.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/386468.shtml
英文地址,請注明出處:http://en.pswp.cn/news/386468.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

我了解到的面試的一些小內幕!附面試題答案

背景 首先我是個菜雞&#xff0c;工資也低的一筆。 剛畢業時候在一家國企上班干 app 開發&#xff0c;干了快兩年的時候&#xff0c;跳槽到了一家偽大廠干安全。投了不少簡歷都沒有回音&#xff0c;只有這加偽大廠要我就來了。當時說好了會接觸一些底層的東西&#xff0c;然而…

學習單調隊列小結

因為一直在聽身邊的人說什么單調隊列/斜率優化dp/背包&#xff0c;(ps:我也不清楚這樣稱呼對不對&#xff0c;因為我真心是沒見過這些東西)我都覺得那是神一樣的東西。終于抽出時間學了一下。 昨天在朋友一本書里面看到一句話&#xff0c;這里先跟大家分享一下&#xff1a; 沒有…

@Async join

直接貼代碼 自定義線程池 package com.xh.lawsuit.rest.modular.example; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecu…

我們究竟還要學習哪些Android知識?完整版開放下載

前言 移動研發火熱不停&#xff0c;越來越多人開始學習 android 開發。但很多人感覺入門容易成長很難&#xff0c;對未來比較迷茫&#xff0c;不知道自己技能該怎么提升&#xff0c;到達下一階段需要補充哪些內容。市面上也多是談論知識圖譜&#xff0c;缺少體系和成長節奏感&a…

ELK7.8.1的Docker搭建過程

在linux下首先在目錄準備文件 首先說明&#xff0c;我的電腦宿主機的IP是192.168.1.5 為es準備文件 mkdir -p /opt/elk7/es cd /opt/elk7/es #創建對應的文件夾 數據 / 日志 / 配置 mkdir conf data logs #授權 chmod 777 -R conf data logs然后進入到/opt/elk7/es/conf下 …

如何使用git創建項目,創建分支

git config -global user.name "Your name" git config -global user.email "youexample.com" 建立一個存放工程的文件夾 git init命令用于初始化當前所在目錄的這個項目 會創建一個隱藏文件 .git 創建 main.c 文件 創建 .gitignore文件&#xff0c;忽略…

我們究竟還要學習哪些Android知識?附贈課程+題庫

2021新的一年&#xff0c;開啟新的征程&#xff0c;回顧2020&#xff0c;真是太“南”了。 從年初各大廠裁員&#xff0c;竟然成為一件理所應當的事情&#xff0c;到四月份 GitHub 上“996.ICU” 引起了大家的共鳴。即使我們兢兢業業“996”&#xff0c;但依舊難以抵御 35 歲時…

WINDOWS上KAFKA運行環境安裝

WINDOWS上KAFKA運行環境安裝 1. 安裝JDK 1.1 安裝文件&#xff1a;http://www.oracle.com/technetwork/java/javase/downloads/index.html 下載JDK 1.2 安裝完成后需要添加以下的環境變量&#xff08;右鍵點擊“我的電腦” -> "高級系統設置" -> "環境變…

架構師成長之路-個人學習經驗分享(公司研發峰會演講ppt)

前天在公司分享了一些學習經驗,園子中感興趣可以看看。建議大家使用pptPlex來看這個片子。 首先從我在成長中不同階段的工作和體會來談不同階段的學習內容談起&#xff0c;為了做好這些必修課&#xff0c;我會對知識&#xff0b;實踐&#xff0b;思考&#xff0b;心態&#xff…

我憑什么拿到了阿里、騰訊、今日頭條3家大廠offer?這原因我服了

前言 從畢業到現在面試也就那么幾家公司&#xff0c;單前幾次都比較順利&#xff0c;在面到第三家時都給到了我offer&#xff01;前面兩次找工作&#xff0c;沒考慮到以后需要什么&#xff0c;自己的對未來的規劃是什么&#xff0c;只要有份工作&#xff0c;工資符合自己的要求…

kafka logstash elk

前言 企業開發中&#xff0c;一個應用會有多個測試環境&#xff0c;于是會有一個專門的服務器做日志收集&#xff0c;那就需要保存日志和應用隔離&#xff0c;這里就牽涉到異步存寫日志的問題&#xff0c;異步消息隊列選取kafka&#xff0c;高性能&#xff0c;日志消息消費我們…

模板概述

模板&#xff0c;按建筑學的說法是&#xff1a;施工時澆筑混凝土用的成組模型板&#xff1b;而模板之詞&#xff0c;恐怕可釋之為模型之板&#xff0c;顧名思義&#xff0c;模板為一套規定好了規范準則的樣板。既然為樣板&#xff0c;自然是可被多方使用&#xff1b;而準則既已…

我憑什么拿到了阿里、騰訊、今日頭條3家大廠offer?通用流行框架大全

前言 從畢業到現在面試也就那么幾家公司&#xff0c;單前幾次都比較順利&#xff0c;在面到第三家時都給到了我offer&#xff01;前面兩次找工作&#xff0c;沒考慮到以后需要什么&#xff0c;自己的對未來的規劃是什么&#xff0c;只要有份工作&#xff0c;工資符合自己的要求…

解決讀寫分離過期讀的幾個方案

mysql讀寫分離的坑 讀寫分離的主要目標是分攤主庫的壓力&#xff0c;由客戶端選擇后端數據庫進行查詢。還有種架構就是在MYSQL和客戶端之間有一個中間代理層proxy&#xff0c;客戶端之連接proxy&#xff0c;由proxy根據請求類型和上下文決定請求的分發路由。 客戶端直連方案&am…

Feign接口 多線程問題

Spring Cloud Feign傳輸Header&#xff0c;并保證多線程情況下也適用 一、現象 微服務在生產中&#xff0c;常遇到需要把 header 傳遞到下一子服務的情況&#xff08;如服務A訪問服務B的接口&#xff0c;需要傳遞header&#xff09;&#xff0c;網上大多數的方案是實現 Request…

serial port 的操作

import serial①選擇設備serserial.Serial("/dev/ttyUSB0",9600,timeout0.5) #使用USB連接串行口serserial.Serial("/dev/ttyAMA0",9600,timeout0.5) #使用樹莓派的GPIO口連接串行口serserial.Serial(1,9600,timeout0.5)#winsows系統使用com1口連接串行口s…

我在華為做Android外包的真實經歷!吊打面試官系列!

導語 本部分內容是關于Android進階的一些知識總結&#xff0c;涉及到的知識點比較雜&#xff0c;不過都是面試中幾乎常問的知識點&#xff0c;也是加分的點。 關于這部分內容&#xff0c;可能需要有一些具體的項目實踐。在面試的過程中&#xff0c;結合具體自身實踐經歷&…

logstash windows

最新在研究elastic stack (elk) &#xff1a; logstash 安裝&#xff0c;下載最新版本的logstash: 點擊打開鏈接 解壓到磁盤根目錄下&#xff1a;在logstash>bin 1、目錄下創建&#xff1a;logstash.conf 2、輸入內容: # Sample Logstash configuration for creating …

H3C端口狀態

轉載于:https://www.cnblogs.com/fanweisheng/p/11153315.html

還有人不知道什么是AndroidX的嗎?文末領取面試資料

談起Android框架體系架構&#xff0c;我先提個問&#xff1a;什么是Android框架體系架構 &#xff1f; Android系統構架是安卓系統的體系結構&#xff0c;android的系統架構和其操作系統一樣&#xff0c;采用了分層的架構&#xff0c;共分為四層&#xff0c;從高到低分別是And…