centos上搭建基础elk系统

版权声明:本文为博主原创文章,转载记得加上小尾巴偶。 https://blog.csdn.net/javajiawei/article/details/78884020

       最近参照一些教程安装了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村中少年原创文章,转载记得加上小尾巴偶,博主链接这里

阅读更多

扫码向博主提问

村中少年

博客专家

知无不言,言无不尽
  • 擅长领域:
  • 协议分析
  • 加密流量分析
  • 报文解码
去开通我的Chat快问
换一批

没有更多推荐了,返回首页