在分布式系统中,由于节点服务会部署多台,一旦出现线上问题需要通过日志分析定位问题就需要登录服务器一台一台进行日志检索,非常不便利,这时候就需要用到EFK日志收集工具。

在应用服务端部署Filebeat,将我们打印到日志文件中的日志发送到Logstash中,在经过Logstash的解析格式化后将日志发送到ElasticSearch中,最后通过Kibana展现出来。EFK基础版的架构如下:

安装elasticsearch之前先配置如下的系统变量

修改/etc/sysctl.conf,在最后追加如下配置

vm.max_map_count = 655360

修改/etc/security/limits.conf,增加如下配置

*                   soft    memlock          unlimited

*               hard    memlock          unlimited

*               hard    nofile           65536

*               soft    nofile           65536

修改/etc/security/limits.d/20-nproc.conf,增加如下配置

*          soft    nproc     4096

root       soft    nproc     unlimited

安装配置elasticsearch

elasticsearch:7.5.1

discovery.type           single-node

宿主机创建如下目录+文件:

mkdir -p /usr/local/src/elk/elasticsearch/conf/

cd /usr/local/src/elk/elasticsearch/conf/

chmod 777 /usr/local/src/elk/elasticsearch/conf/

touch elasticsearch.yml

修改elasticsearch.yml配置文件

cluster.name: "elk-cluster"

network.host: 0.0.0.0

bootstrap.memory_lock: true

discovery.type: single-node

建立es的日志文件夹和数据文件夹,并对文件夹授权

mkdir  -p /usr/local/src/elk/elasticsearch/logs

mkdir  -p /usr/local/src/elk/elasticsearch/data

chmod  -R 777 /usr/local/src/elk/elasticsearch/logs

chmod  -R 777 /usr/local/src/elk/elasticsearch/data

添加卷:

/usr/local/src/elk/elasticsearch/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml

/usr/local/src/elk/elasticsearch/logs:/usr/share/elasticsearch/logs:rw

/usr/local/src/elk/elasticsearch/data:/usr/share/elasticsearch/data:rw

安装配置logstash

logstash:7.5.1

宿主机创建如下目录:

mkdir  -p /usr/local/src/elk/logstash/config

chmod  -R 777 /usr/local/src/elk/logstash/config

cd /usr/local/src/elk/logstash/config

导出logstash的配置文件到宿主机

docker cp 05c68f9e51c5:/usr/share/logstash/config /usr/local/src/elk/logstash

建立logstash数据文件夹,并对其授权

mkdir -p /usr/local/src/elk/logstash/data

chmod -R 777 /usr/local/src/elk/logstash/data

复制logstash启动文件,并对其修改

cd /usr/local/src/elk/logstash/config

cp logstash-sample.conf logstash.conf

修改logstash.conf,配置output

# Sample Logstash configuration for creating a simple

# Beats -> Logstash -> Elasticsearch pipeline.

input {

beats {

port => 5044

}

}

output {

elasticsearch {

hosts => ["http://172.31.0.207:9200"]

index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"

#user => "elastic"

#password => "changeme"

}

}

添加卷

/usr/local/src/elk/logstash/config:/usr/share/logstash/config

/usr/local/src/elk/logstash/data:/usr/share/logstash/data

logstash -f /usr/share/logstash/config/logstash.conf

安装配置kibana

宿主机创建如下目录+文件:

mkdir  -p /usr/local/src/elk/kibana/conf/

cd /usr/local/src/elk/kibana/conf/

chmod -R 777 /usr/local/src/elk/kibana/conf/

touch kibana.xml

修改kibana配置

server.name: kibana

server.host: "0"

elasticsearch.hosts: [ "http://172.31.0.207:9200" ]

xpack.monitoring.ui.container.elasticsearch.enabled: true

i18n.locale: zh-CN

设置i18n.locale: zh-CN属性后会对kibana进行汉化,这样便于操作,主要还是我英语不太好~

添加卷

/usr/local/src/elk/kibana/conf/kibana.xml:/usr/share/kibana/config/kibana.yml

启动完成后等一段时间访问kibana地址http://172.31.0.207:5601/验证是否正常访问

日志集成

在EFK基础架构中,我们需要在客户端部署Filebeat,通过Filebeat将日志收集并传到LogStash中。在LogStash中对日志进行解析后再将日志传输到ElasticSearch中,最后通过Kibana查看日志。

宿主机创建目录:

mkdir -p /usr/local/src/elk/

cd /usr/local/src/elk/

安装配置filebeat

  • 下载filebeat7.5.1            https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.5.1-linux-x86_64.tar.gz
  • 将下载后的文件上传至服务器并解压
    tar -zxvf filebeat-7.5.1-linux-x86_64.tar.gz
  • 修改filebeat.yml

rancher上部署的docker容器,日志位置在/var/lib/docker/containers/containerID/目录下的*-json.log文件里,因此需要收集这个文件的内容。

filebeat.inputs:

- type: log

enabled: true

paths:

