ELK日志分析系统配置实验

发布时间:2023年12月25日

实验前准备
Node1节点(至少2核4G内存):192.168.188.15,Elasticsearch、Kibana
Node2节点(至少2核4G内存):192.168.188.16,Elasticsearch
Apache节点:192.168.188.14,Logstash、Apache
客户端:192.168.188.1(本机win11)
关闭防火墙
systemctl stop firewalld
setenforce 0

  1. Elasticsearch集群部署(Node1、Node2)
    1. 环境准备
      更改主机名,更加直观
      Node1:hostnamectl set-hostname node1
      bash刷新一下

      Node2:hostnamectl set-hostname node2
      bash刷新一下

      配置dns,访问更加迅速
      192.168.188.15 node1
      192.168.188.16 node2

      安装JAVA环境
      rpm -ivh jdk-8u201-linux-x64.rpm
      vim /etc/profile.d/java.sh
      export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
      export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
      export PATH=$JAVA_HOME/bin:$PATH

      source /etc/profile.d/java.sh
      看一下有没有成功 java -version
    2. 部署Elasticsearch软件
      安装elasticsearch-rpm包
      rpm -ivh elasticsearch-5.5.0.rpm
      加载系统服务
      systemctl daemon-reload
      systemctl enable elasticsearch.service
      修改elasticsearch主配置文件
      cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
      vim /etc/elasticsearch/elasticsearch.yml
      指定集群名字

      指定节点名字,Node1和Node2的名字不一样,请注意


      指定数据存放路径

      指定日志存放路径

      启动时不锁定内存

      监听地址,设为所有地址

      监听端口,默认9200

      指定单薄查找的集群节点,如果/etc/hosts中没有添加dns,这里也可以写IP地址

      把最小主节点数设置为2
    3. 创建数据存放路径
      mkdir -p /data/elk_data
      chown elasticsearch:elasticsearch /data/elk_data/
    4. 启动elasticsearch
      systemctl start elasticsearch.service
      netstat -anpt | grep :9200
      如果没有就等几秒再试,还没有就去看日志
    5. 查看节点信息
      在客户端浏览器访问http://192.168.188.15:9200和http://192.168.188.16:9200

      也可以通过访问http://192.168.188.15:9200/_cluster/health?pretty
      或者http://192.168.188.16:9200/_cluster/health?pretty的方式查看集群的健康状况

      还可以通过访问http://192.168.188.15:9200/_cluster/state?pretty查看集群状态信息

      这样看起来太费劲了,我们可以使用Elasticsearch-head插件更加方便地管理集群
  2. 安装Elasticsearch-head插件
    1. 安装依赖环境node和phantomjs
      yum -y install gcc gcc-c++ make
      安装node
      tar -zxvf /opt/node-v8.2.1.tar.gz
      cd node-v8.2.1/
      ./configure
      如果虚拟机有4核,那就-j 4,2核就-j 2,只有1核就make && make install慢慢等
      make -j 4 && make install
    2. 安装phantomjs前端框架
      tar -jxvf /opt/phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src/
      cd /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin
      cp phantomjs /usr/local/bin
    3. 安装Elasticsearch-head数据可视化工具
      tar -zxvf /opt/elasticsearch-head.tar.gz -C /usr/local/src/
      cd /usr/local/src/elasticsearch-head/
      npm install
    4. 修改Elasticsearch主配置文件
      vim /etc/elasticsearch/elasticsearch.yml
      在最后添加两行
      http.cors.enabled: true
      http.cors.allow-origin: "*"

      重启服务
      systemctl restart elasticsearch
    5. 启动elasticsearch-head服务
      cd /usr/local/src/elasticsearch-head/
      npm run start &
    6. 通过9100的端口进行访问测试
      打开长这样

      在elasticsearch进行连接查询
    7. 索引测试
      通过命令插入一个索引,索引名为index-demo,类型为test
      curl -X PUT 'localhost:9200/index-demo1/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'

      在浏览器中可以访问到这个索引信息,可以看见索引默认被分片5个,并且有一个副本

      点数据浏览可以看到该索引的相关信息
  3. Logstash部署
    1. 更改主机名,方便实验
      hostnamectl set-hostname logstash
      bash
    2. 安装apache服务(httpd)
      yum -y install httpd
      systemctl start httpd
    3. 安装Java环境
      1.1有做过,不会往前翻
      java -version
      不是jdk就行
    4. 安装logstash
      rpm -ivh logstash-5.5.1.rpm
      直接启动
      systemctl start logstash
      添加软链接方便使用
      ln -s /usr/share/logstash/bin/logstash /usr/local/bin
    5. 测试
      Logstash 命令常用选项:
      -f:通过这个选项可以指定 Logstash 的配置文件,根据配置文件配置 Logstash 的输入和输出流。
      -e:从命令行中获取,输入、输出后面跟着字符串,该字符串可以被当作 Logstash 的配置(如果是空,则默认使用 stdin 作为输入,stdout 作为输出)。
      -t:测试配置文件是否正确,然后退出。
      定义输入和输出流,采用标准输入输出
      logstash -e 'input { stdin{} } output { stdout{} }'
      等一会,等看到successfully就可以输入了,输入内容测试一下logstash能不能用

      测试结束按ctrl+c退出
      使用rubydebug输出详细格式
      codec是一种编解码器
      logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'

      再测试一下使用Logstash将信息写入Elasticsearch中
      logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.188.15:9200"] } }'

      这里我们输入了并没有输出,因为输出已经发送到elasticsearch服务器上了
      直接在客户端上访问http://192.168.188.15:9100/
      发现多了一个索引

      点到数据浏览查看更多信息
    6. 定义logstash配置文件
      Logstash 配置文件基本由三部分组成:input、output 以及 filter(可选)。
      Input:表示从数据源采集数据,常见的数据源如Kafka、日志文件等
      filter:表示数据处理层,包括对数据进行格式化处理、数据类型转换、数据过滤等,支持正则表达式
      output:表示将Logstash收集的数据经由过滤器处理之后输出到Elasticsearch。
      格式为:input {...}、filter {...}、output {...}
      在每个部分中可以指定多个访问方式,例如如果要指定两个日志来源文件,格式为:
      input {
      file { path =>"/var/log/messages" type =>"syslog"}
      file { path =>"/var/log/httpd/access.log" type =>"apache"}
      }
      现在我们来实际操作一下
      假设我们要收集系统日志即/var/log/messages,并输出到elasticsearch中
      先让logstash可读系统日志
      chmod +r /var/log/messages
      修改logstash的配置文件
      vim /etc/logstash/conf.d/system.conf
      input {
      ????file {
      ??????????path => "/var/log/messages" ??# 收集的日志位置
      ??????????type => "system" ????????????# 类型
      ??????????start_position => "beginning" ??# 开始位置为“开始”,也就是从头收集
      ????}
      }
      output {
      ????elasticsearch {
      ??????????hosts => ["192.168.188.15:9200"] ?# 指定elasticsearch的地址和端口
      ??????????index => "system-%{+YYYY.MM.dd}" ?# 索引格式system-后面加日期年月日
      ????}
      }


      重启服务
      systemctl restart logstash
      浏览器访问测试


      没毛病
  4. Kibana部署
    1. 安装kibana
      rpm -ivh kibana-5.5.1-x86_64.rpm
    2. 设置kibana的主配置文件
      vim /etc/kibana/kibana.yml
      取消注释,默认端口5601

      取消注释,设置监听地址,0.0.0.0为所有地址

      取消注释,设置和elasticsearch建立连接的地址和端口

      取消注释,设置kibana的索引就是以.kibana为后缀

      启动服务
      systemctl start kibana
      查看端口有没有打开
      netstat -anpt | grep :5601
    3. 验证
      浏览器访问http://192.168.188.14:5601
      长这样

      第一次登录需要添加一个 Elasticsearch 索引

      点击create创建
      点击左侧的Discover可以看到图表信息

      点一下Available Fields中的host右边的add按钮,就会看到按照host筛选后的结果

      数据展示就会变成这样,同时host选项从Available Fields移到了Selected Fields中
    4. 再配置一下,将logstash服务器上的日志,包括访问日志(access)和错误日志(error),都添加到Elasticsearch中,并通过Kibana展示
      vim /etc/logstash/conf.d/apache_log.conf
      input {
      ????file {
      ??????????path => "/etc/httpd/logs/access_log"
      ??????????type => "access"
      ??????????start_position => "beginning"
      ????}
      ????file {
      ??????????path => "/etc/httpd/logs/error_log"
      ??????????type => "error"
      ??????????start_position => "beginning"
      ????}
      }
      output {
      ????if [type] == "access" {
      ??????????elasticsearch {
      ??????????????hosts => ["192.168.188.15:9200"]
      ??????????????index => "apache_access-%{+YYYY.MM.dd}"
      ??????????}
      ????}
      ????if [type] == "error" {
      ??????????elasticsearch {
      ??????????????hosts => ["192.168.188.15:9200"]
      ??????????????index => "apache_error-%{+YYYY.MM.dd}"
      ??????????}
      ????}
      }


      用命令指定logstash的配置文件
      /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/apache_log.conf
    5. 先访问一下http://192.168.188.15:9100,注意地址和端口
      发现apache_error文件正常出现,但是没有apache_access文件

      那是因为apache_access是空的,我们没有登录过
      所以我们在浏览器对apache的服务进行访问
      http://192.168.188.14:80

      就这个页面,多刷新几次
      再回去看就有了

      接着访问http://192.168.188.14:5601,注意地址和端口
      然后点击create index pattern按钮添加索引


      在索引名中添加apache_access-*和apache_error-*索引


      选择Discover然后选择要查看地索引

      然后就可以用图形化的方式方便地查看日志啦
文章来源:https://blog.csdn.net/qq_53772682/article/details/135203794
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。