区块链技术博客
www.b2bchain.cn

Elasticsearch(三):ELK的讲解

这篇文章主要介绍了Elasticsearch(三):ELK的讲解,通过具体代码讲解7768并且分析了Elasticsearch(三):ELK的讲解的详细步骤与相关技巧,需要的朋友可以参考下

本文实例讲述了Elasticsearch(三):ELK的讲解。分享给大家供大家参考文章查询地址https://www.b2bchain.cn/7768.html。具体如下:

文章目录

  • 一、Logstash
    • 1.1 Logstash架构
    • 1.2 Logstash安装
    • 1.3 Logstash配置文件规范
      • 1.3.1 input
      • 1.3.2 filter
      • 1.3.3 ouput
    • 1.4 Logstash操作
  • 二、ELK项目
    • 2.1 使用tomcat搭建项目
    • 2.2 使用Nginx进行负载均衡
    • 2.3 Logstash监控Nginx日志
    • 2.4 Kibana展示日志数据

一、Logstash

1.1 Logstash架构

Elasticsearch(三):ELK

  • Grok:匹配需要收集的字段信息
  • Date:处理日期类型
  • Geoip:添加地理位置信息
  • Useragent:提取请求用户信息
    Elasticsearch(三):ELK

1.2 Logstash安装

① 解压

[root@hadoop100 software]# tar -zxvf logstash-6.3.1.tar.gz -C /opt/module 

② 测试

[root@hadoop100 config]# vim test.conf input {   stdin { } } output { stdout {codec=>"rubydebug"} }  [root@hadoop100 logstash-6.3.1]# ./bin/logstash -f ./config/test.conf hello {           "host" => "hadoop100",     "@timestamp" => 2020-07-25T03:42:43.902Z,        "message" => "hello",       "@version" => "1" } 

1.3 Logstash配置文件规范

1.3.1 input

①stdin

input{ 	stdin{ 		codec => “plain” 		tags => [“test”] 		type => “std” 		add_field => {“key”=>”value”} 	} } 

stdin:输入插件:可以管道输入,也可以从终端交互输入

通用:

  • codec:类型为codec
  • tags:类型为array,自定义事件的tag,可用于后续判断
  • type:类型为string自定义该事件类型,可用于后续判断
  • add_field:类型为hash,为该事件添加字段

② file

input { 	file { 		path => ["/home/elk/logstash/config/nginx_logs"] 		start_position => "beginning" 		type => "web" 	} } 

file:从文件读取数据,如常见的日志文件

配置:

  • path => [“/var/log/**/*.log”,”/var/log/message”]:文件位置
  • exclude => “*.gz”:不读取哪些文件
  • sincedb_path => “/var/log/message”:记录sincedb文件路径
  • start_position => “beginning”:或者end,是否从头读取文件
  • stat_interval => 1000:单位秒,定时检查文件是否有更新,默认1秒

1.3.2 filter

filterLogstsh功能强大的原因,它可以对数据进行丰富的处理,比如解析数据、删除字段、类型转换等。

filter {  date {   match => ["logdate","MM dd yyyy HH:mm:ss"]  } } 
  • date:日期解析
  • grok:正则匹配解析
  • dissect:分割符解析
  • mutate:对字段作处理,比如重命名、删除、替换等
  • json:按照json解析字段内容到指定字段中
  • geoip:增加地理位置数据
  • ruby:利用ruby代码来动态修改logstsh Event

1.3.3 ouput

① 输出到命令行

output { 	stdout { 		codec => rubydebug 	} } 

② 输出到文件

output { 	file { 		path => “/var/log/web.log” 		codec => line {format => “%{message}”} 	} } 

③ 输出到Elasticsearch

output { 	elasticsearch { 		hosts => ["http://192.168.182.100:9200"] 		index => "logstash-%{type}-%{+YYYY.MM.dd}" 	} } 

1.4 Logstash操作

① 读取指定文件

input {  file {   path => ["/root/nginx_logs"]   start_position => "beginning"   type => "web"  } }  output {  stdout {   codec => "rubydebug"  } } 

