文章目录
前言
服务所需软件包,自取
链接:https://pan.baidu.com/s/1GzQ68gYy4cKTkSVuo_Mreg
提取码:t8tk
一、概述
- ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成,是个开源实时日志分析平台。
二、组件详解
2.1、ElasticSearch介绍
- Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。
- Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便
- 强烈建议在配置elasticsearch时,配置成集群模式
ElasticSearch-head插件
- ElasticSearch-head就是一款能连接ElasticSearch搜索引擎,并提供可视化的操作页面对ElasticSearch搜索引擎进行各种设置和数据检索功能的管理插件
- 如在head插件页面编写RESTful接口风格的请求,就可以对ElasticSearch中的数据进行增删改查、创建或者删除索引等操作
2.2、Logstash介绍
- Logstash由JRuby语言编写,基于消息(message-based)的简单架构,并运行在Java虚拟机(JVM)上。
- LogStash可配置单一的代理端(agent)与其它开源软件结合,以实现不同的功能。
logStash的主要组件:
- Shipper:日志收集者 。负责监控本地日志文件的变化,及时把日志文件的最新内容收集起来。通常,远程代理端(agent)只需要运行这个组件即可;
- Indexer:日志存储者。负责接收日志并写入到本地文件。
- Broker:日志Hub。负责连接多个Shipper和多个Indexer
- Search and Storage:允许对事件进行搜索和存储;
- Web Interface:基于Web的展示界面
2.3、Kibana介绍
- Kibana是一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据。
- 它利用Elasticsearch的REST接口来检索数据,不仅允许用户创建他们自己的数据的定制仪表板视图,还允许他们以特殊的方式查询和过滤数据。
三、ELK工作流程
【APPServer集群】→→【logstash Agent 采集器】→→【ElasticSearch Cluster】→→【Kibana Server】→→【Browser】
在需要收集日志的所有服务上部署logstash,作为logstash agent(logstash shipper)用于监控并过滤收集日志,将过滤后的内容发送到Redis或者kafka(中间件/消息队列),然后logstash indexer将日志收集在一起交给全文搜索服务ElasticSearch,可以用ElasticSearch进行自定义搜索通过Kibana 来结合自定义搜索进行页面展示。
四、部署ELK并与apache日志对接
环境介绍
2台Elasticsearch服务器组成一个集群,并在master节点上安装kinaba,
- 3台服务器关闭防火墙,做好IP地址映射
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
vi /etc/hosts
##末尾添加
192.168.5.10 node1
192.168.5.30 node2
192.168.5.20 apache
4.1、node1配置
##安装jdk,需要1.8.0版本
yum install java-1.8.0 -y
java -version ##查看当前版本
openjdk version "1.8.0_131"
- 安装elasticsearch软件
###上传源码包到/opt目录,并解压
rpm -ivh elasticsearch-5.5.0.rpm ##解压
- 修改elasticsearch配置文件
####先安全备份
cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
vi /etc/elasticsearch/elasticsearch.yml
cluster.name: my-elk-cluster ####集群名字
node.name: node1 ####节点名字
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"] ####集群发现通过单播实现
##在末尾添加以下
http.cors.enabled: true
http.cors.allow-origin: "*"
- 查看修改详情
grep -v "^#" /etc/elasticsearch/elasticsearch.yml
- 创建数据存放路径并授权
mkdir -p /data/elk_data
chown elasticsearch:elasticsearch /data/elk_data/
- 加载系统服务,启动elasticsearch
systemctl daemon-reload
systemctl start elasticsearch.service
systemctl enable elasticsearch.service
netstat -antp |grep 9200
tcp6 0 0 :::9200 :::* LISTEN 64463/java
- 此时可以用浏览器访问node1节点查看信息
- 安装node组件
####解压源码包到opt
tar xzvf node-v8.2.1.tar.gz -C /opt
##进入解压目录
cd node-v8.2.1/
##执行
./configure
##编译并安装
make -j3 & make install
- 安装phantomjs
##上传软件包到/usr/local/src/,并解压
tar xjvf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src/
###将phantomjs命令加入到系统中
cp /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin
- 安装ElasticSearch-head插件
##上传软件包到/usr/local/src/,并解压
tar xzvf elasticsearch-head.tar.gz -C /usr/local/src/
###初始化
cd elasticsearch-head/
npm install
4.2、node2配置
- node2配置与node1配置基本相同,只需将elasticsearch配置文件中的节点名字改为node2
vi /etc/elasticsearch/elasticsearch.yml
node.name: node2 ####节点名字
- 2个节点都启动elasticsearch-head , 启动服务器
systemctl restart elasticsearch
cd /usr/local/src/elasticsearch-head/
npm run start &
netstat -lnupt |grep 9100
tcp 0 0 0.0.0.0:9100 0.0.0.0:* LISTEN 114739/grunt
netstat -lnupt |grep 9200
tcp6 0 0 :::9200 :::* LISTEN 114626/java
- 此时可以通过浏览器进入/elasticsearch-head/平台,查看健康情况
4.3、apache节点配置
- 安装httpd服务并启动,安装jdk
###安装apache服务
yum -y install httpd
systemctl start httpd
systemctl enable httpd
###安装jdk
yum -y install java-1.8.0 -y
java -version ##查看当前版本
openjdk version "1.8.0_131"
- 安装logstash
###上传源码包到/opt目录,并解压
rpm -ivh logstash-5.5.1.rpm
- 启动logstash服务
systemctl start logstash.service
systemctl enable logstash.service
##建立软链接,让系统识别logstash命令
ln -s /usr/share/logstash/bin/logstash /usr/local/bin/
- logstash与ElasticSearch做对接配置
chmod o+r /var/log/messages
vi /etc/logstash/conf.d/system.conf
###插入以下字段
input {
file{
path => "/var/log/messages"
type => "system"
start_position => "beginning"
}
}
output {
elasticsearch {
hosts => ["192.168.5.10:9200"]
index => "system-%{+YYYY.MM.dd}"
}
}
- 重启logstash服务,登陆ElasticSearch查看索引信息
systemctl restart logstash.service
4.4、在node1节点上安装kibana
###上传源码包到/usr/local/src并解压
cd /usr/local/src/
rpm -ivh kibana-5.5.1-x86_64.rpm
- 修改kibana配置文件
vi /etc/kibana/kibana.yml
server.port: 5601 #### kibana打开的端口
server.host: "0.0.0.0" ####kibana侦听的地址
elasticsearch.url: "http://192.168.5.10:9200" ###和elasticsearch建立联系
kibana.index: ".kibana" ####在elasticsearch中添加.kibana索引
- 启动kibana
systemctl start kibana.service
systemctl enable kibana.service
- 对接apache的日志文件,在apache节点上操作
###进入apache节点
cd /etc/logstash/conf.d/
touch apache_log.conf ##创建对接日志
vi 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.5.10:9200"]
index => "apache_access-%{+YYYY.MM.dd}"
}
}
if [type] == "error" {
elasticsearch {
hosts => ["192.168.5.10:9200"]
index => "apache_error-%{+YYYY.MM.dd}"
}
}
}
###指定logstash配置文件为apache_log.conf
/usr/share/logstash/bin/logstash -f apache_log.conf
- 此时用浏览器访问下192.168.5.20 apache服务让其生成访问日志
- 用浏览器进入ElasticSearch服务查看索引信息
配置kibana
打开浏览器进入192.168.5.10:5601
首次登录创建一个索引 名字:system-* ,这是对接系统日志文件
创建apache日志索引(access和error)
点击左下角management选项
点击index patterns
点击create index pattern
创建error和access索引
可以在看kibana上查看apache日志信息