轻量日志管理方案-[EFK]

使用FileBeat进行日志文件的数据收集,并发送到ES进行存储,最后Kibana进行查看展示;

这个应该是最简单,轻量的日志收集方案了。

最总方案为:FileBeat+ES+Kibana ; 【Kibana过于强大,感觉可以无限扩展】


### 文章目录

  • [@[toc]](#文章目录 @[toc] 尝试内容 搭建【ES】 搭建【kibana】 搭建【filebeat】 使用【kibana】 日志查看 数据统计 Nginx日志栗子 扩展 参考各种的东东)
  • [尝试内容](#文章目录 @[toc] 尝试内容 搭建【ES】 搭建【kibana】 搭建【filebeat】 使用【kibana】 日志查看 数据统计 Nginx日志栗子 扩展 参考各种的东东)
  • [搭建【ES】](#文章目录 @[toc] 尝试内容 搭建【ES】 搭建【kibana】 搭建【filebeat】 使用【kibana】 日志查看 数据统计 Nginx日志栗子 扩展 参考各种的东东)
  • [搭建【kibana】](#文章目录 @[toc] 尝试内容 搭建【ES】 搭建【kibana】 搭建【filebeat】 使用【kibana】 日志查看 数据统计 Nginx日志栗子 扩展 参考各种的东东)
  • [搭建【filebeat】](#文章目录 @[toc] 尝试内容 搭建【ES】 搭建【kibana】 搭建【filebeat】 使用【kibana】 日志查看 数据统计 Nginx日志栗子 扩展 参考各种的东东)
  • [使用【kibana】](#文章目录 @[toc] 尝试内容 搭建【ES】 搭建【kibana】 搭建【filebeat】 使用【kibana】 日志查看 数据统计 Nginx日志栗子 扩展 参考各种的东东)
  • [日志查看](#文章目录 @[toc] 尝试内容 搭建【ES】 搭建【kibana】 搭建【filebeat】 使用【kibana】 日志查看 数据统计 Nginx日志栗子 扩展 参考各种的东东)
  • [数据统计](#文章目录 @[toc] 尝试内容 搭建【ES】 搭建【kibana】 搭建【filebeat】 使用【kibana】 日志查看 数据统计 Nginx日志栗子 扩展 参考各种的东东)
  • [Nginx日志栗子](#文章目录 @[toc] 尝试内容 搭建【ES】 搭建【kibana】 搭建【filebeat】 使用【kibana】 日志查看 数据统计 Nginx日志栗子 扩展 参考各种的东东)
  • [扩展](#文章目录 @[toc] 尝试内容 搭建【ES】 搭建【kibana】 搭建【filebeat】 使用【kibana】 日志查看 数据统计 Nginx日志栗子 扩展 参考各种的东东)
  • [参考各种的东东](#文章目录 @[toc] 尝试内容 搭建【ES】 搭建【kibana】 搭建【filebeat】 使用【kibana】 日志查看 数据统计 Nginx日志栗子 扩展 参考各种的东东)

尝试内容

在114上部署ES+Kibana,对113的隧道消防服务做日志收集,在100Nginx做日志收集

搭建【ES】

shell 复制代码
docker network create elastic
# 3ef299947c816f6b1eda8790a8a1b2306409ae07f0371413bd037a892685e32c
# 拉取
docker pull docker.elastic.co/elasticsearch/elasticsearch:8.8.1
# 启动
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -e "discovery.type=single-node" --name es-node01 --net elastic -p 9200:9200 -p 9300:9300 -t docker.elastic.co/elasticsearch/elasticsearch:8.8.1

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ Elasticsearch security features have been automatically configured!
✅ Authentication is enabled and cluster connections are encrypted.

ℹ️  Password for the elastic user (reset with `bin/elasticsearch-reset-password -u elastic`):
  LQtjAfZ7ncioEEAehcxl

ℹ️  HTTP CA certificate SHA-256 fingerprint:
  d26d334c21311131ba75516d5c26a36441a1020e723848c6d19bfeb2b397becc

ℹ️  Configure Kibana to use this cluster:
• Run Kibana and click the configuration link in the terminal when Kibana starts.
• Copy the following enrollment token and paste it into Kibana in your browser (valid for the next 30 minutes):
  eyJ2ZXIiOiI4LjguMSIsImFkciI6WyIxNzIuMTguMC4yOjkyMDAiXSwiZmdyIjoiZDI2ZDMzNGMyMTMxMTEzMWJhNzU1MTZkNWMyNmEzNjQ0MWExMDIwZTcyMzg0OGM2ZDE5YmZlYjJiMzk3YmVjYyIsImtleSI6IkhXc2pfSWdCYkR5UzZVUFBiUTNnOlRLSk5yQkVxUjdpUUZCZE5rSU96ZHcifQ==

ℹ️ Configure other nodes to join this cluster:
• Copy the following enrollment token and start new Elasticsearch nodes with `bin/elasticsearch --enrollment-token <token>` (valid for the next 30 minutes):
  eyJ2ZXIiOiI4LjguMSIsImFkciI6WyIxNzIuMTguMC4yOjkyMDAiXSwiZmdyIjoiZDI2ZDMzNGMyMTMxMTEzMWJhNzU1MTZkNWMyNmEzNjQ0MWExMDIwZTcyMzg0OGM2ZDE5YmZlYjJiMzk3YmVjYyIsImtleSI6Ikcyc2pfSWdCYkR5UzZVUFBiUTNmOmRpRlAyb3NJUXUyZE1WWnpkMi1DbmcifQ==

  If you're running in Docker, copy the enrollment token and run:
  `docker run -e "ENROLLMENT_TOKEN=<token>" docker.elastic.co/elasticsearch/elasticsearch:8.8.1`
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
# 过期了用这个去es下生成/usr/share/elasticsearch/bin
bin\elasticsearch-create-enrollment-token --scope kibana  

docker cp es-node01:/usr/share/elasticsearch/config/elasticsearch.yml ./elasticsearch.yml
# 修改容器内部/usr/share/elasticsearch/config/elasticsearch.yml文件中xpack.security.enabled的值为false。
docker cp ./elasticsearch.yml es-node01:/usr/share/elasticsearch/config/elasticsearch.yml

搭建【kibana】

shell 复制代码
# 拉取
docker pull docker.elastic.co/kibana/kibana:8.8.1
# 启动
docker run --name kib-01 --net elastic -p 5601:5601  docker.elastic.co/kibana/kibana:8.8.1
# /usr/share/kibana/config  
Go to http://0.0.0.0:5601/?code=code=093966  to get started.
# 这个code用来验证使用

用户:elastic 密码:LQtjAfZ7ncioEEAehcxl

# 配置为中文汉化
 docker cp  kib-01:/usr/share/kibana/config/kibana.yml /home/kibana/config/kibana.yml
 # 修改文件 添加中文配置
 i18n.locale: "zh-CN"
 # 再次复制替换回去
 docker cp  /home/kibana/config/kibana.yml  kib-01:/usr/share/kibana/config/kibana.yml 

搭建【filebeat】

这里对单台物理服务区内docker容器很多的情况,需要自定义多个索引的,不让日志都混在一起无法区分。

shell 复制代码
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.8.1-linux-x86_64.tar.gz
tar -zxvf ./filebeat-8.8.1-linux-x86_64.tar.gz

# 修改配置并启动即可
nohup ./filebeat -e -c filebeat.yml > /data/Filebeat/log/Filebeat-log.log 2>&1 &

可用的配置:

yml 复制代码
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /data/dream/emergency/logs/dream-emergency/info.log
  fields:
    source: emergency
# ...........
# ============================== Filebeat modules ==============================
filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: true

setup.template.settings:
  index.number_of_shards: 1
  #index.codec: best_compression
  #_source.enabled: false

# 允许自动生成index模板
setup.template.enabled: true
# # 生成index模板时字段配置文件
setup.template.fields: fields.yml
# # 如果存在模块则覆盖
setup.template.overwrite: true
# # 生成index模板的名称
setup.template.name: "app_log" 
# # 生成index模板匹配的index格式       
setup.template.pattern: "app*" 
setup.ilm.enabled: auto
# 这里一定要注意 会在alias后面自动添加-*
setup.ilm.rollover_alias: "park-ssm"
setup.ilm.pattern: "{now/d}"
# # 生成kibana中的index pattern,便于检索日志
#setup.dashboards.index: myfilebeat-7.0.0-*
#filebeat默认值为auto,创建的elasticsearch索引生命周期为50GB+30天。如果不改,可以不用设置
setup.ilm.enabled: false
# =================================== Kibana ===================================
# setup.kibana:
#   hosts: ["192.168.xxx.114:9200"]
# ---------------------------- Elasticsearch Output ----------------------------
output.elasticsearch:
  hosts: ["192.168.xxx.114:9200"]
  index: "app-%{[fields.source]}*"
  indices:
    #- index: "app-emergency-%{+yyyy.MM.dd}"
    - index: "app-emergency"
      when.equals:
        fields:
          source: "emergency"
    # ........

  username: "elastic"
  password: "LQtjAfZ7ncioEEAehcxl"
# ------------------------- Processors ----------------------------------
processors:
  - add_host_metadata:
      when.not.contains.tags: forwarded
  - add_cloud_metadata: ~
  - add_docker_metadata: ~
  - add_kubernetes_metadata: ~

使用【kibana】

官方使用文档:https://www.elastic.co/guide/cn/kibana/current/index.html

日志查看

使用Discover进入 Kibana 的数据探索功能,对日志索引的数据进行查询,使用的ES的查询语法。

数据统计

使用Dashboard展示保存的可视化结果集合。这个就需要使用查询语句去进行数据的处理了。

这里推荐还是使用现有的集成控件,直接使用Beat系列现成收集模型,进行收集与仪表盘的展示。

这里还需要一个栗子:比如Nginx的日志。【待研究处理】


Nginx日志栗子

shell 复制代码
# 集成搜索nginx  -> Nginx 日志 
# 选用gz的包:macOS  和 Linux RPM 都行 
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.8.1-linux-x86_64.tar.gz
tar -zxvf ./filebeat-8.8.1-linux-x86_64.tar.gz
# 修改 /etc/filebeat/filebeat.yml
---------- 修改内容 -----------------
output.elasticsearch:
  hosts: ["<es_url>"]
  username: "elastic"
  password: "<password>"
setup.kibana:
  host: "<kibana_url>"
----------------------------------
./filebeat modules enable nginx
# 配置nginx 日志的内容 ,位置:/home/filebeat/filebeat-8.8.1-linux-x86_64/modules.d
# 修改 nginx.yml
----------- 修改内容 ------------------
- module: nginx
  access:
    enabled: true
    var.paths: ["/usr/local/nginx/logs/access*.log","/usr/local/nginx/logs/access.log","/usr/local/nginx/logs/gisaccess.log"]
  error:
    enabled: true
    var.paths: ["/usr/local/nginx/logs/error.log"]
  ingress_controller:
    enabled: false
----------------------------------
# 这个命令会连接kibana,去创建所有filebeat相关的仪表盘等等内容
./filebeat setup 
# 启动
./filebeat -e
nohup ./filebeat -e > /data/Filebeat/log/Filebeat-log.log 2>&1 &

这里建议Nginx的日志格式,还是按照默认的即可,越改越错 ε=(´ο`*)))唉

yml 复制代码
# nginx 的日志模板配置 【默认的】
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

最后查看效果,在Dashboard的列表中搜索Nginx即可查到相关的仪表盘,点开即可;

扩展

Kibana的收集器,是在Beats 系列里面的 ,这里用的还只是filebeat对文件进行收集,还有Metricbeat对系统进行收集,Packetbeat网络收集等等的东东;

用法差不多的,开箱即用。这里配合Kibana的集成里面的教程,直接就可以随便扩展监控内容了。

这里面可监控的内容很多,需要安装各种Beat收集数据,在这里创建可视化以及其他操作。


参考各种的东东


相关推荐
七夜zippoe6 小时前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann
yunteng5216 小时前
通用架构(同城双活)(单点接入)
架构·同城双活·单点接入
麦聪聊数据7 小时前
Web 原生架构如何重塑企业级数据库协作流?
数据库·sql·低代码·架构
Fcy6487 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满7 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠7 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
程序员侠客行7 小时前
Mybatis连接池实现及池化模式
java·后端·架构·mybatis
Harvey9038 小时前
通过 Helm 部署 Nginx 应用的完整标准化步骤
linux·运维·nginx·k8s
珠海西格电力科技9 小时前
微电网能量平衡理论的实现条件在不同场景下有哪些差异?
运维·服务器·网络·人工智能·云计算·智慧城市
bobuddy9 小时前
射频收发机架构简介
架构·射频工程