Logstash & Kibana 安装部署

2019-08-20  本文已影响0人  大鱼炖海棠

Logstash是开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的存储库中。

通过Kibana,您可以对自己的Elasticsearch进行可视化,还可以在 Elastic Stack中进行导航,这样您便可以进行各种操作了,从跟踪查询负载,到理解请求如何流经您的整个应用,都能轻松完成。

中文官网:https://www.elastic.co/cn

Kibana

安装包下载

下载地址:
https://www.elastic.co/cn/downloads/logstash
https://www.elastic.co/cn/downloads/kibana
选择适合你的任意方式下载:

logstash 下载

本篇采用的版本:
logstash-6.5.0.tar.gz
kibana-6.5.0-linux-x86_64.tar.gz

Logstash 安装

  1. 解压
[root@localhost app]# tar -xzvf AppStore/logstash-6.5.0.tar.gz
  1. Logstash 目录
[root@localhost app]# cd logstash-6.5.0/
[root@localhost logstash-6.5.0]# ll
总用量 844
drwxr-xr-x.  2 root root   4096 8月  20 20:51 bin
drwxr-xr-x.  2 root root    142 8月  20 20:51 config
-rw-r--r--.  1 root root   2276 11月 10 2018 CONTRIBUTORS
drwxr-xr-x.  2 root root      6 11月 10 2018 data
-rw-r--r--.  1 root root   4056 11月 10 2018 Gemfile
-rw-r--r--.  1 root root  21851 11月 10 2018 Gemfile.lock
drwxr-xr-x.  6 root root     84 8月  20 20:51 lib
-rw-r--r--.  1 root root  13675 11月 10 2018 LICENSE.txt
drwxr-xr-x.  4 root root     90 8月  20 20:51 logstash-core
drwxr-xr-x.  3 root root     57 8月  20 20:51 logstash-core-plugin-api
drwxr-xr-x.  4 root root     55 8月  20 20:51 modules
-rw-r--r--.  1 root root 808305 11月 10 2018 NOTICE.TXT
drwxr-xr-x.  3 root root     30 8月  20 20:51 tools
drwxr-xr-x.  4 root root     33 8月  20 20:51 vendor
drwxr-xr-x. 10 root root    205 8月  20 20:51 x-pack
  1. 编辑配置文件
    拷贝一份logstash的样例配置文件,该文件用于配置数据采集源、输出及过滤规则:
[root@localhost app]# cd logstash-6.5.0/config/
[root@localhost config]# ll
总用量 32
-rw-r--r--. 1 root root 1846 11月 10 2018 jvm.options
-rw-r--r--. 1 root root 4568 11月 10 2018 log4j2.properties
-rw-r--r--. 1 root root  342 11月 10 2018 logstash-sample.conf
-rw-r--r--. 1 root root 8162 11月 10 2018 logstash.yml
-rw-r--r--. 1 root root 3244 11月 10 2018 pipelines.yml
-rw-r--r--. 1 root root 1696 11月 10 2018 startup.options
[root@localhost config]# cp logstash-sample.conf logstash-nginx-access-log.conf
[root@localhost config]# vim logstash-nginx-access-log.conf

编辑采集源和输出(过滤器配置参考官方文档):

# input 模块的内容表示 logstash 收集的是文件数据
# path 指向了数据来源
# type 可自定义
# start_position 值表示文件数据的采集位置,“beginning”表示从文件的第一行开始收集数据
input {
  file {
    path => ["/usr/local/nginx/logs/access.log"]
    type => "galaxy"
    start_position => "beginning"
  }
}

# output 模块配置了数据的输出端,本例输出端是 es 数据库
# hosts 指定了 es 服务器地址
# index 指定了数据文件的索引规则
output {
  elasticsearch {
    hosts => ["http://192.168.18.170:9200"]
    index => "logstash-nginx-access-log-%{+YYYY.MM.dd}"
  }
}
  1. 启动 Logstash
    确保es已启动,netstat -nlp | grep 9200 命令检查es服务是否正常
bin/logstash -f config/logstash-nginx-access-log.conf

访问 Nginx

启动Nginx服务,访问nginx页面(Nginx 安装部署可参考 Linux 下安装部署 Nginx(一)
Linux 下安装部署 Nginx(二)),logstash输出如下日志信息:

