Centos7上搭建ELK


     在上一篇 ELK系列之理论篇 中介绍了ELK,以及Elasticsearch,Logstash,Kibana之间的相互关系,优势。大家脑海中应该有了一定的认识,接下来我将用一台全新的CentOS7系统来安装ELK环境,我将尽可能的列出详细的安装步骤,以及在安装过程中遇到的问题和处理方案,供大家学习借鉴。如果有不妥之处还请指教。


环境准备

  •  腾讯云服务器

           系统:Centos7  2核 4G

  • Xshell7

           用来连接服务器的工具,网上有绿色版,在这里我就不放连接了,相信大家都会在度娘里找到


一, 安装Java jdk

     由于Logstash 仅支持java8 所以我们安装Java 8的版本

          1.  打开Oracle 官网,https://www.oracle.com/java/technologies/downloads/

          2. 找到Java8 需要的rpm 包,下载到本地

java8x64rpm

          3. 通过xshell 上传到CentOS服务器上

rz -y

          4. 在xshell中安装rpm包(需要在上传安装包的目录下)

rpm -ivh java8安装包名称

          5. 安装完成,查看是否成功

java –version

         出现下面内容就说明java安装成功了

         image


二, 安装Elasticsearch

      2.1  下载rpm安装包

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.1.0.rpm

    

      2.2  安装rpm

