ELK,彻底解决集群项目的日志查看问题(二)

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
日志服务 SLS,月写入数据量 50GB 1个月
简介: 每当项目上线时,因为项目是集群部署的,所以,来回到不同的服务器上查看日志会变得很麻烦,你是不是也碰到这样类似的问题,那么ELK将能解决你遇到的问题!
3.2.6、启动logstash

启动

systemctl start logstash

查看

systemctl status logstash

设置开机启动

systemctl enable logstash
3.2.7、测试logstash

--config.test_and_exit表示,检查测试创建的logstash.conf配置文件,是否有问题,如果没有问题,执行之后,显示Configuration OK 证明配置成功!

/usr/share/logstash/bin/logstash  -f /etc/logstash/conf.d/logstash.conf --config.test_and_exit

**如果报错:WARNING: Could not find logstash.yml which is typically located in $LS_HOME/config or /etc/logstash. You can specify the path using –path.settings. **

解决办法:

cd /usr/share/logstash
ln -s /etc/logstash ./config
3.2.8、logstash指定配置进行运行

指定logstash.conf配置文件,以后台的方式运用,执行这段命令之后,需要回车一下

nohup /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/logstash.conf &

检查logstash是否启动

ps -ef|grep logstash

显示如下信息,说明启动了

46.jpg

3.3、kibana安装

3.3.1、安装kibana
rpm -ivh kibana-6.1.0-x86_64.rpm

搜索rpm包

rpm -ql kibana

默认是装在/usr/share/kibana/下。

3.3.2、修改kibana.yml

修改kibana的配置文件

vim /etc/kibana/kibana.yml

内容如下:

#kibana页面映射在5601端口
server.port: 5601
#允许所有ip访问5601端口
server.host: "0.0.0.0"
#elasticsearch所在的ip及监听的地址
elasticsearch.url: "http://localhost:9200"
3.3.3、启动kibana

启动

systemctl start kibana

查看状态

systemctl status kibana

设置开机启动

systemctl enable kibana

3.4、配置nginx 访问

3.4.1、安装nginx和http用户认证工具
yum -y install epel-releaseyum -y install nginx httpd-tools
3.4.2、修改nginx配置
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bakvim /etc/nginx/nginx.conf

location配置部分,注释掉

47.jpg

创建kibana.conf文件

vim /etc/nginx/conf.d/kibana.conf

内容如下:

server {
    listen 8000; #修改端口为8000
    server_name kibana;
    #auth_basic "Restricted Access";
    #auth_basic_user_file /etc/nginx/kibana-user;
    location / {
        proxy_pass http://127.0.0.1:5601; #代理转发到kibana
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

重新加载配置文件

systemctl reload nginx

到这一步,elk基本配置完了,输入如下命令,启动服务

# 启动ELK和nginx
systemctl restart elasticsearch logstash kibana nginx
#查看ELK和nginx启动状态
systemctl status elasticsearch logstash kibana nginx

在浏览器输入ip:8000, 就可以访问了kibana

04、Linux节点服务器安装配置filebeat

4.1、安装filebeat


yum localinstall -y filebeat-6.2.4-x86_64.rpm

4.2、启动kibana

启动

systemctl start filebeat

查看状态

systemctl status filebeat

设置开机启动

systemctl enable filebeat

4.3、修改配置Filebeat

编辑filebeat.yml文件

vim /etc/filebeat/filebeat.yml
#============= Filebeat prospectors ===============
filebeat.prospectors:
- input_type: log
  enabled: true #更改为true以启用此prospectors配置。
  paths:  #支持配置多个文件收集目录
    #- /var/log/*.log
    - /var/log/messages
#==================== Outputs =====================
#------------- Elasticsearch output ---------------
#output.elasticsearch:
  # Array of hosts to connect to.
  #hosts: ["localhost:9200"]
#---------------- Logstash output -----------------
output.logstash:
  # The Logstash hosts
  hosts: ["localhost:5044"]

注意:注释掉Elasticsearch output下面的部分,将Filebeat收集到的日志输出到 Logstash output

最后重启服务

systemctl restart filebeat

4.4、登录kibana,创建索引,并且搜集数据

48.jpg

49.jpg50.jpg

LK+ Filebeat的安装,到此,就基本结束了,以上只是简单的部署完了。

但是,还满足不了需求,比如,一台服务器,有多个日志文件路径,改怎么配置,接下来,我们来分类创建索引!

05、Filebeat收集多个tomcat目录下的日志

5.1、修改filebeat.yml配置文件

vim /etc/filebeat/filebeat.yml

配置多个paths收集路径,并且使用fields标签配置自定义标签log_topics,以方便做索引判断,如下:

filebeat.prospectors:
- type: log
  enabled: true
  paths:
    - /usr/tomcat7-ysynet/logs/default/common_monitor.log
  multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2},[0-9]{3}'
  multiline.negate: true
  multiline.match: after
  fields:
    log_topics: spd-ysynet
- type: log
  enabled: true
  paths:
    - /usr/tomcat7-ysynet-sync/logs/default/common_monitor.log
  multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2},[0-9]{3}'
  multiline.negate: true
  multiline.match: after
  fields:
    log_topics: spd-ysynet-sync
