elk + filebeat 8.4.3 收集nginx日志(docker部署)

2024-05-08 15:12

本文主要是介绍elk + filebeat 8.4.3 收集nginx日志(docker部署),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ELK filebeat docker部署

  • 一、 elasticsearch部署
    • 1、运行elasticsearch临时配置容器
    • 2、拷贝文件目录到本地
    • 3、检查elasticsearch.yml
    • 4、删除之前elastic,运行正式容器
    • 5、docker logs记录启动日志
  • 二、部署kibana
    • 1、运行kibana临时配置容器
    • 2、docker拷贝配置文件到本地,
    • 3、删除之前kibana,运行正式容器
  • 三、部署logstash
    • 1、运行logstash临时配置容器
    • 2、docker拷贝配置文件到本地,
    • 3、修改logstash配置--1
    • 4、修改logstash配置--2
    • 5、删除之前logstash,运行正式容器
  • 四、部署filebeat
    • 1、运行logstash临时配置容器
    • 2、docker拷贝配置文件到本地,
    • 3、修改filebeat配置,匹配nginx access/error未json格式化日志
    • 5、删除之前logstash,运行正式容器
  • 五、最终展示



一、 elasticsearch部署

1、运行elasticsearch临时配置容器

docker run -it     -p 9200:9200     -p 9300:9300     --name elasticsearch     --net elastic     -e ES_JAVA_OPTS="-Xms1g -Xmx1g"     -e "discovery.type=single-node"     -e LANG=C.UTF-8     -e LC_ALL=C.UTF-8     elasticsearch:8.4.3

2、拷贝文件目录到本地

mkdir -p  /u01/elk/{elasticsearch,filebeat,kibana,logstash}cd   /u01/elk/elasticsearch/docker cp elasticsearch:/usr/share/elasticsearch/config .
docker cp elasticsearch:/usr/share/elasticsearch/data .
docker cp elasticsearch:/usr/share/elasticsearch/plugins .
docker cp elasticsearch:/usr/share/elasticsearch/logs  .

3、检查elasticsearch.yml

elasticsearch.yml network.host: 0.0.0.0

4、删除之前elastic,运行正式容器

docker run -it \-d \-p 9200:9200 \-p 9300:9300 \--name elasticsearch \--net elastic \-e ES_JAVA_OPTS="-Xms1g -Xmx1g" \-e "discovery.type=single-node" \-e LANG=C.UTF-8 \-e LC_ALL=C.UTF-8 \-v /u01/elk/elasticsearch/config:/usr/share/elasticsearch/config \-v /u01/elk/elasticsearch/data:/usr/share/elasticsearch/data \-v /u01/elk/elasticsearch/plugins:/usr/share/elasticsearch/plugins \-v /u01/elk/elasticsearch/logs:/usr/share/elasticsearch/logs \elasticsearch:8.4.3

5、docker logs记录启动日志

后续用到的密码,证书,token可在以下查找

