logstash java监控_日志监控_ElasticStack-0001.Logstash快速规范化部署与后台运行?

技术栈线:

5374e14ad32f122f0a3457fa645f65cf.png

1. 支持灵活的处理方式,Elasticsearch是实时全文索引,无需像其它的产品样预先编程才能实现

2. 支持简单的配置方式,Elasticsearch是全部采用JSON接口,Logstash是Ruby DSL设计,都是通用配置语法

3. 支持高效的数据检索,虽然每次查询都是实时计算,但基本上可以实现全天数据查询的秒级响应

4. 支持方便的线性扩展,不管是Elasticsearch集群还是Logstash集群都可以线性扩展

4. 支持绚丽的前端展示,Kibana界面上只需要点击鼠标,就可以完成搜索,聚合,生产绚丽的仪表盘

常规架构:

52942fd454443c27ad0e2d26137e248b.png

简单介绍:

说明: 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] !~ /^2\d\d/ 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 {},否则进程运行一会儿就会自动退出.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值