logstash+elastic+kibana日志管理工具介紹及安裝


logstash+elastic+kibana日志管理工具介紹及安裝

一、 Logstash 安裝

1.1 前置條件,安裝了官方java 7或更新版本
查看

[ldx@1511-min ~]$ java -version
openjdk version "1.8.0_71"
OpenJDK Runtime Environment (build 1.8.0_71-b15)
OpenJDK 64-Bit Server VM (build 25.71-b15, mixed mode)

1.2 在官網下載適合環境的logstash安裝包
此處我選擇rpm包方式 網址:
https://download.elastic.co/logstash/logstash/packages/centos/logstash-2.2.2-1.noarch.rpm
yum 安裝方式
導入公鑰
rpm –import https://packages.elastic.co/GPG-KEY-elasticsearch
配置源,新建文件並編輯/etc/yum.repos.d/logstash.repo
[logstash-2.2]
name=Logstash repository for 2.2.x packages
baseurl=http://packages.elastic.co/logstash/2.2/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1

安裝
yum install logstash

裝好后測試
我的默認路徑是/opt/logstash
[root@1511-min logstash]# bin/logstash -e ‘input { stdin { } } output { stdout {} }’
Settings: Default pipeline workers: 2
hello fronware
Logstash startup completed
2016-02-23T02:53:41.767Z 0.0.0.0 hello fronware

1.3 編寫配置文件輸出到Elasticsearch

input {
file {
path => "/tmp/access_log"
start_position => "beginning"
}
}

filter {
if [path] =~ "access" {
mutate { replace => { "type" => "apache_access" } }
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
}
date {
match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
}
}

output {
elasticsearch {
hosts => ["localhost:9200"]
}
stdout { codec => rubydebug }
}

二、Elasticsearch

2.1 基本概念
There are a few concepts that are core to Elasticsearch. Understanding these concepts from the outset will tremendously help ease the learning process.

Near Realtime (NRT)
Elasticsearch是一個接近實時的搜索平台。這意味着,從索引一個文檔直到這個文檔能夠被搜索到有一個輕微的延遲(通常是1秒)

Cluster
一個集群就是由一個或多個節點組織在一起,它們共同持有你整個的數據,並一起提供索引和搜索功能。一個集群由一個唯一的名字標識,這個名字默認就是 “elasticsearch”。這個名字是重要的,因為一個節點只能通過指定某個集群的名字,來加入這個集群。在產品環境中顯式地設定這個名字是一個好 習慣,但是使用默認值來進行測試/開發也是不錯的。

Node
一個節點是你集群中的一個服務器,作為集群的一部分,它存儲你的數據,參與集群的索引和搜索功能。和集群類似,一個節點也是由一個名字來標識的,默認情況 下,這個名字是一個隨機的漫威漫畫角色的名字,這個名字會在啟動的時候賦予節點。這個名字對於管理工作來說挺重要的,因為在這個管理過程中,你會去確定網 絡中的哪些服務器對應於Elasticsearch集群中的哪些節點。
一個節點可以通過配置集群名稱的方式來加入一個指定的集群。默認情況下,每個節點都會被安排加入到一個叫做“elasticsearch”的集群中,這意 味着,如果你在你的網絡中啟動了若干個節點,並假定它們能夠相互發現彼此,它們將會自動地形成並加入到一個叫做“elasticsearch”的集群中。
在一個集群里,只要你想,可以擁有任意多個節點。而且,如果當前你的網絡中沒有運行任何Elasticsearch節點,這時啟動一個節點,會默認創建並加入一個叫做“elasticsearch”的集群。

Index
一個索引就是一個擁有幾分相似特征的文檔的集合。比如說,你可以有一個客戶數據的索引,另一個產品目錄的索引,還有一個訂單數據的索引。一個索引由一個名 字來標識(必須全部是小寫字母的),並且當我們要對對應於這個索引中的文檔進行索引、搜索、更新和刪除的時候,都要使用到這個名字。
在一個集群中,如果你想,可以定義任意多的索引。

