ELK环境部署与群集配置

一.ELK是什么?

1.1  ELK由来

ELK是elasticsearch,logstash,kibana  这三个工具的简称

1.2  ELK三个组件的介绍

Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。

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

要注意的是elasticsearch要和kibana的版本兼容,否则kibana会无法配合elasticsearch显示日志,比如,kibana4.5.3就无法兼容elasticsearch2.2及其以下的版本

1.3  ELK原理图

二、安装配置ELK环境

2.1  安装java

很多教程上写的都是安装openjdk,但是感觉openjdk还是Bug多多,这里就用Oracle JDK了。

ELK要求java版本比较新,所以下载的最新版本的rpm

wget http://download.oracle.com/otn-pub/java/jdk/8u102-b14/jdk-8u102-linux-x64.rpm?AuthParam=1469771524_1517498b1a49fd5cb625bada1952bf53

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

确认java安装完成

[[email protected] ~]# java -version

java version "1.8.0_102"

Java(TM) SE Runtime Environment (build 1.8.0_102-b14)

Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)

2.2安装elasticsearch-2.3.4.rpm

注意,这里的版本要安装的新一点,要和kibana兼容。

wget  https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/rpm/elasticsearch/2.3.4/elasticsearch-2.3.4.rpm

rpm -ivh elasticsearch-2.3.4.rpm

安装完成之后,修改配置文件

vim /etc/elasticsearch/elasticsearch.yml

主要就是修改:

cluster.name: cluster_1      群集名字

node.name: node-1          节点名字

path.data: /path/to/data    数据目录

path.logs: /path/to/logs   日志目录

network.host: 0.0.0.0    监听地址

http.port: 9200         监听端口

创建数据和日志文件夹:

mkdir  -p  /path/to/data   /path/to/logs

创建日志文件:

cd /path/to/logs

touch cluster_1_deprecation.log  cluster_1_index_indexing_slowlog.log  cluster_1_index_search_slowlog.log  cluster_1.log

建立群集文件夹:

mkdir  -p /path/to/data/cluster_1

最后设置这些文件和文件夹的权限。

chown -R elasticsearch.elasticsearch    /path

或者chmod 777 -R path

完成这些操作之后,就可以启动elasticsearch了。(如果出错,这里大多都是文件权限问题,对应解决就行)

chkconfig --add elasticsearch

/etc/init.d/elasticsearch start

curl 127.0.0.1:9200            访问9200端口测试一下

{

"name" : "node-1",

"cluster_name" : "cluster_1",

"version" : {

"number" : "2.3.4",

"build_hash" : "e455fd0c13dceca8dbbdbb1665d068ae55dabe3f",

"build_timestamp" : "2016-06-30T11:24:31Z",

"build_snapshot" : false,

"lucene_version" : "5.5.0"

},

"tagline" : "You Know, for Search"}

到此elasticsearch就已经安装完成了。

2.2.1安装head插件

head插件提供elasticsearch可视化功能的一个插件

usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head

-> Installing mobz/elasticsearch-head...

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

Downloading .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................DONE

Verifying https://github.com/mobz/elasticsearch-head/archive/master.zip checksums if available ...

NOTE: Unable to verify checksum for downloaded plugin (unable to find .sha1 or .md5 file to verify)

Installed head into /usr/share/elasticsearch/plugins/head

安装完成后访问http://IP:9200/_plugin/head/即可看到elasticsearch的WEB管理界面

如图:

2.2.2 kopf添加插件

kpof是提供lasticsearch群集状态管理的一个插件(单个lasticsearch性能有限,这里先安装上kopf插件,后续再做群集)

/usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf

-> Installing lmenezes/elasticsearch-kopf...

Trying https://github.com/lmenezes/elasticsearch-kopf/archive/master.zip ...

Downloading ............................................................................................................................................................................................................ ......DONE

Verifying https://github.com/lmenezes/elasticsearch-kopf/archive/master.zip checksums if available ...

NOTE: Unable to verify checksum for downloaded plugin (unable to find .sha1 or .md5 file to verify)

Installed kopf into /usr/share/elasticsearch/plugins/kopf

安装完成后访问:

http://IP:9200/_plugin/kopf/即可打开群集的WEB管理界面

2.3 安装logstash

2.3.1下载并安装GPG key

https://www.elastic.co/guide/en/logstash/current/installing-logstash.html   官网地址

rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch

2.3.2 添加yum仓库

vim /etc/yum.repos.d/logstash.repo

[logstash-2.3]

