
目录一.数据处理管道——Logstash1.1简单介绍1.2部署Logstash1.2.1准备工作1.2.2安装Logstash软件包和JDK1.2.3本地简单测试1.3Elasticsearch输出插件与ES集群管理界面1.3.1简单介绍1.3.2进入conf.d目录下新建一个test.conf用于输入配置信息1.3.3启动test.conf配置录入数据1.3.4进入Elasticsearch的管理界面1.4Elasticsearch-head插件——可视化插件1.4.1简单介绍1.4.2下载并解压phantomjs软件复制程序到PATH路径下1.4.3安装fontconfig1.4.4启动phantomjs服务1.4.5下载并解压nodejs软件1.4.6解压elasticsearch-head软件1.4.7安装当前项目 package.json 中声明的所有依赖包1.4.8修改app.js文件,并启动服务1.4.9修改当前ES集群的主节点的配置文件1.4.10进入ES集群的可视化界面1.5谷歌Chrome浏览器上的Es集群输出插件和ES-head可视化插件1.5.1打开谷歌浏览器1.5.2点击右上角的插件按钮进入插件管理界面,可能需要VPN1.5.3搜索插件名称安装两个插件1.5.4进入ES管理客户端插件添加新链接进入管理界面1.5.5进入ES-head可视化插件添加新链接进入ES-head可视化管理界面1.6输入插件——file1.6.1简单介绍1.6.2进入conf.d目录创建新的配置文件1.6.3启动配置观察输出结果1.7同步日志插件——syslog1.7.1简单介绍1.7.2进入conf.d目录下创建一个rsyslog.conf文件1.7.3修改server上的日志文件配置rsyslog.conf1.7.4启动配置查看输出结果1.8多行过滤插件——multiline1.8.1简单介绍1.8.2进入conf.d目录下创建一个multiline.conf1.8.3删除之前的冗余数据1.8.4启动配置查看输出结果1.9过滤插件——grok1.9.1简单介绍1.9.2server5安装httpd并开启服务1.9.3在默认发布目录下新建一个index.html用于外机访问1.9.4使用外机访问server5的 index.html 默认发布页生成访问日志1.9.5进入conf.d目录下新建一个grok.conf配置文件1.9.6在server5上启动配置查看输出结果二.应用日志采集——filebeat2.1简单介绍2.2filebeat采集Web日志输出到ES集群2.2.1完成任务2.2.2解压filebeat软件包并开启apache模块2.2.3修改apache.yml文件配置2.2.4修改filebeat.yml文件2.2.5开启filebeat服务2.2.6查看是否获取到web服务日志2.3filebeat采集Apache日志中间由Logstash最后输出到ES集群补充2.3.1完成任务2.3.2解压filebeat软件包并开启apache模块2.3.3修改apache.yml文件配置2.3.4修改filebeat.yml文件启动filebeat服务2.3.5进入server5的配置目录下新建一个.conf文件2.3.6查看是否获取到server3的web服务日志三.数据可视化——Kibana3.1简单介绍3.2部署Kibana3.2.1安装kibana软件包3.2.2修改kibana.yml文件3.2.3设置界面语言为简体中文(可选)3.2.4启动服务进入kibana可视化界面3.3kibana快速创建可视化界面3.3.1创建索引模式3.3.2创建数据可视化3.3.3刷新设置3.3.4创建仪表板一.数据处理管道——Logstash官方文档Logstash Introduction | Logstash Reference [7.6] | Elastichttps://www.elastic.co/guide/en/logstash/7.6/introduction.html1.1简单介绍1.说明Logstash 是一款开源的服务端数据收集引擎和处理器一个数据处理管道具备实时流水线功能。Logstash可以动态地整合来自不同数据源的数据并将其规范化到选择的目标位置。能够清理并简化所有数据以适应各种高级下游分析和可视化用例。2.核心工作框架图input输入告诉 Logstash 从哪拿数据。可以是日志文件file、syslog、redis、kafka、TCP/UDP、beatsFilebeat等。filter过滤/解析对拿到的数据进行处理将一段原始文本加工成一段结构化字段grok正则解析mutate改字段date把字符串时间解析成标准时间戳multiline把散落多行的一段日志合并成一条事件geoip根据IP解析出地理位置output输出将处理完的数据发送到指定的位置常见的是Elasticsearch上1.2部署Logstash1.2.1准备工作1.在上一章ES集群的四台虚拟机的基础上新开一台CentOS 7虚拟机作为Logstash的主机主机名IP地址角色server1192.168.7.171elasticsearchserver2192.168.7.172elasticsearchserver3192.168.7.173elasticsearchserver4192.168.7.174cerebroserver5192.168.7.175Logstash2.五台虚拟机上完成静态IP的设置和域名解析1.2.2安装Logstash软件包和JDK说明Logstash本身不包含JDK需要手动安装JDK工具包安装Logstash的软件包版本必须要和Elasticsearch保持一致。yum install -y jdk-11.0.15_linux-x64_bin.rpm #Java软件开发工具包 yum install -y logstash-7.6.1.rpm #Logstash 7.6.1版本的rpm安装包1.2.3本地简单测试说明在终端界面输入数据观察有没有返回结果先不对数据进行处理/usr/share/logstash/bin/logstash -e input { stdin { } } output { stdout {} } #启动Logstash并从键盘读取你输入的内容再原样打印到屏幕上用来快速验证Logstash能否正常运行。-e直接在命令行中指定 Logstash 配置文件内容1.3Elasticsearch输出插件与ES集群管理界面1.3.1简单介绍1.说明1Elasticsearch输出插件是Logstash最核心、最常用的输出插件负责将经过过滤处理后的结构化数据写入Elasticsearch集群是整个日志监控管道的终点。2.说明2ES集群管理界面能够把复杂的集群状态和运维操作通过图形化的方式呈现出来方便你进行监控和管理。3.完成任务完成Elasticsearch输出插件的配置工作下面为具体的实现步骤1.3.2进入conf.d目录下新建一个test.conf用于输入配置信息说明将本机终端界面上的数据发送到ES集群中的server1节点上conf.d目录我们自定义的管道配置存放目录cd /etc/logstash/conf.d/ vim test.conf1.3.3启动test.conf配置录入数据/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/test.conf1.3.4进入Elasticsearch的管理界面说明进入cerebro管理工具接着输入任一集群主节点进入ES集群的管理界面1.4Elasticsearch-head插件——可视化插件1.4.1简单介绍1.说明Elasticsearch-head是一款开源的、用于浏览和与Elasticsearch集群进行交互的Web前端可视化工具。在日志监控体系中它提供了一种比Kibana更轻量的方式来查看集群状态、浏览索引数据和执行基本操作。2.与Elasticsearch输出插件的区别Elasticsearch-head 为 Elasticsearch 集群提供可视化管理界面能够直观查看集群状态、索引结构和数据内容方便开发和运维人员排错。3.默认端口port91004.完成任务完成Elasticsearch-head的部署工作下面为具体的部署工程1.4.2下载并解压phantomjs软件复制程序到PATH路径下1.说明它是一个“无头浏览器”被 head 项目在安装过程中自动下载和使用目的是为了完成一些前端资源的预编译或处理工作。2.作用elasticsearch本身是一个基于 Node.js 的前端工程。当你执行npm install 来安装它的依赖时package.json文件中会有一个叫做phantomjs-prebuilt的包。这个包就会去下载 PhantomJS 程序并可能在安装过程中使用它去执行一些脚本任务tar jxf phantomjs-2.1.1-linux-x86_64.tar.bz2 cd phantomjs-2.1.1-linux-x86_64 cp bin/phantomjs /usr/local/bin/ #将程序加入到全局环境变量中1.4.3安装fontconfig说明fontconfig是一个为应用程序提供系统已安装字体清单和配置规则的基础库。当像 Java 这样的程序需要渲染文字或生成图片比如验证码、报表时就会通过fontconfig来查找和使用合适的字体yum install -y fontconfig1.4.4启动phantomjs服务phantomjs1.4.5下载并解压nodejs软件说明Node.js本身是一个基于Chrome V8 引擎的JavaScript 运行时环境作用Elasticsearch是一个基于Node.js的前端工程需要 Node.js 提供的环境才能运行起来1.4.6解压elasticsearch-head软件unzip elasticsearch-head-master.zip1.4.7安装当前项目package.json中声明的所有依赖包cd elasticsearch-head-master/ npm install --registryhttps://registry.npmmirror.com/ #使用国内镜像源1.4.8修改app.js文件,并启动服务vim _site/app.js npm run start #启动服务可以放到后台建议先在终端启动一遍观察是否有报错 netstat -antlp | grep :91001.4.9修改当前ES集群的主节点的配置文件说明当主节点切换时新的主节点配置中也必须包含这两个配置否则无法启动Elasticsearch-head插件。vim /etc/elasticsearch/elasticsearch.yml systemctl restart elasticsearch1.4.10进入ES集群的可视化界面说明输入本机的IP加9100端口进入ES集群的可视化界面接着输入任一ES集群的节点进入ES集群1.5谷歌Chrome浏览器上的Es集群输出插件和ES-head可视化插件说明谷歌浏览器上自带ES集群的输出插件和可视化插件只需要安装插件即可直接进入ES集群的管理界面无需复杂的配置1.5.1打开谷歌浏览器1.5.2点击右上角的插件按钮进入插件管理界面,可能需要VPN1.5.3搜索插件名称安装两个插件1.5.4进入ES管理客户端插件添加新链接进入管理界面1.5.5进入ES-head可视化插件添加新链接进入ES-head可视化管理界面1.6输入插件——file1.6.1简单介绍1.说明file输入插件是Logstash最核心、最常用的输入插件负责从指定的文件或目录中读取日志数据并将其转换为事件Event送入Logstash的管道进行处理2.核心功能1.实时追踪持续监控文件追加新内容读取后立即发送2.断点续传通过.sincedb数据库文件记录每个文件的读取位置重启后从断点继续以防数据丢失3.文件轮转支持自动监测并处理日志的轮转确保不丢失数据4.多文件监听支持glob模式匹配路径可同时监控多个目录和文件下面为具体的实现步骤1.6.2进入conf.d目录创建新的配置文件完成任务将server5的本机日志保存到ES集群内cd /etc/logstash/conf.d vim test.conf1.6.3启动配置观察输出结果/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/test.conf-f指定 Logstash 管道的配置文件路径。1.7同步日志插件——syslog1.7.1简单介绍1.说明syslog插件会在 Logstash 节点上模拟出一个 syslog 服务器它监听一个指定的网络端口接收来自其他设备或系统发来的 syslog 消息然后将其转换成 Logstash 的事件进行处理和转发。相当于Logsatsh伪装成了syslog日志服务器2.核心功能收集Linux/Unix系统日志通过配置rsyslog或syslog-ng文件可以将主机的所有系统日志转发给Logstash处理下面为具体的实现步骤1.7.2进入conf.d目录下创建一个rsyslog.conf文件完成任务同时同步server1server2,server3的日志到一个日志上并将该日志保存到ES集群当中注意自定义名字但必须要以.conf结尾说明在conf.d目录下自定义创建一个.conf文件保存配置cd /etc/logstash/conf.d/ vim rsyslog.conf1.7.3修改server上的日志文件配置rsyslog.conf说明修改三个server的rsyslog.conf配置将server1的系统日志发送到远程 Logstash 服务器(server5)。vim /etc/rsyslog.conf systemctl restart rsyslog.service1.7.4启动配置查看输出结果说明在server1的日志上输入一个server1用于测试观察 Logsatsh服务器server5上能否收到ES集群中是否存在该内容server5:/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/rsyslog.confserver1:logger server1server2:logger server2server3:logger server31.8多行过滤插件——multiline1.8.1简单介绍1.说明Logstash 专门用来处理多行日志的“粘合剂”它能把分散在不同行的信息合并成一个完整的事件方便后续处理2.工作原理判断某一行是一行新日志的开始还是上一行日志的延续pattern正则匹配定义一个正则表达式用来匹配某一行日志的特征what归属方向决定匹配到的行归属到哪里。previous:合并到前一行next合并到下一行negate匹配取反设为 true 时匹配逻辑取反即对没有匹配到 pattern 的行生效。下面为具体的部署过程1.8.2进入conf.d目录下创建一个multiline.conf说明当读到不以 [ 开头的行Logstash会将这行合并到上一行中直到再次匹配到下一个以 [ 开头的句子便于我们查看vim /etc/logstash/conf.d/multiline.conf读取的文件内容格式如下1.8.3删除之前的冗余数据说明当对同一个文件内容进行操作时如果你之前将文件内容全部读取完再次读取该文件时Logstash会自动接着上次终止的地方运行可能会导致你看不到数据。这里是测试环境生产环境中请慎重考虑cd /usr/local/logstash/data/plugins/input/file/ ls -a rm -f 之前的冗余数据否则可能会出现以下情况运行程序后没有输出1.8.4启动配置查看输出结果/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/multiline.conf1.9过滤插件——grok1.9.1简单介绍1.说明Grok是 Logstash 中最核心、最强大的过滤插件。它能够将非结构化的原始日志如一行文本解析成结构化的字段如 JSON 对象方便后续在 Elasticsearch 中进行搜索、聚合和分析。下面为具体的部署过程1.9.2server5安装httpd并开启服务完成任务使用外机访问server5本机的httpd默认发布网页生成访问日志Logstash读取自身server5的访问日志对读取的日志进行模板过滤后再输入到ES集群中存储。yum install -y httpd #安装httpd systemctl start httpd #开启服务1.9.3在默认发布目录下新建一个index.html用于外机访问echo www.westos.org /var/www/html/index.html1.9.4使用外机访问server5的 index.html 默认发布页生成访问日志ab -c1 -n 300 http://192.168.7.175/index.html1.9.5进入conf.d目录下新建一个grok.conf配置文件vim /etc/logsatsh/conf.d/grok.conf cat /usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-patterns-core-4.1.2/patterns/httpd #查看httpd的模板内容1.9.6在server5上启动配置查看输出结果/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/grok.conf二.应用日志采集——filebeat官方文档Filebeat overview | Filebeat Reference [7.6] | Elastichttps://www.elastic.co/guide/en/beats/filebeat/7.6/filebeat-overview.html2.1简单介绍1.说明Filebeat 是一个 Elastic Beat组件一款轻量级的日志数据转发器用于转发和集中日志数据。Filebeat 作为代理安装在指定的服务器上会监控指定的日志文件或位置收集日志事件并将其转发到Elasticsearch或 Logstash进行索引。2.工作原理启动 Filebeat 时它会启动一个或多个输入用于查找指定的日志数据位置。对于 Filebeat 找到的每个日志Filebeat 都会启动一个 Harvester收割机。每个 Harvester收割机 会读取单个日志以查找新内容并将新的日志数据发送到 libbeatlibbeat 会聚合事件并将聚合数据发送到 Filebeat 配置的输出。当filebeat意外崩溃或重启后Register会读取之前的断点位置不会再扫一遍同时能够有效防止重复采集2.2filebeat采集Web日志输出到ES集群2.2.1完成任务说明server4上安装filebeat收集server4上的Apache应用日志信息之后直接传输给ES集群存储准备工作请确认server1上存在httpd服务并启动yum install -y httpd #安装httpd服务 yum start httpd #启动服务2.2.2解压filebeat软件包并开启apache模块说明开启apache模块等于开启了apache采集权限,同时在该目录下创建一个软链接指向 apache.yml 文件注意apache.yml文件默认不存在需要你手动启用apache模块rpm -ivh filebeat-7.6.1-x86_64.rpm cd /etc/filebeat/moudle.d filebeat modules enable apache #启动apache模块2.2.3修改apache.yml文件配置说明修改apache.yml文件添加应用服务日志路径vim /etc/filebeat/modules.d/apache.yml #编辑apache.yml文件2.2.4修改filebeat.yml文件说明指明web日志输出的ES集群位置并完成语法验证vim /etc/filebeat/filebeat.yml #编辑apache.yml文件 filebeat test config -c /etc/filebeat/filebeat.yml #测试filebeat.yml的语法2.2.5开启filebeat服务说明测试filebeat与ES的连接情况并开启服务filebeat test output -c /etc/filebeat/filebeat.yml #测试与 ES 的连接 systemctl enable --now filebeat2.2.6查看是否获取到web服务日志说明进入ES-head可视化界面查看是否获取到web服务日志2.3filebeat采集Apache日志中间由Logstash最后输出到ES集群补充2.3.1完成任务说明server3上安装filebeat收集server3上的日志信息传输给server5的logstash再由logstash处理后发送给ES集群。2.3.2解压filebeat软件包并开启apache模块说明开启apache模块等于开启了apache采集权限,同时在该目录下创建一个软链接指向 apache.yml 文件注意apache.yml文件默认不存在需要你手动启用apache模块rpm -ivh filebeat-7.6.1-x86_64.rpm cd /etc/filebeat/moudle.d filebeat modules enable apache #启动apache模块2.3.3修改apache.yml文件配置说明修改apache.yml文件添加应用服务日志路径vim /etc/filebeat/modules.d/apache.yml2.3.4修改filebeat.yml文件启动filebeat服务说明指明web日志输出的Logstash位置并完成语法验证启动服务vim /etc/filebeat/filebeat.yml #编辑apache.yml文件 filebeat test config -c /etc/filebeat/filebeat.yml #测试filebeat.yml的语法 systemctl start filebeat #开启服务2.3.5进入server5的配置目录下新建一个.conf文件说明切换到server5主机(Logsatsh)进入/etc/logstash/conf.d目录下创建一个beats.conf自定义文件编辑文件并重启服务server5cd /etc/logstash/conf.d/ vim beats.conf /usr/share/logstash/bin/logstash -rf /etc/logstash/conf.d/beats.conf参数-r启用配置文件的自动监控和热加载功能。-f告诉 Logstash 使用哪个配置文件来启动。2.3.6查看是否获取到server3的web服务日志说明进入ES-head可视化界面查看是否获取到server3的web服务日志三.数据可视化——Kibana3.1简单介绍1.说明Kibana 是 Elastic StackELK Stack中的数据可视化组件专门用于对 Elasticsearch 中存储的数据进行搜索、分析、图表展示和仪表盘管理。Kibana不存储数据它只是一个展示层通过 RESTful API 向 Elasticsearch 发送查询请求获取数据后以图形化方式呈现。2.默认端口port56013.2部署Kibana3.2.1安装kibana软件包rpm -ivh kibana-7.6.1-x86_64.rpm3.2.2修改kibana.yml文件说明指明kibana连接的ES集群在kibana.yml文件中任意选填一个ES集群中的主机IP即可cd /etc/kibana vim kibana.yml3.2.3设置界面语言为简体中文(可选)vim /etc/kibana/kibana.yml3.2.4启动服务进入kibana可视化界面说明启动服务并检查端口。有了端口后打开浏览器输入下载的kibana的主机IP:5601进入kibana主界面systemctl enable --now kibana netstat -antlp | grep :5601 #5601是kibana服务的默认端口 #或者使用ss命令查看端口 ss -tlp | grep :5601浏览器输入主机IP:56013.3kibana快速创建可视化界面3.3.1创建索引模式3.3.2创建数据可视化3.3.3刷新设置3.3.4创建仪表板说明创建仪表板有两种一种是直接在仪表板里创建新的数据可视化方法与上面的创建数据可视化一致另一种是导入之前建过的数据可视化这里我们选择导入