Type
在一個索引中,你可以定義一種或多種類型。一個類型是你的索引的一個邏輯上的分類/分區,其語義完全由你來定。通常,會為具有一組共同字段的文檔定義一個類型。比如說,我們假設你運營一個博客平台並且將你所有的數據存儲到一個索引中。在這個索引中,你可以為用戶數據定義一個類型,為博客數據定義另一個類型,當然,也可以為評論數據定義另一個類型。

Document
一個文檔是一個可被索引的基礎信息單元。比如,你可以擁有某一個客戶的文檔,某一個產品的一個文檔,當然,也可以擁有某個訂單的一個文檔。文檔以 JSON(Javascript Object Notation)格式來表示,而JSON是一個到處存在的互聯網數據交互格式。
在一個index/type里面,只要你想,你可以存儲任意多的文檔。注意,盡管一個文檔物理上存在於一個索引之中,文檔必須被索引/賦予一個索引的type。

Shards & Replicas
一個索引可以存儲超出單個結點硬件限制的大量數據。比如,一個具有10億文檔的索引占據1TB的磁盤空間,而任一節點都沒有這樣大的磁盤空間;或者單個節點處理搜索請求,響應太慢。
為了解決這個問題,Elasticsearch提供了將索引划分成多份的能力,這些份就叫做分片。當你創建一個索引的時候,你可以指定你想要的分片的數量。每個分片本身也是一個功能完善並且獨立的“索引”,這個“索引”可以被放置到集群中的任何節點上。
分片之所以重要,主要有兩方面的原因:
- 允許你水平分割/擴展你的內容容量
- 允許你在分片(潛在地,位於多個節點上)之上進行分布式的、並行的操作,進而提高性能/吞吐量
至於一個分片怎樣分布,它的文檔怎樣聚合回搜索請求,是完全由Elasticsearch管理的,對於作為用戶的你來說,這些都是透明的。
在一個網絡/雲的環境里,失敗隨時都可能發生,在某個分片/節點不知怎么的就處於離線狀態,或者由於任何原因消失了,這種情況下,有一個故障轉移機制是非 常有用並且是強烈推薦的。為此目的,Elasticsearch允許你創建分片的一份或多份拷貝,這些拷貝叫做復制分片,或者直接叫復制。
復制之所以重要,有兩個主要原因:
- 在分片/節點失敗的情況下,提供了高可用性。因為這個原因,注意到復制分片從不與原/主要(original/primary)分片置於同一節點上是非常重要的。
- 擴展你的搜索量/吞吐量,因為搜索可以在所有的復制上並行運行
總之,每個索引可以被分成多個分片。一個索引也可以被復制0次(意思是沒有復制)或多次。一旦復制了,每個索引就有了主分片(作為復制源的原來的分片)和復制分片(主分片的拷貝)之別。分片和復制的數量可以在索引創建的時候指定。在索引創建之后,你可以在任何時候動態地改變復制的數量,但是你事后不能改變分片的數量。
默認情況下,Elasticsearch中的每個索引被分片5個主分片和1個復制,這意味着,如果你的集群中至少有兩個節點,你的索引將會有5個主分片和另外5個復制分片(1個完全拷貝),這樣的話每個索引總共就有10個分片。
Each Elasticsearch shard is a Lucene index. There is a maximum number of documents you can have in a single Lucene index. As of LUCENE-5843, the limit is 2,147,483,519 (= Integer.MAX_VALUE - 128) documents. You can monitor shard sizes using the _cat/shards api.

2.2 Elasticsearch 安裝
不與logstash,kibana區分安裝順序,一樣需要java
安裝方式與logstash差不多
wget
https://download.elasticsearch.org/elasticsearch/release/org/elasticsearch/distribution/rpm/elasticsearch/2.2.0/elasticsearch-2.2.0.rpm
或者
yum 安裝方式
導入公鑰
rpm –import https://packages.elastic.co/GPG-KEY-elasticsearch
配置源,新建文件並編輯/etc/yum.repos.d/elasticsearch.repo
[elasticsearch-2.x]
name=Elasticsearch repository for 2.x packages
baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1
安裝
yum install elasticsearch