- type: log
  enabled: true
  paths:
    - /usr/tomcat7-hscm/logs/default/common_monitor.log
  multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2},[0-9]{3}'
  multiline.negate: true
  multiline.match: after
  fields:
    log_topics: spd-hscm
- type: log
  enabled: true
  paths:
    - /usr/tomcat7-hscm-sync/logs/default/common_monitor.log
  multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2},[0-9]{3}'
  multiline.negate: true
  multiline.match: after
  fields:
    log_topics: spd-hscm-sync

filebeat安装包所在服务器有tomcat7-ysynettomcat7-ysynet-synctomcat7-hscmtomcat7-hscm-sync,4个tomcat,在fields下分别创建不同的log_topicslog_topics属于标签名,可以自定义,然后创建不同的值!

5.2、修改logstash.conf配置文件

接着,修改logstash中的配置文件,创建索引,将其输出

vim /etc/logstash/conf.d/logstash.conf

内容如下:

input{
    beats {
        port => 5044
        codec => plain {
          charset => "UTF-8"
        }
    }
}
filter{
    mutate{
        remove_field => "beat.hostname"
        remove_field => "beat.name"
        remove_field => "@version"
        remove_field => "source"
        remove_field => "beat"
        remove_field => "tags"
        remove_field => "offset"
        remove_field => "sort"
    }
}
output{
    if [fields][log_topics] == "spd-ysynet"  {
        stdout { codec => rubydebug }
        elasticsearch {
            hosts => ["localhost:9200"]
            index => "spd-ysynet-%{+YYYY.MM.dd}"
        }
    }
    if [fields][log_topics] == "spd-ysynet-sync"  {
        stdout { codec => rubydebug }
        elasticsearch {
            hosts => ["localhost:9200"]
            index => "spd-ysynet-sync-%{+YYYY.MM.dd}"
        }
    }
    if [fields][log_topics] == "spd-hscm"  {
        stdout { codec => rubydebug }
        elasticsearch {
            hosts => ["localhost:9200"]
            index => "spd-hscm-%{+YYYY.MM.dd}"
        }
    }
    if [fields][log_topics] == "spd-hscm-sync"  {
        stdout { codec => rubydebug }
        elasticsearch {
            hosts => ["localhost:9200"]
            index => "spd-hscm-sync-%{+YYYY.MM.dd}"
        }
    }
}

其中filter表示过滤的意思,在output中使用filebeat中配置的fields信息,方便创建不同的索引!

#表示,输出到控制台
stdout { codec => rubydebug }
#elasticsearch表示,输出到elasticsearch中,index表示创建索引的意思
elasticsearch {
   hosts => ["localhost:9200"]
   index => "spd-hscm-sync-%{+YYYY.MM.dd}"
}

5.3、测试修改的logstash.conf配置文件

输入如下命令,检查/etc/logstash/conf.d/logstash.conf文件,是否配置异常!

/usr/share/logstash/bin/logstash  -f /etc/logstash/conf.d/logstash.conf --config.test_and_exit

输入结果,显示Configuration OK,就表示没问题!

51.jpg

5.4、重启相关服务

最后,重启filebeat

systemctl restart filebeat

关闭logstash服务

systemctl stop logstash

