haproxy json 自定义格式日志 并用rsyslog 收集
haproxy的配置
日志投送:
- global
- log 127.0.0.1 local1 info
默认端口是udp514
默认日志:
- defaults
- log global
- log-format \"date_time\":\"%t\",\"log_type\":\"tcp\",\"frontend_name\":\"%f\",\"hostname\":\"%H\",\"clientip\":\"%ci\",\"backend_name\":\"%b\",\"server_name\":\"%s\",\"server_ip\":\"%si\"
这部分的日志字段不包含http的信息防止tcp mode报错
http日志配置:
haproxy的日志跟nginx日志有所同,有的header信息并不能直接配到日志里面
haproxy提供了一个capture方法可以捕捉一些信息,可以用capture捕获的信息作为log-format的字段
#声明一个槽并捕获数据
- frontend public
- capture request header Host len
- capture request header User-Agent len
- capture request header X-Forwarded-For len
- log-format \"date_time\":\"%t\",\"log_type\":\"http\",\"frontend_name\":\"%f\",\"hostname\":\"%H\",\"clientip\":\"%ci\",\"backend_name\":\"%b\",\"server_name\":\"%s\",\"server_ip\":\"%si\",\"http_version\":\"%HV\",\"http_mode\":\"%HM\",\"url\":\"%HP\",\"http_code\":\"%ST\",\"request_time\":\"%TR/%Tw/%Tc/%Tr/%Ta\",\"http_host\":\"%[capture.req.hdr(0)]\",\"agent\":\"%[capture.req.hdr(1)]\",\"forwarded_for\":\"%[capture.req.hdr(2)],%Tr,%Tq\"
注意capture request header 只能配置在frontend部分
参考文档:
https://www.haproxy.com/documentation/hapee/1-8r1/traffic-management/log-format-rules/
https://www.haproxy.com/documentation/hapee/1-8r1/traffic-management/traffic-capture/
rsyslog的配置
准备环境:
- docke pull rsyslog/syslog_appliance_alpine #下载官方的docker镜像版本是8.x版本
- wget https://github.com/rsyslog/rsyslog-docker/blob/master/appliance/alpine/rsyslog.conf #下载配置文件
- vim Dockerfile #把配置文件放到原始镜像里面
- FROM rsyslog/syslog_appliance_alpine
- COPY ./rsyslog.conf /etc/rsyslog.conf
启动容器
- vim build.sh
- registry_tag="haproxy-rsyslog"
- name="haproxy-rsyslog"
- docker build -t=$registry_tag .
- docker stop $name
- docker rm $name
- docker run --restart=always -d --privileged=true -u root --name $name -p :/udp -v /var/log:/var/log $registry_tag
- ./build.sh
每次修改rsyslog.conf只需要执行一下./build.sh 就行了
日志配置:
修改刚才下载的rsyslog.conf
使用自定义模板
- template(name="FileFormat" type="string"
- string= "{\"log_source\":\"%syslogtag%\",%msg%}\n"
- )
haproxy日志已经包含了 %TIMESTAMP% %HOSTNAME% 所以把这两个字段去掉了
配置日志接收
- local1.* action(type="omfile" file="/var/log/haproxy/haproxy_all.log" template="FileFormat")
日志关键字过滤:
方法1 基本过滤
- :msg, contains, "debug" #只保留包含有debug的日志,使用!contains就是丢弃包含有debug的日志
- local1.* action(type="omfile" file="/var/log/haproxy/haproxy.log" template="FileFormat")
方法2 扩展过滤
- if $syslogfacility-text == 'local1' and not ($msg contains 'debug') then action(type="omfile" file="/var/log/haproxy/haproxy.log" template="FileFormat") #丢弃包含有debug的日志
- local1.* action(type="omfile" file="/var/log/haproxy/haproxy.log" template="FileFormat")
- if $msg contains 'debug' then /var/log/haproxy/haproxy_debug.log #把包含debug的日志单独保留
参考文档:
https://www.rsyslog.com/doc/v8-stable/configuration/filters.html
haproxy json 自定义格式日志 并用rsyslog 收集的更多相关文章
- 最权威的json自定义格式
1.封装result,作为返回的对象 public class Result<T> { private int code; private String msg; ...
- Nginx 高级配置-自定义json格式日志
Nginx 高级配置-自定义json格式日志 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在大数据运维工作中,我们经常会使用flume,filebeat相关日志收集工具取收集日志 ...
- ELK之收集Nginx、Tomcat的json格式日志
1.安装Nginx yum -y install nginx vim /etc/nginx/nginx.conf # 修改日志格式为json格式,并创建一个nginxweb的网站目录 log_form ...
- filebeat收集nginx的json格式日志
一.在nginx主机上安装filebeat组件 [root@zabbix_server nginx]# cd /usr/local/src/ [root@zabbix_server src]# wge ...
- rsyslog收集nginx日志配置
rsyslog日志收集配置 rsyslog服务器收集各服务器的日志,并汇总,再由logstash处理 请查看上一篇文章 http://bbotte.blog.51cto.com/6205307/16 ...
- 【Spring Boot】Spring Boot之利用Logstash将日志转换成以JSON的格式存储和输出
一.Logstash的作用 Logstash是一个完全开源的工具,它可以对日志进行收集.过滤,能非常方便地将日志转换成以JSON的格式存储和输出,并将其存储供以后使用. 二.整合Logstash的步骤 ...
- 集中日志服务器Rsyslog
http://www.gaizaoren.org/archives/408 基于主机的管理一般需要收集服务器的日志信息用于及时发现错误,处理故障. 搭建linux下的集中日志服务器的程序一般可以用sy ...
- 日志管理-rsyslog日志服务器及loganalyzer
一,日志基础 日志:记录时间,地点,任务,事件 格式:日期时间 主机 进程[pid]: 事件内容 rsyslog 特性: 多线程,UDP, TCP, SSL, TLS, RELP,MySQL, PGS ...
- 从0搭建一个基于 ELK 的日志、指标收集与监控系统
为了使得私有化部署的系统能更健壮,同时不增加额外的部署运维工作量,本文提出了一种基于 ELK 的开箱即用的日志和指标收集方案. 在当前的项目中,我们已经使用了 Elasticsearch 作为业务的数 ...
随机推荐
- chrome调试创建sq设备进行调试
工作中开发基于手机qq的webapp页面时,通常开发会对页面进行限制让用户通过手机qq访问,进行引导,如下图所示. 很多时候我们开发只是在手机展示,而在pc端进行调试,当开发加了这一层限制之后,就会导 ...
- day_6.9py网络编程
.路由器:能够链接不同的网络使他们之间能够通信 mac就是手拉手传输数据用的
- HDLM for AIX安装
HDLM for AIX安装 1) 安装ODM补丁包 补丁包在软件介质光盘的\HDLM_AIX\AIX_ODM\HTC_ODM下面:HTCODM3.tar 解压:#tar -xvf HCODM3 ...
- .NET Core开发日志——Entity Framework与PostgreSQL
Entity Framework在.NET Core中被命名为Entity Framework Core.虽然一般会用于对SQL Server数据库进行数据操作,但其实它还支持其它数据库,这里就以Po ...
- 网络层block,delegate之优劣分析
正常情况下, block 缺点: 1.block很难追踪,难以维护 2.block会延长先关对象的生命周期 block会给内部所有的对象引用计数+1, 一方面会带来潜在的循环引用(retain cyc ...
- Linux下稀疏文件的存储方式
写在前面:本博客为本人原创,严禁任何形式的转载!本博客只允许放在博客园(.cnblogs.com),如果您在其他网站看到这篇博文,请通过下面这个唯一的合法链接转到原文! 本博客全网唯一合法URL:ht ...
- Mysql 性能优化教程
Mysql 性能优化教程 目录 目录 1 背景及目标 2 Mysql 执行优化 2 认识数据索引 2 为什么使用数据索引能提高效率 2 如何理解数据索引的结构 2 优化实战范例 3 认识影响结果集 4 ...
- 启动虚拟机提示"Units specified don’t exist SHSUCDX can’t install"
新建虚拟机快速分区后启动报"Units specified don’t exist SHSUCDX can’t install",试过网上说的 修改BIOS设置方法不起作用 修改虚 ...
- 【python-opencv】30-角点检测
[微语]世上有很多不可能,不过不要在你未尽全力之前下结论 特征检测:找到图像特征的技术 特征描述:描述图像特征 Harris角点检测(Corner Detection) 参考: https://doc ...
- scapy 中的ARP
scapy 常用命令 ls() //查看支持的协议对象lsc() //查看函数show() //查看数据包结构send() //三层发包sr() //三层收发sr1() //三层收发只收一 timeo ...