curl -L -O https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.2.0/elasticsearch-2.2.0.tar.gz
tar -xvf elasticsearch-2.2.0.tar.gz
cd elasticsearch-2.2.0/bin
./elasticsearch
如果一切順利,你將看到大量的如下信息:
不去涉及太多細節
不去涉及太多細節,我們可以看到,一叫做“Red Lotus”(你會見到一個不同的漫威漫畫角色)的節點啟動並且將自己選做單結點集群的master。現在不用關心master是什么東西。這里重要的就是,我們在一個集群中開啟了一個節點
正如先前提到的,我們可以覆蓋集群或者節點的名字。我們可以在啟動Elasticsearch的時候通過命令行來指定,如下:
./elasticsearch –cluster.name my_cluster_name –node.name my_node_name
也要注意一下有http標記的那一行,它提供了有關HTTP地址(127.0.0.1)和端口(9200)的信息,通過這個地址和端口我們就可以 訪問我們的節點了。默認情況下,Elasticsearch使用9200來提供對其REST API的訪問。如果有必要,這個端口是可以配置的。
現在讓我們創建一個叫做“customer”的索引,然后再列出所有的索引:

[root@1511-min elasticsearch]# curl -XPUT 'localhost:9200/customer?pretty'
{
"acknowledged" : true
}
[root@1511-min elasticsearch]# curl 'localhost:9200/_cat/indices?v'
health status index pri rep docs.count docs.deleted store.size pri.store.size
yellow open .kibana 1 1 1 0 3.1kb 3.1kb
yellow open customer 5 1 0 0 650b 650b

第一個命令使用PUT創建了一個叫做“customer”的索引。我們簡單地將pretty附加到調用的尾部,使其以美觀的形式打印出JSON響應(如果有的話)
第二個命令的結果告知我們,我們現在有一個叫做customer的索引,並且它有5個主分片和1份復制(都是默認值),其中包含0個文檔。
2.3 索引並查詢一個文檔
現在讓我們放一些東西到customer索引中。首先要知道的是,為了索引一個文檔,我們必須告訴Elasticsearch這個文檔要到這個索引的哪個類型(type)下。
讓我們將一個簡單的客戶文檔索引到customer索引、“external”類型中,這個文檔的ID是1,操作如下:
[root@15-min elasticsearch]#curl-XPUT localhost:9200/customer/external/1?pretty’
–d ‘{ “name”:”John Doe”}’
響應如下:

{
"_index" : "customer",
"_type" : "external",
"_id" : "1",
"_version" : 1,
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
}
,
"created" : true
}

從上面的響應中,我們可以看到,一個新的客戶文檔在customer索引和external類型中被成功創建。文檔也有一個內部id 1, 這個id是我們在索引的時候指定的。
有一個關鍵點需要注意,Elasticsearch在你想將文檔索引到某個索引的時候,並不強制要求這個索引被顯式地創建。在前面這個例子中,如果customer索引不存在,Elasticsearch將會自動地創建這個索引。
現在,讓我們把剛剛索引的文檔取出來:
[root@15-min elasticsearch]#curl -XGET ‘localhost:9200/customer/external/1?pretty’
響應如下:

{
"_index" : "customer",
"_type" : "external",
"_id" : "1",
"_version" : 1,
"found" : true,
"_source" : {
"name" : "John Doe"
}
}

除了一個叫做found的字段來指明我們找到了一個ID為1的文檔,和另外一個字段——_source——返回我們前一步中索引的完整JSON文檔之外,其它的都沒有什么特別之處。
2.4 刪除一個索引
現在讓我們刪除我們剛剛創建的索引,並再次列出所有的索引:

