主机参考:VPS测评参考推荐/专注分享VPS服务器优惠信息!若您是商家可以在本站进行投稿,查看详情!此外我们还提供软文收录、PayPal代付、广告赞助等服务,查看详情! |
我们发布的部分优惠活动文章可能存在时效性,购买时建议在本站搜索商家名称可查看相关文章充分了解该商家!若非中文页面可使用Edge浏览器同步翻译!PayPal代付/收录合作 |
Docker已经成为现代应用程序中必不可少的技术,但使用Docker进行应用程序监控和日志管理是一个挑战。随着Docker网络功能的不断增强,例如服务发现和负载均衡,我们越来越需要一个完整、稳定和高效的应用监控系统。
在本文中,我们将简要介绍Docker用于应用程序监控和日志管理的用法,并给出具体的代码示例。
Prometheus应用程序监控Prometheus是SoundCloud开发的基于拉模型的开源服务监控和警告工具。它是用Go语言编写的,广泛用于微服务解决方案和云环境中。作为监控工具,它可以监控Docker的CPU、内存、网络和磁盘,还支持多维数据切换、灵活查询、报警和可视化,让您快速反应和快速决策。
还需要注意的是,Prometheus需要通过拉取方式进行采样,即访问被监控应用程序中的/metrics接口来获取监控数据。因此,在启动受监控的应用程序映像时,有必要将可以访问Prometheus的IP和端口配置到/metrics接口中。以下是简单的Node.js应用程序。
const express = require(‘express‘)const app = express()app . get(‘/‘,(req,RES)=》{ RES . send(‘Hello World!’)})app . get(‘/metrics‘,(req,RES)=》{ RES . send(` # HELP API _ calls _ Total API calls # TYPE API _ calls _ Total counter API _ calls _ Total 100 `)})app . listen(3000,()=》{ console . log(‘示例应用程序侦听端口3000!’)})在这段代码中,我们通过/metrics接口返回一个api_calls_total的监控指标。
然后,在官网下载Prometheus的Docker映像,并创建一个docker-compose.yml文件,在该文件中,我们获得了Node.js应用程序的数据。
版本:“3”服务:节点:映像:节点:lts命令:节点index.js端口:- 3000:3000普罗米修斯:映像:prom/普罗米修斯:v2.25.2卷:-。/prometheus:/etc/prometheus命令:-‘-config . file =/etc/prometheus/Prometheus . yml‘-‘-storage . tsdb . retention . time = 15d‘端口:-9090: 9090在这个docker-compose.yml文件中,我们定义了两个服务,一个是运行Node.js应用程序的Node服务,另一个是用于监视的Prometheus服务。其中,节点服务发布的端口为3000。通过端口映射,您可以通过docker-compose.yml中的IP和3000端口访问节点应用程序的/metrics接口。普罗米修斯可以通过9090端口访问相应的监控指标数据。
最后,在prometheus.yml文件中,我们需要定义要获取的数据源。
global:scrape _ interval:15s evaluation _ interval:15s scrape _ configs:-job _ name:‘node-exporter‘static _ configs:-targets:【‘node:9100‘】-job _ name:‘node-js-app‘static _ configs:-targets:【‘node:3000‘】在该文件中,我们定义了要收集的所有Node.js应用程序的指标,其中targets参数是Node.js应用程序的IP地址及其对应的端口号。这里,我们使用节点和端口3000。
最后,运行docker-compose up命令启动整个应用程序及其监控服务,并在Prometheus中查看成员索引。
使用Docker中的ElasticSearch和Logstash进行日志管理,应用的日志数据分布在不同的Docker容器中。如果您想在一个集中的地方管理这些日志,可以使用ELK中的ElasticSearch和Logstash集中管理日志,以便更轻松地监控和分析计算机资源。
在开始之前,您需要下载Logstash和ElasticSearch的Docker映像,并创建一个docker-compose.yml文件。
在这个文件中,我们定义了三个服务,其中bls是一个用于模拟业务日志的API服务,每次响应后,都会在stdout和log文件中记录一个日志。Logstash服务由Logstash提供的Docker镜像构建,用于收集、过滤和传输日志。ElasticSearch服务用于存储和检索日志。
版本:“3”服务:bls:图像:nginx:阿尔卑斯山卷:-。/log:/var/log/nginx -。/public:/usr/share/nginx/html:ro端口:-“8000:80“日志记录:驱动程序:“json-file“选项:最大大小:“10m“最大文件:“10“日志存储:映像:日志存储:7.10.1卷:-。/log stash/pipeline:/usr/share/log stash/pipeline环境:-“ES _ HOST = elastic search“依赖于:-elastic search elastic search:image:elastic search:7 . 10 . 1环境:-“http . HOST = 0 . 0 . 0 . 0“-“discovery . type =单节点“卷:-。/elastic search:/usr/share/elastic search/data在配置文件中,我们将容器中的路径映射到主机的日志文件系统。同时,通过日志选项,定义日志的卷大小和数量,限制日志的存储占用。
在配置文件的logstash中,我们定义了一个名为nginx_pipeline.conf的新管道,用于处理nginx日志的收集、过滤和传输。与ELK的工作原理一样,logstash会根据不同的条件处理接收到的日志,并将其发送到已经创建的Elasticsearch集群。在此配置文件中,我们定义了以下处理逻辑:
input { file { path =》“/var/Log/nginx/access . Log“} } filter { grok { match =》{“message“=》“% { COMBINEDAPACHELOG }“} } } Output { elastic search { hosts =》【“$ { es _ host }:9200“】index =》“nginx _ Log _ index“} }在这个配置文件中,我们定义了一个输入名称文件,这意味着从本地日志文件中读取数据。然后,我们引入一个过滤器,它使用grok库来解析符合特定模板的日志。最后,我们定义输出,该输出将数据传输到Elasticsearch集群的地址,同时通过环境变量ES_HOST将检索和报告传递给容器。
最后,在完成整个ELK的配置后,我们将得到一个高效的日志管理系统,每个日志都将被发送到一个集中的地方并集成在一起,可以实现简单的搜索、过滤和可视化操作。
以上是如何使用Docker进行应用程序监控和日志管理的详细信息。更多资讯请关注主机参考其他相关文章!
这几篇文章你可能也喜欢:
本文由主机参考刊发,转载请注明:如何使用docker进行应用程序监控和日志管理(Docker应用程序日志存储位置) https://zhujicankao.com/99804.html
评论前必须登录!
注册