技术思绪摘录旅行
Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去

一、ELK日志归集之Elasticsearch安装(CentOS 7.5)

二、ELK日志归集之LogStash安装(CentOS 7.5)

三、ELK日志归集之Kibana安装(CentOS 7.5)

四、.NET5 WebApi 直接输出到Elasticsearch

五、.NET5 WebApi 日志利用Logstash收集到Elasticsearch中


ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。

Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。

Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。

Logstash的作用和特点:以下是官网的介绍,大致归纳为采集、筛选、输出、可扩展

image.png

image.png

image.png

image.png

准备一台全新的Linux服务器,虚拟机也可以

10.3.1.171

安装一下基本的插件

yum -y install net-tools  install wget java lrzsz unzip zip vim

接下来,将从文件下载开始,一步一步记录安装过程。

1、下载logstash安装包

官方下载页面:https://www.elastic.co/cn/downloads/logstash

image.png

>cd /opt/package
>wget https://artifacts.elastic.co/downloads/logstash/logstash-7.14.0-linux-x86_64.tar.gz

2、解压logstash-7.14.0-linux-x86_64.tar.gz

>cd /opt/apps
>tar -zxvf /opt/package/logstash-7.14.0-linux-x86_64.tar.gz

3、修改配置文件

>cd /opt/apps/logstash-7.14.0/config

image.png

logstash.yml 是主要的配置文件,我们只修改它

>vim /opt/apps/logstash-7.14.0/config/logstash.yml

修改如下:

 //修改成以下,对外开放
 http.host: 0.0.0.0

4、启动logstash,官方提供多种方式,我这只演示几种典型和常用的

>cd /opt/apps/logstash-7.14.0/bin

直接从字符串配置中启动:

>./logstash -e 'input { stdin { } } output { stdout {} }'
>./logstash -e 'input { stdin{} } output { elasticsearch {hosts => ["10.3.1.171:9200"] index => "mytest-%{+YYYY.MM.dd}" }}'

从配置文件中启动:

>./logstash -f redis.conf

重点介绍下配置文件的编写:

配置文件中,主要定义了日志的来源,存储的去处,以及筛选的规则等,建议多个来源的配置文件独立。

比如:Redis、RabbitMQ、Nginx、AspNetCoreWebAPI等,产生的日志不在一个地方,格式也不同,那么可以建立多个配置文件来进行收集日志

当然,如果你的项目不多,也可以用一个配置文件搞定

比如:

# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.

input {
	file{
	path => "/nginx-1.16.1/logs/*.log"
	codec => json
	start_position => "beginning"
	type => "nginx-log"
}
   
    file{
	path => "/ElkDemo.Api/ConsoleApp1/bin/Debug/netcoreapp3.1/Logs/*.log"
	codec => json
	start_position => "beginning"
	type => "consoledemo-log"
  }
}

output {
	
	if [type] == "nginx-log" { 
        elasticsearch {
            hosts => ["http://10.3.1.171:9200"]
            index => "nginx-log-%{+YYYY.MM.dd}"
        }
    }
	
    if [type] == "consoledemo-log" { 
        elasticsearch {
            hosts => ["http://10.3.1.171:9200"]
            index => "consoledemo-log-%{+YYYY.MM.dd}"
        }
    }
	  
	stdout{
		codec => rubydebug
	}
}

5、查看收集到的数据文件夹

>ll /opt/apps/elasticsearch-7.14.0/data/nodes/0/indices/

因为现在只有一个节点,nodes下面只有0

6、开启防火墙,支持对外开放

>firewall-cmd --permanent --zone=public --add-port=9600/tcp
>systemctl reload firewalld

7、查看启动情况

>netstat -antp |grep 9600

8、关闭服务

>ps -ef|grep logstash|grep -v grep|awk '{print $2}'|xargs kill -9

9、外部访问测试

http://10.3.1.171:9600/

看到以下情况,就是正常了

{
    "host": "localhost.localdomain",
    "version": "7.14.0",
    "http_address": "0.0.0.0:9600",
    "id": "5e216287-cfca-475a-b409-435c58c2ceb1",
    "name": "localhost.localdomain",
    "ephemeral_id": "21c4fd6b-df1a-4580-b22b-1b7db5479cac",
    "status": "green",
    "snapshot": false,
    "pipeline": {
        "workers": 4,
        "batch_size": 125,
        "batch_delay": 50
    },
    "build_date": "2021-07-29T19:43:14Z",
    "build_sha": "29d52f1e490de0a97194846bbfc2aa00dce23b54",
    "build_snapshot": false
}


CarsonIT 微信扫码关注公众号 策略、创意、技术

留下您的脚步

 

最近评论

查看更多>>

精选推荐

阅读排行

友情打赏

请打开您的微信,扫一扫