栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

6 Kong 日志搜集与分析

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


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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/731097.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号