背景


公司这边想进行容器化负载均衡部署.
脚本很简单, 已经实现了, 但是发现我这边没有ELK也没有LOKI
又不太像切入到容器内部进行 获取日志信息.
所以我这边想了一个别的招来动态刷新日志.

思路

动态获取容器的日志目录
然后将目录动态替换到 nginx的autoindex的路径下.
然后重启一下nginx, 使用新的配置文件进行加载日志进行展示.

获取容器日志目录

这边部署的镜像是一直一个相同的名字. 跟端口号绑定: 所以我这边优先获取一个镜像的目录
docker inspect --format='{{.LogPath}}' app5201 |xargs dirname
命令比较简单, 主要是json格式的获取信息内容.
注意注意的是 一开始获取出来的是 log的文件, 通过 dirname 的方式获取到
文件具体的目录进行替换.

修改nginx配置文件以及启动

sed "s#applog#`docker inspect --format='{{.LogPath}}' aoo5201 |xargs dirname`#" /opt/nginx/applog.conf >/opt/nginx/appdockerlog.conf
cd /opt/nginx/
lsof -i:8080|awk '{print $2}' |xargs kill -9
./nginx -c appdockerlog.conf

简单讲解

1. sed 进行变量替换的时候 建议使用 soft quote, 这样的话就可以直接识别变量了.
需要注意的是 变量替换时不建议使用 / 进行切分了
建议换用 # 类似的符号进行切分, 因为 目录里面带 / 会导致命令失败.
可以先定义变量, 可以在 ## 之间 添加`` 反引号包裹的命令来实现.
2. 注意sed -i 会修改当前文件, 会导致丢失模板, 所以建议从模板文件修改到其他目录里面去.
这样命令可以重复使用.
3. 监控 端口, 停止 nginx的服务
4. 重启nginx服务

nginx 文件预览的模板

worker_processes 1;
user root;
events {
worker_connections 1024;
}
http {
include mime.types;
sendfile on;
charset utf8;
gzip on;
server {
listen 8080;
server_name localhost;
location / {
root applog/;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}
}
}

nginx配置文件说明

建议增加 user root;的处理
容器的目录权限 nobody可能不好获取, 贸然修改容器的目录权限不太好.
建议在被替换的目录的末尾添加一个 / 这样的话 替换完 dirname 之后就正常可用了.

Nginx 发布 Docker 运行日志的方法的更多相关文章

  1. nginx发布的nginScript

    nginx发布的nginScript 背景 2015年9月,nginx宣布支持类JavaScript语言.这意味着开发者可以更轻松.自由的控制全球最优秀的HTTP及反向代理服务器,并在此之上可以衍生出 ...

  2. Nginx服务器的Websockets配置方法

    这篇文章主要介绍了简介Nginx服务器的Websockets配置方法,是使用Nginx服务器的网管的必备知识XD~需要的朋友可以参考下 Nginx 1.3.13 已经发布了,该版本支持 Connect ...

  3. [DEBUG] QAT Nginx for docker 部署时"--with-ld-opt"出错

    layout: post title: [DEBUG] QAT Nginx for docker 部署时"--with-ld-opt"出错 subtitle: 记一次debug经历 ...

  4. SQL2005删除复制数据库的发布与订阅的方法(转载)

    SQL2005删除复制数据库的发布与订阅的方法 --在测试环境中恢复从正式数据库服务器 上备份下来的bak文件后,正式环境里数据库复制的发布.订阅也被带进来了,结果恢复的数据库无法更改表结构,直接删除 ...

  5. nginx多域名的配置方法

    方法一:多个.conf方法 1. 到/usr/local/nginx/ 新建一个目录 vhosts  并创建两个conf文件,如:wodejj.com.conf ,xiaobing.com.conf. ...

  6. nginx 常用的 URL 重写方法

    转自:http://www.jbxue.com/article/4727.html Nginx中一些常用的URL 重写方法介绍,有需要的朋友可以参考下.url重写应该不陌生,不管是SEO URL 伪静 ...

  7. 如何使用vs将asp.net core项目添加容器支持并发布docker镜像到私有dockerhub和添加k8s/helm管理

    这篇文章介绍一下,如何使用VS2017给asp.net core添加容器支持,并发布镜像到私有docker hub,然后用chart管理容器镜像的操作流程. 话不多说,just do it. 新建项目 ...

  8. 解决nginx发布网站跨目录访问

    解决nginx发布网站跨目录访问(thinkphp5+lnmp) 到:usr/local/nginx/conf/vim fastcgi.cof 把最后一行加上井号#注释掉保存重启 restart 参考 ...

  9. nginx日志过滤相同IP方法

    nginx日志过滤相同IP方法分析nginx日志的时候,统计ip怎么过滤重复的?awk '{print $2}' nginx.log |sort -rn |uniq -c |sort -rn |hea ...

  10. nginx 官方docker镜像使用教程

    最近在看nignx,在本地虚拟机使用docker nginx镜像搭建了nginx+php环境 整理的教程如下: 拉取nginx镜像docker pull nginx 创建一个容器,并挂载本地目录doc ...