name=Logstash repository for 2.3.x packages

baseurl=https://packages.elastic.co/logstash/2.3/centos

gpgcheck=1

gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch

enabled=1

2.3.4 安装logstash

yum install -y logstash

2.3.5 logstash目录位置

安装完成的logstash在目录/opt下[[email protected] ~]# ll /opt/

总用量 8

drwxr-xr-x  5 logstash logstash 4096 5月  25 23:03 logstash

2.3.6 启动logstash

-e参数:执行

input:输入

output:输出

-d参数:daemon模式,后台启动(守护进程)

[[email protected] ~]# /opt/logstash/bin/logstash -e ‘input { stdin{} } output { stdout{} }‘

Settings: Default pipeline workers: 1

Pipeline main started

hello world

2016-05-25T15:15:22.035Z ELK-C-02-47 hello world

这里可以看出来   输入(logstash收集)到什么内容,logstach 就会格式化的输出一些内容。

我们可以把日志文件让logstach收集到,然后输出到elasticsearch ,再通过kibana展示elasticsearch的内容,这就是ELK的原理。

2.4安装kibana

 

2.4.1下载并安装GPG key:

https://www.elastic.co/guide/en/kibana/current/setup.html     官网地址

rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch

2.4.2添加yum源地址文件:

vim /etc/yum.repos.d/kibana.repo

[kibana-4.5]

name=Kibana repository for 4.5.x packages

baseurl=http://packages.elastic.co/kibana/4.5/centos

gpgcheck=1

gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch

enabled=1

2.4.2 安装kibana

yum install kibana

2.4.3  修改配置文件

vim /opt/kibana/config/kibana.yml

[[email protected] config]# grep ‘^[a-z]‘ /opt/kibana/config/kibana.yml

server.port: 5601                             端口

server.host: "0.0.0.0"   本地监听地址

elasticsearch.url: "http://10.0.0.130:9200"         elasticsearch的地址

kibana.index: ".kibana"

保存退出后启动kibana:

/etc/init.d/kibana start置文件

查看是否监听端口

[[email protected] ~]# netstat -anpt |  grep 5601

tcp        0      0 0.0.0.0:5601                0.0.0.0:*                   LISTEN      3621/node

到此,ELK环境就已经部署完成了

三.收集本机日志

3.1 创建日志索引

在浏览器访问kibana:http://IP:5601就可以看到kibana的页面了
登录之后,首先配置一个索引,默认kibana的数据被指向Elasticsearch,使用默认的logstash-*的索引名称,并且是基于时间(@timestamp)的,如下


点击“Create”,看到如下界面说明索引创建完成。

点击“Discover”,可以搜索和浏览Elasticsearch中的数据,默认搜索的是最近15分钟的数据,可以自定义选择时间。

3.2 收集本地系统日志
将logstash配置为索引器,并将logstash的日志数据存储到Elasticsearch,本范例主要是索引本地系统日志
#cd /usr/local/logstash/config         路径无所谓
#vim  logstash-indexer.conf         
input {
  file {
     type => "syslog"                   
     path => ["/var/log/messages", "/var/log/secure" ]           收集/var/log/messages 和secure这两个日志
  }
  syslog {
     type => "syslog"
     port => "5544"
  }
}
output {
  elasticsearch { hosts => "10.0.0.130:9200" }                输出到Elasticsearch
  stdout { codec => rubydebug }
}
测试是否有语法错误:
#/usr/local/logstash/bin/logstash --configtest -f logstash-indexer.conf 
Configuration OK
启动
nohup /usr/local/logstash/bin/logstash -f /usr/local/logstash/config/logstash-indexer.conf &

测试echo一条日志信息到/var/log/messages,然后再通过kibana界面查看
#echo "`date` This is a test for logstash for indexer" >> /var/log/messages
如下图:

测试从一台服务器(ip为10.0.18.12)登录到10.0.0.130
#ssh [email protected]
The authenticity of host ‘10.0.90.24 (10.0.90.24)‘ can‘t be established.
RSA key fingerprint is 4b:97:0a:97:e8:cf:a5:39:49:6c:65:8e:32:79:64:c8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘10.0.90.24‘ (RSA) to the list of known hosts.
[email protected] password:      --输入10.0.0.130服务器的root密码
Last login: Fri Apr  1 17:31:32 2016 from 10.0.90.8
然后查看kibana,看是否搜集到了日志

然后到kibana界面刷新下,就可以看到日志信息了。

以上表示搜集日志成功。