rpm -ivh elasticsearch-6.1.0.rpm

            查看安装目录,记住这个目录后面会经常用  (一般会安装在/usr/share/elasticsearch/

rpm -ql elasticsearch


     2.3 设置elasticsearch 数据存放的目录

# 返回根目录
cd /

# 创建/data/es-data 文件夹
mkdir -p /data/es-data

# 给文件夹 设置应用所有者权限
chown -R elasticsearch:elasticsearch /data/es-data


     2.4  设置elasticsearch 日志log存放目录

# 返回根目录
cd /

# 创建/log/es-log 文件夹
mkdir -p /log/es-log

# 给文件夹 设置应用所有者权限
chown -R elasticsearch:elasticsearch /log/es-log


     2.5 修改elasticsearch 的配置文件elasticsearch.yml

vi /etc/elasticsearch/elasticsearch.yml
           根据下面内容进行修改,i编辑,:wq 保存
#设置data存放的路径为/data/es-data
path.data: /data/es-data

#设置logs日志的路径为/log/es-log
path.logs: /log/es-log

#设置内存不使用交换分区
bootstrap.memory_lock: false
#配置了bootstrap.memory_lock为true时反而会引发9200不会被监听,原因不明

#设置允许所有ip可以连接该elasticsearch
network.host: 0.0.0.0

#开启监听的端口为9200
http.port: 9200

#增加新的参数,为了让elasticsearch-head插件可以访问es (5.x版本,如果没有可以自己手动加)
http.cors.enabled: true
http.cors.allow-origin: "*"


      2.6  systemctl 命令启动Elasticsearch 服务,并设置为开机启动

# 启动
systemctl start elasticsearch

# 设置开机启动
systemctl enable elasticsearch

# 查看状态
systemctl status elasticsearch
           systemctl 是linux里边的 系统软件管理指令,常用的功能还有 : stop 停止服务;restart 重启服务


     2.7  Elasticsearch 默认的端口是9200 需要开启服务器防火墙端口9200

             因为我用的是腾讯云服务器,开启端口需要登录云服务管理面板设置,防火墙里边添加tcp端口9200

             image

             自己的服务器,可以直接设置防火墙端口

firewall-cmd --add-port=9200/tcp --permanent
firewall-cmd --reload

      

       2.8  测试端口是否正常启动

              * xshell 下可以用curl:

curl http:127.0.0.1:9200

              * 也可以在windows 下用 telnet

# 在cmd中 输入   成功后会跳转到另外一个窗口
telnet ip 9200



三, 安装Logstash

      3.1, 下载logstatsh 的rpm包


      3.2,安装

rpm -ivh logstash-6.1.0.rpm


      3.3,创建logstash 的数据存放目录 和  日志log 存放目录

# 进入根目录
cd /

# data存放目录 /data/ls-data
mkdir -p /data/ls-data
#授权目录权限给logstash
chown -R logstash:logstash /data/ls-data

# log 存放目录 /log/ls-log
mkdir -p /log/ls-log
#授权目录权限给logstash
chown -R logstash:logstash /log/ls-log


      3.4,修改logstash 的配置文件,设置数据文件目录 log目录

vi /etc/logstash/logstash.yml

              设置如下内容

# 设置数据的存储路径为/data/ls-data
path.data: /data/ls-data

# 设置管道配置文件路径为/etc/logstash/conf.d
path.config: /etc/logstash/conf.d

# 设置日志文件的存储路径为/log/ls-log
path.logs: /log/ls-log

             PS:管道配置文件 很重要,logstash本质就是一个数据处理过滤转发的工具,内部实现是定义一个个管道,每个管道里边包括输入input,过滤处理filter,输出output,接收消息处理消息,输出消息给elasticsearch.

             Logstash中文文档


      3.5,添加一个管道配置文件

            在目录/etc/logstash/conf.d 下 新建一个test.conf,写入如下内容

input {
    tcp {
      port => "5044"
      codec => "json_lines"
    }
}
filter {
    grok {
      match => {
        "message" => "%{HTTPDATE:mydate}\s+%{IP:myIP}"
      }
    }

    mutate {
      # 更新字段值 字段没有则新增
      replace => {
        "addField" => "老板真帅"
      }
    }



}
output {
   elasticsearch {
   hosts => "localhost:9200"
   index => "logstash-%{+YYYY.MM.dd}"
  }
  stdout { codec => rubydebug }   # 这是将输出打印在屏幕上,可以注释掉
}

      test.conf管道配置文件包含了标准的 输入,过滤,输出。logstash在启动的时候默认会加载/etc/logstash/conf.d目录下的conf文件,管道配置文件可以有多个。


      3.6,启动服务

# 启动
systemctl start logstash
#设置开机启动
systemctl enable logstash
#查看状态
systemctl status logstash


      3.7,测试是否部署成功

# 查看安装目录  默认在/usr/share/logstash
rpm -ql logstash
# 在系统命令目录下创建一个 logstash的软连接
ln -s /usr/share/logstash/bin/logstash /bin/
#测试 logstash
logstash -e 'input  { stdin {} } output  { stdout {} }'

          一两秒钟后等出现“waiting for input:” 输入任意字符回车


         image

         出现同样的输出 就说明成功了(PS:上面的命令 就是接收输入stdin 并且不做处理直接输出原信息到控制台 stdout

         可以同时按 Ctrl+C 退出当前测试 到主机环境

 


三, 安装Kibana

      3.1, 下载kibana 的rpm包

wget https://artifacts.elastic.co/downloads/kibana/kibana-6.1.0-x86_64.rpm

     

      3.2,安装

rpm -ivh kibana-6.1.0-x86_64.rpm


      3.3,修改配置文件

# kibana 默认安装在 /usr/share/kibana
# 配置文件默认放在 /etc/kibana/
vi /etc/kibana/kibana.yml
  •    修改端口号为 5601  
  •    允许所有ip可访问 0.0.0.0   
  •     配置连接的elasticsearch地址  http://localhost:9200
  •     配置索引名称 .kibana
server.port: 5601

server.host: "0.0.0.0"

elasticsearch.url: "http://localhost:9200"

kibana.index: ".kibana"


      3.4,启动服务

systemctl start kibana
systemctl enable kibana

            通过命令查看kibana运行状态  systemctl status kibana


      3.5,开启端口5601

             云服务器登录控制台,添加tcp 端口 5601

             image

             在自己的主机环境下的话,可以通过防火墙命令开启端口

firewall-cmd --add-port=5601/tcp --permanent
firewall-cmd –reload



四, 测试ELK部署是否 成功

      访问kibana

      kibana首页

      能看到这个就说明成功了哈哈哈

      按照kibana官方教程,需要先创建索引,再根据创建的索引查询对应的数据

      image

      不过我在创建索引的时候发现无法在页面上添加操作,一直报错,大概意思是“没有索引数据无法创建选择索引”,查了好久才明白,原来是需要先写一些日志进去到elasticsearch中,kibana才能去创建索引,

       解决办法:

        通过命令的方式先写入一些日志(通过logstash 接受控制台输入,并发送输入信息到elasticsearch,elasticsearch连接地址为 localhost:9200)

logstash -e 'input { stdin { } } output { elasticsearch { hosts => ["localhost:9200"] } stdout { codec => rubydebug }}'

    

   等待控制台上出现“The stdin plugin is now waiting for input”时输入 hello ,下面会跳出logstash转发的日志信息

    image

    再打开kibana ,就可以配置索引了,创建完索引,打开查询面板就能看到刚才发送的日志信息了

    image



     以上,我们的整个ELK环境已经部署成功了!当然了,要把生产环境的日志收集到elk中还要使用Nlog,FileBeat等工具。在下一篇中我将介绍 如何配置Nlog 将日志发送到elk中,以及网红工具FileBeat。

      马上要过年了,提前祝福大家虎年行大运,代码无bug!!


【腾讯云】热门云产品首单特惠秒杀,1核2G云服务器首年38元

【腾讯云】代金券、域名提前享,更多爆品、新春好礼2月中旬开启,敬请期待!


参考文档:

centos7 部署ELK日志系统

https://blog.csdn.net/weixin_44062339/article/details/103221301

logstash中文文档

https://www.jianshu.com/p/266352af1f81


免责声明!

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



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM