Elasticsearch(三):ELK
程序员文章站
2022-03-28 16:06:38
Logstash的使用以及ELK项目应用...
文章目录
一、Logstash
1.1 Logstash架构
-
Grok
:匹配需要收集的字段信息 -
Date
:处理日期类型 -
Geoip
:添加地理位置信息 -
Useragent
:提取请求用户信息
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
filter
是Logstsh
功能强大的原因,它可以对数据进行丰富的处理,比如解析数据、删除字段、类型转换等。
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
中数据
input {
elasticsearch {
hosts => "192.168.182.100"
index => "china"
query => '{ "query": { "match_all": {} }}'
}
}
output {
stdout {
codec => "rubydebug"
}
}
二、ELK项目
2.1 使用tomcat搭建项目
① 解压tomcat
②移动项目manager-test
至tomcat
下webapp
目录
③访问项目http://192.168.182.100:8080/manager-test/
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
④ 启动Nginx
并访问如下网址
[root@hadoop100 nginx]# sbin/nginx
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
均有日志输入
2.4 Kibana展示日志数据
① 在Kibana
第一栏Discover
可以可视化查看日志数据
② 在Visualize
可以制作图表查看日志数据
本文地址:https://blog.csdn.net/qq_38697437/article/details/107353355
推荐阅读