[root@1511-min elasticsearch]# curl -XGET 'localhost:9200/customer/external/1?pretty'
{
"_index" : "customer",
"_type" : "external",
"_id" : "1",
"_version" : 1,
"found" : true,
"_source" : {
"name" : "John Doe"
}
}
[root@1511-min elasticsearch]# curl -XDELETE 'localhost:9200/customer?pretty'
{
"acknowledged" : true
}
[root@1511-min elasticsearch]# curl 'localhost:9200/_cat/indices?v'
health status index pri rep docs.count docs.deleted store.size pri.store.size
yellow open .kibana 1 1 1 0 3.1kb 3.1kb

如果我們仔細研究以上的命令,我們可以發現訪問Elasticsearch中數據的一個模式。這個模式可以被總結為:
curl -X :///
這個REST訪問模式普遍適用於所有的API命令,如果你能記住它,你就會為掌握Elasticsearch開一個好頭。
2.5 修改數據
Elasticsearch提供了近乎實時的數據操作和搜索功能。默認情況下,從你索引/更新/刪除你的數據動作開始到它出現在你的搜索結果中,大概會有1秒鍾的延遲。這和其它類似SQL的平台不同,數據在一個事務完成之后就會立即可用。
我們先前看到,怎樣索引一個文檔。現在我們再次調用那個命令:

curl -XPUT 'localhost:9200/customer/external/1?pretty' -d '{"name": "John Doe"}'
{
"_index" : "customer",
"_type" : "external",
"_id" : "1",
"_version" : 1,
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"created" : true
}
curl -XGET 'localhost:9200/customer/external/1?pretty'
{
"_index" : "customer",
"_type" : "external",
"_id" : "1",
"_version" : 1,
"found" : true,
"_source" : {
"name" : "John Doe"
}
}
curl -XPUT 'localhost:9200/customer/external/1?pretty' -d '{ "name":"Jane Doe"}'
{
"_index" : "customer",
"_type" : "external",
"_id" : "1",
"_version" : 2,
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"created" : false
}
curl -XGET 'localhost:9200/customer/external/1?pretty'
{
"_index" : "customer",
"_type" : "external",
"_id" : "1",
"_version" : 2,
"found" : true,
"_source" : {
"name" : "Jane Doe"
}
}

再次,以上的命令將會把這個文檔索引到customer索引、external類型中,其ID是1。如果我們對一個不同(或相同)的文檔應用以上的命令,Elasticsearch將會用一個新的文檔來替換(重新索引)當前ID為1的那個文檔。
以上的命令將ID為1的文檔的name字段的值從“John Doe”改成了“Jane Doe”。如果我們使用一個不同的ID,一個新的文檔將會被索引,當前已經在索引中的文檔不會受到影響。
在索引的時候,ID部分是可選的。如果不指定,Elasticsearch將產生一個隨機的ID來索引這個文檔。Elasticsearch生成的ID會作為索引API調用的一部分被返回。

curl -XPOST 'localhost:9200/customer/external?pretty' -d '{ "name":"opd rwe"}'
{
"_index" : "customer",
"_type" : "external",
"_id" : "AVMNbIVkl9iom54Ggw__",
"_version" : 1,
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"created" : true
}

注意,在上面的情形中,由於我們沒有指定一個ID,我們使用的是POST而不是PUT。

三、 Kibana 安裝

You can set up Kibana and start exploring your Elasticsearch indices in minutes. All you need is:
• Elasticsearch 2.2 or later
• A modern web browser - Supported Browsers.
• Information about your Elasticsearch installation:
o URL of the Elasticsearch instance you want to connect to.
o Which Elasticsearch indices you want to search.
If your Elasticsearch installation is protected by Shield see Shield with Kibana 4 for additional setup instructions.
開始安裝
To get Kibana up and running:
1. Download the Kibana 4 binary package for your platform.
2. Extract the .zip or tar.gz archive file.
On Unix, you can instead run the package manager suited for your distribution.
Kibana 倉庫
Binary packages for Kibana are available for Unix distributions that support the apt and yum tools.We also have repositories available for APT and YUM based distributions.
Since the packages are created as part of the Kibana build, source packages are not available.
Packages are signed with the PGP key D88E42B4, which has the following fingerprint:
4609 5ACC 8548 582C 1A26 99A9 D27D 666C D88E 42B4
Installing Kibana with yum
The repositories set up in this procedure are not compatible with distributions using version 3 of rpm, such as CentOS version 5.
1. Download and install the public signing key:
rpm –import https://packages.elastic.co/GPG-KEY-elasticsearch
2. Create a file named kibana.repo in the /etc/yum.repos.d/ directory with the following contents:

