热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ELKday1Elasticsearch介绍与部署

文章目录ELK介绍与部署ELK常用架构及使用场景介绍:1)简单架构2)以Logstash作为日志搜集器3)以Beats作为日


文章目录

  • ELK介绍与部署
      • ELK 常用架构及使用场景介绍:
        • 1)简单架构
        • 2)以Logstash 作为日志搜集器
        • 3)以Beats 作为日志搜集器
        • 4)引入消息队列模式
  • ElasticSearch
    • 单节点部署
      • 1.安装
        • 1)rpm安装
        • 2)源码包安装
        • 3)docker安装
      • 2.配置
        • 1)开启内存锁定
        • 2)定义内存大小值
        • 3)修改es配置文件
        • 4)配置图形化管理界面
      • 4.启动
      • 5.测试访问
    • 多节点部署(部署主从)
        • 部署主节点es01
        • 部署从节点es-02
  • LogStach
      • 部署LogStach
        • rpm安装
      • 使用logstach
        • 输出
        • 读取
        • 分类
  • kibana
      • 部署kibana
      • 1.下载安装
      • 2.配置启动
      • 3.新增数据源


ELK介绍与部署


通俗来讲,ELK 是由 Elasticsearch、Logstash、Kibana 三个开源软件的组成的一个组合体,这三个软件当中,每个软件用于完成不同的功能,ELK 又称为 ELK stack,官方域名为 stactic.co,ELK stack 的主要优点有如下几个:
处理方式灵活:elasticsearch是实时全文索引,具有强大的搜索功能
配置相对简单:elasticsearch全部使用 JSON 接口,logstash 使用模块配置,kibana 的配置文件部分更简单。
检索性能高效:基于优秀的设计,虽然每次查询都是实时,但是也可以达到百亿级数据的查询秒级响应。
集群线性扩展:elasticsearch 和 logstash 都可以灵活线性扩展
前端操作绚丽:kibana的前端设计比较绚丽,而且操作简单

ELK使用场景:

​ 日志平台:利用elasticsearch的快速检索功能,在大量的数据当中可以快速查询需要的日志。

​ 订单平台:利用elasticsearch的快速检索功能,在大量的订单当中检索我们所需要的订单。

​ 搜索平台:利用elasticsearch的快速检索功能,在大量的数据中检索出我们所需要的数据。



ELK 常用架构及使用场景介绍:


1)简单架构

​ 这种架构非常简单,使用场景也有限。初学者可以搭建这个架构,了解 ELK 如何工作;在这种架构中,只有一个 Logstash、Elasticsearch 和 Kibana 实例。Logstash 通过输入插件从多种数据源(比如日志文件、标准输入 Stdin 等)获取数据,再经过滤插件加工数据,然后经 Elasticsearch 输出插件输出到 Elasticsearch,通过 Kibana 展示。

简单架构


2)以Logstash 作为日志搜集器

​ 这种结构因为需要在各个服务器上部署 Logstash,而它比较消耗 CPU 和内存资源,所以比较适合计算资源丰富的服务器,否则容易造成服务器性能下降,甚至可能导致无法正常工作。

以Logstash 作为日志搜集器


3)以Beats 作为日志搜集器

这种架构引入 Beats 作为日志搜集器。目前 Beats 包括四种:


  • Packetbeat(搜集网络流量数据);
  • Topbeat(搜集系统、进程和文件系统级别的 CPU 和内存使用情况等数据);
  • Filebeat(搜集文件数据);
  • Winlogbeat(搜集 Windows 事件日志数据)。

Beats 将搜集到的数据发送到 Logstash,经 Logstash 解析、过滤后,将其发送到 Elasticsearch 存储,并由 Kibana 呈现给用户。

以Beats 作为日志搜集器

​ 这种架构解决了 Logstash 在各服务器节点上占用系统资源高的问题。相比 Logstash,Beats 所占系统的 CPU 和内存几乎可以忽略不计。另外,Beats 和 Logstash 之间支持 SSL/TLS 加密传输,客户端和服务器双向认证,保证了通信安全。

