1. 程式人生 > >centos上搭建基礎elk系統

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村中少年原創文章,轉載記得加上小尾巴偶,博主連結這裡