1-Elasticsearch - kibana画图

before

centos7.9 + chrome + elasticsearch-6.8.15 + kibana-6.8.15 + filebeat-6.8.15 + nginx

本篇通过kibana演示各种图表制作,比如统计指定时间段内网站访问量前十的IP、URL等等,通过这些图表,可以帮助我们分析网站的使用情况。且这些图表是实时动态更新的。

首先,保证es和kibana以及elasticsearch-head都已经配置好了。

elasticsearch安装:https://www.cnblogs.com/Neeo/articles/10368280.html#rpm
elasticsearch-head:https://www.cnblogs.com/Neeo/articles/9146695.html#chrome
kibana安装:https://www.cnblogs.com/Neeo/articles/10623632.html#rpm
filebeat安装:https://www.cnblogs.com/Neeo/articles/9017936.html

开始吧!

必要的准备

具体步骤

nginx日志准备
首先感谢路飞学城提供的真实的nginx访问日志。
日志内容记录的是从2021/4/20~2021/4/23号,这三天的部分日志,大约5万条。且我对日志数据做了清洗,然后处理成json格式的日志,方便kibana分析日志信息。唯一不好之处,就是数据是死的,展示不出动态的效果。
链接:https://pan.baidu.com/s/12z6qvhdJKzw_YgPTZEa1uA 提取码:rwwf
日志内容如下:

{"remote_addr": "111.18.75.210", "time_local": "20/Apr/2021:10:35:35 +0800", "request": "GET /_nuxt/6288107c3da5b062eedb.js HTTP/1.1", "status": "200", "bytes": "1038", "referer": "https://www.luffycity.com/study/degree", "agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.72", "equipment": "Safari/537.36"}
{"remote_addr": "1.198.17.134", "time_local": "21/Apr/2021:16:00:43 +0800", "request": "GET /_nuxt/dd9ba08d41a9b6adc600.js HTTP/1.1", "status": "200", "bytes": "10700", "referer": "https://www.luffycity.com/study/degree", "agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114", "equipment": "Safari/537.36"}
{"remote_addr": "111.225.149.16", "time_local": "22/Apr/2021:04:30:42 +0800", "request": "GET /python-book/assets/MySQL-7-11.png HTTP/1.1", "status": "301", "bytes": "178", "referer": "-", "agent": "Mozilla/5.0 (Linux; Android 5.0) AppleWebKit/537.36 (KHTML, like Gecko) Mobile Safari/537.36 (compatible; Bytespider;", "equipment": "https://zhanzhang.toutiao.com/)"}
{"remote_addr": "223.64.64.147", "time_local": "23/Apr/2021:14:19:30 +0800", "request": "GET /_nuxt/2e522c735bc48a7b89e4.js HTTP/1.1", "status": "200", "bytes": "5405", "referer": "https://www.luffycity.com/study/degree", "agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.72 Safari/537.36", "equipment": "Edg/90.0.818.42"}

对日志内容有了大概的了解,我们开始配置吧。
也没啥配置的,就是把日志文件上传到了服务器:

[root@cs tmp]# ls ng*
nginx_json.log
[root@cs tmp]# pwd
/tmp
[root@cs tmp]# wc -l nginx_json.log 
49879 nginx_json.log

OK了。

filebeat配置
filebeat配置也相当简单:

[root@cs tmp]# vim /etc/filebeat/filebeat.yml
[root@cs tmp]# cat /etc/filebeat/filebeat.yml 
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /tmp/nginx_json.log
  json.keys_under_root: true
  json.overwrite_keys: true
  tags: ["icon"]

filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false

setup.template.settings:
  index.number_of_shards: 3

setup.kibana:

output.elasticsearch:
  hosts: ["10.0.0.200:9200"]
  indices:
    - index: "nginx-icon-%{[beat.version]}-%{+yyyy.MM}"
      when.contains:
        tags: "icon"
