案例实施
本实验实现如下功能:java
node1上的配置: [root@localhost ~]# vim /etc/hostname node1 [root@localhost ~]# vim /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.8.134 node1 192.168.8.136 node2
node2上的配置: [root@localhost ~]# vim /etc/hostname node2 [root@localhost ~]# vim /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.8.134 node1 192.168.8.136 node2
2.部署Elasticsearch软件。
所需ELK安装包:连接https://pan.baidu.com/s/17cHU4XY9q1i90Z6ywRDFjg
提取码:k43i
1)安装Elasticsearch软件
Elasticsearch软件能够经过RPM安装,YUM安装或者源码包安装,生产环境中用户能够根据实际状况进行安装方式的选择。本人用的是RPM进行安装。node
[root@node1 media]# rpm -ivh elasticsearch-5.5.0.rpm 警告:elasticsearch-5.5.0.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID d88e42b4: NOKEY 准备中... ################################# [100%] Creating elasticsearch group... OK Creating elasticsearch user... OK 正在升级/安装... elasticsearch-0:5.5.0-1 ################################# [100%] NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using systemd sudo systemctl daemon-reload sudo systemctl enable elasticsearch.service You can start elasticsearch service by executing sudo systemctl start elasticsearch.service
2)加载系统服务linux
[root@node1 ~]# systemctl daemon-reload [root@node1 ~]# systemctl enable elasticsearch.service Created symlink from /etc/systemd/system/multi-user.target.wants/elasticsearch.service to /usr/lib/systemd/system/elasticsearch.service.
3)更改Elasticsearch主配置文件web
[root@node1 ~]# vim /etc/elasticsearch/elasticsearch.yml cluster.name: my-elk-cluster //群集名字 node.name: node-1 //节点名字 path.data: /data/elk_data //数据存放路径 path.logs: /var/log/elasticsearch/ //日志存放路径 bootstrap.memory_lock: false //在启动时侯不锁定内存 network.host: 0.0.0.0 //提供服务绑定的ip地址,0.0.0.0表明全部地址 http.port: 9200 //侦听端口为9200 discovery.zen.ping.unicast.hosts: ["node1", "node2"] //群集发现经过单播实现
4)建立数据存放路径并受权apache
[root@node1 ~]# vim /etc/elasticsearch/elasticsearch.yml [root@node1 ~]# mkdir -p /data/elk_data [root@node1 ~]# chown elasticsearch:elasticsearch /data/elk_data/
5)启动elasticsearch并查看是否成功开启npm
[root@node1 ~]# systemctl start elasticsearch.service [root@node1 ~]# cd /etc/elasticsearch/ [root@node1 elasticsearch]# netstat -anpt | grep 9200 tcp6 0 0 :::9200 :::* LISTEN 4072/java
6)查看节点信息json
7)查看群集的健康状况,能够看见status值为green(绿色),表示节点健康运行bootstrap
经过以上方式查看群集的状态对用户并不太友好,能够经过Elasticsearch-head插件,能够更方便的管理群集。vim
1.1安装Elasticsearch-head插件
1)编译安装node。编译安装node耗时较长,大约40min,根据机器的配置可能略有不一样,请耐心等待跨域
[root@node1 media]# tar zxvf node-v8.2.1.tar.gz -C /usr/src [root@node1 media]# cd /usr/src/node-v8.2.1/ [root@node1 node-v8.2.1]# ./configure && make && make install
2)安装phantomjs
[root@node1 node-v8.2.1]# cd /media/ [root@node1 media]# tar xvjf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/src/ [root@node1 media]# cd /usr/src/phantomjs-2.1.1-linux-x86_64/bin [root@node1 bin]# cp phantomjs /usr/local/bin/
3)安装Elasticsearch-head
[root@node1 media]# tar xvzf elasticsearch-head.tar.gz -C /usr/src/ [root@node1 media]# cd /usr/src/elasticsearch-head/ [root@node1 elasticsearch-head]# npm install //安装依赖包
4)修改Elasticsearch主配置文件
[root@node1 ~]# vim /etc/elasticsearch/elasticsearch.yml http.cors.enabled: true //开启跨域访问支持 http.cors.allow-origin: "*" //跨域访问容许的域名地址 两段http.cors都为添加上去的 [root@node1 ~]# systemctl restart elasticsearch.service //重启服务
5)启动服务。必须在解压后的elasticsarch-head目录下启动服务,进程会读取该目录下的grunfile.js文件。elasticsearch-head监听端口是9100,经过该端口是否监听来判断服务是否正常开启。
[root@node1 elasticsearch-head]# npm run start & [1] 50445 [root@node1 elasticsearch-head]# > elasticsearch-head@0.0.0 start /usr/src/elasticsearch-head > grunt server Running "connect:server" (connect) task Waiting forever... Started connect web server on http://localhost:9100 [root@node1 elasticsearch-head]# netstat -anpt | grep 9100 tcp 0 0 0.0.0.0:9100 0.0.0.0:* LISTEN 50458/grunt [root@node1 elasticsearch-head]# netstat -anpt | grep 9200 tcp6 0 0 :::9200 :::* LISTEN 50290/java
6)经过Elaticsearch-head查看Elaticsearch信息。经过访问浏览器http://192.168.8.134:9100/并链接群集,如图所示。
7)插入索引。经过命令插入一个测试索引,经过输出信息能够看见索引为index-demo,类型为test。
[root@node1 ~]# curl -XPUT 'localhost:9200/index-demo/test/1?pretty' -H 'Content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}' { "_index" : "index-demo", "_type" : "test", "_id" : "1", "_version" : 1, "result" : "created", "_shards" : { "total" : 2, "successful" : 2, "failed" : 0 }, "created" : true }
刷新浏览器,能够看到建立成功的索引,如图所示。
选择“概览”选项卡,还能够看见索引默认被分片成5个,且存在一个副本,如图所示。
1.2Logstash安装及使用方法
logstash通常部署在须要监控其日志的服务器中,在本案例中,logstash部署在Apache服务器上,用于收集Apache服务器的日志信息并发送到Elaticsearch中。在正式部署以前,先在node1上部署Logstash,以熟悉logstash 的使用方法。logstash也须要java环境,因此在安装以前也须要检查当前机器的java环境是否存在。
1)在node1上安装logstash
[root@node1 media]# rpm -ivh logstash-5.5.1.rpm 警告:logstash-5.5.1.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID d88e42b4: NOKEY 准备中... ################################# [100%] 正在升级/安装... 1:logstash-1:5.5.1-1 ################################# [100%] Using provided startup.options file: /etc/logstash/startup.options Successfully created system startup script for Logstash [root@node1 ~]# systemctl start logstash.service [root@node1 ~]# ln -s /usr/share/logstash/bin/logstash /usr/local/bin/
2)测试logstash。logstash命令行中经常使用的命令选项以下
[root@node1 ~]# logstash -e 'input { stdin{}} output { stdout{} }' www.baidu.com //键入内容 2019-10-10T05:00:36.651Z node1 www.baidu.com //输出结果
[root@node1 ~]# logstash -e 'input { stdin{}} output { stdout{ codec=>rubydebug } }' www.aa.com //键入内容 { "@timestamp" => 2019-10-10T05:10:09.330Z, //输出后的结果 "@version" => "1", "host" => "node1", "message" => "www.aa.com" }
[root@node1 ~]# logstash -e 'input { stdin{}} output { elasticsearch { hosts=>["192.168.8.134:9200"]} }' www.baidu.com //键入内容 www.aa.com //键入内容
在Elasticsearch中查看Logstash新增的索引,如图所示
3)logstash配置文件
logstash配置文件基本由三个部分组成,input,output,filter。
下面经过修改logstash配置文件,让其收集系统日志/var/log/messages,并将其输出到elaticsearch中。
[root@node1 ~]# chmod o+r /var/log/messages [root@node1 ~]# ll /var/log/messages -rw----r-- 1 root root 320286 10月 10 13:23 /var/log/messages [root@node1 ~]# touch /etc/log login.defs logrotate.conf logrotate.d/ logstash/ [root@node1 ~]# touch /etc/log login.defs logrotate.conf logrotate.d/ logstash/ [root@node1 ~]# touch /etc/logstash/conf.d/system.conf [root@node1 ~]# vim /etc/logstash/conf.d/system.conf input { file { path => "/var/log/messages" type => "system" start_position => "beginning" } } output { elasticsearch { hosts => ["192.168.8.134:9200"] index => "system-%{+YYYY.MM.dd}" } } [root@node1 ~]# systemctl restart logstash.service //重启logstash服务
完成后,经过浏览器查看Elasticsearch的信息,如图所示
1.3安装Kibana
1)在node1服务器上安装Kibana,并设置开机启动
[root@node1 ~]# cd /media/ [root@node1 media]# rpm -ivh kibana-5.5.1-x86_64.rpm 警告:kibana-5.5.1-x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID d88e42b4: NOKEY 准备中... ################################# [100%] 正在升级/安装... 1:kibana-5.5.1-1 ################################# [100%] [root@node1 media]# systemctl enable kibana.service Created symlink from /etc/systemd/system/multi-user.target.wants/kibana.service to /etc/systemd/system/kibana.service.
2)设置kibana的主配置文件/etc/kibana/kibana.yml
[root@node1 ~]# vim /etc/kibana/kibana.yml server.port: 5601 //kibana打开的端口 server.host: "0.0.0.0" //kibana侦听的地址 elasticsearch.url: "http://192.168.8.134:9200" //和Elaticsearch创建链接 kibana.index: ".kibana" //在elasticsearch中添加.kibana索引
3)启动kibana服务[root@node1 ~]# systemctl start kibana.service
4)验证kibana。经过浏览器访问http://192.168.8.134:5601,第一次登录须要添加一个Elasticsearch索引,添加前面建立的索引实。添加前面所建立的索引system。
5)将Apache服务器的日志添加到Elaticsearch并经过kibana显示。
[root@localhost ~]# yum -y install httpd [root@localhost ~]# systemctl restart httpd
在Apache服务器上安装Logstash,以便将收集的日志发送到Elasticsearch中。
[root@localhost ~]# java -version openjdk version "1.8.0_102" OpenJDK Runtime Environment (build 1.8.0_102-b14) OpenJDK 64-Bit Server VM (build 25.102-b14, mixed mode) [root@localhost media]# rpm -ivh logstash-5.5.1.rpm warning: logstash-5.5.1.rpm: Header V4 RSA/SHA512 Signature, key ID d88e42b4: NOKEY Preparing... ################################# [100%] Updating / installing... 1:logstash-1:5.5.1-1 ################################# [100%] [root@localhost ~]# systemctl daemon-reload [root@localhost ~]# systemctl enable logstash.service Created symlink from /etc/systemd/system/multi-user.target.wants/logstash.service to /etc/systemd/system/logstash.service.
编写Logstash配置文件apache_log.conf以下。
[root@localhost ~]# cd /etc/logstash/conf.d/ [root@localhost conf.d]# touch apache_log.conf [root@localhost conf.d]# vim apache_log.conf input { file { path => "/etc/httpd/logs/access_log" type => "access" start_position => "beginning" } file { path => "/etc/httpd/logs/error_log" type => "error" start_position => "beginning" } } output { if [type] == "access"{ elasticsearch { hosts => ["192.168.8.134:9200"] index => "apache_access-%{+YYYY.MM.dd}" } } if [type] == "error"{ elasticsearch { hosts => ["192.168.8.134:9200"] index => "apache_error-%{+YYYY.MM.dd}" } } } [root@localhost conf.d]# /usr/share/logstash/bin/logstash -f apache_log.conf
经过访问浏览器访问http://192.168.8.134:9100查看索引是否建立成功。
登录kibana,单击“create lndex Pattern”按钮添加索引。
在索引名中输入以前配置的output前缀“apache_access”,单击“create”按钮。
用相同的方法添加apache_error-索引。
选择“discover”选项卡,在中间下拉表中选择刚添加的apache_access-索引,能够查看相应的图表及日志信息,还能够根据Fields进行归类显示。