ELK日志分析系统简介以及环境搭建配置

2018/07 作者:ihunter 0 0

前提:处理大数据日志收集分析,随着搜索集群的快速膨胀,大量日志处理及情况反馈滞后带来一系列问题,亟需一个工具能快速分析定位集群中那种日志或那个机器出现了异常。运维的日志分析系统定制化较重,分析不够实时。故找一个RTF工具可以直接即上手。


Logstash:负责日志的收集,处理,索引
Elasticsearch:负责日志检索和分析和储存
Kibana:用于搜索和可视化的日志的Web界面,通过nginx反代
filebeats: 安装在将要把日志发送到logstash的服务器上,作为日志转发的道理

社区: https://elasticsearch.cn/

下载: https://www.elastic.co/cn/

https://github.com/anbai-inc/Kibana_Hanization

https://elkguide.elasticsearch.cn/logstash/

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.0.tar.gz

wget https://github.com/mobz/elasticsearch-head/archive/master.zip

wget http://cdn.npm.taobao.org/dist/node/latest-v8.x/node-v8.1.3-linux-x64.tar.gz

wget https://artifacts.elastic.co/downloads/kibana/kibana-5.5.0-linux-x86_64.tar.gz

wget https://artifacts.elastic.co/downloads/logstash/logstash-5.5.0.tar.gz

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.5.0-linux-x86_64.tar.gz


安装jdk1.8

1、下载jdk并解压(下载略)

mkdir /usr/java

cd /usr/java

axel -n 50 http://91.cndo.org/jdk-8u162-linux-x64.rpm

rpm -ivh jdk-8u162-linux-x64.rpm

2、添加java环境变量(需root账号)

1
2
3
4
5
6
7
8
9
 
 
 
 
 
 

3、验证java是否安装成功:

java -version   # java version "*"

rpm -qa | grep jdk  # java version "*"


elasticsearch:

1.下载解压:/usr/local/elasticsearch

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.3.tar.gz

tar -xzvf elasticsearch-6.2.3.tar.gz

mv elasticsearch-6.2.3 elasticsearch

mv elasticsearch /usr/local/

2.配置:

useradd  -r elk -s  /sbin/nologin
passwd elk (12345678)       
chown -R elk /usr/local/elasticsearch/
vi /etc/security/limits.conf  # 添加如下内容:
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
vi /etc/sysctl.conf
vm.max_map_count=655360
sysctl -p
vi /usr/local/elasticsearch/config/elasticsearch.yml
network.host: 0.0.0.0
http.port: 9200
path.data: /usr/local/elasticsearch/data
path.logs: /usr/local/elasticsearch/logs
最后两项路径的配置,需要在elasticsearch目录下创建data和logs两个子目录。
vi /usr/local/elasticsearch/config/jvm.options
-Xms2g    (按实际内存大小一半:内存4G)
-Xmx2g    (按实际内存大小一半:内存4G)
mkdir /usr/local/elasticsearch/data
mkdir /usr/local/elasticsearch/logs
sudo  -u elk  /usr/local/elasticsearch/bin/elasticsearch -d  注意:不能使用root来启动

将其加入到开机启动,将其命令写入/etc/rc.local,方便以后启动启动的时候就启动es。

#设置开机启动,添加一行:
vi /etc/rc.local 

sudo  -u elk  /usr/local/elasticsearch/bin/elasticsearch -d

或  systemctl start elasticsearch ; systemctl enable elasticsearch

查看启动:netstat -lnt  #  有9200,9300端口,说明启动成功。

3.web用http://ip:9200,测试。


安装插件:

cd /usr/local/elasticsearch

bin/elasticsearch-plugin install ingest-geoip

bin/elasticsearch-plugin install ingest-user-agent

Download and install Filebeat:/usr/local/filebeat/

vi filebeat.yml

output.elasticsearch:
  hosts: [""]
  username: "elastic"
  password: ""
  setup.kibana:
  host: ""

Where  is the password of the elastic user,  is the URL of Elasticsearch, and  is the URL of Kibana.

cd /usr/local/filebeat

vi modules.d/system.yml

./filebeat modules enable system

./filebeat modules enable apache2 (mysql,nginx,redis)

......

Start Filebeat:

./filebeat setup 

./filebeat -e


安装elasticsearch-head插件:

1.下载解压:

/usr/local/elasticsearch-node

/usr/local/elasticsearch-head

2.配置:

vi /etc/profile

#node

NODE_HOME=/usr/local/elasticsearch-node

export PATH=$PATH:$NODE_HOME/bin

source /etc/profile

cd /usr/local/elasticsearch-head

npm install -g grunt-cli

npm install phantomjs-prebuilt@2.1.14 --ignore-scripts  

npm install 

vi Gruntfile.js  ###在port: 9100,后增加

hostname: '*', 

vi _site/app.js  ###把原来的localhost改为10.10.111.108

this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://10.10.111.108:9200";

cd /usr/local/elasticsearch-head/

/usr/local/elasticsearch-head/node_modules/grunt/bin/grunt server

