Rsyslog+ELK日志分析系统

这里主要总结一下搭建过程

一.rsyslog

rsyslog是现在大多数linux自带的日志收集,这里主要说一下rsyslog的简单配置。

client端配置它只须要更改准备发送的日志以及在末尾加上Server端使用的协议和IP便可,例如:

#加入如下便可 *.* @10.144.100.32:514

二.logstash配置

logstash只须要将rsyslog收集起来并转发至elasticsearch,配置以下:

vi /etc/logstash.conf

input{
        syslog{
        type=>"system-syslog"
        port=>514
        host=>"10.144.100.32"
        }
        }

        filter{
        date{
        match=>["timestamp","yyyy-MM-dd-HH:mm:ss"]
        locale=>"cn"
        }
        }
        output{
        elasticsearch{
        hosts=>["10.24.180.19:9200"]
        user=>"elastic"
        password=>"123456"
        index=>"blockchain-%{type}-%{+YYYY.MM.dd}"
        codec=>"json"
        }
        stdout{
        codec=>json
        }
}
cd logstash-5.5.1/bin/ ./logstash -f /etc/logstash.conf

三.Elasticsearch搭建

elasticsearch搭建起来比较简单,直接在https://www.elastic.co/downloads/elasticsearch下载elasticsearch压缩包,解压下来。

cd elasticsearch-5.5.1/bin/
./elasticsearch &

本地浏览器访问http://localhost:9200浏览器

*注意:安装elasticsearch尽可能先改一下内核参数和资源参数,我在阿里云上搭建的,默认的内核参数和资源参数可能会致使启动失败。

vim /etc/sysctl.conf #修改或添加如下参数 

fs.file-max=65536 
vm.max_map_count = 262144 

vim /etc/security/limits.conf #修改或添加如下参数 
* soft nofile 65536 
* hard nofile 131072 
* soft nproc 2048 
* hard nproc 4096

elasticsearch有几个比较推荐的插件,这里介绍一下head插件安装,并经过head插件介绍一下elasticsrach的一些基本概念。restful

首先介绍一下head的安装,ES5.0以前head插件是直接能够经过elasticsearch-plugin install安装,5.0以后不能够直接插件安装,但依然是能够安装使用的。

首先,设置下ES同源访问策略:

vim elasticsearch-5.5.0/conf/elasticsearch.yml #在末尾添加以下内容:
 
http.cors.enabled: true 
http.cors.allow-origin: "*"

经过npm进行安装:

git clone git://github.com/mobz/elasticsearch-head.git cd elasticsearch-head npm install npm run start

elasticsearch若是直接暴露在外网上是很是危险的,这里安装一款x-pack插件,可将此端口设置帐户密码。

cd elasticsearch-5.5.0/bin/ ./ealsticseearch-plugin intsall x-pack

安装完x-pack后,直接访问9200端口会提示输入帐号和密码,这增长了elasticsearch的一些安全性,默认的帐号密码是elastic:changeme,更改帐号密码课经过调用restful API

curl -XPUT -u elastic 'localhost:9200/_xpack/security/user/elastic/_password' -d '{ "password" : "elastic" }'

四.Kibana搭建

kibana是配合Elasticsearch一块儿使用的可视化分析平台,说白了就是更形象的表示Elasticsearch的结果。

vim kibana/config/kibana.yml

server.port: 5601 
server.host: 0.0.0.0 
elasticsearch.url: "http://localhost:9200" 
elasticsearch.username: "elastic" 
elasticsearch.password: "changeme"

浏览器输入localhost:5601 查看是否成功

ELK日志系统架构:Elasticsearch、Logstash、Kibana

ElasticSearch 安装

1、下载 ElasticSearch,本文使用的版本为 5.5.1。

2、配置

path.data: /data/es #数据路径
path.logs: /data/logs/es #日志路径
network.host: 本机地址 #服务器地址
http.port: 9200 #端口

如果不修改配置的话,默认的数据和日志都位于elasticsearch文件夹下。

默认地址会使用 192.168.0.1 的地址,此时ElasticSearch运行于开发模式,只能从本机访问。如果修改为生产地址,就会进入生产模式,并且运行 bootstrap check 。

3、启动

./bin/elasticsearch

注意,elasticsearch 不能使用 root 用户启动,使用其他用户启动,要注意有文件夹的读写权限。

我在安装过程中还出现了下面几个警告信息

