一步步教你部署 ELK 日志分析系统(图文详解)

一、拓扑图

mark

 二、需求描述

  1. 配置 ELK 日志分析群集
  2. 使用 Logstash 收集日志
  3. 使用 Kibana 查看分析日志

三、环境介绍

主机 主机名 IP 地址 主要软件
Node1 CentOS 7-1 192.168.126.11 Elasticsearch、Kibana
Node2 CentOS 7-2 192.168.126.12 Elasticsearch
Apache CentOS 7-3 192.168.126.13 Logstash

四、配置步骤

① 配置 Elasticsearch 环境

登录 CentOS 7-1(192.168.126.11),更改主机名,配置域名解析并查看 Java 环境

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
#万恶之源,先关防火墙及安全机制

hostnamectl set-hostname node1
su -

vim /etc/hosts
192.168.126.11   node1
192.168.126.12   node2
#尾部添加

java -version
#查看JAVA环境,一般默认是1.8.0_131

--JDK--
cd /opt
#将软件包传至该目录下
rpm -ivh jdk-8u201-linux-x64.rpm

vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
#注释:
1.输出定义java的工作目录
2.输出指定java所需的类文件
3.输出重新定义环境变量,$PATH一定要放在$JAVA_HOME的后面,让系统先读取到工作目录中的版本信息


source /etc/profile.d/java.sh
java -version
#检查

 登录 CentOS 7-2(192.168.126.12),同上操作

hostnamectl set-hostname node2

② 部署 Elasticsearch 软件

(node1)192.168.126.11:

  1. 安装 rpm 包

cd /opt
#将软件包传至该目录下
rpm -ivh elasticsearch-5.5.0.rpm 

加载系统服务

systemctl daemon-reload
systemctl enable elasticsearch.service

扫描二维码关注公众号,回复: 13590189 查看本文章

更改 ES 主要配置文件

cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
#备份

vim /etc/elasticsearch/elasticsearch.yml
//17行	cluster.name: my-elk-cluster							#集群名字
//23行	node.name: node1										#节点名字
//33行	path.data: /data/elk_data								#数据存放路径
//37行	path.logs: /var/log/elasticsearch/						#日志存放路径
//43行	bootstrap.memory_lock: false							#不在启动的时候锁定内存(前端缓存,与IOPS-性能测试方式,每秒读写次数相关)
//55行	network.host: 0.0.0.0									#提供服务绑定的IP地址,0.0.0.0代表所有地址
//59行	http.port: 9200											#侦听端口为9200
//68行	discovery.zen.ping.unicast.hosts: ["node1", "node2"]	#集群发现通过单播实现


grep -v "^#" /etc/elasticsearch/elasticsearch.yml
#检查配置

scp elasticsearch.yml [email protected]:/etc/elasticsearch/elasticsearch.yml
#将配置好的文件用SCP传至node2,后续只用去改个节点名字即可

mark

 创建数据存放路径并授权

mkdir -p /data/elk_data
chown elasticsearch:elasticsearch /data/elk_data/

查看启动 ES 是否成功开启

systemctl start elasticsearch.service
netstat -antp | grep 9200
#这里可能出现一次性检测不出来端口号的情况,多restart重启几次服务即可

mark

 查看节点信息,用宿主机浏览器打开 http://192.168.126.11:9200

mark

 node2(192.168.126.12):同上

...
...
vim /etc/elasticsearch/elasticsearch.yml
#23行	node.name: node2										#节点名字
...
...
grep -v "^#" /etc/elasticsearch/elasticsearch.yml
#检查配置
...
...
查看节点信息,用宿主机的浏览器打开  http://192.168.126.12:9200

mark

mark

mark

 ③ 检查集群的健康和状态

#检查群集健康情况
用宿主机浏览网页,打开 http://192.168.126.11:9200/_cluster/health?pretty

mark

#检查群集状态信息
打开 http://192.168.126.11:9200/_cluster/state?pretty

mark

 ④ 安装 elasticsearch-head 插件

上述查看集群的方式是不是有点不方便?

我们可以通过安装 elasticsearch-head 插件来解决这个问题

node1(192.168.126.11):

  • 编译安装 node 组件依赖包

cd /opt
#将软件包传至本目录下
yum install -y gcc gcc-c++ make

tar zxvf node-v8.2.1.tar.gz
cd node-v8.2.1/
./configure 
make -j 4 && make install
#过程耗时较长!!建议同时编译安装node2,然后再去配置Apache
  • 安装 phantomjs(前端框架)
cd /usr/local/src/
#将软件包传至本目录下
tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2
cd phantomjs-2.1.1-linux-x86_64/bin
cp phantomjs /usr/local/bin
  • 安装 elasticsearch-head(数据可视化工具)
cd /usr/local/src/
#将软件包传至本目录下
tar zxvf elasticsearch-head.tar.gz

cd elasticsearch-head/
npm install
  • 修改主配置文件
cd ~
vim /etc/elasticsearch/elasticsearch.yml
#在尾部添加配置
http.cors.enabled: true
http.cors.allow-origin: "*"
#注释
1.开启跨域访问支持,默认为false
2.跨域访问允许的域名地址


systemctl restart elasticsearch
  • 启动 elasticsearch-head
cd /usr/local/src/elasticsearch-head/
npm run start &
#切换到后台运行

