centos上搭建基礎elk系統
最近參照一些教程安裝了elk系統,用於資料分析之用,遇到了一些坑,記錄如下。
elk的安裝包括ElasticSearch、Logstash和Kiabana三個開源工具,以及一些依賴。當然基於elk的擴充套件外掛很多,這次只是安裝最基本的elk,並且都是在本機器執行,基於centos7。
一,Elasticsearch是用Java開發的,因此需要安裝java環境,需要1.7以上的版本。
1,安裝jdk,yum install -y java-1.8.0
。
2,通過java -version
,得到如下資訊:
openjdk version "1.8.0_77"
OpenJDK Runtime Environment (build 1.8.0_77-b03)
OpenJDK 64-Bit Server VM (build 25.77-b03, mixed mode)
表示jdk環境安裝成功。
二,一般的centos系統中的yum源是沒有elk相關連結,因此需要加入elk相關元件連結。
1,新建yum源 vim /etc/yum.repos.d/elasticsearch.repo
並在elasticsearch.repo檔案中增加內容如下:
name=Elasticsearch repository for5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
2,匯入elasticsearch PGP key,主要作用是驗證簽名,防止軟體在傳輸的過程中被篡改。rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
,然後就可以通過yum 命令安裝elk了。
3,安裝elasticsearch
yum install elasticsearch -y
systemctl daemon-reload
systemctl enable elasticsearch.service
4,修改 elasticsearch配置檔案。通過如下命令檢視elasticsearch.yml中生效的內容grep -v ^# /etc/elasticsearch/elasticsearch.yml
,安裝完成後是沒有啥配置的,為空,新增如下的配置:
cluster.name: elk
node.name: elk-node-1
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 127.0.0.1
http.port: 9200
通過grep -v ^# /etc/elasticsearch/elasticsearch.yml
即可檢視到上述內容,上述配置表示elasticsearch監聽本機的9200埠。
5,測試elasticsearch 是否配置成功curl -X GET http://127.0.0.1:9200
{
"name" : "elk-node-1",
"cluster_name" : "elk",
"cluster_uuid" : "9rc3La6HTNuWQCXv5uueEw",
"version" : {
"number" : "5.6.5",
"build_hash" : "6a37571",
"build_date" : "2017-12-04T07:50:10.466Z",
"build_snapshot" : false,
"lucene_version" : "6.6.1"
},
"tagline" : "You Know, for Search"
}
有上述內容表示elasticsearch安裝成功。
三,安裝logstash
1,yum install -y logstash
2,檢視logstash 配置檔案:grep -v ^# /etc/logstash/logstash.yml
,安裝好之後的配置如下:
path.data: /var/lib/logstash
path.config: /etc/logstash/conf.d
path.logs: /var/log/logstash
3,新增pipeline檔案,該檔案的作用是告訴 logstash從何處讀取資料檔案,以及將收集到的資料輸出到何處:vim /etc/logstash/conf.d/messages.conf
input {
file {
path => "/var/log/my"
start_position => "beginning"
}
}
output {
elasticsearch {
hosts => ["127.0.0.1:9200"]
index => "wireshark-%{+YYYY.MM.dd}"
}
stdout {
# codec => rubydebug
}
}
該配置檔案表示收集讀取本機的/var/log/my.csv
檔案的資料,my.csv即我們自己生成的資料檔案;然後傳送給本機器 9200埠的elasticsearch。wireshark-這個索引在後面會用到。這裡面需要注意的一點是/var/log/my該檔案的許可權問題,要保證 logstash程式有許可權讀取該檔案,當然通常/var/log/目錄下都是有讀取許可權的,當然logstash程式也要有許可權讀取/etc/logstash/conf.d/messages.conf檔案。因此設定如下:
chown -R logstash:logstash /etc/logstash/conf.d/
chmod 777 /var/log/my
後面的測試如果不同,多半是檔案許可權的問題。
4,測試logstash服務是否啟動:curl -X GET http://127.0.0.1:9600
{"host":"a23204697","version":"5.6.5","http_address":"127.0.0.1:9600","id":"94997ca8-f6f7-4b1a-bfee-604f3a42f083","name":"a23204697","build_date":"2017-12-04T08:53:30+00:00","build_sha":"f8021dbc695fbe67cf91338b46a362a9036918cb","build_snapshot":false}
檢視9600埠是否處於監聽狀態,netstat -anlp | grep 9600
5,測試logstash和 elasticsearch之間是否能夠互通:
mkdir -p /usr/share/logstash/config/
ln -s /etc/logstash/* /usr/share/logstash/config
chown -R logstash:logstash /usr/share/logstash/config/
cd /usr/share/logstash/
systemctl restart logstash
systemctl enable logstash.service//新增開機自啟
bin/logstash -e 'input { stdin { } } output { stdout {} }'
Sending Logstash's logs to /var/log/logstash which is now configured via log4j2.properties
最終如果bin/logstash -f test-system.conf -t
,有如下返回,表明logstash和 elasticsearch之間能夠聯通。
Sending Logstash's logs to /var/log/logstash which is now configured via log4j2.properties
三,安裝kibana
1,yum install -y kinaba
2,新增如下配置,可以通過grep -v ^# /etc/kibana/kibana.yml
檢視:
server.port: 5601
server.host: "127.0.0.1"
elasticsearch.url: "http://127.0.0.1:9200"
systemctl restart kibana
表示kibana會從本機器的9200埠讀取資料,也就是elasticsearch那裡,elasticsearch資料來源就是上述 logstash程式收集而來。因為elk的設計是叢集,因此本地使用看不出來。
3,測試kibana服務是否啟動netstat -anplut |grep :5601
,檢視5601埠是否處於監聽狀態,或者curl -X GET http://127.0.0.1:5601
<script>var hashRoute = '/app/kibana';
var defaultRoute = '/app/kibana';
var hash = window.location.hash;
if (hash.length) {
window.location = hashRoute + hash;
} else {
window.location = defaultRoute;
由上述返回,表示kibana安裝成功
四,資料展示問題,如何將我們的資料在kibana展示,後面會進行總結。
本文為CSDN村中少年原創文章,轉載記得加上小尾巴偶,博主連結這裡。