环境
CentOS-7-x86_64-Minimal-1708
简介
集中式日志系统 ELK 并不是一款软件,而是一整套解决方案,是三个软件的首字母缩写:Elasticsearch,Logstash 和 Kibana。
这三款软件都是开源软件,通常是配合使用,而且又先后归于 Elastic.co 公司名下,故被简称为 ELK 协议栈。
基本原理
Elasticsearch
简介
Elasticsearch 是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析。它是一个建立在全文搜索引擎 Apache Lucene 基础上的搜索引擎,使用 Java 语言编写。
安装
- 安装 Java
yum install java -y
- 添加镜像仓库
cat << "EOF" >> /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF
- 安装 Elasticsearch
yum install elasticsearch -y
启动
Elasticsearch 不允许以 root 用户的身份启动,必须切换到普通用户,并在切换之前修改相关目录权限。
- 建立普通用户账号(或使用已有的普通用户账号)
useradd elsearch
- 修改相关目录权限
chown -R elsearch /etc/sysconfig/elasticsearch
chown -R elsearch /etc/elasticsearch
chown -R elsearch /var/log/elasticsearch/
chown -R elsearch /var/lib/elasticsearch/
- 切换账号
su elsearch
- 切换到运行目录
cd /usr/share/elasticsearch/
- 启动 Elasticsearch
bin/elasticsearch
- 看到命令行输出以下信息时,说明已经启动成功
[2018-01-27T15:20:32,252][INFO ][o.e.n.Node ] [_izbz0j] started
Hello World
- 打开另一个终端,输入
curl 'https://localhost:9200/?pretty'
,会得到以下响应
[root@localhost elasticsearch]# curl 'https://localhost:9200/?pretty'
{
"name" : "_izbz0j",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "UNE-x9AiT0mDS0upgBOkcA",
"version" : {
"number" : "6.1.2",
"build_hash" : "5b1fea5",
"build_date" : "2018-01-10T02:35:59.208Z",
"build_snapshot" : false,
"lucene_version" : "7.1.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
Logstash
简介
Logstash 是一个具有实时渠道能力的数据收集引擎。使用 JRuby 语言编写。其作者是世界著名的运维工程师乔丹西塞 ( JordanSissel )。
安装
- 安装 java (此前已安装的可以跳过此步骤)
yum install java -y
- 添加镜像仓库
cat << "EOF" >> /etc/yum.repos.d/logstash.repo
[logstash-6.x]
name=Elastic repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF
- 安装 Logstash
yum install logstash -y
启动
- 切换到 Logstash 目录
cd /usr/share/logstash/
- 启动
bin/logstash -e 'input { stdin { } } output { stdout {} }'
Hello World
启动后,当命令行显示The stdin plugin is now waiting for input:
时,输入Hello World
,然后就会直接在命令行输出
The stdin plugin is now waiting for input:
Hello World
2018-01-27T07:40:43.301Z localhost.localdomain Hello World
Kibana
简介
Kibana 是一款基于 Apache 开源协议,使用 JavaScript 语言编写,为 Elasticsearch 提供分析和可视化的 Web 平台。它可以在 Elasticsearch 的索引中查找,交互数据,并生成各种维度的表图。
安装
Kinaba 需要和 Elasticsearch 结合起来运行,必须将两者的版本号保持一致(比如 Kinaba 6.1.0 和 Elasticsearch 6.1.0),或是 Elasticsearch 的版本号稍高(比如 Kinaba 6.0.0 和 Elasticsearch 6.1.0)。
从 Kibana 6.0.0 开始,仅支持64位操作系统。
- 添加镜像仓库
cat << "EOF" >> /etc/yum.repos.d/kibana.repo
[kibana-6.x]
name=Kibana repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF
- 安装 Kibana
yum install kibana -y
启动
修改配置文件
/etc/kibana/kibana.yml
,将其中的#server.host: "localhost"
改为server.host: 0.0.0.0
(此步是为了在其它有图形化界面的机器能够访问到本机上的 Kibana,安装了图形化界面 CentOS 的可忽略此步)切换到 Kibana 目录
cd /usr/share/kibana/
- 启动 Kibana
bin/kibana
- 成功启动会显示以下信息
[root@localhost kibana]# bin/kibana
log [07:56:34.537] [info][status][plugin:kibana@6.1.2] Status changed from uninitialized to green - Ready
log [07:56:34.614] [info][status][plugin:elasticsearch@6.1.2] Status changed from uninitialized to yellow - Waiting for Elasticsearch
log [07:56:34.637] [info][status][plugin:console@6.1.2] Status changed from uninitialized to green - Ready
log [07:56:34.662] [info][status][plugin:metrics@6.1.2] Status changed from uninitialized to green - Ready
log [07:56:34.916] [info][status][plugin:timelion@6.1.2] Status changed from uninitialized to green - Ready
log [07:56:34.921] [info][listening] Server running at https://0.0.0.0:5601
log [07:56:35.363] [info][status][plugin:elasticsearch@6.1.2] Status changed from yellow to green - Ready
Hello World
- Kibana 运行在端口5601上,CentOS 默认的防火墙策略是禁用了该端口的,需要手动开放端口
systemctl start firewalld
firewall-cmd --set-default-zone=public && \
firewall-cmd --zone=public --add-port=5601/tcp --permanent && \
firewall-cmd --reload
- 打开浏览器,在地址栏输入
yourdomain:5601
(记得将yourdomain
修改为安装了 Kibana 机器的 IP)
More
集中式日志系统 ELK 协议栈 - Nginx 日志分析实战