欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

6Kong日志搜集与分析

时间:2023-07-12

word文档地址:https://github.com/IceEmblem/Learningdocuments/tree/master/%E5%AD%A6%E4%B9%A0%E8%B5%84%E6%96%99/%E5%B9%B3%E5%8F%B0%E6%97%A0%E5%85%B3/Kong%20%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0

准备工作

1.开始之前,我们需要删除之前安装容器kong(不会就去翻docker教程)
2.创建日志目录,我们创建一个目录存放日志

# mkdir -p /var/kong/logs && chmod 777 /var/kong/logs

3.执行如下命令生成本篇教程的docker

# sudo docker run -d --name kong --network kongnet --restart=always -e "KONG_DATAbase=postgres" -e "KONG_PG_HOST=postgres" -e "KONG_PG_USER=kong" -e "KONG_PG_PORT=5432" -e "KONG_PG_PASSWORD=kong123" -e "KONG_PG_DATAbase=kong" -e "KONG_PREFIX=/usr/local/kong/" -e "KONG_PROXY_ACCESS_LOG=logs/kong_client_access.log" -e "KONG_ADMIN_ACCESS_LOG=logs/kong_admin_access.log" -e "KONG_PROXY_ERROR_LOG=logs/kong_error.log" -e "KONG_ADMIN_ERROR_LOG=logs/kong_error.log" -e "KONG_ADMIN_LISTEN=0.0.0.0:8001" -e "KONG_ADMIN_LISTEN_SSL=0.0.0.0:8444" -v /var/kong/logs:/usr/local/kong/logs -p 80:8000 -p 443:8443 -p 8001:8001 -p 8444:8444 kong:2.0

参数说明:上篇文章已做说明,这里不讲了

日志相关的配置

prefix:工作目录,包含临时文件和日志
log_level:日志等级,取值为debug、info、notice、warn、error等
proxy_access_log:代理请求的日志路径,设为 off 可以关闭
proxy_error_log:代理错误的日志路径
admin_access_log:Admin Api请求访问日志路径,设为 off 可以关闭
admin_error_log:Admin Api请求错误日志路径

查看日志

Kong的日志被我们映射到了/var/kong/logs目录

# ls /var/kong/logs

日志格式
如下是默认的日志格式

172.18.0.1 - - [04/Jan/2022:13:26:42 +0000] "GET /netkongtest/WeatherForecast HTTP/1.1" 200 513 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:95.0) Gecko/20100101 Firefox/95.0"172.18.0.1 - - [04/Jan/2022:13:26:44 +0000] "GET /netkongtest/WeatherForecast HTTP/1.1" 200 507 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:95.0) Gecko/20100101 Firefox/95.0"172.18.0.1 - - [04/Jan/2022:13:26:45 +0000] "GET /netkongtest/WeatherForecast HTTP/1.1" 200 510 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:95.0) Gecko/20100101 Firefox/95.0"

说明:
172.18.0.1:访问者ip
[04/Jan/2022:13:26:42 +0000]:访问时间
“GET /netkongtest/WeatherForecast HTTP/1.1”:访问的Api
“Mozilla/5.0 …”:浏览器信息

分布式日志

分布式系统的日志主要的问题是如何将各个系统的日志收集到一个地方,好进行查看和分析,下面介绍几个服务用于收集、处理、和检索日志

Filebeat

Filebeat是一个日志采集器,其收集日志并将其发送到Elasticsearch或Logstash中。
如下,我们搭建Filebeat
1.拉取镜像

# docker pull elastic/filebeat:7.5.0

2.编写filebeat的配置文件
如下,我们在/opt/filebeat/config/目录下创建filebeat.yml文件,其内容如下:

# ------------------------------ input -------------------------------filebeat.inputs:#input类型,默认是log- type: log #是否启用该type enabled: true #input文件的位置,可以有多个 paths: - /var/kong/logs/kong_client_access.log - /var/kong/logs/kong_error.log# ------------------------------ Logstash Output -------------------------------#output到logstashoutput.logstash: #logstash服务器地址,可以有多个,以逗号","隔开 hosts: ["logstash:5044"]

其中logstash:5044是logstash服务器的地址,稍后我们将创建该服务器(docker容器)

3.执行如下命令生成docker容器

# docker run -d --name filebeat --network kongnet --restart=always -v /opt/filebeat/config/filebeat.yml:/usr/share/filebeat/filebeat.yml -v /var/kong/logs:/var/kong/logs elastic/filebeat:7.5.0

说明:
/usr/share/filebeat/filebeat.yml:filebeat默认配置文件
/var/kong/logs:将本地的/var/kong/logs映射到容器的/var/kong/logs

Logstash

logstash是一个日志处理器,这里我们接收来自filebeat的日志,处理后发送至Elasticsearch(实际上这里的示例我们并不做任何处理)
1.拉起容器

#docker pull logstash:7.5.0

2.创建/opt/logstash/logstash.conf配置文件,其内容如下

input { # 接收来自 filebeat 的数据,暴露的端口为 5044 beats { port => 5044 }}output { # 将处理的数据发送至 elasticsearch elasticsearch { hosts => ["elasticsearch:9200"] index => "filebeat-logstash-cloud-kong-access" }}

其中elasticsearch:9200是elasticsearch服务器的地址,稍后我们将创建该容器

3.运行容器

# docker run -d --name logstash --network kongnet --restart=always -p 5044:5044 -v /opt/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf logstash:7.5.0

Elasticsearch

elasticsearch是一个文本检索引擎,我们这里用于检索我们的日志
1.拉起容器

# docker pull elasticsearch:7.5.0

2.创建elasticsearch数据存储目录

# mkdir -p /opt/elasticsearch/data && chmod 777 /opt/elasticsearch/data

3.创建配置文件 /opt/elasticsearch/config/elasticsearch.yml,其内容如下:

network.bind_host: 0.0.0.0http.cors.enabled: truehttp.cors.allow-origin: "*"

4.运行容器

# docker run -d --name elasticsearch --network kongnet --restart=always -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 -v /opt/elasticsearch/data:/usr/share/elasticsearch/data -v /opt/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml elasticsearch:7.5.0

至此我们分布式日志处理完成,可以通过elasticsearch的api检索日志

Kibana

kibana是针对elasticsearch的可视化站点,下面我们安装kibana,使用kibana检索收集过来的日志
1.拉取容器

# docker pull kibana:7.5.0

2.创建配置文件/opt/kibana/config/kibana.yml,其内容如下:

server.name: kibanaserver.host: "0.0.0.0"elasticsearch.hosts: ["http://elasticsearch:9200"]

3.运行容器

# docker run -d --name kibana --network kongnet --restart=always -p 5601:5601 -v /opt/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml kibana:7.5.0

4.测试检索功能
1)访问127.0.0.1:5061端口,登录kibana
2)创建一个index pattern


回到首页,我们可以添加过滤器,检索我们的日志了

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。