Elasticsearch(三):ELK

② 读取Elasticsearch中数据

input {   elasticsearch {     hosts => "192.168.182.100"     index => "china"     query => '{ "query": { "match_all": {} }}'   } }  output {  stdout {   codec => "rubydebug"  } } 

Elasticsearch(三):ELK

二、ELK项目

2.1 使用tomcat搭建项目

① 解压tomcat

②移动项目manager-testtomcatwebapp目录

③访问项目http://192.168.182.100:8080/manager-test/
Elasticsearch(三):ELK

2.2 使用Nginx进行负载均衡

① 安装Nginx环境

yum install -y gcc-c++ yum install -y pcre pcre-devel yum install -y zlib zlib-devel yum install -y openssl openssl-deve 

② 编译安装Nginx

[root@hadoop100 software]# tar -zxvf nginx-1.15.1.tar.gz  [root@hadoop100 software]# cd nginx-1.15.1  [root@hadoop100 nginx-1.15.1]# ./configure  --prefix=/usr/local/nginx  --pid-path=/var/run/nginx/nginx.pid  --lock-path=/var/lock/nginx.lock  --error-log-path=/var/log/nginx/error.log  --http-log-path=/var/log/nginx/access.log  --with-http_gzip_static_module  --http-client-body-temp-path=/var/temp/nginx/client  --http-proxy-temp-path=/var/temp/nginx/proxy  --http-fastcgi-temp-path=/var/temp/nginx/fastcgi  --http-uwsgi-temp-path=/var/temp/nginx/uwsgi  --http-scgi-temp-path=/var/temp/nginx/scgi  [root@hadoop100 nginx-1.15.1]# make  [root@hadoop100 nginx-1.15.1]# make install 

② 编译安装Nginx

③ 修改Nginx配置文件

[root@hadoop100 nginx-1.15.1]# vim /usr/local/nginx/conf/nginx.conf 

Elasticsearch(三):ELK
④ 启动Nginx并访问如下网址

[root@hadoop100 nginx]# sbin/nginx 

Elasticsearch(三):ELK

2.3 Logstash监控Nginx日志

① 创建logstash配置文件

input { 	file { 		path => ["/var/log/nginx/access.log"] 		type => "nginx_access" 		#start_position => "beginning" 	} } filter { 	if [type] == "nginx_access" { 		grok { 			patterns_dir => "/root/patterns/" 			match => { 				"message" => "%{NGINXACCESS}" 			} 		} 		 		date { 			match => ["timestamp","dd/MMM/YYY:HH:mm:ss Z"] 		}  		if [param] { 			ruby { 				init => "@kname = ['quote','url_args']" 				code => " 					new_event =  					LogStash::Event.new(Hash[@kname.zip(event.get('param').split('?'))]) 					new_event.remove('@timestamp') 					event.append(new_event) 				" 			}			 		}  		if [url_args] { 			ruby { 				init => "@kname = ['key','value']" 				code => "event.set('nested_args',event.get('url_args').split('&').cllect{|i| Hash[@kname.zip(i.split('='))]})" 				remove_field => ["url_args","param","quote"] 			} 		}  		mutate { 			convert => ["response","integer"] 			remove_field => "timestamp" 		} 	} } output { 	stdout { 		codec => rubydebug 	} 	 	elasticsearch { 		hosts => ["http://192.168.182.100:9200"] 		index => "logstash-%{type}-%{+YYYY.MM.dd}" 	} } 

② 启动logstash

③ 访问项目目录,此时可以发现控制台和Elaticsearch均有日志输入
Elasticsearch(三):ELK
Elasticsearch(三):ELK

2.4 Kibana展示日志数据

① 在Kibana第一栏Discover可以可视化查看日志数据
Elasticsearch(三):ELK
② 在Visualize可以制作图表查看日志数据
Elasticsearch(三):ELK

本文地址https://www.b2bchain.cn/7768.html

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » Elasticsearch(三):ELK的讲解
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们