[2017-08-07T09:13:59,951][WARN ][o.e.b.JNANatives         ] unable to install syscall filter: 
java.lang.UnsupportedOperationException: seccomp unavailable: requires kernel 3.5+ with CONFIG_SECCOMP and CONFIG_SECCOMP_FILTER compiled in
    at org.elasticsearch.bootstrap.SystemCallFilter.linuxImpl(SystemCallFilter.java:350) ~[elasticsearch-5.5.1.jar:5.5.1]
    at org.elasticsearch.bootstrap.SystemCallFilter.init(SystemCallFilter.java:638) ~[elasticsearch-5.5.1.jar:5.5.1]
    at org.elasticsearch.bootstrap.JNANatives.tryInstallSystemCallFilter(JNANatives.java:245) [elasticsearch-5.5.1.jar:5.5.1]
    at org.elasticsearch.bootstrap.Natives.tryInstallSystemCallFilter(Natives.java:113) [elasticsearch-5.5.1.jar:5.5.1]
    at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:111) [elasticsearch-5.5.1.jar:5.5.1]
    at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:194) [elasticsearch-5.5.1.jar:5.5.1]
    at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:351) [elasticsearch-5.5.1.jar:5.5.1]
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:123) [elasticsearch-5.5.1.jar:5.5.1]
    at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:114) [elasticsearch-5.5.1.jar:5.5.1]
    at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:67) [elasticsearch-5.5.1.jar:5.5.1]
    at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:122) [elasticsearch-5.5.1.jar:5.5.1]
    at org.elasticsearch.cli.Command.main(Command.java:88) [elasticsearch-5.5.1.jar:5.5.1]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91) [elasticsearch-5.5.1.jar:5.5.1]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84) [elasticsearch-5.5.1.jar:5.5.1]
[2017-08-01T14:10:57,843][WARN ][o.e.b.BootstrapChecks    ] [VAfWGGZ] max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]
[2017-08-01T14:10:57,844][WARN ][o.e.b.BootstrapChecks    ] [VAfWGGZ] max number of threads [1024] for user [maserati] is too low, increase to at least [2048]
[2017-08-01T14:10:57,844][WARN ][o.e.b.BootstrapChecks    ] [VAfWGGZ] max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
[2017-08-01T14:10:57,844][WARN ][o.e.b.BootstrapChecks    ] [VAfWGGZ] system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk

针对文件描述符,调成 65536 ulimit -n 65536,如果提示没有权限,则可以在用户的 .bash_profile 中增加一行,退出用户重新登陆就可以。

针对 max number of threads 问题,修改 /etc/security/limits.d/90-nproc.conf 。

*          soft    nproc     2048
root       soft    nproc     unlimited

针对 max virtual memory areas ,修改 /etc/sysctl.conf。如果没有,就新增一行。

vm.max_map_count = 262144

针对 system_call_filter 可以,通过修改配置文件(elasticsearch.yml)关掉这个参数。

bootstrap.system_call_filter: false 

4、访问,出现下面的结果表示启动成功。

[root@iZ627x15h6pZ cloud]# curl http://localhost:9200
{
  "name" : "VAfWGGZ",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "J9Tm5R2zRt2PkOSwtXj5Wg",
  "version" : {
    "number" : "5.5.1",
    "build_hash" : "19c13d0",
    "build_date" : "2017-07-18T20:44:24.823Z",
    "build_snapshot" : false,
    "lucene_version" : "6.6.0"
  },
  "tagline" : "You Know, for Search"
}

Logstash 安装

1、下载并解压 Logstash,本文用的 Logstash-5.5.1 版本

2、创建一个简单的配置文件 logstash_test.conf

input { stdin { } }
output {
  stdout { codec => rubydebug }
}

3、启动 logstash

./bin/logstash -f logstash_test.conf 

出现这些信息,表示启动成功了。

[2017-08-01T13:58:38,437][INFO ][logstash.pipeline        ] Pipeline main started
The stdin plugin is now waiting for input:
[2017-08-01T13:58:38,532][INFO ][logstash.agent           ] Successfully started Logstash API endpoint {:port=>9600}

4、与ElasticSearch配合。

Kibana 安装

1、下载 Kibana

2、修改配置

//启动端口 因为端口受限 所以变更了默认端口
server.port: 5601
//启动服务的ip
server.host: "本机ip"
//elasticsearch地址
elasticsearch.url: "http://localhost:9200”

3、启动程序

./bin/kibana

4、访问查看Kibana启动是否成功,并检索查看数据

http://localhost:5601

参考资料:
1、Download Logstash
2、ElasticSearch Download

Elasticsearch教程

索引(动词)
索引一个文档 就是存储一个文档到一个 索引 (名词)中以便它可以被检索和查询到。这非常类似于 SQL 语句中的 INSERT 关键词,除了文档已存在时新chaj文档会替换旧文档情况之外。

倒排索引
倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index)。带有倒排索引的文件我们称为倒排索引文件,简称倒排文件(inverted file)。

文档
存储在ES上的主要实体叫文档

文档类型(废弃)
在ES中,一个索引对象可以存储很多不同用途的对象。

映射
存储有关字段的信息,每一个文档类型都有自己的映射。

面向文档
在应用程序中对象很少只是一个简单的键和值的列表。通常,它们拥有更复杂的数据结构,可能包括日期、地理信息、其他对象或者数组等。

Elasticsearch面向文档的,意味着它存储整个对象或 文档。Elasticsearch不仅存储文档,而且 索引每个文档的内容使之可以被检索。在Elasticsearch 中,你对文档进行索引、检索、排序和过滤而不是对行列数据。这是一种完全不同的思考数据的方式,也是Elasticsearch 能支持复杂全文检索的原因。

 
Copyright © 2008-2021 lanxinbase.com Rights Reserved. | 粤ICP备14086738号-3 |