​ 因此这种架构适合对数据安全性要求较高,同时各服务器性能比较敏感的场景。


4)引入消息队列模式

Beats 还不支持输出到消息队列(新版本除外:5.0版本及以上),所以在消息队列前后两端只能是 Logstash 实例。logstash从各个数据源搜集数据,不经过任何处理转换仅转发出到消息队列(kafka、redis、rabbitMQ等),后logstash从消息队列取数据进行转换分析过滤,输出到elasticsearch,并在kibana进行图形化展示

image-20210509105322975

​ 模式特点:这种架构适合于日志规模比较庞大的情况。但由于 Logstash 日志解析节点和 Elasticsearch 的负荷比较重,可将他们配置为集群模式,以分担负荷。引入消息队列,均衡了网络传输,从而降低了网络闭塞,尤其是丢失数据的可能性,但依然存在 Logstash 占用系统资源过多的问题

工作流程:Filebeat采集—> logstash转发到kafka—> logstash处理从kafka缓存的数据进行分析—> 输出到es—> 显示在kibana

Elasticsearch单节点部署


Elasticsearch是一个高度可扩展的开源全文搜索和分析引擎,它可实现数据的实时全文搜索、支持分布式可实现高可用、提供 API 接口,可以处理大规模日志数据,比如 Nginx、Tomcat、系统日志等功能。



ElasticSearch

ElasticSearch:数据搜索引擎


单节点部署


一般部署elasticsearch有三种方式:

rpm包安装

源码包安装

docker安装


ElasticSearch官网下载地址:https://www.elastic.co/cn/downloads/elasticsearch
官网其他版本安装包下载地址 :https://www.elastic.co/cn/downloads/past-releases#elasticsearch官方文档参考:
Filebeat:
https://www.elastic.co/cn/products/beats/filebeat
https://www.elastic.co/guide/en/beats/filebeat/5.6/index.htmlLogstash:
https://www.elastic.co/cn/products/logstash
https://www.elastic.co/guide/en/logstash/5.6/index.htmlKibana:
https://www.elastic.co/cn/products/kibana
https://www.elastic.co/guide/en/kibana/5.5/index.htmlElasticsearch:
https://www.elastic.co/cn/products/elasticsearch
https://www.elastic.co/guide/en/elasticsearch/reference/5.6/index.htmlelasticsearch中文社区:
https://elasticsearch.cn/

1.安装


  • 单节点规划

主机名外网IP内外IP内存硬盘
es-01192.168.15.70172.16.1.702G及以上30G及以上主节点

  • 系统优化

# 关闭selinux
getenforce 0# 关闭防火墙
systemctl disable --now firewalld# 关闭NetworkManager
systemctl disable --now NetworkManager# 设置一下时区
timedatectl set-timezone Asia/Shanghai# 同步时间
ntpdate time.nist.gpv
# 设置程序可以打开的文件数,可清空后再新加
cat > /etc/security/limits.conf <<EOF
* soft memlock unlimited
* hard memlock unlimited
* soft nofile 131072
* hard nofile 131072
EOF
# 需重启系统
reboot

  • 以下有三中安装方式

1&#xff09;rpm安装

# 下载安装包
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.12.1-x86_64.rpm
yum localinstall -y elasticsearch-7.12.1-x86_64.rpm# elasticsearch是依赖于Java
yum install java-1.8.0* -y# 验证Java
[root&#64;es-01 ~]# java -version
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)

2&#xff09;源码包安装

# 下载源码包
wget https://github.com/elastic/elasticsearch/archive/refs/tags/elasticsearch-7.12.1-linux-x86_64.tar.gz# 解压
tar xf elasticsearch-7.12.1-linux-x86_64.tar.gz -C /usr/local/# elasticsearch是依赖于Java
yum install java-1.8.0* -y# 验证Java
[root&#64;es-01 ~]# java -version
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)