✅ 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`):BtFaekYKKP6m0_pp+s9gℹ️  HTTP CA certificate SHA-256 fingerprint:ab72993f131f9bae496f4f4b35f955f4909557e13da751bd5f2d1198c2695af6ℹ️  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):eyJ2ZXIiOiI4LjQuMyIsImFkciI6WyIxNzIuMTguMC4yOjkyMDAiXSwiZmdyIjoiYWI3Mjk5M2YxMzFmOWJhZTQ5NmY0ZjRiMzVmOTU1ZjQ5MDk1NTdlMTNkYTc1MWJkNWYyZDExOThjMjY5NWFmNiIsImtleSI6ImtWZFZJbzhCbjJVRjUtRUxmektrOjFva29XRktxUlBxYkh4UmdXWWhhMkEifQ==ℹ️ 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):eyJ2ZXIiOiI4LjQuMyIsImFkciI6WyIxNzIuMTguMC4yOjkyMDAiXSwiZmdyIjoiYWI3Mjk5M2YxMzFmOWJhZTQ5NmY0ZjRiMzVmOTU1ZjQ5MDk1NTdlMTNkYTc1MWJkNWYyZDExOThjMjY5NWFmNiIsImtleSI6ImsxZFZJbzhCbjJVRjUtRUxmekttOnJxY0NUekM0VGR5YlRVaXF4dDRRQ1EifQ==If you're running in Docker, copy the enrollment token and run:
`docker run -e "ENROLLMENT_TOKEN=<token>" docker.elastic.co/elasticsearch/elasticsearch:8.4.3`

二、部署kibana

1、运行kibana临时配置容器

docker run -it 	-d 	--restart=always 	--log-driver json-file 	--log-opt max-size=100m 	--log-opt max-file=2 	--name kibana 	-p 5601:5601 	--net elastic 	kibana:8.4.3

2、docker拷贝配置文件到本地,

cd    /u01/elk/kibanadocker cp kibana:/usr/share/kibana/config/ .docker cp kibana:/usr/share/kibana/data/ .docker cp kibana:/usr/share/kibana/plugins/ .docker cp kibana:/usr/share/kibana/logs/ .

3、删除之前kibana,运行正式容器

docker run -it \-d \--restart=always \--log-driver json-file \--log-opt max-size=100m \--log-opt max-file=2 \--name kibana \-p 5601:5601 \--net elastic \-v /u01/elk/kibana/config:/usr/share/kibana/config \-v /u01/elk/kibana/data:/usr/share/kibana/data \-v /u01/elk/kibana/plugins:/usr/share/kibana/plugins \-v /u01/elk/kibana/logs:/usr/share/kibana/logs \kibana:8.4.3

三、部署logstash

1、运行logstash临时配置容器

docker run -it 	-d 	--name logstash 	-p 9600:9600 	-p 5044:5044 	--net elastic 	logstash:8.4.3

2、docker拷贝配置文件到本地,

cd  /u01/elk/logstashdocker cp logstash:/usr/share/logstash/config/* ./config/
docker cp logstash:/usr/share/logstash/config/ ./config
docker cp logstash:/usr/share/logstash/pipeline ./

3、修改logstash配置–1

cat config/logstash.yml 
http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "https://172.18.0.2:9200" ]
xpack.monitoring.elasticsearch.username: "elastic"
xpack.monitoring.elasticsearch.password: "BtFaekYKKP6m0_pp+s9g"   ##前面elastic日志中查找
xpack.monitoring.elasticsearch.ssl.certificate_authority: "/usr/share/logstash/config/certs/http_ca.crt"
xpack.monitoring.elasticsearch.ssl.ca_trusted_fingerprint: "ab72993f131f9bae496f4f4b35f955f4909557e13da751bd5f2d1198c2695af6"    ##前面elastic日志中查找

4、修改logstash配置–2

cat pipeline/logstash.conf 
input {beats {port => 5044}
}filter {}output {if [fields][project] == "nginx-accesslog" {elasticsearch {hosts => ["https://172.18.0.2:9200"]index => "server-%{+YYYY.MM.dd}"ssl => truessl_certificate_verification => falsecacert => "/usr/share/logstash/config/certs/http_ca.crt"ca_trusted_fingerprint => "ab72993f131f9bae496f4f4b35f955f4909557e13da751bd5f2d1198c2695af6"user => "elastic"password => "BtFaekYKKP6m0_pp+s9g"}}if [fields][project] == "nginx-errorlog" {elasticsearch {hosts => ["https://172.18.0.2:9200"]index => "error-%{+YYYY.MM.dd}"ssl => truessl_certificate_verification => falsecacert => "/usr/share/logstash/config/certs/http_ca.crt"ca_trusted_fingerprint => "ab72993f131f9bae496f4f4b35f955f4909557e13da751bd5f2d1198c2695af6"user => "elastic"password => "BtFaekYKKP6m0_pp+s9g"}}
}

5、删除之前logstash,运行正式容器

docker run -it \-d \--name logstash \-p 9600:9600 \-p 5044:5044 \--net elastic \-v /u01/elk/logstash/config:/usr/share/logstash/config \-v /u01/elk/logstash/pipeline:/usr/share/logstash/pipeline \logstash:8.4.3

四、部署filebeat

1、运行logstash临时配置容器

  docker run -it 	-d 	--name filebeat 	--network host 	-e TZ=Asia/Shanghai   elastic/filebeat:8.4.3 	filebeat -e  -c /usr/share/filebeat/filebeat.yml

2、docker拷贝配置文件到本地,

docker cp filebeat:/usr/share/filebeat/filebeat.yml  .
docker cp filebeat:/usr/share/filebeat/data  .
docker cp filebeat:/usr/share/filebeat/logs  .

3、修改filebeat配置,匹配nginx access/error未json格式化日志

尽可能自己格式化nginx日志,这是未格式化的情况

cat filebeat.yml ilebeat.config:modules:path: ${path.config}/modules.d/*.ymlreload.enabled: falseprocessors:- add_host_metadata: ~#when.not.contains.tags: forwarded- add_cloud_metadata: ~- add_docker_metadata: ~- add_kubernetes_metadata: ~#output.elasticsearch:
#  hosts: '${ELASTICSEARCH_HOSTS:elasticsearch:9200}'
#  username: '${ELASTICSEARCH_USERNAME:}'
#  password: '${ELASTICSEARCH_PASSWORD:}'filebeat.inputs:
- type: logenabled: truepaths:- /usr/share/filebeat/target/access.log # 这个路径是需要收集的日志路径,是docker容器中的路径fields:project: nginx-accesslogscan_frequency: 10s#multiline.pattern: '((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}'multiline.pattern: '^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}'multiline.negate: falsemultiline.match: afterprocessors:- dissect:tokenizer: '"%{ip} - - [%{timestamp}] \"%{method} %{url} HTTP/%{http_version}\" %{response_code} %{bytes} \"%{referrer}\" \"%{user_agent}\"'field: "message"target_prefix: ""ignore_missing: true#    '^[0-9]{4}-[0-9]{2}-[0-9]{2}'- type: logenabled: truepaths:- /usr/share/filebeat/target/error.log # 这个路径是需要收集的日志路径,是docker容器中的路径fields:project: nginx-errorlogscan_frequency: 10s#multiline.pattern: '((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}'multiline.pattern: '^[0-9]{4}/[0-9]{2}/[0-9]{2} 'multiline.negate: falsemultiline.match: afterprocessors:- dissect:tokenizer: '%{timestamp} [%{log.level}] %{nginx.error}: %{error_message}, client: %{client_ip}, server: %{server_name}, request: "%{request}", host: "%{host}"'field: "message"target_prefix: ""ignore_missing: true#    '^[0-9]{4}-[0-9]{2}-[0-9]{2}'json.keys_under_root: true        # 开启json格式      
json.overwrite_keys: true#- type: log#  enabled: true#  paths:#    - /usr/share/filebeat/target/error.log. # 这个路径是需要收集的日志路径,是docker容器中的路径#  scan_frequency: 10s#  exclude_lines: ['error']#  multiline.pattern: '^[0-9]{4}/[0-9]{2}/[0-9]{2}'#  multiline.negate: false#  multiline.match: after#output.logstash:enabled: true# The Logstash hostshosts: ["192.168.10.222:5044"]

5、删除之前logstash,运行正式容器

 docker run --name=filebeat --hostname=ubuntu --user=filebeat --env=TZ=Asia/Shanghai --volume=/etc/nginx/logs/:/usr/share/filebeat/target/ --volume=/u01/elk/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml --volume=/u01/elk/filebeat/data:/usr/share/filebeat/data --volume=/u01/elk/filebeat/logs:/usr/share/filebeat/logs --network=host --workdir=/usr/share/filebeat --restart=no --runtime=runc --detach=true -t elastic/filebeat:8.4.3 filebeat -e -c /usr/share/filebeat/filebeat.yml

五、最终展示

在这里插入图片描述

在这里插入图片描述

这篇关于elk + filebeat 8.4.3 收集nginx日志(docker部署)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/970674

相关文章

Nginx分布式部署流程分析

《Nginx分布式部署流程分析》文章介绍Nginx在分布式部署中的反向代理和负载均衡作用,用于分发请求、减轻服务器压力及解决session共享问题,涵盖配置方法、策略及Java项目应用,并提及分布式事... 目录分布式部署NginxJava中的代理代理分为正向代理和反向代理正向代理反向代理Nginx应用场景

Nginx搭建前端本地预览环境的完整步骤教学

《Nginx搭建前端本地预览环境的完整步骤教学》这篇文章主要为大家详细介绍了Nginx搭建前端本地预览环境的完整步骤教学,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录项目目录结构核心配置文件:nginx.conf脚本化操作:nginx.shnpm 脚本集成总结:对前端的意义很多

解决docker目录内存不足扩容处理方案

《解决docker目录内存不足扩容处理方案》文章介绍了Docker存储目录迁移方法:因系统盘空间不足,需将Docker数据迁移到更大磁盘(如/home/docker),通过修改daemon.json配... 目录1、查看服务器所有磁盘的使用情况2、查看docker镜像和容器存储目录的空间大小3、停止dock

docker 重命名镜像的实现方法

《docker重命名镜像的实现方法》在Docker中无法直接重命名镜像,但可通过添加新标签、删除旧镜像后重新拉取/构建,或在DockerCompose中修改配置文件实现名称变更,感兴趣的可以了解一下... 目录使用标签(Tagging)删除旧的php镜像并重新拉取或构建使用docker Compose在Do

Java 日志中 Marker 的使用示例详解

《Java日志中Marker的使用示例详解》Marker是SLF4J(以及Logback、Log4j2)提供的一个接口,它本质上是一个命名对象,你可以把它想象成一个可以附加到日志语句上的标签或戳... 目录什么是Marker?为什么使用Markejavascriptr?1. 精细化的过滤2. 触发特定操作3

docker编写java的jar完整步骤记录

《docker编写java的jar完整步骤记录》在平常的开发工作中,我们经常需要部署项目,开发测试完成后,最关键的一步就是部署,:本文主要介绍docker编写java的jar的相关资料,文中通过代... 目录all-docker/生成Docker打包部署文件配置服务A的Dockerfile (a/Docke

linux部署NFS和autofs自动挂载实现过程

《linux部署NFS和autofs自动挂载实现过程》文章介绍了NFS(网络文件系统)和Autofs的原理与配置,NFS通过RPC实现跨系统文件共享,需配置/etc/exports和nfs.conf,... 目录(一)NFS1. 什么是NFS2.NFS守护进程3.RPC服务4. 原理5. 部署5.1安装NF

linux查找java项目日志查找报错信息方式

《linux查找java项目日志查找报错信息方式》日志查找定位步骤:进入项目,用tail-f实时跟踪日志,tail-n1000查看末尾1000行,grep搜索关键词或时间,vim内精准查找并高亮定位,... 目录日志查找定位在当前文件里找到报错消息总结日志查找定位1.cd 进入项目2.正常日志 和错误日

Nginx实现端口映射的示例代码

《Nginx实现端口映射的示例代码》本文主要介绍了Nginx实现端口映射的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1. 找到nginx的部署路径2. 备份原来的配置文件3. 编辑nginx.conf文件4. 在

Nginx屏蔽服务器名称与版本信息方式(源码级修改)

《Nginx屏蔽服务器名称与版本信息方式(源码级修改)》本文详解如何通过源码修改Nginx1.25.4,移除Server响应头中的服务类型和版本信息,以增强安全性,需重新配置、编译、安装,升级时需重复... 目录一、背景与目的二、适用版本三、操作步骤修改源码文件四、后续操作提示五、注意事项六、总结一、背景与