graylog+kafka+zookeeper(单机测试及源码),graylog测试用例及源码(三)
graylog+kafka+zookeeper(单机测试及源码),graylog测试用例及源码(三)
graylog+kafka+zookeeper(单机测试及源码),graylog测试用例及源码(三)
- 问题背景
- graylog+kafka+zookeeper(单机测试及源码),graylog组件部署,查找问题分析(一)
- graylog+kafka+zookeeper(单机测试及源码),kafka+zookeeper组件部署(二)
- graylog+kafka+zookeeper(单机测试及源码),graylog测试用例及源码(三)
- graylog+kafka+zookeeper(单机测试及源码),graylog收集kafka(脚本创建发布订阅方式)存储的消息(四)
- graylog+kafka+zookeeper(单机测试及源码),graylog设置URL报警方式(五)
- graylog+kafka+zookeeper(单机测试及源码),graylog+filebeat+sidecars收集log日志(六)
- graylog+kafka+zookeeper(单机测试及源码),微服务日志查询使用(七)
- graylog+kafka+zookeeper(单机测试及源码),仪表板Dashboards创建及使用(八)
- graylog+kafka+zookeeper(单机测试及源码),indices索引和streams流创建及使用,日志定期删除功能(九)
- graylog暴露收集端口步骤
- 编程步骤
- 问题总结
- Lyric: 那幸福在深秋
问题背景
前两个篇章介绍了graylog+kafka+zookeeper的单机安装部署,这个篇章做一个简单的 graylog 测试用例,可以复制文章里的代码自己创建工程,可以直接下载源码链接
graylog+kafka+zookeeper(单机测试及源码),graylog组件部署,查找问题分析(一)
graylog+kafka+zookeeper(单机测试及源码),kafka+zookeeper组件部署(二)
graylog+kafka+zookeeper(单机测试及源码),graylog测试用例及源码(三)
graylog+kafka+zookeeper(单机测试及源码),graylog收集kafka(脚本创建发布订阅方式)存储的消息(四)
graylog+kafka+zookeeper(单机测试及源码),graylog设置URL报警方式(五)
graylog+kafka+zookeeper(单机测试及源码),graylog+filebeat+sidecars收集log日志(六)
graylog+kafka+zookeeper(单机测试及源码),微服务日志查询使用(七)
graylog+kafka+zookeeper(单机测试及源码),仪表板Dashboards创建及使用(八)
graylog+kafka+zookeeper(单机测试及源码),indices索引和streams流创建及使用,日志定期删除功能(九)
graylog暴露收集端口步骤
1 在第一篇文章中安装部署了graylog,记住关闭防火墙,登录网页,因为我有端口冲突所以更改了端口号,初始账号为:admin,我的密码为:123456
10.10.195.199:9022
2 登录的界面是这样的
3 暴露日志打印接收端口
4 选择GELF UDP,还有很多种方式,可以根据官网文档进行查找自己需要的格式
5 红框必填项,其他默认即可
6 启动之后可以看到,运行状态为RUNNING
编程步骤
1 引入pom依赖,我测试过docker安装,所以有docker插件,你们可以把这个依赖删除掉,直接运行就可以
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.2</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.yg</groupId>
<!--需要小写,不能有大写-->
<artifactId>springbootgraylog</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springbootGraylog</name>
<description>springbootGraylog</description>
<properties>
<java.version>1.8</java.version>
<!--需要小写,不能有大写-->
<docker.image.prefix>dockertest</docker.image.prefix>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>de.siegmar</groupId>
<artifactId>logback-gelf</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<!--<version>1.0.0</version>-->
<configuration>
<!--远程Docker的地址-->
<dockerHost>http://192.168.207.128:2375</dockerHost>
<!--镜像名称,前缀/项目名-->
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
</project>
2 springboot启动类
package com.yg.springbootgraylog;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringbootGraylogApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootGraylogApplication.class, args);
}
}
3 application.yml初试设置
server:
port: 8081
graylog:
host: 10.10.195.199 #graylog的ip地址
port: 12201 #graylog开放的端口号
name: suolong #graylog app-name的名字,搜索时使用
4 logback-spring.xm日志配置文件,使用spring因为只有在springboot才使用这个配置文件
<configuration>
<springProperty scope="context" name="graylogHost" source="graylog.host"/>
<springProperty scope="context" name="graylogPort" source="graylog.port"/>
<springProperty scope="context" name="graylogName" source="graylog.name"/>
<!-- 配置控制台的输出日志 -->
<appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<!-- 定义日志输出的格式 -->
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{20}.%M\(%L\): %msg%n
</pattern>
</layout>
</encoder>
</appender>
<appender name="GELF" class="de.siegmar.logbackgelf.GelfUdpAppender">
<!-- Graylog服务的地址 -->
<graylogHost>${graylogHost}</graylogHost>
<!-- UDP Input端口 -->
<graylogPort>${graylogPort}</graylogPort>
<!-- 最大GELF数据块大小(单位:字节),508为建议最小值,最大值为65467 -->
<maxChunkSize>508</maxChunkSize>
<!-- 是否使用压缩 -->
<useCompression>true</useCompression>
<encoder class="de.siegmar.logbackgelf.GelfEncoder">
<originHost>ip-address</originHost>
<!-- 是否发送原生的日志信息 -->
<includeRawMessage>false</includeRawMessage>
<includeMarker>true</includeMarker>
<includeMdcData>true</includeMdcData>
<includeCallerData>false</includeCallerData>
<includeRootCauseData>false</includeRootCauseData>
<!-- 是否发送日志级别的名称,否则默认以数字代表日志级别 -->
<includeLevelName>true</includeLevelName>
<shortPatternLayout class="ch.qos.logback.classic.PatternLayout">
<pattern>%m%nopex</pattern>
</shortPatternLayout>
<fullPatternLayout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{20}.%M\(%L\): %msg%n</pattern>
</fullPatternLayout>
<!-- 配置应用名称(服务名称),通过staticField标签可以自定义一些固定的日志字段 -->
<staticField>app_name:${graylogName}</staticField>
<!-- <staticField>os_arch:${os.arch}</staticField>-->
<!-- <staticField>os_name:${os.name}</staticField>-->
<!-- <staticField>os_version:${os.version}</staticField>-->
</encoder>
</appender>
<root level="info">
<appender-ref ref="GELF"/>
<appender-ref ref="consoleLog"/>
</root>
</configuration>
- 使用<springProperty>标签进行application.yml属性值映射
- 打印:日期 日志等级 线程名 类路径 方法名 行号 日志内容 换行
- 会设置graplog的IP、端口和app-name名字
- 使用属性GELF和de.siegmar.logbackgelf.GelfUdpAppender类,和创建开放端口时对应
5 写一个测试日志打印controller
package com.yg.springbootgraylog.controller;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
/**
* @author suolong
* @description:
* @date 2021/12/28
*/
@Slf4j
@Component
public class HelloController {
@PostConstruct
public void hello() {
// 搜索时,字符串要完整
for (int i = 0; i < 10; i++) {
log.info("info:{}", "info suolong" + i);
log.warn("warn:{}", "warn suolong" + i);
log.error("error:{}", "error suolong" + i);
}
log.info("finished");
}
}
6 启动项目
7 日志已经打印
8 查看graylog服务是否收集到了日志
可以看到日志已经收集到了
9 通过关键字查找,也可以设置查询的时间段
app_name:suolong AND level_name:INFO AND message:suolong0
这里message是按照字符串查询的,如果输入写的message:suolong,那么一天信息都查不到,更改为message:suolong* 模糊查询就可以了
问题总结
1 程序里配置好IP和端口,以及模式,可以正常进行收集日志,进行监管
2 关闭防火墙,查看graylog是否开启监听
netstat -nltp | grep 9022
systemctl stop firewalld
作为程序员第 11 篇文章,每次写一句歌词记录一下,看看人生有几首歌的时间,wahahaha …
Lyric: 那幸福在深秋
更多推荐
所有评论(0)