平台监控
# 搭建
前提:服务器上已经搭建好docker
docker-compose
环境。graylog
以及配套的组件搭建与启动使用docker-compose
来完成。
# 镜像版本
mongo:4.2
docker.elastic.co/elasticsearch/elasticsearch-oss:7.9.3
graylog/graylog:4.3.1
1
2
3
2
3
# Mongo
compose.yml说明
mongo:
container_name: mongo # 指定容器名称
image: mongo:4.2
networks: # 自定义一个graylog组件的网络
- graylog
restart: always # 开启自启动
volumes: # 指定数据挂载到宿主机的指定目录
- /home/docker_data/mongo:/data/db
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# Elasticsearch
compose.yml说明
elasticsearch:
container_name: es
image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.9.3
environment: # 指定启动参数
- http.host=0.0.0.0
- transport.host=localhost
- network.host=0.0.0.0
- "ES_JAVA_OPTS=-Dlog4j2.formatMsgNoLookups=true -Xms512m -Xmx512m"
- GRAYLOG_ROOT_TIMEZONE=Asia/Shanghai
ulimits:
memlock:
soft: -1
hard: -1
deploy:
resources:
limits:
memory: 1g
networks:
- graylog
restart: always
ports: # 映射容器的端口与宿主机的端口,并默认在防火墙中开启端口
- 9200:9200
- 9300:9300
volumes:
- /home/docker_data/es:/var/lib/elasticsearch/data
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
注意 如果想搭建es的可视化工具,但又不想使用kibana,推荐使用es-head插件。此插件仅做数据呈现,真正关于搜索相关,还是推荐使用kibana。
# Graylog
graylog:
container_name: graylog
image: graylog/graylog:4.3.1
environment:
- GRAYLOG_PASSWORD_SECRET=somepasswordpepper # 密码加密的盐
- GRAYLOG_ROOT_PASSWORD_SHA2=39ecc40ee2c3928abbaeb2fe832646b2c548d8ca86ef40ecf89f0afb6a7dc059 # 密码
- GRAYLOG_HTTP_EXTERNAL_URI=http://192.168.1.196:9009/ # 这里注意要改ip
- GRAYLOG_ROOT_TIMEZONE=Asia/Shanghai # 设置时区
entrypoint: /usr/bin/tini -- wait-for-it elasticsearch:9200 -- /docker-entrypoint.sh
networks:
- graylog
restart: always
depends_on:
- mongo
- elasticsearch
ports:
- 9009:9000
- 1514:1514
- 1514:1514/udp
- 12201:12201
- 12201:12201/udp
volumes:
- /home/docker_data/graylog:/usr/share/graylog/data
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 生成密码指令
echo -n bEi*Dou9#8326 | shasum -a 256
1
# 项目使用
# 添加日志切面
springboot项目默认使用graylog方式进行日志统一记录
# springboot项目的pom添加依赖
<dependency>
<groupId>de.siegmar</groupId>
<artifactId>logback-gelf</artifactId>
<version>3.0.0</version>
</dependency>
1
2
3
4
5
6
2
3
4
5
6
# logback日志文件夹添加记录
<appender name="GELF" class="de.siegmar.logbackgelf.GelfUdpAppender">
<!-- Graylog服务的地址 -->
<graylogHost>ip</graylogHost>
<!-- UDP Input端口 -->
<graylogPort>port</graylogPort>
<!-- 最大GELF数据块大小(单位:字节),508为建议最小值,最大值为65467 -->
<maxChunkSize>508</maxChunkSize>
<!-- 是否使用压缩 -->
<useCompression>true</useCompression>
<encoder class="de.siegmar.logbackgelf.GelfEncoder">
<!-- 是否发送原生的日志信息 -->
<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 - [%thread] %-5level %logger{35} - %msg%n</pattern>
</fullPatternLayout>
<!-- 配置应用名称(服务名称),通过staticField标签可以自定义一些固定的日志字段 -->
<staticField>app_name:xxxx</staticField>
</encoder>
</appender>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# graylog 配置
登录graylog管理页面后,增加入口配置
配置默认日志入口
填写title 与 端口(与logback日志配置文件端口相同)
配置成功后,如下图所示,则代表配置完成。
# 查询高亮
容器启动之后,在容器的 /usr/share/graylog/data/config 下的配置文件。graylog容器本身并不具有常用的Linux指令直接编辑。可将配置文件复制到宿主机上进行修改。
# docker复制容器文件指令
docker cp 容器名称/容器id:源文件夹 目标文件夹
# 将容器中的文件复制到宿主机上
docker cp graylog:/usr/share/graylog/data/config /usr/local/
# 将宿主机上的文件复制回容器中
docker cp /usr/local/config graylog:/usr/share/graylog/data/config
1
2
3
4
5
6
2
3
4
5
6
# 完整docker-compose.yml
文件
version: '3'
services:
mongo:
container_name: mongo
image: mongo:4.2
networks:
- graylog
restart: always
volumes:
- /home/docker_data/mongo:/data/db
elasticsearch:
container_name: es
image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.9.3
environment:
- http.host=0.0.0.0
- transport.host=localhost
- network.host=0.0.0.0
- "ES_JAVA_OPTS=-Dlog4j2.formatMsgNoLookups=true -Xms512m -Xmx512m"
- GRAYLOG_ROOT_TIMEZONE=Asia/Shanghai
ulimits:
memlock:
soft: -1
hard: -1
deploy:
resources:
limits:
memory: 1g
networks:
- graylog
restart: always
ports:
- 9200:9200
- 9300:9300
volumes:
- /home/docker_data/es:/var/lib/elasticsearch/data
graylog:
container_name: graylog
image: graylog/graylog:4.3.1
environment:
- GRAYLOG_PASSWORD_SECRET=somepasswordpepper # 密码加密的盐
- GRAYLOG_ROOT_PASSWORD_SHA2=39ecc40ee2c3928abbaeb2fe832646b2c548d8ca86ef40ecf89f0afb6a7dc059 # 密码
- GRAYLOG_HTTP_EXTERNAL_URI=http://192.168.1.196:9009/ # 这里注意要改ip
- GRAYLOG_ROOT_TIMEZONE=Asia/Shanghai # 设置时区
entrypoint: /usr/bin/tini -- wait-for-it elasticsearch:9200 -- /docker-entrypoint.sh
networks:
- graylog
restart: always
depends_on:
- mongo
- elasticsearch
ports:
- 9009:9000
- 1514:1514
- 1514:1514/udp
- 12201:12201
- 12201:12201/udp
volumes:
- /home/docker_data/graylog:/usr/share/graylog/data
networks:
graylog:
driver: bridge
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# 应用
- 点击Search进入搜索页面
- 根据时间搜索日志
- 根据相对时间搜索日志
- 根据绝对时间搜索日志
- 根据全量关键字搜索 搜索语法为:full_message:关键字
- 根据全量设备号搜索
- 根据页面名称搜索
- 根据用户名搜索
- 根据关键字模糊搜索
- 搜索包含30306的内容,如果有字母,把字母全部转为小写
搜索语法为:full_message:/@30306@/
- 搜索以30306结尾的内容,如果有字母,把字母全部转为小写
搜索语法为:full_message:/@+30306/
上次更新: 2023/02/19, 11:42:06