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.mzph.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…