- /var/lib/docker/containers/*/*json.log

此段配置日志输入,指定日志存储路径

output.logstash:

# The Logstash hosts

hosts: ["192.168.71.198:5044"]

此段配置日志输出,指定Logstash存储路径

启动filebeat
./filebeat -e -c filebeat.yml
如果需要静默启动,则使用nohup ./filebeat -e -c filebeat.yml & 命令启动即可

Kibana操作

索引模式告诉Kibana如何访问你的数据。

附件
rancher实现EFK日志收集.docx

rancher实现EFK日志收集相关推荐

  1. Kubernetes安装EFK日志收集

    Kubernetes 中比较流行的日志收集解决方案是 Elasticsearch.Fluentd 和 Kibana(EFK)技术栈,也是官方现在比较推荐的一种方案. 后续我会更新使用Log-Pilot ...

  2. Kubernetes EFK 日志收集

    Kubernetes EFK 日志收集 日志收集架构 Kubernetes集群本身不提供收集日志的解决方案,目前基于ELK日志收集的方案主要有三种 在节点运行一个agent收集日志 在Pod中包含一个 ...

  3. 日志收集系统EFK安装及配置

    目的 服务器运维系统日志监控是非常重要的工作.,目前常见的有EFK日志收集系统,实际上是3个系统组成,elasticsearch +  filebeat+kibana.这三个软件在 elastic.c ...

  4. Kubernetes 基于 EFK 技术栈的日志收集实践

    之前写过一篇文章介绍了容器环境下日志管理的原理机制:从 Docker 到 Kubernetes 日志管理机制详解,文章内容偏理论,本文在该理论的支撑下具体实践 Kubernetes 下基于 EFK 技 ...

  5. 性能优越的轻量级日志收集工具,微软、亚马逊都在用!

    ELK日志收集系统大家都知道,但是还有一种日志收集系统EFK,肯定有很多朋友不知道!这里的F指的是Fluentd,它具有Logstash类似的日志收集功能,但是内存占用连Logstash的十分之一都不 ...

  6. 电商大数据日志收集系统之EFK

    背景 日志管理的挑战: 关注点很多,任何一个点都有可能引起问题 日志分散在很多机器,出了问题时,才发现日志被删了 很多运维人员是消防员,哪里有问题去哪里 集中化日志管理思路: 日志收集 -->格 ...

  7. 看不到日志_Kubernetes中常用的日志收集方案

    在kubernetes中对日志的处理方式叫做cluster-level-logging,即这个日志处理系统跟容器,Pod,Node的生命周期无关,也就是无论是容器挂了,Pod被删除了还是Node宕机了 ...

  8. 一套标准的ASP.NET Core容器化应用日志收集分析方案

    点击上方蓝字 给一个关注吧 讲故事 关注我公众号的朋友,应该知道我写了一些云原生应用日志收集和分析相关的文章,其中内容大多聚焦某个具体的组件: 超级有用的TraceId,快点用起来吧! 如何利用NLo ...

  9. 容器内应用日志收集方案

    容器化应用日志收集挑战 应用日志的收集.分析和监控是日常运维工作重要的部分,妥善地处理应用日志收集往往是应用容器化重要的一个课题. Docker处理日志的方法是通过docker engine捕捉每一个 ...

最新文章

  1. Go 学习笔记(20)— Go 操作 json 文件(编码生成 json、解码 json 为 map、解码 json 为 struct)
  2. yy神曲url解析php_使用PHP来简单的创建一个RPC服务
  3. C++学习笔记5[函数]
  4. python网络攻击代码_Python-python网络编程写arp攻击代码
  5. java 大流量高并发_【BAT面试题】如何应对大流量、高并发??
  6. GitLab持续集成在商用项目中的应用实践
  7. c语言输入一组小数数组,如何得出一个浮点数的小数部分,要把各个位保存到一个数组里边。...
  8. 小米线刷工具 MiFlash 提示长度不能小于 0 参数名 length,无法读取设备解决方法
  9. matlab:蚁群算法原理的实现
  10. RocketMQ(消息中间件)
  11. X86、X64和X86_64区别
  12. 微信jssdk常见错误及解决方法
  13. 如何教机器学会原研哉(小米新LOGO)的设计理念
  14. 计算机怎么看显卡内存容量,Win10系统显卡显存大小怎样查看?Win10查看显存大小的两种方法...
  15. 儿童节活动需要的设计感海报
  16. 微信小程序 获取手机号 JavaScript解密示例代码详解
  17. Dell灵越燃7000网络驱动被误删后无法安装解决方案
  18. B站黑马程序员Oracle学习——数据的增删改
  19. ios怎么引入masonry_ios masonry 怎样设置边距自适应
  20. 利用JavaScript计算圆的面积

热门文章

  1. 项目管理实践:如何进行项目划分?
  2. OMNET++学习(Network Node)
  3. Typora PicGo+Github 踩坑
  4. JQuery 写一个圆形动画加载进度条
  5. python写爬虫的优势-python爬虫优势
  6. javascript如何判断浏览器的类型?
  7. 二进制、八进制、十进制、十六进制之间的转换
  8. 安全传输平台项目——配置管理终端-框架搭建-初始化
  9. JDK与JRE版本不一致
  10. python读取文件指定行的三种方法