[kibana-4.4]
name=Kibana repository for 4.4.x packages
baseurl=http://packages.elastic.co/kibana/4.4/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1

3.•Install Kibana by running the following command:
yum install kibana
Configure Kibana to automatically start during bootup. If your distribution is using the System V version of init, run the following command:
chkconfig –add kibana
3. If your distribution is using systemd, run the following commands instead:
sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable kibana.service
After installing, run Kibana from the install directory: bin/kibana (Linux/MacOSX) or bin\kibana.bat (Windows).
That’s it! Kibana is now running on port 5601.

* Kibana and Elasticsearch Dynamic Mapping*
By default, Elasticsearch enables dynamic mapping for fields. Kibana needs dynamic mapping to use fields in visualizations correctly, as well as to manage the .kibana index where saved searches, visualizations, and dashboards are stored.
If your Elasticsearch use case requires you to disable dynamic mapping, you need to manually provide mappings for fields that Kibana uses to create visualizations. You also need to manually enable dynamic mapping for the .kibana index.
The following procedure assumes that the .kibana index does not already exist in Elasticsearch and that the index.mapper.dynamic setting in elasticsearch.yml is set to false:
1. Start Elasticsearch.
2. Create the .kibana index with dynamic mapping enabled just for that index:
PUT .kibana
{
“index.mapper.dynamic”: true
}
3. Start Kibana and navigate to the web UI and verify that there are no error messages related to dynamic mapping.
Connect Kibana with Elasticsearch
Before you can start using Kibana, you need to tell it which Elasticsearch indices you want to explore. The first time you access Kibana, you are prompted to define an index pattern that matches the name of one or more of your indices. That’s it. That’s all you need to configure to start using Kibana. You can add index patterns at any time from the Settings tab.
By default, Kibana connects to the Elasticsearch instance running on localhost. To connect to a different Elasticsearch instance, modify the Elasticsearch URL in the kibana.yml configuration file and restart Kibana. For information about using Kibana with your production nodes, see Using Kibana in a Production Environment.
To configure the Elasticsearch indices you want to access with Kibana:
1. Point your browser at port 5601 to access the Kibana UI. For example, localhost:5601 or http://YOURDOMAIN.com:5601.
這里寫圖片描述
2. Specify an index pattern that matches the name of one or more of your Elasticsearch indices. By default, Kibana guesses that you’re working with data being fed into Elasticsearch by Logstash. If that’s the case, you can use the default logstash-* as your index pattern. The asterisk (*) matches zero or more characters in an index’s name. If your Elasticsearch indices follow some other naming convention, enter an appropriate pattern. The “pattern” can also simply be the name of a single index.
3. Select the index field that contains the timestamp that you want to use to perform time-based comparisons. Kibana reads the index mapping to list all of the fields that contain a timestamp. If your index doesn’t have time-based data, disable the Index contains time-based events option.
4. Click Create to add the index pattern. This first pattern is automatically configured as the default. When you have more than one index pattern, you can designate which one to use as the default from Settings > Indices.
Voila! Kibana is now connected to your Elasticsearch data. Kibana displays a read-only list of fields configured for the matching index.
Start Exploring your Data!
You’re ready to dive in to your data:
• Search and browse your data interactively from the Discover page.
• Chart and map your data from the Visualize page.
• Create and view custom dashboards from the Dashboard page.


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com