页面访问elasticsearch-head(访问页面http://IP:9100 )


Kibana安装

1、下载kibana安装包并解压

/usr/local/kibana

2、配置kibana

yum install -y npm nodejs

npm install npm -g

vi conf/ kibana.yml

server.host: "192.168.10.99"                       #安装kibana的ip

server.name: "kibana"                              #名称                                 

elasticsearch.url: "http://192.168.10.99:9200"     #修改成安装es的ip

kibana.index: “.kibana”

mkdir /usr/local/kibana/logs

chkconfig kibana on

调试启动:/usr/local/kibana/bin/kibana --dev --no-base-path

3、启动kibana并访问kibana页面(访问页面 http://IP:5601)

/usr/local/kibana/bin/kibana > /usr/local/kibana/logs/kibana.log 2>&1 &

注:

  1. Go to Settings → Advanced.
  2. Edit the metaFields and add "_timestamp". Hit save.
  3. Now go back to Settings → Indices and _timestamp 

Filebeat安装

1. 下载解压:/usr/local/filebeat

2. 配置:

修改配置文件将Tomcat服务器和Filebeat连接起来:

打开位于Filebeat安装目录中的filebeat.yml文件,修改需要检测的Tomcat服务器的文件位置:

其中:/home/xuliugen/www/ufind/logs/*.log 是我Tomcat服务器下项目的日志文件。并且已经开启了Tomcat。

(5)修改配置文件将Filebeat和Logstash连接起来:

同样是修改filebeat.yml文件,将output.elasticsearch注释掉,并打开Logstash的注释,修改之后内容如下:

1
2
3
4
5
6
7
8
9
 
  
 
 

3.启动Filebeat:

nohup /usr/local/filebeat/filebeat -e -c /usr/local/filebeat/filebeat.yml >/dev/null 2>&1 &

4.logstash配置:

由于使用Filebeat作为输入,则需要修改相应的输入插件,修改前几步创建的logstash.conf文件,修改后的配置文件。

这里将beats(就是Filebeat)插件作为输入插件,端口号为5044,通过标准输出插件stdout 将数据显示在控制台中,其中stdout{} 里的codec => rubydebug 其中,rubydebug就是一种Codec,一般也只用在stdout插件中,作为配置测试或者调试的工具。

vi /usr/local/logstash/config/filebeat.yml 

input {      
    beats {  port => 5044 }  
    }      
output {  
        elasticsearch {
                hosts => "192.168.10.99:9200"
        }    
         stdout {          
         codec => "rubydebug" 
                }  
    }


5.启动logstash:

要验证您的配置,请运行以下命令:

/usr/local/logstash/bin/logstash -f  /usr/local/logstash/config/filebeat.yml --config.test_and_exit

--config.test_and_exit 选项将解析配置文件并报告任何出现错误的错误。

如果配置文件通过配置测试,请使用以下命令启动Logstash:

/usr/local/logstash/bin/logstash -f  /usr/local/logstash/config/filebeat.yml --config.reload.automatic

--config.reload.automatic 选项启用自动配置重新加载,这样的话你就不必在每次修改配置文件时停止和重新启动Logstash。

如果配置成功的话,如果你的Tomcat服务器有日志更新,在Logstash和Filebeat都会显示出来。


logstash安装:

1、下载logstash安装包并解压

/usr/local/logstash

2、配置logstash

vi /etc/profile

export PATH=/usr/local/logstash/bin:$PATH

source /etc/profile

vi /usr/local/logstash/config/logstash.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
 
 
 

vi /usr/local/logstash/config/startup.options

# Override Java location
JAVACMD=/usr/java/default
# Set a home directory
LS_HOME=/usr/local/logstash

chkconfig logstash on

3.测试

logstash常用参数

-e :指定logstash的配置信息,可以用于快速测试,直接输出到屏幕;

-f :指定logstash的配置文件;可以用于生产环境,以json格式输出到屏幕;


logstash -e "input {beats{}} output {elasticsearch{}}"


vim  filebeat.yml

- /home/admin/*.log                    #原- /var/log/*.log修改成需要监控日志的路径

#output.elasticsearch:                 #注释此行

#hosts: ["192.168.10.99:9200"]    #注释此行

output.logstash:                               #此行去掉注释

hosts: ["192.168.10.99:5044"]       #原hosts: ["localhost:5044"]修改成logstash对应ip

启动:/usr/local/filebeat/filebeat


1. Kibana No Default Index Pattern Warning

这就说明logstash没有把日志写入到elasticsearch。
解决方法:检查logstash与elasticsearch之间的通讯是否有问题,一般问题就在这。

先检查下logstash配置文件是否有问题,可通过下面命令检测:

/usr/local/logstash/bin/logstash -f  /usr/local/logstash/config/filebeat.yml --config.test_and_exit


2.在ELK server上检测Filebeat是否与Logstash成功通信

curl -XGET 'http://192.168.10.99:9200/filebeat-*/_search?pretty'

如果看到total与successful不为0。代表成功从client端取到日志。

{
  "took" : 4,
  "timed_out" : false,
  "_shards" : {
    "total" : 15,
    "successful" : 15,
    "failed" : 0
},

注:如果看到total与hits为0,代表通信受阻,无法从客户端取到日志。可以参照以下两个方式解决: 
(1)查看Filebeat客户端配置是否正确,Filebeat是否成功启动。 
(2)查看ELK_SERVER的安全组,确认5044端口是打开的。

3.Warning No default index pattern

input {
  log4j {    mode => "server"
    host => "127.0.0.1"
    port => 4567
    type => "log4j"
  }
  #stdin { } console input }filter {  #Only matched data are send to output.}output {  
  #stdout {} console output
  elasticsearch {    action => "index"          #The operation on ES
    hosts  => "localhost:9200" #ElasticSearch host, can be array.
    index  => "applog2"         #The index to write data to.
  }
}

我是这么解决的:
a、在“Index name or pattern”项下,填入一个elasticsearch的索引名,也即是Logstash配置文件中output项下的index对应的名称;在你这里应该是将“logstash-*”改成“applog2”;
b、在“Time-field name”,选用默认的配置:“@timestamp”
c、点击“create”即可;

赞(1) 更多分享

上篇: zabbix邮件告警设置
下篇: Jumpserver 开源堡垒机使用详解