随机推荐

  1. 教你如何优雅的改写“if-else”

    摘要:这些场景,你是怎么写的代码? if-else,这是个再正常不过的coding习惯,当我们代码量小的时候用来做条件判断是再简单不过的了.但对于优秀程序员来说,这却不是好代码. 不信你往下看- 1. ...

  2. Python图像处理丨基于K-Means聚类的图像区域分割

    摘要:本篇文章主要讲解基于理论的图像分割方法,通过K-Means聚类算法实现图像分割或颜色分层处理. 本文分享自华为云社区<[Python图像处理] 十九.图像分割之基于K-Means聚类的区域 ...

  3. CG行业云渲染服务的演进之路

    摘要:影视动画.特效制作等行业渲染需求量增多,4K/6K以及各高分辨率会陆续成为主流,本地算力与存储资源已无法满足现有任务量.而随着大环境的演变,CG行业发展已进入发展快车道.来自赞奇科技的CEO金伟 ...

  4. VEGA:诺亚AutoML高性能开源算法集简介

    摘要:VEGA是华为诺亚方舟实验室自研的全流程AutoML算法集合,提供架构搜索.超参优化.数据增强.模型压缩等全流程机器学习自动化基础能力. 本文分享自华为云社区<VEGA:诺亚AutoML高 ...

  5. 云小课 | SA基线检查—给云服务的一次全面“体检”

    阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要: 华为云态势感知( ...

  6. 一文讲述数仓组件SysCache

    摘要:SysCache是ThreadLocal结构,每个线程都具有各自的SysCache,其中存储的缓存信息由执行的业务决定. 本文分享自华为云社区<GaussDB(DWS)CBB组件之SysC ...

  7. FOR ALL ENTRIES IN 与 INNER JOIN 内表

    1.区别 FOR ALL ENTRIES IN 与 INNER JOIN 内表,目的都是通过内表找数据库表与之对应的数据,但是有区别. 1.1.写法 FOR ALL ENTRIES IN " ...

  8. 图解 Promise 实现原理(一)—— 基础实现

    本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/UNzYgpnKzmW6bAapYxnXRQ作者:孔垂亮 很多同学在学习 Promise 时,知 ...

  9. 单线程 Redis 如此快的 4 个原因

    本文翻译自国外论坛 medium,原文地址:https://levelup.gitconnected.com/4-reasons-why-single-threaded-redis-is-so-fas ...

  10. HP笔记本(Inspiron 7472) 视频时无摄像头的处理方案

    需要视频考试的前一天,测试摄像头时发现微信视频时竟然摄像头打不开.比较焦急,尝试了好几种办法,并在2小时内找出解决方案.   一.查看设备是否被禁用 我的电脑->右键->设备管理器-> ...