日志分析平台建设方案

1.建设原因

  • 日志文件分散在各个应用服务器,人员需要远程登录才能查看日志,不利于服务器安全管控,加大服务器的风险
  • 各服务器日志配置不统一,分布杂乱,需要进行规范与管理
  • 日志文件信息默认显示不够简洁直观,不利于问题的快速定位,降低排错效率

2.建设目标

  • 无需登录各线上服务器就能查看日志
  • 统一规范日志的配置和输出格式
  • 实时的将日志文件从服务器中迁出
  • 提供友好的日志的检索和统计分析的平台

3.平台选择

为了解决以上的日志问题,经过评估后,选择了ELK作为日志数据管理解决方案。它主要包括elasticsearch,logstash,kibana三个系统。由于logstash程序在启动时需要消耗较大的资源,在经过研究了解后,发现filebeat作为日志采集组件,因其使用go语言编写的特性,其性能明显强于logstash;还有部署简单,对接方便等优点。因此选用filebeat作为各客户端的日志采集工具,logstah仅用来过滤采集的日志并输出到es。

为了使日志的采集与输出更加平滑可靠,选择了redis作为数据的缓存,且elk对redis的兼容性也很好。因此日志平台服务选择使用ELK+reds+filebeat来搭建

4.系统架构

  • 最左边的是各业务的服务器,上面安装filebeat做日志采集,同时把采集的日志发送给redis服务
  • logstash服务会实时的去redis服务里拉数据,并经过过滤与修改转发给es服务
  • es会将收到的数据写入磁盘持久化并建立索引库
  • kibana主要协调es,处理数据的检索请求和数据展示

5.实施方案

系统配置

1.软件

  • elasticsearch-7.1.1-x86_64
  • logstash-7.1.1-x86_64
  • kibana-7.1.1-x86_64
  • filebeat-7.1.1-x86_64
  • jdk-1.8.0
  • redis-2.8.17

2.硬件

两台linux服务器,centos7系统

配置:内存:16GB,硬盘:200G,CPU:4核8线程 网络:50M带宽;

系统搭建

  • 收集192.168.10.36服务器中/usr/local/nginx/log目录下的access.log和error.log
  • 收集192.168.10.72服务器中/usr/local/nginx/log目录下的access.log和error.log

redis

