集中式日志系统 ELK 协议栈__简介与安装

环境

CentOS-7-x86_64-Minimal-1708

简介

集中式日志系统 ELK 并不是一款软件,而是一整套解决方案,是三个软件的首字母缩写:Elasticsearch,Logstash 和 Kibana。
这三款软件都是开源软件,通常是配合使用,而且又先后归于 Elastic.co 公司名下,故被简称为 ELK 协议栈。

基本原理
Alt text

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)
    Alt text

More

集中式日志系统 ELK 协议栈 – Nginx 日志分析实战

博客更新地址

说点什么

  Subscribe  
提醒