ELK(elasticsearch+logstash+kibana+beats) 忘是亡心i 2024-03-17 19:58 72阅读 0赞 ## 什么是ELK ## * **Elasticsearch**:Elasticsearch(以下简称ES) 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。 ES是 Elastic Stack 的核心,采用集中式数据存储,可以通过机器学习来发现潜在问题。ES能够执行及合并多种类型的搜索(结构化数据、非结构化数据、地理位置、指标)。支持 PB级数据的秒级检索。 * **Kibana**:Kibana 是一个免费且开放的用户界面,能够让您对 Elasticsearch 数据进行可视化,并让您在 Elastic Stack 中进行导航。您可以进行各种操作,从跟踪查询负载,到理解请求如何流经您的整个应用,都能轻松完成 * **Logstash**:Logstash 是免费且开放的服务器端数据处理管道,能够从多个来源采集数据,转换数据,然后将数据发送到合适的的“存储库”中。 * **Beats**:Beats 是一套免费且开源的轻量级数据采集器,集合了多种单一用途数据采集器。它们从成百上千或成千上万台机器和系统向 Logstash 或 Elasticsearch 发送数据。 ## 为什么要使用ELK ## * 严格按照开发标准来说,开发人员是不能登录生产服务器查看日志数据的 * 一个应用可能分布于多态服务器,难以查找 * 同一台服务区可能部署多个应用,日志分散难以管理 * 日志可能很大,单个文件通常能达到GB级别,日志无法准确定位,日志查询不方便且速度慢 * 通常日志文件以非结构化存储,不支持数据可视化查询。 * 不支持日志分析(比如慢查询日志分析、分析用户画像等)。 ## 使用场景 ## * 采集业务日志 * 采集Nginx日志 * 采集数据库日志,如MySQL * 监控集群性能指标 * 监听网络端口 * 心跳检测 ## [Logstash][] ## 开源的流数据处理、转换(解析)和发送引擎,可以采集来自不同数据源的数据,并对数据进行处理后输出到多种输出源 ### 工作原理 ### Logstash的每个处理过程均以插件的形式实现,Logstash的数据处理过程主要包括: **Inputs** , **Filters** , **Outputs** 三部分 ![4dd8e4b6bdf448b99a119e7f0648362a.png][] 数据采集:Inputs 数据过滤:Filter 数据存储:output ## Beats ## Beats 是一套免费且开源的轻量级数据采集器,集合了多种单一用途数据采集器。它们从成百上千或成千上万台机器和系统向 Logstash 或 Elasticsearch 发送数据。 beats替换了logstash一部分功能(input 采集功能)。因为logstash比较重量级,占用较多资源;而Beats相对轻量级。 Beats的基本特性 > * **开源**:Beats 是一个免费且开放的平台,集合了多种单一用途数据采集器,各司其职,功能分离。社区中维护了上百个beat > * **轻量级**:体积小,职责单一、基于go语言开发,具有先天性能优势,不依赖于Java环境,对服务器资源占用极小。Beats 可以采集符合 Elastic Common Schema (ECS) 要求的数据,可以将数据转发至 Logstash 进行转换和解析。 > * **可插拔**:Filebeat 和 Metricbeat 中包含的一些模块能够简化从关键数据源(例如云平台、容器和系统,以及网络技术)采集、解析和可视化信息的过程。只需运行一行命令,即可开始探索。 > * **高性能**:对CPU、内存和IO的资源占用极小。 > * **可扩展**:由于Beats开源的特性,如果现有Beats不能满足开发需要,我们可以自行构建,并且完善Beats社区 ### 组件 ### * **Filebeat**:文件日志监控采集 ,主要用于收集日志数据 * [Metricbeat][]:进行指标采集,指标可以是系统的,也可以是众多中间件产品的,主要用于监控系统和软件的性能 * [Packetbeat][]: 是一个实时网络数据包分析器,通过网络抓包、协议分析,基于协议和端口对一些系统通信进行监控和数据收集。可以将其与Elasticsearch一起使用,以提供应用程序监视和性能分析系统。 * [Heartbeat][]:心跳检测 (在配置的Url中喊一句:喂,有活着的么?有的话吱个声!) * Winlogbeat:Windows事件日志 * [Auditbeat][]:审计数据(收集审计日志) * Functionbeat:云服务生成的日志和指标收集器 ## Kibana ## Kibana 是一个免费且开放的可视化系统,能够让您对 Elasticsearch 数据进行可视化,并让您在 Elastic Stack 中进行导航。您可以进行各种操作,从跟踪查询负载,到理解请求如何流经您的整个应用,都能轻松完成。 之前用的比较多的就是kibana的dev tools的功能,用于写dsl kibana中的discover支持可视化的查看数据 ![c32607aa3b3d42afa5a5ede5c77cda5c.png][] ## 基于ELK搭建日志采集系统 ## ### 流程 ### ![1da0e5c72a1f46e6a1bdbd0f950a774f.png][] ### 安装logstash ### 下载: [Past Releases of Elastic Stack Software | Elastic][Past Releases of Elastic Stack Software _ Elastic] 直接解压 启动:切换到bin目录 ./logstash ./logstash -e 'input\{stdin\{\}\}' output\{stdout\{\}\}' \-e:加启动选择 stdin:标准化输入 stdout:标准化输出 ![e54c6cb6e08d459486a00e50dda1619c.png][] 在config/logstash-sample.conf中配置 ![a92ba3616647494d8778c4be67dc34c4.png][] 启动时,加 -f指定配置文件 ./bin/logstash config/logstash-sample.conf 结果 ![f2f42321255142d3b0fb34c3d175774e.png][] stdin、stdout:方便排查日志采集问题 ### FileBeat ### 安装地址: [Filebeat 7.13.0 | Elastic][Filebeat 7.13.0 _ Elastic] #### 原理 #### ![801d7648e39a4b84b0ebeb19c1a831b0.png][] #### 为什么要使用fileBeat #### 因为logstash有日志采集的功能,但是logstash比较重量级,如果放在业务服务器上,比较占用资源。所以,使用fileBeat在业务服务器上进行日志采集,然后把采集到的日志输出到logstash(单独的服务器)上,这样采集日志就不会占用业务服务器空间 #### filebeat配置 #### [inputs配置][inputs] ![436478b4adb74cad8503b652c9a65108.png][] 启动fileBeat ![ba0298b25d1143df830b1f7a689d394d.png][] \-e:对启动日志进行输出 \-c:指定配置文件 将fileBeat的输出改为logstash(filebeat.yml) ![5bd3ea5ceff6489babdc094215ac7e49.png][] logstash的默认端口号:5044 修改logstash的输入为beats(logstash-sample.conf) ![2cc263c84f0a45fd81088d99583b10f3.png][] 修改logstash的输出为es(logstash-sample.conf) ![f66038c88e984aeb9f692251ef744d64.png][] output中可以加多个(stdout、elasticsearch等) **可以通过配置,将一部分日志归为一条日志**(比如说一些错误日志) ![db0332cbe93b4e1d830923ab4d89b07b.png][] multiline.type: pattern # 匹配格式是正则 multiline.pattern: '^\[' # 匹配的正则表达式 multiline.negate: true # 匹配上正则表示是一条数据(false表示匹配不上为新的一条数据) multiline.match: after # 匹配不上的追加在上一条后面 ### logstash添加filter过滤器 ### logstash最常用的filter是[grok][] ![08465c42049441159a656b681d01b07f.png][] kibana中可以写grok ![29ec61b1152f4d668289ecd57d41a3b7.png][] 将logstash中的filter配置成写的grok正则 ![ec6e9512f8b94fe28c504d3eae2192ec.png][] 启动filebeat前,先把data数据删除(避免之前的日志已经采集过了,没有产生新的日志 ) rm -rf data/ ### 区分input ### 一个beats可以有多个input,但是只能输出到同一个es的索引中,不方便做数据区分 #### 可以给不同的input加标签区分 #### ![835e6760ea8e4ff58c24f8404c2fa551.png][] 在logstash中进行判断,然后区分index ![cbd7a3f6056c48178e4e630cd7a6893e.png][] #### 可以根据grok判断 #### 想根据日志级别区分不同的日志,生成不同的index,可以根据grok中的LOGLEVEL判断![cee65e1e87564404801971676fa60810.png][] 如果要自定义正则表达式的话,可以在logstash的patterns文件中写 ![98768a0b442b469d818bdb12168605a5.png][] ![fe3750261422441fae0ca9eb0cae11e5.png][] 也可以通过字符串判断 ![cc04e89e920742e6ad33d70b98e5fa28.png][] ## 基于FileBeat采集nginx日志 ## 安装nginx ![2a5c95b8b1d3428c81afe2f8ccdcbbae.png][] 查找nginx安装路径 ![7a20e791e60f4111ab1439c797aa00a4.png][] [修改nginx配置文件中日志采集格式为json][nginx_json] ![88a17122a01e48e8b79847235735b891.png][] nginx.conf ![9134dcd1f32246c5a5a902d2da7d6320.png][] 改动后需要重启nginx [修改filebeat支持json输入][filebeat_json] ![94cc32c0eca841018529816aa023e0a7.png][] ![1337409e0896459795fbde57408638ba.png][] ## 基于filebeat采集系统日志[syslog][] ## ![28b1595e8f78463e9a8bb7f3eadcb97f.png][] format是一种日志规范 采集系统日志 ![5720a2162d0b40f18f3aa7775c48c625.png][] udp、tcp的默认端口是514 ![97b5940566164f109f0431902b9e934d.png][] 修改配置文件 ![01bc31c508ab4cad98656ce7c300daa2.png][] 重启系统服务 ![4d8ae31b4d974008a74ea3fdebd35108.png][] 查看系统服务状态 ![9c7eb6bd0d574c1ca4f344564843f7dc.png][] 在logstash中区分tcp、udp索引 ![d98e7cc90df64f1fbca112f613b60cd1.png][] 使用logger测试tcp ![60e769c3ef97418aa56da0323defb794.png][] 使用netcat测试udp ![ae361d9e54844757871f833f8bf0af49.png][] 后面的udp.yml是自己创建的文件 ![5931a9b4dd464ac2a598a46b7e52e29e.png][] ## 数据可视化操作 ## kibana的dashboard ![c8b9e96981d04c37b6d88243ad66cfbc.png][] 管理index patterns ![87b7c317ca774690852ea06c445b70ec.png][] 创建index pattern 方便更好的看一类es索引数据 ![91463001846148af86b53d8a295a084d.png][] 创建[dashboard][] ![5efc5add18fd442fb03ec8281fc8e76e.png][] [Logstash]: https://www.elastic.co/guide/en/logstash/7.12/index.html [4dd8e4b6bdf448b99a119e7f0648362a.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/be67a1112e0c4bd89ceb1ad5c632304c.png [Metricbeat]: https://www.elastic.co/products/beats/metricbeat [Packetbeat]: https://www.elastic.co/products/beats/packetbeat [Heartbeat]: https://www.elastic.co/products/beats/heartbeat [Auditbeat]: https://www.elastic.co/products/beats/auditbeat [c32607aa3b3d42afa5a5ede5c77cda5c.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/eca83812830d42698f49f2fa5be3e9f4.png [1da0e5c72a1f46e6a1bdbd0f950a774f.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/826b30a73e0e4e31ac5872a4b9a3014c.png [Past Releases of Elastic Stack Software _ Elastic]: https://www.elastic.co/cn/downloads/past-releases#logstash [e54c6cb6e08d459486a00e50dda1619c.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/1f9f11dc683446258dfdd0673103fcd5.png [a92ba3616647494d8778c4be67dc34c4.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/83340fc9e7364948844c517320371310.png [f2f42321255142d3b0fb34c3d175774e.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/101da562a78048aeb553c408bbdb006e.png [Filebeat 7.13.0 _ Elastic]: https://www.elastic.co/cn/downloads/past-releases/filebeat-7-13-0 [801d7648e39a4b84b0ebeb19c1a831b0.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/277891a474d24d40a39e005a6b83d009.png [inputs]: https://www.elastic.co/guide/en/beats/filebeat/7.13/configuration-filebeat-options.html [436478b4adb74cad8503b652c9a65108.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/00459526e5424fc393e3b41b887bb220.png [ba0298b25d1143df830b1f7a689d394d.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/ed590da65abb4218aeb58433074d4b3b.png [5bd3ea5ceff6489babdc094215ac7e49.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/5c5fe30fb06a40e28e86280541b9970f.png [2cc263c84f0a45fd81088d99583b10f3.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/3681c006bbad440ba420e320bdd41669.png [f66038c88e984aeb9f692251ef744d64.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/85568b9ae4564bcaad819773cb6b5409.png [db0332cbe93b4e1d830923ab4d89b07b.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/86dce2ee8f324d269501e3de53f2b0fd.png [grok]: https://www.elastic.co/guide/en/logstash/7.13/plugins-filters-grok.html [08465c42049441159a656b681d01b07f.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/9dc0fab7035248e58740e4cb62c0c454.png [29ec61b1152f4d668289ecd57d41a3b7.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/2798754040884961a9e635e22edaaa38.png [ec6e9512f8b94fe28c504d3eae2192ec.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/d39aaee21b0e44deb8d6d7fe82cf9b6f.png [835e6760ea8e4ff58c24f8404c2fa551.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/776bb3d14d484baf808c3e631a0747f3.png [cbd7a3f6056c48178e4e630cd7a6893e.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/c06f13ae50724dbabe863e961570399f.png [cee65e1e87564404801971676fa60810.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/0afb34baae044974a83ba42658cf442b.png [98768a0b442b469d818bdb12168605a5.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/6fa2a6febb414d81ba208e48e6ee0ec3.png [fe3750261422441fae0ca9eb0cae11e5.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/5801abf5910943e3bb2a727742210e23.png [cc04e89e920742e6ad33d70b98e5fa28.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/785ca5b2fb33479281c72d79f5f99942.png [2a5c95b8b1d3428c81afe2f8ccdcbbae.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/85923a6d3d20466abe571b4753321e22.png [7a20e791e60f4111ab1439c797aa00a4.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/dfb6d969a7f74f1e9fab10fecc12303b.png [nginx_json]: http://nginx.org/en/docs/http/ngx_http_log_module.html [88a17122a01e48e8b79847235735b891.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/deb838a0a1eb4fc1af44bd9e8aab1b9b.png [9134dcd1f32246c5a5a902d2da7d6320.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/b328869d30884873aec69fbf378b8127.png [filebeat_json]: https://www.elastic.co/guide/en/beats/filebeat/7.13/filebeat-input-log.html [94cc32c0eca841018529816aa023e0a7.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/f718289cf50e4170bfed1ffb354d4d35.png [1337409e0896459795fbde57408638ba.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/cfec291a727c406f9940d1baeca1e40d.png [syslog]: https://www.elastic.co/guide/en/beats/filebeat/7.13/filebeat-input-syslog.html [28b1595e8f78463e9a8bb7f3eadcb97f.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/59016f5bda0849a0977d1e613e5ef265.png [5720a2162d0b40f18f3aa7775c48c625.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/5a4c2607b89446efbc3135277da1d233.png [97b5940566164f109f0431902b9e934d.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/b8f16078fcb94a0ea52b6979d3679b0e.png [01bc31c508ab4cad98656ce7c300daa2.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/005ddb52087140d1a3dd8d650ad328e3.png [4d8ae31b4d974008a74ea3fdebd35108.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/7115fce7e5b94d2eb7894f1da19dead1.png [9c7eb6bd0d574c1ca4f344564843f7dc.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/f0bd8dc2edf54cf3b5529603cd2e3a6e.png [d98e7cc90df64f1fbca112f613b60cd1.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/f01674710e474fbe899523b287c66ff1.png [60e769c3ef97418aa56da0323defb794.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/aad458ece20b4eb5a343276becacb5f4.png [ae361d9e54844757871f833f8bf0af49.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/d34152bf4a614f99aef3b5f69fb65eb1.png [5931a9b4dd464ac2a598a46b7e52e29e.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/12904e1c904243cf89a5dcb0dbdc695e.png [c8b9e96981d04c37b6d88243ad66cfbc.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/87e1b87d83ae46f2bce5c7d3b5cce035.png [87b7c317ca774690852ea06c445b70ec.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/4955fad13a9c4becb07af7193997e1aa.png [91463001846148af86b53d8a295a084d.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/895a4c5d7a68478c96715ac314048bc2.png [dashboard]: https://www.elastic.co/guide/en/kibana/7.13/create-a-dashboard-of-panels-with-web-server-data.html [5efc5add18fd442fb03ec8281fc8e76e.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/020416aa4d7b4bce8a008f057721256c.png
还没有评论,来说两句吧...