netstat -lnupt |grep 9100
netstat -lnupt |grep 9200

mark

 node2(192.168.126.12):同上

...
...
cd /usr/local/src/elasticsearch-head/
npm run start &
...
...
netstat -lnupt | grep 9100
netstat -lnupt | grep 9200

mark

1.在宿主机上打开浏览器,访问 http://192.168.126.11:9100/
2.然后在 Elasticsearch 后面的栏目中摄入 http://192.168.126.11:9200,点击连接,查看群集颜色是否是健康的绿色
3.访问 http://192.168.126.12:9100/,同上操作

mark

mark

 登录 node1(192.168.126.11):

curl -XPUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"xcf","mesg":"hello world"}'
#索引为index-demo,类型为test,可以看到成功创建

mark

1.打开浏览器输入http://192.168.126.11:9100/ 查看索引信息
2.可以看见索引默认被分片5个,并且有一个副本
3.点击数据浏览,会发现在node1上创建的索引为index-demo,类型为test这些相关的信息

mark

mark

 ⑤ 安装 logstash 并做一些日志搜集输出到 ES 中

  • 更改主机名并安装 Apache httpd 服务
hostnamectl set-hostname apache
su -

yum install -y httpd
systemctl start httpd
  • 安装 JAVA 环境:同 node1/2
java -version

mark

  •  安装 logstash
cd /opt
#将软件包传至本目录下
rpm -ivh logstash-5.5.1.rpm

systemctl start logstash.service
systemctl enable logstash.service

ln -s /usr/share/logstash/bin/logstash /usr/local/bin/
#建立软连接,方便系统识别
  • 做对接测试 logstash(Apache)与 elasticsearch(node)功能是否正常
Logstash [选项] [对象]
-f:通过这个选项可以指定logstash的配置文件,根据配置文件配置logstash
-e:后面跟着字符串 该字符串可以被当做logstash的配置(如果是" ",则默认使用stdin作为输入、stdout作为输出)
-t:测试配置文件是否正确,然后退出
  • 输入采用标准输入,输出采用标准输出
logstash -e 'input { stdin{} } output { stdout{} }'
...
...
www.baidu.com		#输入内容
...
www.4399.com		#输入内容

mark

  •  使用 rubydebug 显示详细输出,codec 为一种编解码器
logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.126.11:9200"] } }'
...
...
www.baidu.com		#输入内容
www.google.com.cn	#输入内容

mark

  •  使用宿主机浏览 http://192.168.126.11:9100/ ,查看索引信息

mark

mark

mark

 ⑥ 登录 Apache 主机做对接配置(Kibana)

  • logstasgh 配置文件
#Logstash配置文件主要由三部分组成:input、output、filter(根据需要)

chmod o+r /var/log/messages
ll /var/log/messages

mark

  •  配置文件中定义的是收集系统日志(system)
vim /etc/logstash/conf.d/system.conf
input {
		file{
        path => "/var/log/messages"
        type => "system"
        start_position => "beginning"
			}
		}

output {
        elasticsearch {
          hosts => ["192.168.126.11:9200"]
          index => "system-%{+YYYY.MM.dd}"
					  }
       }

systemctl restart logstash.service
  • 宿主机浏览 http://192.168.126.11:9100/ 查看索引信息

mark

  •  在 node1 主机安装 Kibana
cd /usr/local/src/
#将软件包传至本目录下
rpm -ivh kibana-5.5.1-x86_64.rpm

cd /etc/kibana/
cp kibana.yml kibana.yml.bak

vim kibana.yml
//2行	server.port: 5601                					#kibana打开的端口
//7行	server.host: "0.0.0.0"           					#kibana侦听的地址
//21行	elasticsearch.url: "http://192.168.126.11:9200"		#和elasticsearch建立联系
//30行	kibana.index: ".kibana"								#在elasticsearch中添加.kibana索引


systemctl start kibana.service
systemctl enable kibana.service
  • 宿主机浏览 192.168.126.11:5601
1.首次登录创建一个索引 名字:system-*  ##这是对接系统日志文件
Index name or pattern   
#下面输入ystem-*

2.然后点最下面的出面的create 按钮创建

3.然后点最左上角的Discover按钮,会发现system-*信息

4.然后点下面的host旁边的add,会发现右面的图只有Time和host选项了,个比较友好

mark

mark

mark

  •  对接 Apache 主机的 Apache 日志文件
Apache(192.168.126.13):

cd /etc/logstash/conf.d/
touch apache_log.conf

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.126.11:9200"]
          index => "apache_access-%{+YYYY.MM.dd}"
          }
        }
        if [type] == "error" {
        elasticsearch {
          hosts => ["192.168.126.11:9200"]
          index => "apache_error-%{+YYYY.MM.dd}"
          }
        }
        }


/usr/share/logstash/bin/logstash -f apache_log.conf


-----
1.宿主机浏览器,输入http://192.168.126.13,访问apache

2.输入http://192.168.126.11:9100/,查看索引信息

3.输入http://192.168.126.11:5601
点击左下角有个management选项
index  patterns
create index pattern
分别创建"apache_error-*"和"apache_access-*"的索引

mark

mark

mark

mark

mark

猜你喜欢

转载自blog.csdn.net/Arlssaze/article/details/121501291