编辑安装脚本,变量部分根据实际需求更改
[root@localhost ~]# cat redis_install.sh
#!/bin/bash
RD_SRC_PATH=/root
RD_TAR_NAME=redis-2.8.17.tar.gz
RD_INSTALL_NAME=redis-2.8.17
RD_INSTALL_PATH=/usr/local
PORT=6378
PASSWD=123
yum -y install gcc gcc++
if [ $? -ne 0 ];thenecho "yum failed"exit 1
fi
mv ${RD_SRC_PATH}/${RD_TAR_NAME} ${RD_INSTALL_PATH}
cd ${RD_INSTALL_PATH}
tar xf ${RD_TAR_NAME}
cd ${RD_INSTALL_NAME}
make##修改配置文件
sed -ri "s#(daemonize ).*#\1yes#g" ${RD_INSTALL_PATH}/${RD_INSTALL_NAME}/redis.conf
sed -ri "s#(pidfile ).*#\1/var/run/redis_${PORT}.pid#g" ${RD_INSTALL_PATH}/${RD_INSTALL_NAME}/redis.conf
sed -ri "s#^(port).*#\1 6378#g" ${RD_INSTALL_PATH}/${RD_INSTALL_NAME}/redis.conf
sed -ri "s#^(logfile).*#\1 ${RD_INSTALL_PATH}/${RD_INSTALL_NAME}/redis.log#g" ${RD_INSTALL_PATH}/${RD_INSTALL_NAME}/redis.conf
echo "requirepass $PASSWD" >> ${RD_INSTALL_PATH}/${RD_INSTALL_NAME}/redis.conf
cp -a /root/redis /etc/rc.d/init.d
chkconfig --add redis编写自启动脚本
[root@localhost ~]# cat redis
#!/bin/bash
#chkconfig: 2345 80 80
#description:redis
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
REDISPORT=6378
PASSWORD=123
REDISPATH=/usr/local/redis-2.8.17/src
CONFSPATH=/usr/local/redis-2.8.17
EXEC=${REDISPATH}/redis-server
CLIEXEC=${REDISPATH}/redis-cli
PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="${CONFSPATH}/redis.conf"
case "$1" in  start)  if [ -f $PIDFILE ]  then  echo "$PIDFILE exists, process is already running or crashed"  else  echo "Starting Redis server..."  $EXEC $CONF & fiif [ "$?"="0" ]     then     echo "Redis is running..."    fi    ;;  stop)  if [ ! -f $PIDFILE ]  then  echo "$PIDFILE does not exist, process is not running"  else  PID=$(cat $PIDFILE)  echo "Stopping ..."  $CLIEXEC -p $REDISPORT -a "$PASSWORD" shutdownsleep 2     while [ -x /proc/${PID} ]  do  echo "Waiting for Redis to shutdown ..."  sleep 1  done  echo "Redis stopped"  fi  ;;restart)${0} stop     ${0} start     ;; *)  echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2  ;;
esac  给脚本赋予执行权限,并运行脚本
[root@localhost ~]# chmod +x redis redis_install.sh
[root@localhost ~]# bash redis_install.sh启动redis服务,若有报警建议根据报警信息进行对应操作,否则容易导致数据丢失
[root@localhost ~]# service redis start
[4789] 31 May 11:12:59.355 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.

es

yum -y install java-1.8.0
下载es安装包
[root@localhost local]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.1.1-linux-x86_64.rpm
[root@localhost local]# yum -y localinstall  elasticsearch-7.1.1-linux-x86_64.rpm更改以下文件,以免启动时报错
[root@localhost local]# tail /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65535
[root@localhost local]# sysctl -w vm.max_map_count=262144更改es配置文件,指定host为本地主机ip,由于搭建为单机,因此指定一个node号即可
注意:有时指定本地ip为host时,kibana会识别不到es的证书,导致kibana打不开(网页报错:kibana is not ready)。建议在安装es和kibana时,先不要更改配置,待kibana连接成功,可访问时,再修改相应的配置,最后重启。
[root@elk ~]# cat /usr/local/elasticsearch-7.1.1/config/elasticsearch.yml |grep -Ev "^#"
network.host: 192.168.10.36
http.port: 9200
cluster.initial_master_nodes: ["node-1"](集群初始主节点,有多少个节点就分配几个node号)切换到elk用户 启动es服务
[root@elk ~]# su - elk -s /bin/bash
-bash-4.2$ /usr/local/elasticsearch-7.1.1/bin/elasticsearch -d查看服务是否启动成功
[root@elk ~]# ss -antl|grep 9
LISTEN     0      128       ::ffff:192.168.10.36:9200                    :::*
LISTEN     0      128       ::ffff:192.168.10.36:9300                    :::*      创建配置文件,使es服务开机自启
[root@elk ~]# cat /etc/systemd/system/elasticsearch.service
[Unit]
Description=elasticsearch
[Service]
User=elk
LimitNOFILE=100000
LimitNPROC=100000
ExecStart=/usr/local/elasticsearch-7.1.1/bin/elasticsearch -d
[Install]
WantedBy=multi-user.target
[root@elk ~]# systemctl enable elasticsearch
Created symlink from /etc/systemd/system/multi-user.target.wants/elasticsearch.service to /etc/systemd/system/elasticsearch.service.

filebeat

  • 192.168.10.36服务器