收集多个日志,开启多个logstash进程即可

/opt/logstash/bin/logstash -f ./logstash-indexer.conf &    收集/var/log/secure和message

/opt/logstash/bin/logstash -f ./logstash-http.conf &        收集Apache的访问日志

logstash-indexer.conf文件内容:

input {
 file {
    type => "syslog"
    path => ["/var/log/messages","/var/log/secure"]
    }

syslog {
    type => "syslog"
    port => "5544"
    }
    }
output {
elasticsearch {hosts => "10.0.0.130"}
stdout { codec => rubydebug  }
}

logstash-http.conf文件内容:input {
  file {
        path => "/var/log/httpd/access_log"
        codec => "json"
}
}
output {
elasticsearch {
        hosts => ["10.0.0.130:9200"]
        index => "http-access-log-%{+YYYY.MM.dd.HH}"
        workers =>5
        template_overwrite => true
}
}

这两个附件是收集两个日志所需要的配置文件 ,收集不同的日志,所写的配置文件都有所不同。

 

四、收集其它主机的日志

收集其它主机的日志的时候,只需要安装上logstach,通过logstach对日志进行收集和输出到elasticsearch即可

Client的IP是10.0.0.129,安装配置了httpd服务
4.1 安装jdk
# rpm -ivh jdk-8u77-linux-x64.rpm
Preparing...                ########################################### [100%]
   1:jdk1.8.0_77            ########################################### [100%]
Unpacking JAR files...
        tools.jar...
        plugin.jar...
        javaws.jar...
        deploy.jar...
        rt.jar...
        jsse.jar...
        charsets.jar...
        localedata.jar...
        jfxrt.jar...
测试jdk安装是否成功
#java -version
java version "1.8.0_77"
Java(TM) SE Runtime Environment (build 1.8.0_77-b03)
Java HotSpot(TM) 64-Bit Server VM (build 25.77-b03, mixed mode)
表示安装OK

4.2 安装logstash 

方法同上,就不写了。

4.3 同步时间

yum  -y insall ntpdate

ntpdate cn.ntp.org.cn

客户端的时间要保证和ELK服务端的时间一致,否则会出现Kibana上无法显示数据的情况

4.4运行logstach

/opt/logstash/bin/logstash -f logstash-http.conf

这里监控的还是Apache的访问日志,还是之前那个配置文件。可以新建一个索引  但是这里就用之前个索引了。(我这样做是不合适的。不同主机用一个索引很不好,因为那样会不知道日志信息是哪台主机的,建立索引可以根据主机名来建立。)

总结:收集一个日志的流程:

1.在Kibana上面建立索引

2.编写logstach配置文件

3.开启一个logstach进程,并指定配置文件

五、elasticsearch群集配置

单个elasticsearch性能有限,而且无法实现数据冗余,这时候,就需要配置群集了。

5.1 在节点2上同样安装elasticsearch

(所有节点都要安装head和kopf插件) 步骤同上

5.2 在节点1(原ELK服务器)上修改配置文件。

其它的保持不变,添加这两行:

discovery.zen.ping.multicast.enabled: false

discovery.zen.ping.unicast.hosts: ["10.0.0.130", "10.0.0.128"]

这里也就是两个节点的IP

5.3 在节点2上修改配置文件(elasticsearch群集节点

cluster.name: cluster_1      群集名字要和节点1相同

node.name: node-2         节点名字  不能重复了

path.data: /path/to/data    数据目录

path.logs: /path/to/logs   日志目录

network.host: 0.0.0.0    监听地址

http.port: 9200

discovery.zen.ping.multicast.enabled: true

discovery.zen.ping.unicast.hosts: ["10.0.0.130","10.0.0.128"]

5.4重启所有节点

重启完成后访问:http://IP:9200/_plugin/kopf/   即可跳转到cluster界面

如图:

1.@centos ~]# /etc/init.d/elasticsearch restart

到这里,ELK的部署、基本日志监控、群集都部署完成了,但是到这也只是一个入门,深入的话,需要理解logstach配置文件书写方法。后来会补上,未完待续。。。

感觉51cto图片显示好奇葩,,,尤其是上面

时间: 2024-08-07 17:00:54

ELK环境部署与群集配置的相关文章

Java学习-031-JavaWeb_001 -- Tomcat环境部署及基本配置

