ELK7.8.1的Docker搭建过程
在linux下首先在目錄準備文件
首先說明,我的電腦宿主機的IP是192.168.1.5
為es準備文件
mkdir -p /opt/elk7/es cd /opt/elk7/es #創(chuàng)建對應的文件夾 數(shù)據(jù) / 日志 / 配置 mkdir conf data logs #授權(quán) chmod 777 -R conf data logs然后進入到/opt/elk7/es/conf下
vim elasticsearch.yml以下是elasticsearch.yml 的內(nèi)容
cluster.name: "docker-cluster" network.host: 0.0.0.0 # 訪問ID限定,0.0.0.0為不限制,生產(chǎn)環(huán)境請設置為固定IP transport.host: 0.0.0.0 # elasticsearch節(jié)點名稱 #node.name: node-1 # elasticsearch節(jié)點信息 #cluster.initial_master_nodes: ["node-1"] # 下面的配置是關閉跨域驗證 http.cors.enabled: true http.cors.allow-origin: "*"?
為kibana準備宿主機文件
mkdir -p /opt/elk7/kibana cd /opt/elk7/kibana #創(chuàng)建對應的文件夾 數(shù)據(jù) / 日志 / 配置 mkdir conf data logs #授權(quán) chmod 777 -R conf data logs cd logs #創(chuàng)建日志文件 touch kibana.log #授權(quán) chmod 777 kibana.log然后進入到 /opt/elk7/kibana/conf
vim kibana.yml以下是kibana.yml內(nèi)容
elasticsearch.hosts: ['http://192.168.1.5:9200'] #發(fā)給es的查詢記錄 需要日志等級是verbose=true elasticsearch.logQueries: true ##連接es的超時時間 單位毫秒 elasticsearch.pingTimeout: 30000 elasticsearch.requestTimeout: 30000 ##是否只能使用server.host訪問服務 elasticsearch.preserveHost: true ##首頁對應的appid kibana.defaultAppId: "home" kibana.index: '.kibana' ##存儲日志的文件設置 logging.dest: /usr/share/kibana/logs/kibana.log logging.json: true ##是否只輸出錯誤日志信息 logging.quiet: false logging.rotate:enabled: true#日志文件最大大小everyBytes: 10485760#保留的日志文件個數(shù)keepFiles: 7 logging.timezone: UTC logging.verbose: true monitoring.kibana.collection.enabled: true xpack.monitoring.collection.enabled: true #存儲持久化數(shù)據(jù)的位置 path.data: /usr/share/kibana/data #訪問kibana的地址和端口配置 一般使用可訪問的服務器地址即可 server.host: "0.0.0.0" #端口默認5601 server.port: 5601 server.name: "kibana" #配置頁面語言 i18n.locale: zh-CN以下是Docker啟動命令
#es docker run --name elasticsearch -p 9200:9200 -p 9300:9300 --privileged=true --log-driver=journald -e "discovery.type=single-node" -e "ES_JAVA_OPTS=-Xmx8g -Xms8g" -v /opt/elk7/es/data:/usr/share/elasticsearch/data -v /opt/elk7/es/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml --user=root --restart=on-failure -d elasticsearch:7.8.1#kibana docker run -it --name kibana --link elasticsearch -p 5601:5601 \ --privileged=true \ -v /opt/elk7/kibana/logs/kibana.log:/usr/share/kibana/logs/kibana.log \ -v /opt/elk7/kibana/data:/usr/share/kibana/data \ -v /opt/elk7/kibana/conf/kibana.yml:/usr/share/kibana/config/kibana.yml \ -d kibana:7.8.1然后訪問地址:http://192.168.1.5:5601/
?
?
如果在訪問后發(fā)現(xiàn)了以下報錯server is not ready yet
?可以進入到docker內(nèi)部利用curl判斷 在kibana下能否curl http://192.168.1.5:9200 返回內(nèi)容,如果不能,設置下防火墻,設置方式如下
nmcli connection modify docker0 connection.zone trustedsystemctl stop NetworkManager.servicefirewall-cmd --permanent --zone=trusted --change-interface=docker0systemctl start NetworkManager.servicenmcli connection modify docker0 connection.zone trustedsystemctl restart docker.service?
?
下面開始研究 logstash,由于直接從spring boot到logstash可能會造成瓶頸,所以一般采用kafka作為消息隊列來承接日志信息
安裝zookeeper
docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper安裝kafka
docker run -d --name kafka -p 9092:9092 --link zookeeper -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.1.5:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka–link 用于容器直接的互通。
-e KAFKA_BROKER_ID=0 一個 kafka節(jié)點 就是一個 broker。一個集群由多個 broker 組成。一個 broker可以容納多個 topic
-e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 配置zookeeper管理kafka的路徑
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.1.5:9092 把kafka的地址端口注冊給zookeeper,若遠程訪問要改成外網(wǎng)IP,千萬注意是外網(wǎng)IP,很多文章只說是宿主機IP, 演示例子上寫的是內(nèi)網(wǎng)IP,很容易被誤導
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 配置kafka的監(jiān)聽端口
-v /etc/localtime:/etc/localtime 容器時間同步虛擬機的時間?
?
測試
創(chuàng)建topic
進入kafka容器
?
進入目錄
創(chuàng)建測試topic
生產(chǎn)者發(fā)布
本地消費者訂閱
?
java程序遠程消費者客戶端訂閱
?
?
總結(jié)
以上是生活随笔為你收集整理的ELK7.8.1的Docker搭建过程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: @Async join
- 下一篇: kafka logstash elk