以指定的配置文件,启动logstash,输入如下命令,回车就ok了,执行完之后也可以用ps -ef|grep logstash命令查询logstash是否启动成功!

nohup /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/logstash.conf &

5.5、登录kibana,创建索引

登录kibana,以同样的操作,页面创建索引,查询收集的日志,以下是小编的测试服务器搜集的信息

52.jpg53.jpg

第3、4、5步骤,是筛选elasticsearch今天收集的日志信息!

54.jpg

06、总结

整个安装过程已经介绍完了,安装比较简单,复杂的地方就是配置了,尤其是logstashkibananginxfilebeat,这几个部分,看了网上很多的介绍,elk配置完之后,外网无法访问kibana,使用nginx代理到kibana,页面就出来了;同时,在配置filebeat多个路径的时候,logstash也配置了输出索引,但是就是没有日志出来,页面检查说Elasticsearch没有找到数据,最后才发现,一定要让logstash指定/etc/logstash/conf.d/logstash.conf配置文件,进行启动,那么就有日志出来了,整篇文章,可能有很多写的不到位的地方,请大家多多包含,也可以直接给我们留言,以便修正!

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
5天前
|
存储 消息中间件 网络协议
日志平台-ELK实操系列(一)
日志平台-ELK实操系列(一)
|
2月前
|
Kubernetes Ubuntu Windows
【Azure K8S | AKS】分享从AKS集群的Node中查看日志的方法(/var/log)
【Azure K8S | AKS】分享从AKS集群的Node中查看日志的方法(/var/log)
|
2月前
|
消息中间件 Kafka 开发工具
rsyslog+ELK收集Cisco日志
rsyslog+ELK收集Cisco日志
|
2月前
|
开发框架 .NET Docker
【Azure 应用服务】App Service .NET Core项目在Program.cs中自定义添加的logger.LogInformation,部署到App Service上后日志不显示Log Stream中的问题
【Azure 应用服务】App Service .NET Core项目在Program.cs中自定义添加的logger.LogInformation,部署到App Service上后日志不显示Log Stream中的问题
|
2月前
|
消息中间件 Kubernetes API
在K8S中,如何收集k8s集群日志?
在K8S中,如何收集k8s集群日志?
|
2月前
|
存储 消息中间件 监控
Java日志详解:日志级别,优先级、配置文件、常见日志管理系统ELK、日志收集分析
Java日志详解:日志级别,优先级、配置文件、常见日志管理系统、日志收集分析。日志级别从小到大的关系(优先级从低到高): ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF 低级别的会输出高级别的信息,高级别的不会输出低级别的信息
|
2月前
|
存储 数据可视化 Linux
在Linux中,如何使用ELK进行日志管理和分析?
在Linux中,如何使用ELK进行日志管理和分析?
|
5月前
|
存储 监控 数据可视化
日志分析对决:揭示 ELK 与 GrayLog 的优势和差异
日志分析对决:揭示 ELK 与 GrayLog 的优势和差异
1052 0
|
5月前
|
存储 Prometheus 监控
Prometheus vs. ELK Stack:容器监控与日志管理工具的较量
随着容器化技术的广泛应用,容器监控与日志管理成为了关键任务。本文将对两种常用工具进行比较与选择,分别是Prometheus和ELK Stack。Prometheus是一款开源的监控系统,专注于时序数据的收集和告警。而ELK Stack则是一套完整的日志管理解决方案,由Elasticsearch、Logstash和Kibana三个组件组成。通过比较它们的特点、优势和适用场景,读者可以更好地了解如何选择适合自己需求的工具。
|
2月前
|
运维 监控 Ubuntu
一键启动日志魔法:揭秘ELK自动安装脚本的神秘面纱!
【8月更文挑战第9天】在数据驱动时代,高效处理日志至关重要。ELK Stack(Elasticsearch、Logstash、Kibana)是强大的日志分析工具,但其复杂的安装配置常让初学者望而却步。本文介绍如何编写ELK自动安装脚本,简化部署流程。脚本适用于Ubuntu系统,自动完成ELK下载、安装及基本配置,包括依赖项安装、服务启动及自启设置,极大降低了使用门槛,助力运维人员和开发者轻松构建日志分析平台。
102 6
下一篇
无影云桌面