6 Kong 日志搜集与分析

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到logstash
output.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.0
http.cors.enabled: true
http.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: kibana
server.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
在这里插入图片描述
在这里插入图片描述
回到首页,我们可以添加过滤器,检索我们的日志了
在这里插入图片描述

友好链接:https://blog.csdn.net/dabusidede/category_12233835.html

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值