ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

ElasticSearch日志检索实践项目(详细步骤+注意点)

ElasticSearch日志检索实践项目(详细步骤+注意点) 一、前期准备R1、准备三台虚拟机组合一个集群node-1:elasticsearch-8.18.8-linux-x86_64.tar.gzkibana-8.18.8- linux-x86_64.tar.gznode-2:logstash-8.18.8-linux-x86_64.tar.gznode-3:filebeat-8.18.8-linux-x86_64.tar.gz压缩包存放在相应目录下并赋予该目录用户权限以及执行权限useraddelk#后面每个文件修改用户权限chown-Relk:[文件名]**注意**需要都是同一版本的不然后面会因版本问题报错而无法采集日志。 3、提前规划好虚拟机的IP地址同一网段内 node-1:192.168.10.11 node-2:192.168.10.12 node-3:192.168.10.13 4、在三台主机上配置域名解析etc/hosts以及永久关闭selinux和防火墙 原因避免影响服务组件端口之间的通信 不然会出现网页打不开端口不开放的结果。 5、系统依赖安装dnfinstalljava-25-openjdk#添加全局环境变量配置echoexport JAVA_HOME/usr/lib/jvm/java-25-openjdk/etc/profile#加载配置文件source/etc/profile原因ELK套件尤其是Elasticsearch和Logstash是用Java编写的而Kibana则基于Node.js环境运行。它们无法在裸操作系统上直接运行。6、内核参数调优#最大文件句柄cat/etc/security/limits.confEOF elk soft nofile 65535 elk hard nofile 65535 elk soft nproc 40960 elk hard nproc 40960 EOF#系统虚拟内存echovm.max_map_count262144/etc/sysctl.confsysctl-p二、执行过程node-1:修改主配置文件内容elasticsearch.ymlcluster.name: elk-cluster# 节点名称node.name: node-1# 数据存储路径path.data: /opt/logs/elasticsearch# 日志路径path.logs: /opt/logs/elasticsearch# 监听所有网卡network.host:0.0.0.0# ES服务端口http.port:9200# 单节点集群模式3节点仅一台ES不需要集群discovery.type: single-node# 如果是集群#discovery.seed_hosts: [节点1_IP, 节点2_IP]#cluster.initial_master_nodes: [节点1名称, 节点2名称]# 关闭自动安全初始化手动配置账号密码简化测试环境xpack.security.enabled:falsexpack.security.enrollment.enabled:falsexpack.security.http.ssl.enabled:falsexpack.security.transport.ssl.enabled:false修改jvm.options:#JVM内存配置虚拟机 2G 内存设置 1G4G 内存设置 2G最大不超过 31Gvim/opt/elk/elasticsearch/config/jvm.options-Xms1g-Xmx1g配置系统服务:cat/usr/lib/systemd/system/elasticsearch.serviceEOF [Unit] DescriptionElasticsearch Service Afternetwork.target [Service] Userelk Groupelk ExecStart/opt/elk/elasticsearch/bin/elasticsearch Restartalways RestartSec5 [Install] WantedBymulti-user.target EOF# 启动ES并验证systemctl daemon-reload systemctlenableelasticsearch--now#访问验证curlhttp://192.168.10.11:9200修改kibana.yml文件# 服务端口server.port:5601# 允许所有IP访问面板server.host:0.0.0.0# ES地址elasticsearch.hosts:[http://192.168.10.11:9200]# 设置中文i18n.locale:zh-CN# 关闭安全验证和ES对应xpack.security.enabled:false配置服务文件以及加载同上注意一点要验证端口是否开放。node-2:修改管道文件配置.conf# input接收Filebeat推送的日志5044端口input{beats{port5044}}# filter日志清洗、分割、格式化示例处理系统日志/nginx日志filter{# 系统日志分割使用 grok 解析日志格式使用 date 校准时间戳等if[type]syslog{grok{# match { message %{COMBINEDAPACHELOG} }match{message%{SYSLOGTIMESTAMP:syslog_timestamp} % {SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: % {GREEDYDATA:syslog_message}}}date{match[syslog_timestamp,MMM d HH:mm:ss,MMM dd HH:mm:ss]}}# 去除无用字段mutate{remove_field[[agent][version],ecs]}}# output清洗后数据写入Elasticsearchoutput{elasticsearch{hosts[http://192.168.10.12:9200]indexlogs-%{YYYY.MM.dd}# 按天分索引}# 控制台输出调试生产可注释stdout{codecrubydebug}}修改 Logstash JVM 内存编辑 /opt/elk/logstash/config/jvm.options-Xms512m-Xmx512m配置服务文件以及加载同上注意一点要验证端口是否开放。node-3:修改主配置文件logstash.yml# 采集日志文件输入filebeat.inputs: - type: filestream enabled:truepaths:# 采集系统日志路径- /var/log/messages - /var/log/secure - /var/log/nginx/access.log# 日志分类标签fields: type: syslog fields_under_root:true# 多行日志合并如java异常堆栈multiline.type: pattern multiline.pattern:^[0-9]{4}-[0-9]{2}-[0-9]{2}multiline.negate:truemultiline.match: after# 输出到Logstash不直接输出ESoutput.logstash: hosts:[192.168.10.13:5044]# 关闭ES默认输出output.elasticsearch.enabled:false# 关闭Kibana内置模块不需要自动配置setup.kibana.enabled:falsesetup.ilm.enabled:false校验配置文件语法:./filebeattestconfig-c/opt/monitor/filebeat/filebeat.yml#具体要看当前在哪个目录配置服务文件以及加载同上注意一点要验证端口是否开放。最后验证所有服务的运行状态# ES 节点systemctl status elasticsearch kibana# Logstash 节点systemctl status logstash# Filebeat 节点systemctl status filebeat1、模拟生成测试日志node-3节点echotest log message$(date)/var/log/messages2、Logstash 查看实时接收日志node-2节点tail-f/opt/monitor/logstash/logs/logstash-plain.log3、ES查看索引是否生成curlhttp://127.0.0.1:9200/_cat/indices?v#能看到 logs-YYYY.MM.dd 索引代表日志成功入库。至此一整套环境流程搭建完毕接下来就是对数据进行实际性的操作了。
返回列表