setup.template.name: "nginx"
setup.template.pattern: "nginx-*"
setup.template.enabled: false
setup.template.overwrite: true
processors:
  - add_host_metadata: ~
  - add_cloud_metadata: ~

完事之后,重启filebeat:

[root@cs tmp]# systemctl restart filebeat
[root@cs tmp]# tail -f /var/log/filebeat/filebeat
2021-04-27T16:10:16.860+0800	INFO	input/input.go:114	Starting input of type: log; ID: 10100389906076279661 
2021-04-27T16:10:16.861+0800	INFO	log/input.go:148	Configured paths: [/tmp/nginx_json.log]
2021-04-27T16:10:16.861+0800	INFO	input/input.go:114	Starting input of type: log; ID: 12788937719430288701 
2021-04-27T16:10:16.862+0800	INFO	log/input.go:148	Configured paths: [/var/log/elasticsearch/elasticsearch.log]
2021-04-27T16:10:16.862+0800	INFO	input/input.go:114	Starting input of type: log; ID: 335975315166146607 
2021-04-27T16:10:16.862+0800	INFO	crawler/crawler.go:106	Loading and starting Inputs completed. Enabled inputs: 4
2021-04-27T16:10:16.869+0800	INFO	cfgfile/reload.go:150	Config reloader started
2021-04-27T16:10:16.869+0800	INFO	log/harvester.go:255	Harvester started for file: /tmp/nginx_json.log
2021-04-27T16:10:16.869+0800	INFO	cfgfile/reload.go:205	Loading of config files completed.
2021-04-27T16:10:19.852+0800	INFO	add_cloud_metadata/add_cloud_metadata.go:340	add_cloud_metadata: hosting provider type not detected.

ok,filebeat也没问题。

kibana准备
filebeat正常运行,说明它读到日志内容并且发送到了es种,我们在kibana中添加索引模式(es中已经存在了索引,这一步是为了在kibana中使用)。

下面这一步,一定要等kibana自己完成,不要着急手动去点点。

完事:

然后在discover栏,就可以看到了。

柱状图和表格

我们来统计一下这三天访问量前十的IP。

柱状图展示
  1. 首先选择图形种类:

  2. 然后这个图的数据来自于哪个索引,所以,接下来选择索引:

  3. 完事之后,就是关于图表的各种配置了:

  4. 等你一顿操作后,连蒙带猜的终于决定了图表的样式之后,记得保存:


    OK了,这就把你配置的这个图标保存了。

  5. 在你的Visualize栏,也就能发现我们刚才保存的图表,你点进去,就能查看详情和再次编辑,当然,编辑后别忘了保存。

表格展示
  1. 添加一个新的图表。

  1. 选择图标类型。

  1. 图表数据来自哪个索引。

  1. 配置相关参数。

  1. 别忘了保存,然后起个名就OK了。



饼图

以饼图的形式统计响应状态码的占比。
饼图展示
  1. 添加一个新的图表。

  1. 选择图标类型。

  1. 图表数据来自哪个索引。

  1. 配置相关参数。

  1. 别忘了保存,然后起个名就OK了。



markdown

还有个markdown,这个是干啥的呢?它可以当作你的通告版使用。一起来看看。

markdown通告版
  1. 添加一个新的图表。

  1. 选择图标类型。

  1. 填写你的通告内容,然后就可以点击保存了。



OK了。

dashboard集成画图

上面各个图表,已经绘制完毕,那么我们可以把它们都集中在一个页面中进行展示,就像你去某个公司看到的公司的大屏.......
来,搞搞看效果!

配置好后,保存吧。

你也可以点击顶部的 Full screen 按钮和键盘的F11,让dashboard铺满你的整个屏幕......然后再来个100寸的大屏的话,是不是越来越像某公司的大屏了!!!!

posted @ 2018-05-16 18:18  听雨危楼  阅读(1026)  评论(0编辑  收藏  举报