elk 之logstach管道用法

本文介绍Logstash的日志采集配置方法,包括基本命令使用、输入输出配置、grok过滤器解析日志格式等。提供了从Tomcat日志采集到Elasticsearch存储的具体配置实例。
启动 Logstash
Logstash 的启动命令位于安装路径的 bin 目录中,直接运行 logstash 不行,
需要按如下方式提供参数 :
./logstash -e "input {stdin {}} output {stdout{}}"

bin目录下

1: ./logstash -e "input {stdin {}} output {stdout{}}"

主要是输入和过滤 及 输出流程

例子2:

./bin/logstash -e "input {stdin {}} output {stdout{codec => plain}}"



2:通过定义conf文件来执行:

input { stdin { } }
filter {
    grok {
        match => {
                "message" => "%{WORD:request}\?client=%{WORD:client}&areaCode=%{NUMBER:area}&netWorkId=%{NUMBER:net}"
        }
        remove_field => ["message"]
    }
}
output { stdout {} }
 

1:一个是删除lock,一个是删除上次的偏移量


操作之前 ,删除.lock


std_es.conf 如下:

input { 
    stdin { } 
}
output { 
elasticsearch { 
   hosts => ["http://121.40.42.216:9200"] 
   index => "mystdin" 
   user => "elastic" 
   password => "elasticCll" } 
}

注:会自动创建索引




参考网址1:



ELK快速入门(二)通过logstash收集日志 - 别来无恙- - 博客园

logstash收集tomcat日志

参考网址2:logstash采集日志_木子金丰的博客-优快云博客_logstash日志收集

grok表达式 参考 Grok常用表达式_zhangsaho的博客-优快云博客_grok表达式

input {
  file{
	path => "E:/devetool/apache-tomcat-7.0.77/logs/catalina.2019-07-18.log"
	codec => plain{ charset => "GBK" }
	type => "tomcat-catalina"
  }
  
  file{
	path => "E:/devetool/apache-tomcat-7.0.77/log/disconf-log4j.log"
	type => "disconf-log4j"
	#多行日志合并
	codec => multiline{
      negate => true  #是否匹配到
      pattern => "(?<datetime>\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}.\d{3})" #匹配的正则
      what => "previous" #将没匹配到的合并到上一条,可选previous或next, previous是合并到匹配的上一行末尾
	}
  }
}

#从采集的数据处理
filter{
	grok{
		match => {"message" => "(?<logdatetime>\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2},\d{3})"}
		remove_field => "logdatetime"
		add_field =>{
            "from" => "lifeng"
        }
	}
	date{
        match => ["logdatetime", "yyyy-MM-dd HH:mm:ss,SSS"]   #这里是如果datetime跟后面的格式匹配上了就会去替换,替换什么呢?target默认指的就是@timestamp,所以就是以datetime的时间更新@timestamp的时间
		target => "@timestamp"
	}
}


output{
	if[type] == "tomcat-catalina"{
		elasticsearch{ 
			hosts => "localhost:9200"
			index => "tomcat-catalina-%{+YYYY.MM.dd}" #索引名称
			document_type => "tomcat-catalina" #type
		} 
	}
	
	if[type] == "disconf-log4j"{
		elasticsearch{ 
			hosts => "localhost:9200"
			index => "disconf-log4j-%{+YYYY.MM.dd}" #索引名称
			document_type => "disconf-log4j" #type
		} 
	}
	
	stdout{

	}
}

Grok表达式

55.3.244.1 GET /index.html 15824 0.043

%{IP:client}\s*%{WORD:method}\s*%{URIPATHPARAM:request}\s*%{NUMBER:bytes}\s*%{NUMBER:duration}

 结果如下

127.0.0.1 - - [03/Nov/2021:15:47:20 +0800] "POST /ewj_market/admin/MarketAccountLog/Com_list.action HTTP/1.1" 200 26205


