当前位置: 首页 > 知识库问答 >
问题:

如何将nginx访问日志导出到套接字而不是文件?

卞琨
2023-03-14

我想将由< code>nginx生成的日志推送到< code>influxdb。为了处理这个,我有一个代理,它可以格式化它,提取一些地理数据,产生geohash,等等..

问题是nginx和代理运行在单独的docker容器中, /code>是一个生产者,它只能写入文件系统,但 agent只能从网络读取(例如,一些tcp流、websocket或http,通常在webdev中完成)

我不想在容器之间共享access.log体积,浪费空间和长解析公里的日志…

如何使nginx将日志直接写入某些tcp套接字?

共有1个答案

钱和平
2023-03-14

nginx将日志直接写入某些tcp套接字是不安全的,< br >因为套接字写入可能会减慢甚至阻塞nginx


如果代理能够读取系统日志,则可以将nginx配置为记录到系统日志

access_log syslog:server=syslog_server_ip:sys_log_server_port,facility=local7,tag=nginx,severity=info;

如果您决定执行自定义转发,下面是另一种简单但有缺陷的方法
将nginx写入配置为命名管道,然后用ncat发送

mkfifo /var/log/nginx/access.log  
ncat  agent_ip agent_port 0</var/log/nginx/access.log

这是错误的,因为ncat必须在断开连接时手动重新启动
主管可以帮助重新启动
但是当它们被ncat持有但不通过网络发送时,一些日志行可能会丢失

flume是完成这种日志转发的更好的工具

 类似资料:
  • 问题内容: 在ubuntu服务器上使用ruby进行Redis设置,但是无法弄清楚如何访问其日志文件。教程说应该在这里: 但甚至找不到/ var /文件夹 问题答案: 通过以下方式发现它: 因此,如果设置是更标准的,则应为: 这将输出文件的最后100行。 日志文件所在的位置是您可以通过以下方式访问的配置: 使用上述内容可能并不总是显示日志文件。在那种情况下使用

  • grok Logstash 默认自带了 apache 标准日志的 grok 正则: COMMONAPACHELOG %{IPORHOST:clientip} %{USER:ident} %{NOTSPACE:auth} [%{HTTPDATE:timestamp}] "(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion}

  • 我在gke上使用nginx入口控制器,默认情况下,我的访问日志是这样的: “10.123.0.20-[10.123.0.20]-[22/Apr/2019:18:47:59 0000]“GET/sdflksdf/sdfsdf HTTP/2.0”404 0“-”Mozilla/5.0(Macintosh;Intel Mac OS X 10_14_2)AppleWebKit/538.12(KHTML,像

  • 我使用的是log4j2。在两个应用程序中使用xml,并且两者都可以登录相同的信息。日志应用程序A和B中提到的日志文件大小为100KB。当信息。日志信息超过100KB。日志创建1个备份文件。当应用程序B尝试登录时,日志会被写入信息中。日志1而不是信息。日志当我重新启动应用程序B时,日志将获得登录信息。日志为什么会观察到这种奇怪的日志记录方式?解决方法是什么。下面是log4j2。应用程序B的xml

  • 目前我正在使用Spring Boot日志,我正在通过属性文件配置它,下面是示例日志属性 问题是日志文件备份格式是. gz格式,就像logT一样est.log.2019-06-14.0.gz 如何排除默认的拉链? 我不想在xml文件中硬连线配置并将其放在资源文件夹中。我只能将滚动appender配置xml文件,但我想在属性文件中创建日志文件路径,这样我就可以为不同的环境动态设置它。 有没有办法实现这

  • 本文向大家介绍Nginx屏蔽F5心跳日志、指定IP访问日志,包括了Nginx屏蔽F5心跳日志、指定IP访问日志的使用技巧和注意事项,需要的朋友参考一下 注:192.168.0.2是F5内网地址。 下面的配置经测试是失败的,依然记录访问日志: 推测是日志记录在deny前执行,执行到deny返回403 Forbidden。