首先到 Tomcat 官网,下载对应的版本,我本机的系统是 WIN7 64BIT 的,因而我选择的是64bit 的zip包,如下图所示: 下载后解压后,目录TOMCAT 对应的目录结构如下所示: TOMCAT 启动:进入安装目录 apache-tomcat-8.0.26\bin 下,双击 startup.bat 启动 tomcat. 启动窗口如下图所示,对应的端口号可在启动窗口查看. 启动前请查看端口号 8080 是否被占用,若被占用则需要修改相应的端口号,修改端口号的配置文件路径为:apach

ELK环境搭建及client配置

官网下载:logstash.kibana.elas: 在server端: 安装logstash:rpm包方式,最新版本 /etc/logstash/conf.d/下,创建个配置文件,用来收集client端的日志信息: #vim  server.conf input {      #配置输入信息及方式: redis { port => "6379" host => "10.6.22.75" data_type => "list"

(二 )VMware workstation 部署虚拟集群实践——并行批量操作环境部署

在上一篇博客中,已经介绍了安装虚拟集群的过程和需要注意的细节问题. 这篇主要是介绍如何批量登陆远程主机和配置,这个过程中是在没有部署并行处理工具或者集群管理工具的前进行的. ------------首次登陆-------------- 首次登陆需要解决的问题就是: 1,信任远程主机公钥的问题,也就是key_word:yes/no? 2,然后就是远程主机的密码,key_word:password: 在自动化部署过程中,需要进行免交互和免密码登陆. 1,使用expect编写免交互登陆脚本(适用于te

LNMP环境部署及zabbix服务器端安装

一.LNMP环境部署 1.配置epel源 建议在系统安装完成之后就配置epel源,方便一些软件包的安装: wget http://mirrors.ustc.edu.cn/centos/6/extras/x86_64/Packages/epel-release-6-8.noarch.rpmrpm -ivhepel-release-6-8.noarch.rpm 2.nginx安装 (1)安装支持软件 Nginx.mysql.php的配置及运行需要pcre.zlib.openssl等软件包的支持,因此

Centos7下ELK+Redis日志分析平台的集群环境部署记录

之前的文档介绍了ELK的架构基础知识,下面简单记录下ELK结合Redis搭建日志分析平台的集群环境部署过程,大致的架构如下: + Elasticsearch是一个分布式搜索分析引擎,稳定.可水平扩展.易于管理是它的主要设计初衷 + Logstash是一个灵活的数据收集.加工和传输的管道软件 + Kibana是一个数据可视化平台,可以通过将数据转化为酷炫而强大的图像而实现与数据的交互将三者的收集加工,存储分析和可视转化整合在一起就形成了ELK. 基本流程:1)Logstash-Shipper获取日

Java3D 集成开发环境部署与配置(含实例)

Java 3D开发相关的准备: 第一:下载Java 3D库 参考网址一:https://java3d.java.net/ 参考网址二: http://translate.google.com/translate?hl=zh-CN&rurl=translate.google.com.hk&tl=zh-CN&u=http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-j

linux后台服务器开发环境部署配置和验证(nginx+apache+php-fpm+FASTCGI(C/C++))

linux后台服务器开发环境部署配置 引言 背景 随着公司互联网业务的不断增多,开发环境变得越来越复杂,为了便于统一服务器端的开发部署环境,特制定本配置文档. 使用软件 CentOS 6.3(Linux version 2.6.32-279.el6.x86_64) gcc (GCC) 4.4.6 20120305 (Red Hat 4.4.6-4) 本次配置 Nginx 1.5.8 Apache 2.4.7 php 5.3.26 目的 构造WEB前端技术架构,web前端的部署结构技术完全完成.

Flume环境部署和配置详解及案例大全

flume是一个分布式.可靠.和高可用的海量日志采集.聚合和传输的系统.支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(比如文本.HDFS.Hbase等)的能力 . 一.什么是Flume? flume 作为 cloudera 开发的实时日志收集系统,受到了业界的认可与广泛应用.Flume 初始的发行版本目前被统称为 Flume OG(original generation),属于 cloudera.但随着 FLume 功能的扩展,F

ELK 7.4.1 安装配置手册之前期环境搭建

ELK 7.4.1 安装配置手册之前期环境搭建 一. openjdk安装 1.说明 因为elasticsearch 7.4.1 需要依赖于java 11或以上的版本才可以运行,所以此处选择直接使用openjdk-13.0.1 的版本进行安装 . 本章主要介绍openjdk 的环境搭建 jdk下载链接: https://pan.baidu.com/s/1ZRPFSSTvsk2n4s8KzrLF8A 提取码:ll43 2.安装 解压openjdk[[email protected] ~]# tar