Sending Logstash logs to /app/logstash-6.5.0/logs which is now configured via log4j2.properties
[2019-08-20T21:51:43,172][INFO ][logstash.setting.writabledirectory] Creating directory {:setting=>"path.queue", :path=>"/app/logstash-6.5.0/data/queue"}
[2019-08-20T21:51:43,622][INFO ][logstash.setting.writabledirectory] Creating directory {:setting=>"path.dead_letter_queue", :path=>"/app/logstash-6.5.0/data/dead_letter_queue"}
[2019-08-20T21:51:47,045][WARN ][logstash.config.source.multilocal] Ignoring the 'pipelines.yml' file because modules or command line options are specified
[2019-08-20T21:51:48,134][INFO ][logstash.runner          ] Starting Logstash {"logstash.version"=>"6.5.0"}
[2019-08-20T21:51:48,298][INFO ][logstash.agent           ] No persistent UUID file found. Generating new UUID {:uuid=>"c73c448c-7de4-4858-ab35-2365ea4aff9b", :path=>"/app/logstash-6.5.0/data/uuid"}
[2019-08-20T21:52:00,597][INFO ][logstash.pipeline        ] Starting pipeline {:pipeline_id=>"main", "pipeline.workers"=>1, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>50}
[2019-08-20T21:52:02,928][INFO ][logstash.outputs.elasticsearch] Elasticsearch pool URLs updated {:changes=>{:removed=>[], :added=>[http://192.168.18.170:9200/]}}
[2019-08-20T21:52:02,959][INFO ][logstash.outputs.elasticsearch] Running health check to see if an Elasticsearch connection is working {:healthcheck_url=>http://192.168.18.170:9200/, :path=>"/"}
[2019-08-20T21:52:05,734][WARN ][logstash.outputs.elasticsearch] Restored connection to ES instance {:url=>"http://192.168.18.170:9200/"}
[2019-08-20T21:52:06,498][INFO ][logstash.outputs.elasticsearch] ES Output version determined {:es_version=>6}
[2019-08-20T21:52:06,505][WARN ][logstash.outputs.elasticsearch] Detected a 6.x and above cluster: the `type` event field won't be used to determine the document _type {:es_version=>6}
[2019-08-20T21:52:06,590][INFO ][logstash.outputs.elasticsearch] New Elasticsearch output {:class=>"LogStash::Outputs::ElasticSearch", :hosts=>["http://192.168.18.170:9200"]}
[2019-08-20T21:52:06,795][INFO ][logstash.outputs.elasticsearch] Using mapping template from {:path=>nil}
[2019-08-20T21:52:06,860][INFO ][logstash.outputs.elasticsearch] Attempting to install template {:manage_template=>{"template"=>"logstash-*", "version"=>60001, "settings"=>{"index.refresh_interval"=>"5s"}, "mappings"=>{"_default_"=>{"dynamic_templates"=>[{"message_field"=>{"path_match"=>"message", "match_mapping_type"=>"string", "mapping"=>{"type"=>"text", "norms"=>false}}}, {"string_fields"=>{"match"=>"*", "match_mapping_type"=>"string", "mapping"=>{"type"=>"text", "norms"=>false, "fields"=>{"keyword"=>{"type"=>"keyword", "ignore_above"=>256}}}}}], "properties"=>{"@timestamp"=>{"type"=>"date"}, "@version"=>{"type"=>"keyword"}, "geoip"=>{"dynamic"=>true, "properties"=>{"ip"=>{"type"=>"ip"}, "location"=>{"type"=>"geo_point"}, "latitude"=>{"type"=>"half_float"}, "longitude"=>{"type"=>"half_float"}}}}}}}}
[2019-08-20T21:52:06,962][INFO ][logstash.outputs.elasticsearch] Installing elasticsearch template to _template/logstash
[2019-08-20T21:52:07,971][INFO ][logstash.inputs.file     ] No sincedb_path set, generating one based on the "path" setting {:sincedb_path=>"/app/logstash-6.5.0/data/plugins/inputs/file/.sincedb_d2343edad78a7252d2ea9cba15bbff6d", :path=>["/usr/local/nginx/logs/access.log"]}
[2019-08-20T21:52:08,098][INFO ][logstash.pipeline        ] Pipeline started successfully {:pipeline_id=>"main", :thread=>"#<Thread:0x2d72e666 run>"}
[2019-08-20T21:52:08,288][INFO ][filewatch.observingtail  ] START, creating Discoverer, Watch with file and sincedb collections
[2019-08-20T21:52:08,798][INFO ][logstash.agent           ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
[2019-08-20T21:52:13,197][INFO ][logstash.agent           ] Successfully started Logstash API endpoint {:port=>9600}

上述输出是在提示logstash建立了一些数据文件,与es成功建连,并且启动成功。这表示logstash已经具备了采集数据,并对数据进行转换和传输的能力。

接下来安装kibana来对收集到的数据进行图形化展示。

Kibana 安装

  1. 解压
[root@localhost app]# tar -xzvf AppStore/kibana-6.5.0-linux-x86_64.tar.gz 
  1. Kibana 目录
[root@localhost ~]# cd /app/kibana-6.5.0-linux-x86_64/
[root@localhost kibana-6.5.0-linux-x86_64]# ll
总用量 1736
drwxr-xr-x.    2 elk elk      64 11月 10 2018 bin
drwxrwxr-x.    2 elk elk      24 11月 10 2018 config
drwxrwxr-x.    2 elk elk       6 11月 10 2018 data
-rw-rw-r--.    1 elk elk   13675 11月 10 2018 LICENSE.txt
drwxrwxr-x.    6 elk elk     108 11月 10 2018 node
drwxrwxr-x. 1186 elk elk   36864 11月 10 2018 node_modules
-rw-rw-r--.    1 elk elk 1680994 11月 10 2018 NOTICE.txt
drwxrwxr-x.    3 elk elk      45 11月 10 2018 optimize
-rw-rw-r--.    1 elk elk     748 11月 10 2018 package.json
drwxrwxr-x.    2 elk elk       6 11月 10 2018 plugins
-rw-rw-r--.    1 elk elk    5309 11月 10 2018 README.txt
drwxr-xr-x.   16 elk elk     264 11月 10 2018 src
drwxr-xr-x.    2 elk elk    4096 11月 10 2018 webpackShims
  1. 编辑配置文件
// 打开 server.host 配置,值为 kibana 部署的服务器 IP
server.host: "192.168.18.170"
// 打开 es 指向配置,指向 es 服务器地址
elasticsearch.url: "http://192.168.18.170:9200"

保存退出。

  1. 启动 Kibana
[root@localhost kibana-6.5.0-linux-x86_64]# ./bin/kibana

启动成功后访问:http://192.168.18.170:5601

kibana 页面

进入management菜单,点击Kibana - Index Pattern按钮,创建索引模式

创建索引模式

进入Discover菜单,查看Nginx服务器的访问量及日志信息:

Nginx 日志图形化展示
上一篇下一篇

猜你喜欢

热点阅读