码迷,mamicode.com
首页 > 其他好文 > 详细

ELK

时间:2017-09-02 00:12:48      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:elk


ELK Stack

ELK组件

  • ElasticSearch

  • LogStash

  • Kibana

技术分享

ElasticSearch

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便

  • ES概念

cluster

代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。es的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来看es集群,在逻辑上是个整体,你与任何一个节点的通信和与整个es集群通信是等价的。

  • ElasticSearch安装

下载并安装GPGkey

[root@node1 ~]# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch

添加yum源

[root@node1 ~]# cat /etc/yum.repos.d/elasticsearch.repo 
[elk]
name=elk
baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GAG-KEY-elasticsearch
enabled=1

安装

[root@node1 ~]# yum -y install elasticsearch

安装java(ES是java编写的)

yum -y install java

配置ES

vim /etc/elasticsearch/elasticsearch.yml
17行 修改集群名字
23行 修改节点
33行 修改数据存放目录
37行 设置日志存放目录
43行 打开
54行 监听ip 0.0.0.0
58行 打开 监听端口

设置权限

[root@node1 ~]# chown  -R elasticsearch:elasticsearch /data/es-data/

启动ES

[root@node1 ~]# systemctl  start elasticsearch

访问192.168.1.103:9200
技术分享

安装插件

[root@node1 ~]# /usr/share/elasticsearch/bin/plugin  install mobz/elasticsearch-head

访问插件 http://192.168.1.103:9200/_plugin/head/
技术分享

  • ES集群

第二台机器node2安装ES(同上,节点名字改下)

vim /etc/security/limits.conf
    # allow user ‘elasticsearch‘ mlockall
    elasticsearch soft memlock unlimited
    elasticsearch hard memlock unlimited
  • 生产常用插件Kopf

root@node1 ~]# /usr/share/elasticsearch/bin/plugin  install lmenezes/elasticsearch-kopf

访问地址
http://192.168.1.103:9200/_plugin/kopf/

技术分享

LogStash

下载安装GPG key

[root@node1 ~]# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch

添加yum仓库

[root@node1 ~]# cat /etc/yum.repos.d/log.repo 
[logstash]
name = log
baseurl=http://packages.elastic.co/logstash/2.1/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1

安装logstash(所有节点都需要安装Logstash)

yum -y install logstash

启动logstash

[root@node1 ~]# /opt/logstash/bin/logstash -e ‘input { stdin{} } output { stdout{} }‘
[root@node1 ~]# /opt/logstash/bin/logstash -e ‘input { stdin{} } output { stdout{ codec => rubydebug} }‘#显示更加详细

将logstash输入到ES

[root@node1 ~]# /opt/logstash/bin/logstash -e ‘input { stdin{} } output { elasticsearch { hosts => ["192.168.1.103:9200"] } }‘

技术分享

技术分享

  • logstash收集系统日志

启动logstash需要有配置文件

[root@node1 ~]# cat /etc/logstash/conf.d/01-logstash.conf 
input { stdin { } }
output {
  elasticsearch { hosts => ["localhost:9200"] }
  stdout { codec => rubydebug }
}

启动logstash

[root@node1 ~]# /opt/logstash/bin/logstash -f /etc/logstash/conf.d/01-logstash.conf

通过logstash收集系统日志

[root@node1 ~]# cat file.conf 
input {
   file {
    path => "/var/log/messages"
    type => "system"
    start_position => "beginning"
    }
}
output {
    elasticsearch {
        hosts => ["192.168.1.103:9200"]
        index => "system-%{+YYYY.MM.dd}"
}
}

启动

[root@node1 ~]# /opt/logstash/bin/logstash -f file.conf

技术分享

ok,这样我们的系统日志收集好了,但是看起来不太美观,我们现在来安装Kibana解决下

Kibana(可视化)

下载安装包

[root@node1 src]# wget -c https://download.elastic.co/kibana/kibana/kibana-4.3.1-linux-x64.tar.gz
[root@node1 src]# tar zxf kibana-4.3.1-linux-x64.tar.gz 
[root@node1 src]# mv kibana-4.3.1-linux-x64 /usr/local/
[root@node1 src]# ln -s /usr/local/kibana-4.3.1-linux-x64/ /usr/local/kibana

修改配置文件

[root@node1 config]# pwd
/usr/local/kibana/config
[root@node1 config]# vim kibana.yml 
第2行 开启端口
第5行 开启监听端口
第12行 开启ES
第20行 开启索引

启动(通过screen启动)

[root@node1 ~]# screen 
[root@node1 ~]# /usr/local/kibana/bin/kibana

访问
http://192.168.1.103:5601/

技术分享

创建索引
技术分享

效果图
技术分享

  • logstash 收集nginx日志

安装nginx

yum -y install nginx

修改配置文件

vim /etc/nginx/nginx.conf
http段
    log_format json ‘{"@timestamp":"$time_iso8601",‘
                ‘"@version"":"1",‘
                ‘"client":"$remote_addr",‘
                ‘"url":"$uri",‘
                ‘"domain":"$host",‘
                ‘"host":"$server_addr",‘
                ‘"size":$body_bytes_sent,‘
                 ‘"responsetime":"$request_time",‘
                ‘"referer": "$http_referer",‘
                ‘"ua": "$http_user_agent"‘
                ‘}‘;

启动nginx

systemctl restart nginx

添加nginx访问日志

输入
   file {
        path => "/var/log/nginx/access_json.log"
        codec => json
        start_position => "beginning"
        type => "nginx-log"
}
输出
        if [type] == "nginx-log"{
                elasticsearch {
                hosts => ["192.168.1.103:9200"]
                index => "nginx-log-%{+YYYY.MM.dd}"
}

ELK上线流程

技术分享


本文出自 “13110271” 博客,请务必保留此出处http://13120271.blog.51cto.com/13110271/1961978

ELK

标签:elk

原文地址:http://13120271.blog.51cto.com/13110271/1961978

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!