客户端安装filebeat
[root@wind ~]# yum -y localinstall filebeat-7.1.1-x86_64.rpm配置yml文件
[root@wind ~]# cat /etc/filebeat/filebeat.yml 指定日志的输入源,即需要收集的日志路径
filebeat.inputs:
- type: log                             #指定类型为logenabled: true                          #启用该配置paths:- "/usr/local/nginx/log/access.log"   #日志路径tags:- "scgj36_nginx_access"             #指定日志的标签,达到不同的日志进行分类的效果fields:list: "scgj36_nginx_access"          #自定义变量,为后面的logstash日志过滤提供筛选条件- type: logenabled: truepaths:- "/usr/local/nginx/log/error.log"tags:- "scgj36_nginx_error"fields:list: "scgj36_nginx_error"output.redis:                         #指定输出源,即将收集到的日志数据传到何处,此处为redishosts: "192.168.10.36:6378"           #指定redis的ip和端口key: "%{[fields.list]}"             #指定将日志数据存放在哪个key中,此处运用了变量,根据                                       list的值来决定key的值password: "123"                        #redis验证密码启动服务
[root@wind ~]# systemctl enable filebeat && systemctl start filebeat
  • 192.168.10.72服务器
[root@lianxi2 ~]# cat /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: logenabled: truepaths:- "/usr/local/nginx/log/access.log"tags:- "nmgcw72_nginx_access"fields:list: "nmgcw72_nginx_access"
- type: logenabled: truepaths:- "/usr/local/nginx/log/error.log"tags:- "nmgcw72_nginx_error"fields:list: "nmgcw72_nginx_error"output.redis:hosts: "192.168.10.36:6378"key: "%{[fields.list]}"password: "123"

logstash

