关键词:
技术栈线:
1. 支持灵活的处理方式,Elasticsearch是实时全文索引,无需像其它的产品样预先编程才能实现
2. 支持简单的配置方式,Elasticsearch是全部采用JSON接口,Logstash是Ruby DSL设计,都是通用配置语法
3. 支持高效的数据检索,虽然每次查询都是实时计算,但基本上可以实现全天数据查询的秒级响应
4. 支持方便的线性扩展,不管是Elasticsearch集群还是Logstash集群都可以线性扩展
4. 支持绚丽的前端展示,Kibana界面上只需要点击鼠标,就可以完成搜索,聚合,生产绚丽的仪表盘
常规架构:
简单介绍:
说明: Logstash作为一款接收,处理,输出日志的工具,可以处理各种各样的日志,由JRuby编写,支持大量的配套插件,于2013年被Elasticsearch收购,正式成为Elastic Stack的一员.
现包安装:
rpm -qa |grep jdk |xargs rpm -e --nodeps yum -y install gcc cmake coreutils lsof pcre pcre-devel zlib zlib-devel coreutils lrzsz wget python-setuptools epel-release yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel nc jq rpm -ivh https://artifacts.elastic.co/downloads/logstash/logstash-5.0.0.rpm
源码部署:
# 安装 JAVA 运行 环境 rpm -qa |grep jdk |xargs rpm -e --nodeps yum -y install gcc cmake coreutils lsof pcre pcre-devel zlib zlib-devel coreutils lrzsz wget python-setuptools epel-release yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel nc jq java -version # 创建 LOGSTASH目录 mkdir -p /xm-workspace/xm-apps/logstash/ tar -zxvf logstash-5.0.0.tar.gz mv logstash-5.0.0/* /xm-workspace/xm-apps/logstash/ # 创建 配置 文件 目录 mkdir -p /xm-workspace/xm-apps/logstash/etc/logstash.d
常用参数:
-n | 指定Logstash实例的名称,如果未指定,默认为主机名 |
-f | 指定Logstash配置文件或目录,如果指定目录则合并目录中配置文件 |
-e | 指定Logstash配置数据,以字符串的形式指定,常用于手工测试 |
-l | 指定Logstash日志文件目录,默认安装目录下logs目录 |
--debug | 开启Logstash调试模式 |
--log.level | 指定Logstash日志级别,fatal/error/warn/info/debug/trace |
--config.debug | 指定Logstash打印配置合并日志,开启前提是打开调试模式--debug以及设置日志级别 |
-t | 测试Logstash配置文件,,必须配合-f使用 |
-r | 设置Logstash自动重载配置文件,必须配合-f使用 |
--config.reload.interval | 设置Logstash重载配置周期,默认为3秒 |
--http.host | 设置LogstashAPI监听地址 |
--http.port | 设置LogstashAPI监听端口 |
--quiet | 设置 Logstash为安静模式 |
注意: 当-f指定目录时,Logstash会自动读取目录下所有*.conf配置文件,按照字母排序,然后在内存中拼接成一个完整的大配置文件加载,推荐采用数字编号方式命名配置文件,且同时在配置中严谨使用if判断限定不同日志的动作,还有就是从5.0开始所有的命令行配置都可通过/xm-workspace/xm-apps/logstash/config/logstash.yml文件设置.
快速测试:
/xm-workspace/xm-apps/logstash/bin/logstash -e ‘input{stdin{}}output{stdout{codec=>rubydebug}}‘ --debug
{ "@timestamp" => 2016-12-06T08:37:52.922Z, "@version" => "1", "host" => "YunChanPinXian", "message" => "limanman" }
说明: 数据以事件对象的形式在线程之间传递,Logstash会自动为事件对象添加一些额外信息,最重要的就是@timestamp,用来标记事件的发生时间,此字段以joda时间对象的形式内部流转,而且还支持在过滤插件中通过add_tag/remove_tag/add_field/remove_field对事件对象添加删除标签数组和自定义字段.
配置语法:
1. Logstash设计了自己的DSL(类似Puppet的DSL)来描述配置,使用{}定义区域,区域内可以包含多个插件区域,插件域内可以定义对应区域的键值对设置
2. Logstash支持少量的数据类型如bool类型(debug => true),string类型(host => "hostname"),number类型(port => 514),array类型(match => ["datetime", "UNIX", "ISO8601"]),hash类型(options => {key1 => "value1",key2 => "value2"})
3. Logstash支持字段引用,由于字段可以是hash或array类型,所以可通过[field]来还原字段对象,而且还支持正倒序下标检索子元素,如果要在字符串中使用字段引用可通过%{[field][...]}实现
4. Logstash支持==等于/!=不等于/<小于/>大于/<=小于等于/>=大于等于/=~匹配/!~不匹配/in包含/not in不包含/and与/or或/nand非与/xor非或/()复合表达式/!()取反复合表达式
if "_grokparsefailure" not in [tags] { } else if [status] !~ /^2dd/ or ( [url] == "/noc.gif" nand [geoip][city] != "beijing" ) { } else { }
后台运行:
#!/bin/sh # -*- coding: utf-8 -*- # # # Authors: limanman # OsChina: http://xmdevops.blog.51cto.com/ # Purpose: control logstash start|stop|force-stop|status|restart # # # customer env name=logstash pidfile="/var/run/${name}.pid" LS_HOME=/xm-workspace/xm-apps/logstash export PATH=/sbin:/usr/sbin:/bin:/usr/bin:${LS_HOME}/bin # must use root if [ `id -u` -ne 0 ]; then echo "You need root privileges to run this script" exit 1 fi # optimizations LS_HEAP_SIZE="1024m" LS_OPEN_FILES=102400 # logstash comm # LS_OPTS="--debug" LS_OPTS="--quiet" LS_LOG_DIR=${LS_HOME}/logs LS_CONF_DIR="${LS_HOME}/etc/logstash.d" [ ! -d ${LS_HOME} ] && mkdir -p ${LS_HOME} [ ! -d ${LS_LOG_DIR} ] && mkdir -p ${LS_LOG_DIR} [ ! -d ${LS_CONF_DIR} ] && mkdir -p ${LS_CONF_DIR} program=${LS_HOME}/bin/${name} args="-f ${LS_CONF_DIR} -l ${LS_LOG_DIR} ${LS_OPTS}" start() { LS_JAVA_OPTS="${LS_JAVA_OPTS} -Djava.io.tmpdir=${LS_HOME}" HOME=${LS_HOME} export PATH HOME LS_HEAP_SIZE LS_JAVA_OPTS LS_USE_GC_LOGGING ulimit -n ${LS_OPEN_FILES} # Run the program! bash -c " cd $LS_HOME ulimit -n ${LS_OPEN_FILES} exec "$program" $args " 2> "${LS_LOG_DIR}/${name}-error.log" &>/dev/null & echo $! > $pidfile echo "${name} started." return 0 } stop() { if status ; then pid=`cat "$pidfile"` echo "Killing ${name} (pid $pid) with SIGTERM" kill -TERM $pid for i in 1 2 3 4 5 ; do echo "Waiting ${name} (pid $pid) to die..." status || break sleep 1 done if status ; then echo "${name} stop failed; still running." else echo "${name} stopped." fi fi } status() { if [ -f "$pidfile" ] ; then pid=`cat "$pidfile"` if kill -0 $pid > /dev/null 2> /dev/null ; then return 0 else return 2 fi else return 3 fi } force_stop() { if status ; then stop status && kill -KILL `cat "$pidfile"` fi } case "$1" in start) status code=$? if [ $code -eq 0 ]; then echo "${name} is already running" else start code=$? fi exit $code ;; stop) stop ;; force-stop) force_stop ;; status) status code=$? if [ $code -eq 0 ] ; then echo "${name} is running" else echo "${name} is not running" fi exit $code ;; restart) stop && start ;; *) echo "Usage: ${SCRIPTNAME} {start|stop|force-stop|status|restart}" >&2 exit 3 ;; esac exit $?
注意: 为了使Logstash后台运行,不管是nohub ... &还是screen还是supervisord管理进程时千万不要把配置目录中的配置文件中的input {}区段设置为测试用的stdin {},否则进程运行一会儿就会自动退出.
本文出自 “满满李 - 运维开发之路” 博客,请务必保留此出处http://xmdevops.blog.51cto.com/11144840/1880496
日志监控_elasticstack-0003.logstash输入插件及实际生产案例应用?
新版插件:说明:从5.0开始,插件都独立拆分成gem包,每个插件可独立更新,无需等待Logstash自身整体更新,具体管理命令可参考./bin/logstash-plugin--help帮助信息../bin/logstash-pluginlist其实所有的插件就位于本地./vendor/bundle/jruby/1.9/gems/目录下... 查看详情
日志监控_elasticstack-0002.logstash编码插件及实际生产案例应用?
新版插件:说明:从5.0开始,插件都独立拆分成gem包,每个插件可独立更新,无需等待Logstash自身整体更新,具体管理命令可参考./bin/logstash-plugin--help帮助信息../bin/logstash-pluginlist其实所有的插件就位于本地./vendor/bundle/jruby/1.9/gems/目录下... 查看详情
java监控本地日志并实现实时查看(代码片段)
每次查看日志,都需要去服务器上看,太麻烦了,所以简单实现一个在线日志实时监控功能,可以方便实时查看了。源码meethigher/log-monitor参考写一个发布日志实时查看功能_liangwenrong的博客-CSDN博客log-viewer:可同时... 查看详情
日志监控_elasticstack5-0001.logstash快速规范化部署与后台运行?
技术栈线:650)this.width=650;"src="http://s3.51cto.com/wyfs02/M02/8B/42/wKiom1hIDFyjbuIAAAJMIsTSBRQ088.png"title="clipboard.png"alt="wKiom1hIDFyjbuIAAAJMIsTSBRQ088.png"/>1.支持灵活的处理方式,Elasticsearch是实时全文索引,无需 查看详情
elasticsearchandkibanaandfilebeat轻量级日志监控系统
ElasticsearchandkibanaandfilebeatElasticsearchandkibanaandfilebeat轻量级日志监控系统说明:elasticsearch依赖javaLogstash依赖于JVM,内存消耗比较高filebeatgo语言轻量级日志监控系统安装elasticsearch-6.2.3.tar.gzfilebeat-6.2.3-linux-x86_64.tar. 查看详情
布道微服务_11监控系统选型与常见方案
...不同,适合的业务场景也不一样。主流方案分类(集中式日志VS时序数据库)目前,比较流行的开源监控系统实现方案主要有两种:以ELK为代表的集中式日志解决方案以Graphite、TICK和Prometheus等为代表的时序数据库解决方案 查看详情
容器技术dockerk8s43serverlesskubernetes(ask)详解-ask网络存储日志监控管理
参考https://edu.aliyun.com/lesson_2553_27399#_27399 查看详情
iptables防火墙与日志系统配合使用监控服务器特点端口的防问源ip
/etc/sysconfig/iptables-AINPUT-ptcp--dport80-jLOG--log-level5--log-prefix"PORT_80:"-AINPUT-ptcp--dport22022-jLOG--log-level5--log-prefix"PORT_22"查看日志输出:Jul915:34:55ServerNamekernel:PORT_80:IN=eth1OUT= 查看详情
java监控本地日志并实现实时查看(代码片段)
每次查看日志,都需要去服务器上看,太麻烦了,所以简单实现一个在线日志实时监控功能,可以方便实时查看了。源码meethigher/log-monitor参考写一个发布日志实时查看功能_liangwenrong的博客-CSDN博客log-viewer:可同时... 查看详情
将日志输出到docker容器外(代码片段)
原文:将日志输出到Docker容器外1.1使用Docker容器日志我们可以利用dockerlogs命令查看Docker容器内部应用程序运行时所产生的日志,可以免除首先进入Docker容器,再打开应用程序的日志文件的过程。dockerlogs会监控容器中操作系统的标... 查看详情
flume_企业中日志处理
企业中的日志存放_1201611/20161112.log.tmp 第二天文件变为20161112.log与20161113.log.tmp拷贝一份flume-conf.properties.template改名为dir-mem-hdfs.properties实现监控某一目录,如有新文件产生则上传至hdfs,另外过滤掉新文件中tmp文件dir-mem-hdfs.propert... 查看详情
windows进程监控脚本(代码片段)
...个python脚本来监控进程,当cpu过高时杀死进程,同时记录日志importpsutilimportosimporttimeimportloggingdefKillProcess():os.kill(pid,2)defProcessLog():LOG_FORMAT="%(asctime)s%(name)s%(levelname)s%(pathname)s%(message)s"DATE_FORMAT=‘%Y-%m-%d%H:%M:%S%a‘logging.basicConfig(level... 查看详情
elk平台搭建及日志监控
...背景 当生产环境有很多服务器、很多业务模块的日志需要每时每刻查看时二、环境系统:centos6.5JDK:1.8Elasticsearch-5.0.0Logstash-5.0.0kibana-5.0.0三、安装1、安装JDK下载JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-... 查看详情
日志监控告警系统
课程介绍课程名称:日志监控告警系统基于的日志进行监控,监控需要一定规则,对触发监控规则的日志信息进行告警,告警的方式,是短信和邮件。log4j---->error,info,debug应用程序程序的日志 error级别TimeOutException角标越界I... 查看详情
django项目之efk日志监控系统的搭建(代码片段)
一、下载efk的tar.gz的离线包wgethttp://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.tar.gz?AuthParam=1536892035_945cb24c750d0971b8c5b1925cc723a9wgethttps://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.tar.gzwgethttps:... 查看详情
flume监控hive日志文件(代码片段)
flume监控hive日志文件一:flume监控hive的日志1.1案例需求:1.实时监控某个日志文件,将数据收集到存储hdfs上面,此案例使用execsource,实时监控文件数据,使用MemoryChannel缓存数据,使用HDFSSink写入数据2.此案例实时监控hive日志文... 查看详情
update:sparkstreaming原理_运行过程_高级特性(代码片段)
...的一些指标进行监控,例如 CPU,内存,磁盘等这些工具的日志输出是非常多的,往往一个用户的访问行为会带来几百条日志 查看详情
zabbix之日志监控
一、日志item介绍 下面介绍zabbix另一个“重量级”的功能——日志文件监控,它最主要的是监控日志文件中有没有某个字符串的表达式,对应日志轮转与否,zabbix都支持。 在配置Item的时候,Type选择... 查看详情