grok表达式1
%{IP:ip}\s*(-\s*)+\[%{HTTPDATE:date}\]\s*\"%{WORD:method}\s*%{NOTSPACE:requestPath}\s*%{NOTSPACE:uri}\"\s*%{POSINT:status}\s*%{POSINT:port}

grok表达式2
%{IP:ip}\s*(-\s*)+\[%{HTTPDATE:date}\]\s*\"%{WORD:method}\s*%{NOTSPACE:requestPath}\s*%{NOTSPACE:uri}\"\s*%{INT:status}\s*%{POSINT:port}



127.0.0.1 - - [03/Nov/2021:15:47:21 +0800] "GET /ewj_market/common_res/js/base64UTF8.js?_=1635925641868 HTTP/1.1" 200 3005

grok表达式
%{IP:ip}\s*(-\s*)+\[%{HTTPDATE:date}\]\s*\"%{WORD:method}\s*%{NOTSPACE:requestPath}\s*%{NOTSPACE:uri}\"\s*%{POSINT:status}\s*%{POSINT:port}

 

 

ELK集群中,`elasticsearch.yml` 文件是Elasticsearch的重要配置文件,用于配置集群、节点、网络、存储等相关信息。其使用方法如下: 1. **打开配置文件**:使用 `vim` 命令打开配置文件,如 `vim /usr/local/es/config/elasticsearch.yml` [^1]。 2. **清空原有内容**:可使用 `dG` 命令将文件里的内容全部删掉 [^1]。 3. **添加配置内容**:根据不同的集群模式和需求添加相应的配置信息。 - **集群名称**:使用 `cluster.name` 指定集群名称,如 `cluster.name: bjbpe01 - elk` [^1]。 - **初始主节点**:通过 `cluster.initial_master_nodes` 配置初始主节点地址,单节点模式下只填写本机地址 [^1]。 - **节点名称**:使用 `node.name` 为节点命名,如 `node.name: elk01` [^1]。 - **节点角色**:使用 `node.master` 和 `node.data` 分别设置节点是否为主节点和数据节点,`true` 表示是,`false` 表示否 [^1]。 - **数据和日志路径**:使用 `path.data` 和 `path.logs` 分别指定数据和日志的存储路径,如 `path.data: /data/elasticsearch/data` 和 `path.logs: /data/elasticsearch/logs` [^1]。 - **内存和系统调用过滤**:使用 `bootstrap.memory_lock` 和 `bootstrap.system_call_filter` 进行相关设置,通常设置为 `false` [^1]。 - **网络和端口**:使用 `network.host` 指定网络绑定地址,`http.port` 指定HTTP服务端口,`transport.tcp.port` 指定传输层TCP端口 [^1]。 - **发现相关配置**:单节点模式下,将以 `discovery` 开头的行注释;在多节点模式下,`discovery.seed_hosts` 配置种子主机地址,`discovery.zen.minimum_master_nodes` 设置最小主节点数,`discovery.zen.ping_timeout` 和 `discovery.zen.fd.ping_retries` 分别设置ping超时时间和重试次数 [^1]。 - **客户端传输超时**:使用 `client.transport.ping_timeout` 设置客户端传输ping超时时间 [^1]。 - **跨域设置**:使用 `http.cors.enabled` 和 `http.cors.allow-origin` 分别启用跨域和设置允许的跨域来源 [^1]。 ### 示例配置 ```yaml cluster.name: bjbpe01-elk cluster.initial_master_nodes: ["10.12.153.180"] node.name: elk01 node.master: true node.data: true path.data: /data/elasticsearch/data path.logs: /data/elasticsearch/logs bootstrap.memory_lock: false bootstrap.system_call_filter: false network.host: 0.0.0.0 http.port: 9200 transport.tcp.port: 9300 # 单节点模式下,将discovery开头的行注释 # discovery.seed_hosts: ["10.3.145.56","10.3.145.57"] # discovery.zen.minimum_master_nodes: 2 # discovery.zen.ping_timeout: 150s # discovery.zen.fd.ping_retries: 10 client.transport.ping_timeout: 60s http.cors.enabled: true http.cors.allow-origin: "*" ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值