下载rpm包,并安装
[root@localhost ~]# yum -y install logstash-7.1.1.rpm创建logstash配置文件
[root@localhost ~]# cat /etc/logstash/conf.d/logstash_nginx.conf
指定redis为输入源
input {redis {host => "192.168.10.36"             #指定redis的iptype => "scgj36_nginx_access"      #指定type类型,对不同日志做区分port => "6378"                       #redis端口号key => "scgj36_nginx_access"     #key值data_type => "list"                  #数据的类型,此处选择listpassword  => "123"                  #redis的密码}redis { host => "192.168.10.36"type => "scgj36_nginx_error"port => "6378"key => "scgj36_nginx_error"data_type => "list"password  => "123"}redis { host => "192.168.10.36"type => "nmgcw72_nginx_access"port => "6378"key => "nmgcw72_nginx_access"data_type => "list"password  => "123"}redis { host => "192.168.10.36"type => "nmgcw72_nginx_error"port => "6378"key => "nmgcw72_nginx_error"data_type => "list"password  => "123"}}对收集到的日志做过滤
#如果日志的类型是以access结尾的,则对日志进行以下过滤
filter {if [type] =~ "access$" {#过滤的正则规则为%{COMBINEDAPACHELOG}(此规则是软件自带的规则,使用find / -name patterns/httpd可以找到路径)grok {match => { "message" => "%{COMBINEDAPACHELOG}" }}#配置geoip,此插件可以将ip地址转换为对应的地理坐标geoip {source => "clientip"target => "geoip"database => "/usr/share/elasticsearch/modules/ingest-geoip/GeoLite2-City.mmdb"add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}" ]}#对提取出来的日志进行修改mutate {convert => [ "[geoip][coordinates]", "float" ]convert => [ "response","integer" ]convert => [ "bytes","integer" ]remove_field => "message"remove_field => "timestamp"}if [user_agent] =~ ".*10\.0\;.*"{mutate {replace => { "user_agent" => "win10" }}}if [user_agent] =~ ".*Apache.*"{mutate {replace => { "user_agent" => "Linux" }}}}#当type不为access结尾时(即错误日志),按以下正则匹配else{grok {match => { "message" => "(?<timestamp>%{YEAR}[./-]%{MONTHNUM}[./-]%{MONTHDAY}[- ]%{TIME}) \[%{LOGLEVEL:severity}\] %{POSINT:pid}#%{NUMBER}: %{GREEDYDATA:errormessage}(?:, client: (?<clientip>%{IP}|%{HOSTNAME}))(?:, server: %{IPORHOST:server}?)(?:, request: %{QS:request})?(?:, upstream: (?<upstream>\"%{URI}\"|%{QS}))?(?:, host: %{QS:request_host})?(?:, referrer: \"%{URI:referrer}\")?" }}#geoip插件geoip {source => "clientip"target => "geoip"database => "/usr/share/elasticsearch/modules/ingest-geoip/GeoLite2-City.mmdb"add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}" ]}#修改过滤后的日志mutate {convert => [ "[geoip][coordinates]", "float" ]convert => [ "response","integer" ]convert => [ "bytes","integer" ]remove_field => "message"remove_field => "timestamp"}}}指定输出源,按照type的不同,输出不同的索引(idnex)给es,且索引按日期动态生成
output {if [type] == "scgj36_nginx_access"{elasticsearch {hosts => "192.168.10.36:9200"index => "yl_scgj_access_%{+YYYY.MM.dd}"}}if [type] == "scgj36_nginx_error"{elasticsearch {hosts => "192.168.10.36:9200"index => "yl_scgj_error_%{+YYYY.MM.dd}"}       }       if [type] == "nmgcw72_nginx_access"{elasticsearch {hosts => "192.168.10.36:9200"index => "yl_nmgcw_access_%{+YYYY.MM.dd}"}       }if [type] == "nmgcw72_nginx_error"{elasticsearch {hosts => "192.168.10.36:9200"index => "yl_nmgcw_error_%{+YYYY.MM.dd}"}}
}logstash.yml修改一下bind IP,方便后期直接输出日志至logstash
[root@localhost ~]# cat /etc/logstash/logstash.yml|grep -Ev ^#
http.host: "192.168.10.36"启动logstash
[root@localhost ~]# systemctl enable logstash
[root@localhost ~]# systemctl start logstash

logstahs配置文件大致解释:

Logstash 分为 Input、Output、Filter、Codec 等多种plugins。
Input:数据的输入源也支持多种插件,如elk官网的beats、file、graphite、http、kafka、redis、exec等等等、、、
Output:数据的输出目的也支持多种插件,如本文的elasticsearch,当然这可能也是最常用的一种输出。以及exec、stdout终端、graphite、http、zabbix、nagios、redmine等等、、、
Filter:使用过滤器根据日志事件的特征,对数据事件进行处理过滤后,在输出。支持grok、date、geoip、mutate、ruby、json、kv、csv、checksum、dns、drop、xml等等、、
Codec:编码插件,改变事件数据的表示方式,它可以作为对输入或输出运行该过滤。和其它产品结合,如rubydebug、graphite、fluent、nmap等等。
具体以上插件的细节可以去官网,介绍的挺详细的。下面说下该篇中的配置文件的含义:

filter段:
 grok:数据结构化转换工具
  match:匹配条件格式,将nginx日志作为message变量,并应用grok条件NGINXACCESS进行转换
 geoip:该过滤器从geoip中匹配ip字段,显示该ip的地理位置
  source:ip来源字段,这里我们选择的是日志文件中的clientip
  target:指定插入的logstash字断目标存储为geoip
  database:geoip数据库的存放路径
  add_field: 增加的字段,坐标经度
  add_field: 增加的字段,坐标纬度
 mutate: 数据的修改、删除、类型转换
  convert: 将坐标转为float类型
  convert: http的响应代码字段转换成 int
  convert: http的传输字节转换成int
  remove_field: 移除message和timestamp 的内容,因为数据已经过滤了一份,这里不必在用到该字段了。不然会相当于存两份

if语句:条件语句,由于在后续的可视化中,需要对访问客户的操作系统进行统计,而user_agent字段有很长一段,不利于图形展示,因此将user_agent字段提取出来后修改为只包含操作系统信息的简短信息

*output段:
 elasticsearch:输出到es中
  host: es的主机ip+端口或者es 的FQDN+端口
  index: 为日志创建索引,这里也就是kibana那里添加索引时的名称

kibana

安装kibana
[root@localhost ~]# yum -y localinstall  kibana-7.1.1-x86_64.rpm修改配置文件
[root@localhost ~]# cat /etc/kibana/kibana.yml |grep -E "host:|hosts:"
server.host: "192.168.10.36"
elasticsearch.url: ["http://192.168.10.36:9200"]启动服务
[root@localhost ~]# systemctl enable kibana && systemctl start kibana

一、Kibana之Visualize 功能

在首页上Visualize 标签页用来设计可视化图形。你可以保存之前在discovery中的搜索来进行画图,然后保存该visualize,或者加载合并到 dashboard 里。一个可视化可以基于以下几种数据源类型:
一个新的交互式搜索
一个已保存的搜索
一个已保存的可视化

下面是kibana自带的几种visualize类型

类型               用途
Area chart       用区块图来可视化多个不同序列的总体贡献。
Data table       用数据表来显示聚合的原始数据。其他可视化可以通过点击底部的方式显示数据表。
Line chart        用折线图来比较不同序列。
Markdown widget    用 Markdown 显示自定义格式的信息或和你仪表盘有关的用法说明。
Metric         用指标可视化在你仪表盘上显示单个数字。
Pie chart        用饼图来显示每个来源对总体的贡献。
Tile map       用瓦片地图将聚合结果和经纬度联系起来。
Vertical bar chart    用垂直条形图作为一个通用图形。

画图步骤:Visualize–>选择类型–>搜索栏筛选结果1–> 在2工具栏内选择聚合构建器–>3实时预览–>将该图保存。

下面主要说下http 服务器的一些图的画法。至于其它的分析,还有待学习。

二、HTTP dashboard的一步步构建

1.字段以及字段所对应的值,如下:

2.Area chart类型,统计网站各个时间段的请求响应传输量分布

之后保存为visualize,这些图放在dashboard上会”实时“刷新的。

3.Data table类型。统计访问请求页面TOP10

4.Line chart 统计ip在某个时间段的点击量

  1. Gauge 查看网站来访者数量(如果校园网的话或者代理的话,可能反映的不太真实)

6.Pie chart 大饼,统计响应码所回应的请求页面分布图

7.Coordinate Map 网站访问者的ip 归属地理位置

8.Vertical bar chart ,以客户端使用的代理类型为区别,查看某时间段响应的响应代码

9.Pie 客户端操作系统扇形图

四、最终的dashboard

图1:

图2:

6.优化方案

logstash优化相关配置

  • pipeline线程数,官方建议等于cpu的内核数

默认配置:pipeworkers:2

可优化为:pipeline.workers:cpu内核数

  • 实际output时的线程数

默认配置:pipeline.output.workers:1

可优化为:pipeline.output.workers:不超过pipeline线程数

  • 每次发送的事件数

默认配置:pipeline.batch.size:125

可优化为:pipeline.batch.size:1000

  • 发送延迟

默认配置:pipeline.batch.delay:5

可优化为:pipeline.batch.size:10

通过设置-w参数指定pipeline worker的数量,也可直接修改配置文件logstash.yml.这会提高filter和output的线程数,若需要的话,将其设置为cpu核心数的几倍也是可以的,线程在i/o上是空闲的

默认每个输出在一个pipline worker线程上活动,可以在输出output中设置workers设置,不要将该值设置大于pipeline worker数。

还可以设置输出的batch_size数,例如ES输出和batch size一致

filter设置 multiline后,pipeline worker会自动变为1,因此建议在filebeat中使用multiline

logstash是一个基于java开发的程序,需要运行在Jvm中,可以配置jvm.option来针对jvm进行设定。比如内存的最大最小,垃圾清理机制等等。jvm的内存分配不能太大也不能太小,太大会拖慢系统,太小导致无法启动。推荐如下:

-Xms1g #最小使用内存

-Xmx1 g #最大内存

redis优化

  • filebeat可以直接输入到logstash,但logstash没有存储功能,如果需要重启需要先停所有连入的beat,再停logstash,造成运维麻烦;另外如果logstash发生异常则会丢失数据;引入redsi作为数据缓冲池,当logstash异常停止后可以从redis的客户端看到缓存的数据
  • redis可以使用list或发布订阅存储模式
  • redis的bind改为0.0.0.0 #不要监听本地端口
  • redis添加密码,以安全运行
  • save “” appendonly no #只做队列,没必要持久存储,把所有持久化功能关掉(快照和追加式文件),性能更好
  • 把内存的淘汰策略关掉,把内存空间最大化;maxmemory 0

es节点优化

  • 服务器硬件配置,Os参数

    • /etc/sysctl.conf
     vm.swappiness = 1                     #ES 推荐将此参数设置为 1,大幅降低 swap 分区的大小,强制最大程度的使用内存,注意,这里不要设置为 0, 这会很可能会造成 OOM
    ② net.core.somaxconn = 65535     #定义了每个端口最大的监听队列的长度
    ③ vm.max_map_count= 262144    #限制一个进程可以拥有的VMA(虚拟内存区域)的数量。虚拟内存区域是一个连续的虚拟地址空间区域。当VMA 的数量超过这个值,OOM
    ④ fs.file-max = 518144
    

    sysctl -p 生效

    • limits.conf设置
    vim /etc/security/limits.conf
    elasticsearch    soft    nofile          65535
    elasticsearch    hard    nofile          65535
    elasticsearch    soft    memlock         unlimited
    elasticsearch    hard    memlock         unlimited
    
    • 为了使以上参数永久生效,还要设置两个地方
    vim /etc/pam.d/common-session-noninteractive
    vim /etc/pam.d/common-session
    添加如下属性:
    session required pam_limits.so
    需重启后生效
    
  • elasticsearch 中的JVM配置文件

-Xms2g

-Xmx2g

① 将最小堆大小(Xms)和最大堆大小(Xmx)设置为彼此相等。

② Elasticsearch可用的堆越多,可用于缓存的内存就越多。但请注意,太多的堆可能会使您长时间垃圾收集暂停。

③ 设置Xmx为不超过物理RAM的50%,以确保有足够的物理内存留给内核文件系统缓存。

④ 不要设置Xmx为JVM用于压缩对象指针的临界值以上;确切的截止值有所不同,但接近32 GB。不要超过32G,如果空间大,多跑几个实例,不要让一个实例太大内存

  • elasticsearch 配置文件优化参数

① vim elasticsearch.yml

bootstrap.memory_lock: true  #锁住内存,不使用swap
#缓存、线程等优化如下
bootstrap.mlockall: true
transport.tcp.compress: true
indices.fielddata.cache.size: 40%
indices.cache.filter.size: 30%
indices.cache.filter.terms.size: 1024mb
threadpool:search:type: cachedsize: 100queue_size: 2000

② 设置环境变量

vim /etc/profile.d/elasticsearch.sh export ES_HEAP_SIZE=2g #Heap Size不超过物理内存的一半,且小于32G

日志分析管理系统ELK+redis+filebeat搭建相关推荐

  1. 搭建ELK日志分析平台(下)—— 搭建kibana和logstash服务器

    27.6 安装kibana 27.7 安装logstash 27.8 配置logstash 27.9 kibana上查看日志 27.10 收集nginx日志 27.11 使用beats采集日志 本文是 ...

  2. 视频教程-【2019精品课】构建ELK海量日志分析平台-ELK

    [2019精品课]构建ELK海量日志分析平台 10年一线开发及项目管理经验,6年以上大数据项目架构.实施.开发与运维经验,骨灰级大数据玩家,对Hadoop.Storm.Spark.Flink.Kyli ...

  3. 企业级日志分析系统ELK(Elasticsearch , Logstash, Kibana)

    企业级日志分析系统ELK(Elasticsearch , Logstash, Kibana) 前言 一.ELK概述 1.ELK日志分析系统 2.ELK日志处理特点 3.Elasticsearch概述 ...

  4. 日志分析平台-ELK

    日志分析平台-ELK 此次主要是搭建带有redis缓存层的ELK日志分析平台 环境: node1:172.16.1.152 node2:  172.16.1.153 一:配置基础环境 所有节点关闭se ...

  5. 分布式实时日志分析解决方案ELK部署架构

    分布式实时日志分析解决方案ELK部署架构 参考文章: (1)分布式实时日志分析解决方案ELK部署架构 (2)https://www.cnblogs.com/zhangjianbin/p/7965867 ...

  6. 日志分析平台ELK部署初学

    1)ELK介绍 ELK官方网站:https://www.elastic.co/products elk-docker 官网:http://elk-docker.readthedocs.org/#ins ...

  7. 运维实操——日志分析系统ELK(中)之logstash采集数据、伪装rsyslog、多行过滤、grok切片

    日志分析系统ELK(中)之logstash 1.什么是logstash? 2.Logstash安装 3.logstash简单命令行测试 4.logstash文件测试 (1)命令行输入,输出到文件 (2 ...

  8. 搭建可视化日志分析平台ELK

    文章目录 ELK是什么 为什么要用ELK ELK如何安装搭建 ElasticSearch 安装 一.下载Elasticsearch源码 二.安装 三.Elasticsearch配置 四.新增运行Ela ...

  9. 开源实时日志分析平台—ELK

    ELK简介 什么是日志 日志就是程序产生的,遵循一定格式(通常包含时间戳)的文本数据. 通常日志由服务器生成,输出到不同的文件中,一般会有系统日志. 应用日志.安全日志.这些日志分散地存储在不同的机器 ...

最新文章

  1. php面向对象实践,【技术产品】PHP中的面向对象实践-基本实践案例
  2. VB.Net中关于数组赋值
  3. c语言内循环,C语言循环控制语句
  4. 怎么知道wx.config执行成功没_作为一个减肥40斤,且10年没反弹的普通人,这份瘦身经验分享给你...
  5. akka java_java – Akka和Spring集成
  6. 用CSS3实现图像风格
  7. Data-Mediator入门系列4----常用类说明
  8. 使用DirectShow.NET获取摄像头视频流
  9. NodeJs 多核多进程并行框架实作 - CNode
  10. pyplot中文手册_Matplotlib中文手册 PDF 下载
  11. 一名QQ老用户:致腾讯和马化腾的一封信
  12. php pmp是什么,pmp 总时差 自由时差 说明 和计算
  13. 无法格式化sd卡怎么办 sd卡无法格式化怎么弄
  14. Windows调试技巧工具
  15. 网站接口被恶意攻击怎么办
  16. Java 随机数之从指定数据范围内随机选取n个不重复的数据
  17. eNSP基础实验交换机连接路由器(二层交换机和三层交换机)
  18. 浅谈python运算符运算法则
  19. 从0学开发笔记-数据库基础
  20. 第十三课、类族的结构进化-------------------狄泰软件学院

热门文章

  1. 探索<赛博朋克>风格游戏美术
  2. java乐器培训班报名管理系统springboot+vue
  3. java 模拟登录微信_java 微信模拟登录错误,微信改版后不能使用
  4. 服务器TIME_WAIT和CLOSE_WAIT区别及解决方案
  5. VBA学习笔记5:将同一工作簿的数据按照类别拆分为多个工作簿
  6. reduce()函数
  7. 网络加速_蓝汛安全CDN加速解决方案,维稳网络安全
  8. 关于推送消息的简要分析
  9. 中国移动MM7 API用户手册(四)
  10. Silverlight vs Flash