3&#xff09;docker安装


  • cluster.name&#xff1a;集群名

docker run -p 9200:9200 -p 9300:9300 -e "cluster.name&#61;[集群名]" docker.elastic.co/elasticsearch/elasticsearch:7.12.1

2.配置


1&#xff09;开启内存锁定


  • elastcsearch设置内存锁定

vim /usr/lib/systemd/system/elasticsearch.service
# 在 [Service] 下面增加
LimitMEMLOCK&#61;infinity# 重载
systemctl daemon-reload

  • 查看完整配置文件内容&#xff08;源码包安装的默认没有&#xff09;

[root&#64;es-01 ~]# cat /usr/lib/systemd/system/elasticsearch.service
[Unit]
Description&#61;Elasticsearch
Documentation&#61;https://www.elastic.co
Wants&#61;network-online.target
After&#61;network-online.target[Service]
LimitMEMLOCK&#61;infinity
Type&#61;notify
RuntimeDirectory&#61;elasticsearch
PrivateTmp&#61;true
Environment&#61;ES_HOME&#61;/usr/share/elasticsearch
Environment&#61;ES_PATH_CONF&#61;/etc/elasticsearch
Environment&#61;PID_DIR&#61;/var/run/elasticsearch
Environment&#61;ES_SD_NOTIFY&#61;true
EnvironmentFile&#61;-/etc/sysconfig/elasticsearchWorkingDirectory&#61;/usr/share/elasticsearchUser&#61;elasticsearch
Group&#61;elasticsearchExecStart&#61;/usr/share/elasticsearch/bin/systemd-entrypoint -p ${PID_DIR}/elasticsearch.pid --quiet# StandardOutput is configured to redirect to journalctl since
# some error messages may be logged in standard output before
# elasticsearch logging system is initialized. Elasticsearch
# stores its logs in /var/log/elasticsearch and does not use
# journalctl by default. If you also want to enable journalctl
# logging, you can simply remove the "quiet" option from ExecStart.
StandardOutput&#61;journal
StandardError&#61;inherit# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE&#61;65535# Specifies the maximum number of processes
LimitNPROC&#61;4096# Specifies the maximum size of virtual memory
LimitAS&#61;infinity# Specifies the maximum file size
LimitFSIZE&#61;infinity# Disable timeout logic and wait until process is stopped
TimeoutStopSec&#61;0# SIGTERM signal is used to stop the Java process
KillSignal&#61;SIGTERM# Send the signal only to the JVM rather than its control group
KillMode&#61;process# Java process is never killed
SendSIGKILL&#61;no# When a JVM receives a SIGTERM signal it exits with code 143
SuccessExitStatus&#61;143# Allow a slow startup before the systemd notifier module kicks in to extend the timeout
TimeoutStartSec&#61;75[Install]
WantedBy&#61;multi-user.target# Built for packages-7.12.1 (packages)

2&#xff09;定义内存大小值


  • 修改elasticsearch锁定内存大小
  • 最大锁定内存与最小锁定内存一般设为一致

vim /etc/elasticsearch/jvm.options
# 最大锁定内存
-Xms1g
# 最大锁定内存
-Xmx1g

3&#xff09;修改es配置文件


  • 清空文件&#xff0c;copy即可&#xff0c;注意节点名称需要修改~

[root&#64;es-01 ~]# vim /etc/elasticsearch/elasticsearch.yml
[root&#64;es-01 ~]# grep -E &#39;^[^#]&#39; /etc/elasticsearch/elasticsearch.yml# # 设置集群名称
cluster.name: Peng-by-es
# # 设置集群节点名称&#xff08;节点名称在集群中唯一&#xff09;
node.name: Peng-node-01
# # 设置数据存放目录
path.data: /var/lib/elasticsearch
# # 设置日志存放目录
path.logs: /var/log/elasticsearch
# # 设置内存锁定
bootstrap.memory_lock: true
# # 设置监听的IP&#xff0c;可监听所有
network.host: 0.0.0.0
# # 设置监听的端口
http.port: 9200
# # 开启跨域功能
http.cors.enabled: true
http.cors.allow-origin: "*"
# # 设置主节点&#xff08;单台可不设置&#xff09;
cluster.initial_master_nodes: ["172.16.1.71"]
# # 设置参与选举master的策略
discovery.zen.minimum_master_nodes: 2
# # 设置节点&#xff08;所有&#xff09;
discovery.zen.ping.unicast.hosts: ["172.16.1.70","172.16.1.71"]
# # 是否具备参与选举为master节点的资格
node.master: true

  • 不同节点需修改的内容

# 设置集群节点名称&#xff08;节点名称在集群中唯一&#xff09;
node.name: Peng-node-01

4&#xff09;配置图形化管理界面


  • 此小结仅需主节点执行即可&#xff0c;可通过一个容器来管理多个节点
  • 需利用docker配置安装集群head插件&#xff0c;此步骤需在第5步测试访问后执行
  • docker安装&#xff0c;可配置安装集群head插件&#xff0c;主要是有图形化elastic search

# 安装docker
yum remove docker docker-common docker-selinux docker-engine -y
sudo yum install -y gcc gcc-c&#43;&#43; yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum clean all
yum makecache
yum install docker-ce -ysudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-&#39;EOF&#39;
{"registry-mirrors": ["https://xj6uu5rz.mirror.aliyuncs.com"]
}
EOF
# 启动docker
systemctl start --now docker # 拉取运行图形化管理界面镜像
docker run -d -p 9100:9100 alvinos/elasticsearch-head# 可通过图形界面访问了&#xff0c;添加主从后&#xff0c;可通过它来管理
http://192.168.12.71:9100 # 图形化管理界面

4.启动

# 启动
systemctl start elasticsearch.service # 可监控启动日志
[root&#64;es-01 ~]# tailf /var/log/elasticsearch/Peng-by-es.log# 检测启动端口
[root&#64;es-01 ~]# netstat -lntp | grep java
tcp6 0 0 :::9200 :::* LISTEN 2865/java
tcp6 0 0 :::9300 :::* LISTEN 2865/java

5.测试访问


  • 测试是否能够正常对外提供服务&#xff0c;通过IP&#43;9200端口访问

http://192.168.12.71:9200
http://192.168.12.71:9100 # 图形化管理界面

image-20210509160653458

图形化管理界面


多节点部署&#xff08;部署主从&#xff09;


elasticsearch是主从数据节点分离的&#xff0c;按照节点还可以分为热数据节点和冷数据节点。



  • 集群节点规划

主机名外网IP内外IP内存硬盘
es-01192.168.15.70172.16.1.702G及以上30G及以上主节点
es-02192.168.15.71172.16.1.712G及以上30G及以上从节点

部署主节点es01


  • 参考上述单节点部署&#xff08;包括优化&#xff09;&#xff0c;略 ~

部署从节点es-02


  • 参考上述单节点部署&#xff08;包括优化&#xff09;&#xff0c;略 ~
  • 修改配置文件

1.把主节点的拉过来&#xff0c;进行以下修改&#xff08;主节点也也要修改部分内容&#xff09;
scp 192.168.12.71:/etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/2.设置集群节点名称&#xff08;节点名称在集群中唯一&#xff09;
node.name: Peng-node-02&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;解释&#xff1a;
node.name: es-01 # 不参与选举为master节点
node.data: true # 不会存储数据生产中环境中参考配置&#xff1a;
默认情况下&#xff0c;每个节点都有成为主节点的资格&#xff0c;也会存储数据&#xff0c;还会处理客户端的请求&#xff1b;
生产中建议集群中设置3台以上的节点作为master节点【node.master: true node.data: false】&#xff1b;
这些节点只负责成为主节点&#xff0c;维护整个集群的状态&#xff1b;
再根据数据量设置一批data节点【node.master: false node.data: true】。

启动

systemctl start elasticsearch.servicePS&#xff1a;
做到这一步极其容易出现数据不一致的问题&#xff0c;反应到登录网页上就上明明好像能正常访问,其实它的的UUTD是错误的&#xff0c;中间若启动错误&#xff0c;并检查配置文件是否配置错误&#xff0c;进行重启。解决方法&#xff1a;
rm -rf /var/lib/elasticsearch/*
systemctl restart elasticsearch.service

  • 测试访问

http://192.168.12.71:9200
http://192.168.12.72:9200http://192.168.12.71:9100 # 图形化管理界面
Peng-node-01 # 主节点
Peng-node-01 # 从节点

  • 出现此页面即为添加索引成功

image-20210509220508418

image-20210509220234290


  • 若要追加索引信息&#xff0c;可点击复合查询继续编辑、提交&#xff08;别忘记勾选POST&#xff09;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gGzMji29-1632278713442)(https://i.loli.net/2021/05/09/dtXCgF1umcj7WOS.png)]


  • 测试集群性能&#xff08;已经创建一个索引&#xff09;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2UndyNuK-1632278713443)(1620443366552.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dXg7Y6Mw-1632278713444)(D:%5C&#64;%E4%B8%AA%E4%BA%BA%E8%B5%84%E6%96%99%5CLinux%5C%E5%AD%A6%E4%B9%A0%5C10-ELK-%E9%99%88%E9%98%B3%5Cday01%5C%E7%AC%94%E8%AE%B0%5C1620443389847.png)]


  • Elasticsearch监控分析

  • 通过浏览器访问&#xff1a;http://192.168.12.72:9200/_cluster/health?pretty&#61;true&#xff0c;例如对 status 进行分析&#xff1a;

    • green(绿色)就是运行在正常
    • yellow(黄色)表示副本分片丢失
    • red(红色)表示主分片丢失

image-20210509230445459


LogStach

LogStach&#xff1a;数据收集引擎


Logstash 是一个开源的数据收集引擎&#xff0c;可以水平伸缩&#xff0c;而且 logstash 整个 ELK 当中拥有最多插件的一个组件&#xff0c;其可以接收来自不同来源的数据并统一输出到指定的且可以是多个不同目的地。



部署LogStach


  • 所有节点

部署logstach分别有三种方式&#xff1a;

​ 1、rpm包安装

​ 2、源码包安装

​ 3、docker安装



rpm安装

# 下载安装包
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.12.1-x86_64.rpmyum localinstall -y logstash-7.12.1-x86_64.rpm # 对数据目录设置权限
chown -R logstash. /usr/share/logstash/

使用logstach


输出


  • 输入输出到shell控制台

[root&#64;es-01 ~]# /usr/share/logstash/bin/logstash -e &#39;input { stdin{} } output { stdout{ codec &#61;> rubydebug }}&#39;# 执行上述命令后&#xff0c;会打印出此内容&#xff0c;输入什么&#xff0c;则会打印什么
[INFO ] 2021-05-10 15:51:49.483 [Agent thread] agent - Pipelines running {:count&#61;>1, :running_pipelines&#61;>[:main], :non_running_pipelines&#61;>[]}
你好啊 # 输入一个你好啊&#xff0c;则会标准输出到屏幕
{"&#64;timestamp" &#61;> 2021-05-10T07:52:15.881Z,"host" &#61;> "es-01","&#64;version" &#61;> "1","message" &#61;> "你好啊"
}# 使用json&#xff0c;
{"message":"","&#64;version":"1","&#64;timestamp":"2021-05-10T07:55:07.833Z","host":"es-01"}hello
{"message":"hello","&#64;version":"1","&#64;timestamp":"2021-05-10T07:55:09.632Z","host":"es-01"}

  • logstach输出到文件当中

[root&#64;es-01 ~]# /usr/share/logstash/bin/logstash -e &#39;input { stdin{} } output { file { path &#61;> "/tmp/log-%{&#43;YYYY.MM.dd}-messages.log"}}&#39;
pipelines&#61;>[:main], :non_running_pipelines&#61;>[]}
你好呀 # 查看文件内容
[root&#64;es-01 ~]# cat /tmp/log-2021.05.10-messages.log
{"&#64;version":"1","message":"你好呀","&#64;timestamp":"2021-05-10T08:20:21.816Z","host":"es-01"}

  • logstach输出到elasticsearch当中

[root&#64;es-01 ~
]# /usr/share/logstash/bin/logstash -e &#39;input { stdin{} } output { elasticsearch {hosts &#61;> ["172.16.1.71:9200"] index &#61;> "mytest-%{&#43;YYYY.MM.dd}" }}&#39;
The stdin plugin is now waiting for input:
&#xff1b;[INFO ] 2021-05-12 18:53:47.182 [Agent thread] agent - Pipelines running {:count&#61;>1, :running_pipelines&#61;>[:main], :non_running_pipelines&#61;>[]}
你好&#xff0c;Elasticsearch&#xff01;
qq
你好&#xff0c;Elasticsearch&#xff01;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B1b018LY-1632278713445)(https://i.loli.net/2021/05/12/x6rkl92IWAaLSzP.png)]


  • logstach输出到redis当中

[root&#64;es-01 ~]# /usr/share/logstash/bin/logstash -e &#39;input { stdin{} } output {redis { host &#61;> "172.16.1.71" port &#61;> "6379" data_type &#61;> "list" key &#61;> "logstash-%{type}" }}&#39;
The stdin plugin is now waiting for input:
[INFO ] 2021-05-12 18:06:37.744 [Agent thread] agent - Pipelines running {:count&#61;>1, :running_pipelines&#61;>[:main], :non_running_pipelines&#61;>[]}
hello redis!
不错哦~[root&#64;es-01 ~]# redis-cli --raw
127.0.0.1:6379> KEYS *
logstash-%{type}
127.0.0.1:6379> lrange logstash-%{type} 0 -1
{"&#64;timestamp":"2021-05-12T10:06:51.509Z","&#64;version":"1","host":"es-01","message":"hello redis!"}
{"&#64;timestamp":"2021-05-12T10:08:38.769Z","&#64;version":"1","host":"es-01","message":"不错哦~"}

image-20210512185611122


读取


  • logstach读取日志文件

[root&#64;es-01 /opt]# /usr/share/logstash/bin/logstash -e &#39;input { file { path &#61;> "/var/log/messages" } } output { elasticsearch {hosts &#61;> ["172.16.1.70:9200"] index &#61;> "system-log-%{&#43;YYYY.MM.dd}" }}&#39;

  • 在标准输出中读取

[root&#64;es-01 /opt]# /usr/share/logstash/bin/logstash -e &#39;input { stdin{} } output { elasticsearch {hosts &#61;> ["172.16.1.70:9200"] index &#61;> "system-stdin-%{&#43;YYYY.MM.dd}" }}&#39;

分类


  • 从多个文件中读取文件

path &#61;> "/var/log/messages" #日志路径
type &#61;> "systemlog" #事件的唯一类型
start_position &#61;> "beginning" #第一次收集日志的位置
stat_interval &#61;> "3" #日志收集的间隔时间[root&#64;es-01 /opt]# /usr/share/logstash/bin/logstash -e &#39;input { file{ path &#61;> "/var/log/messages" type &#61;> "systemlog" start_position &#61;> "beginning" stat_interval &#61;> "3" } file{ path &#61;> "/var/log/cron" type &#61;> "systemcron" start_position &#61;> "beginning" stat_interval &#61;> "3" } } output { elasticsearch {hosts &#61;> ["172.16.1.70:9200"] index &#61;> "system-stdin-%{&#43;YYYY.MM.dd}" }}&#39;

  • 分类输出多个数据仓库

[root&#64;es-01 /opt]# /usr/share/logstash/bin/logstash -e &#39;&#96;input { file{ path &#61;> "/var/log/messages" type &#61;> "systemlog" start_position &#61;> "beginning" stat_interval &#61;> "3" } file{ path &#61;> "/var/log/cron" type &#61;> "systemcron" start_position &#61;> "beginning" stat_interval &#61;> "3" } } output { if [type] &#61;&#61; "systemlog" { elasticsearch {hosts &#61;> ["172.16.1.71:9200"] index &#61;> "system-systemlog-%{&#43;YYYY.MM.dd}" }} if [type] &#61;&#61; "systemcron" { elasticsearch {hosts &#61;> ["172.16.1.71:9200"] index &#61;> "system-systemcron-%{&#43;YYYY.MM.dd}" } } }&#96;&#39;

  • 使用配置文件

# 将单引号内的数据拷贝到test.conf内
[root&#64;es-01 ~]# cat test.conf
input { file{ path &#61;> "/var/log/messages" type &#61;> "systemlog" start_position &#61;> "beginning" stat_interval &#61;> "3" } file{ path &#61;> "/var/log/cron" type &#61;> "systemcron" start_position &#61;> "beginning" stat_interval &#61;> "3" } } output { if [type] &#61;&#61; "systemlog" { elasticsearch {hosts &#61;> ["172.16.1.71:9200"] index &#61;> "system-systemlog-%{&#43;YYYY.MM.dd}" }} if [type] &#61;&#61; "systemcron" { elasticsearch {hosts &#61;> ["172.16.1.71:9200"] index &#61;> "system-systemcron-%{&#43;YYYY.MM.dd}" } } }# 测试配置文件
[root&#64;es-01 ~]# /usr/share/logstash/bin/logstash -f test.conf -t

1620447529142

# 使用配置文件
[root&#64;es-01 ~]# /usr/share/logstash/bin/logstash -f test.conf # 测试OK
[INFO ] 2021-05-12 22:22:20.822 [LogStash::Runner] runner - Using config.test_and_exit mode. Config Validation Result: OK. Exiting Logstash

kibana


Kibana 是一个通过调用 elasticsearch 服务器进行图形化展示搜索结果的开源项目。



部署kibana


1.下载安装

# 下载安装包
[root&#64;es-01 ~]# wget https://artifacts.elastic.co/downloads/kibana/kibana-7.12.1-x86_64.rpm
[root&#64;es-01 ~]# yum localinstall kibana-7.12.1-x86_64.rpm

2.配置启动

#修改配置
[root&#64;es-01 ~]# vim /etc/kibana/kibana.yml
# 打开注释并修改
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://172.16.2.71:9200"]# 启动
[root&#64;es-01 ~]# systemctl start --now kibana.service
[root&#64;es-01 ~]# netstat -lntp | grep 5601
tcp 0 0 0.0.0.0:5601 0.0.0.0:* LISTEN 18230/node访问&#xff1a;192.168.12.71:5601
# 若访问报错&#xff1a;Kibana server is not ready yet
# 报错原因&#xff1a;可能是修改配置文件错误&#xff0c;重启后产生了kibana索引数据&#xff0c;需删除后重启
解决方法&#xff1a;1. 停止kibana
systemctl stop kibana2. 删除kibana索引
curl -XDELETE http://localhost:9200/.kibana*3. 启动kibana
systemctl start kibana

3.新增数据源

image-20210512221114735

image-20210512221222186

image-20210512221348760

image-20210512221414061

image-20210512220544672

此时是没有数据的&#xff0c;因为logstash没有启动&#xff0c;需启动才行
# 启动logstash
[root&#64;es-01 ~]# /usr/share/logstash/bin/logstash -f test.conf
[root&#64;es-01 filebeat]# echo "~~~~~~~~~~~~~~~~~~~~~~~~" >> /var/log/cron
# 可查看多种数据&#xff0c;每echo一个内容&#xff0c;可再次刷新查看

image-20210512224143552


推荐阅读
  • Redis:缓存与内存数据库详解
    本文介绍了数据库的基本分类,重点探讨了关系型与非关系型数据库的区别,并详细解析了Redis作为非关系型数据库的特点、工作模式、优点及持久化机制。 ... [详细]
  • Java高级工程师学习路径及面试准备指南
    本文基于一位朋友的PDF面试经验整理,涵盖了Java高级工程师所需掌握的核心知识点,包括数据结构与算法、计算机网络、数据库、操作系统等多个方面,并提供了详细的参考资料和学习建议。 ... [详细]
  • 分布式计算助力链力实现毫秒级安全响应,确保100%数据准确性
    随着分布式计算技术的发展,其在数据存储、文件传输、在线视频、社交平台及去中心化金融等多个领域的应用日益广泛。国际知名企业如Firefox、Google、Opera、Netflix、OpenBazaar等均已采用该技术,推动了技术创新和服务升级。 ... [详细]
  • 本文详细介绍了Socket在Linux内核中的实现机制,包括基本的Socket结构、协议操作集以及不同协议下的具体实现。通过这些内容,读者可以更好地理解Socket的工作原理。 ... [详细]
  • 如何高效学习鸿蒙操作系统:开发者指南
    本文探讨了开发者如何更有效地学习鸿蒙操作系统,提供了来自行业专家的建议,包括系统化学习方法、职业规划建议以及具体的开发技巧。 ... [详细]
  • 一家位于长沙的知名网络安全企业,现面向全国诚聘高级后端开发工程师,特别欢迎具有一线城市经验的技术精英回归故乡,共创辉煌。 ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • 流处理中的计数挑战与解决方案
    本文探讨了在流处理中进行计数的各种技术和挑战,并基于作者在2016年圣何塞举行的Hadoop World大会上的演讲进行了深入分析。文章不仅介绍了传统批处理和Lambda架构的局限性,还详细探讨了流处理架构的优势及其在现代大数据应用中的重要作用。 ... [详细]
  • 深入探讨:Actor模型如何解决并发与分布式计算难题
    在现代软件开发中,高并发和分布式系统的设计面临着诸多挑战。本文基于Akka最新文档,详细探讨了Actor模型如何有效地解决这些挑战,并提供了对并发和分布式计算的新视角。 ... [详细]
  • 本文提供了一个详尽的前端开发资源列表,涵盖了从基础入门到高级应用的各个方面,包括HTML5、CSS3、JavaScript框架及库、移动开发、API接口、工具与插件等。 ... [详细]
  • Java虚拟机及其发展历程
    Java虚拟机(JVM)是每个Java开发者日常工作中不可或缺的一部分,但其背后的运作机制却往往显得神秘莫测。本文将探讨Java及其虚拟机的发展历程,帮助读者深入了解这一关键技术。 ... [详细]
  • 从理想主义者的内心深处萌发的技术信仰,推动了云原生技术在全球范围内的快速发展。本文将带你深入了解阿里巴巴在开源领域的贡献与成就。 ... [详细]
  • 1、什么是过滤器管道使用竖线(|)将两个命令隔开,竖线左边命令的输出就会作为竖线右边命令的输入。连续使用竖线表示第一个命令的输出会作为第二个命令的输入,第二个命令的输出又会作为第三个命令的输入, ... [详细]
  • 电商高并发解决方案详解
    本文以京东为例,详细探讨了电商中常见的高并发解决方案,包括多级缓存和Nginx限流技术,旨在帮助读者更好地理解和应用这些技术。 ... [详细]
  • RTThread线程间通信
    线程中通信在裸机编程中,经常会使用全局变量进行功能间的通信,如某些功能可能由于一些操作而改变全局变量的值,另一个功能对此全局变量进行读取& ... [详细]
author-avatar
_ZY寶貝_
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有