相关文章推荐
逃跑的骆驼  ·  python 画时序图-掘金·  1 年前    · 

搭建该平台的目的就是为了运维、研发很方便的进行日志的查询。Kibana一个免费的web壳;Logstash集成各种收集日志插件,还是一个比较优秀的正则切割日志工具;Elasticsearch一个开源的搜索引擎框架(支持群集架构方式)。

1 安装需求

1.1 理论拓扑

1.2 安装环境

1.2.1 硬件环境

192.168.50.62(HP DL 385 G7 、RAM:12G、CPU:AMD 6128、DISK:SAS 146*4)

192.168.50.98(HP DL 385 G7 、RAM:12G、CPU:AMD 6128、DISK:SAS 146*6)

192.168.10.42 (Xen虚拟机、RAM:8G、CPU:×4、DISK:100G)

1.2.2 操作系统

CentOS 5.6 X64

1.2.3 Web-server基础环境

Nginx+php(安装过程略过)

1.2.4 软件列表

JDK 1.6.0_25

logstash-1.1.0-monolithic.jar

elasticsearch-0.18.7.zip

redis-2.4.12.tar.gz

kibana

1.3 获取方法

1.3.1 Jdk获取路径

http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u25-download-346242.html

1.3.2 Logstash获取路径

http://semicomplete.com/files/logstash/logstash-1.1.0-monolithic.jar

1.3.3 Elasticsearch获取路径

https://github.com/downloads/elasticsearch/elasticsearch/ elasticsearch-0.18.7.zip

1.3.4 Kibana获取路径

http://github.com/rashidkpc/Kibana/tarball/master

2 安装步骤

2.1 JDK的下载及安装

wget http://download.oracle.com/otn-pub/java/jdk/6u25-b06/jdk-6u25-linux-x64.bin

sh jdk-6u25-linux-x64.bin

mkdir -p /usr/java

mv ./jdk1.6.0_25 /usr/java

ln –s /usr/java/jdk1.6.0_25 /usr/java/default

编辑 /etc/profile文件,加入以下行内容

export JAVA_HOME=/usr/java/default

export PATH=$JAVA_HOME/bin:$PATH

export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH

刷新环境变量

source /etc/profile

2.2 Redis下载及安装

make –j24

make install

mkdir -p /data/redis

cd /data/redis/

mkdir {db,log,etc}

2.3 Elasticsearch下载及安装

cd /data/

mkdir –p elasticsearch && cd elasticsearch

wget --no-check-certificate https://github.com/downloads/elasticsearch/elasticsearch/ elasticsearch-0.18.7.zip

unzip elasticsearch-0.18.7.zip

2.4 Logstash下载及安装

mkdir –p /data/logstash/ && cd /data/logstash

2.5 Kibana下载及安装

wget http://github.com/rashidkpc/Kibana/tarball/master --no-check-certificate

tar zxvf master

3 相关配置及启动

3.1 Redis配置及启动

3.1.1 配置文件

vim /data/redis/etc/redis.conf

#----------------------------------------------------

#this is the config file for redis

pidfile /var/run/redis.pid

port 6379

timeout 0

loglevel verbose

logfile /data/redis/log/redis.log

databases 16

save 900 1

save 300 10

save 60 10000

rdbcompression yes

dbfilename dump.rdb

dir /data/redis/db/

slave-serve-stale-data yes

appendonly no

appendfsync everysec

no-appendfsync-on-rewrite no

auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 64mb

slowlog-log-slower-than 10000

slowlog-max-len 128

vm-enabled no

vm-swap-file /tmp/redis.swap

vm-max-memory 0

vm-page-size 32

vm-pages 134217728

vm-max-threads 4

hash-max-zipmap-entries 512

hash-max-zipmap-value 64

list-max-ziplist-entries 512

list-max-ziplist-value 64

set-max-intset-entries 512

zset-max-ziplist-entries 128

zset-max-ziplist-value 64

activerehashing yes

3.1.2 Redis启动

[logstash@Logstash_2 redis]# redis-server /data/redis/etc/redis.conf &

3.2 Elasticsearch 配置及启动

3.2.1 Elasticsearch启动

[logstash@Logstash_2 redis]# /data/elasticsearch/elasticsearch-0.18.7/bin/elasticsearch –p ../esearch.pid &

3.2.2 Elasticsearch 群集配置

curl 127.0.0.1:9200/_cluster/nodes/192.168.50.62

3.3 Logstash配置及启动

3.3.1 Logstash配置文件

input {

redis {

host => "192.168.50.98"

data_type =>"list"

key => "logstash:redis"

type => "redis-input"

filter {

grok {

type => "linux-syslog"

pattern => "%{SYSLOGLINE}"

grok {

type => "nginx-access"

pattern => "%{NGINXACCESSLOG}"

output {

elasticsearch {

host =>"192.168.50.62"

3.3.2 Logstash启动为Index

java -jar logstash.jar agent -f my.conf &

3.3.3 Logstash启动为agent

input {

file{

type => "linux-syslog"

path => [ "/var/log/*.log", "/var/log/messages", "/var/log/syslog" ]

file {

type => "nginx-access"

path => "/usr/local/nginx/logs/access.log"

file {

type => "nginx-error"

path => "/usr/local/nginx/logs/error.log"

output {

redis {

host => "192.168.50.98"

data_type =>"list"

key => "logstash:redis"

Agent 启动

java -jar logstash-1.1.0-monolithic.jar agent -f shipper.conf &

3.3.4 kibana配置

首先在nginx添加站点配置

server {

listen 80;

server_name logstash.test.com;

index index.php;

root /usr/local/nginx/html;

#charset koi8-r;

#access_log logs/host.access.log main;

location ~ .*\.(php|php5)$

#fastcgi_pass unix:/tmp/php-cgi.sock;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

include fastcgi.conf;

4 性能调优

4.1 Elasticsearch调优

4.1.1 JVM调优

编辑Elasticsearch.in.sh文件

ES_CLASSPATH=$ES_CLASSPATH:$ES_HOME/lib/*:$ES_HOME/lib/sigar/*

if [ "x$ES_MIN_MEM" = "x" ]; then

ES_MIN_MEM=4g

if [ "x$ES_MAX_MEM" = "x" ]; then

ES_MAX_MEM=4g

4.1.2 Elasticsearch索引压缩

vim index_elastic.sh

#!/bin/bash

#comperssion the data for elasticsearch now

date=` date +%Y.%m.%d `

# compression the new index;

/usr/bin/curl -XPUT http://localhost:9200/logstash-$date/nginx-access/_mapping -d '{"nginx-access" : {"_source" : { "compress" : true }}}'

echo ""

/usr/bin/curl -XPUT http://localhost:9200/logstash-$date/nginx-error/_mapping -d '{"nginx-error" : {"_source" : { "compress" : true }}}'

echo ""

/usr/bin/curl -XPUT http://localhost:9200/logstash-$date/linux-syslog/_mapping -d '{"linux-syslog" : {"_source" : { "compress" : true }}}'

echo ""

保存该脚本并执行

sh index_elastic.sh

5.1 Logstash查询页

引自:http://enable.blog.51cto.com/747951/1049411

搭建该平台的目的就是为了运维、研发很方便的进行日志的查询。Kibana一个免费的web壳;Logstash集成各种收集日志插件,还是一个比较优秀的正则切割日志工具;Elasticsearch一个开源的搜索引擎框架(支持群集架构方式)。1 安装需求1.1理论拓扑 1.2 安装环境1.2.1 硬件环境192.168.50.62(HP DL 385 G7 、RAM:12G、CPU:AMD 6128、D...
开发者在面对 Kubernetes 分布式集群下的 日志 需求时,常常会感到头疼,既有容器自身特性的原因,也有现有 日志 采集工具的桎梏,主要包括: 容器本身特性: 采集目标多:容器本身的特性导致采集目标多,需要采集容器内 日志 、容器 stdout。对于容器内部的文件 日志 采集,现在并没有一个很好的工具能够去动态发现采集。针对每种数据源都有对应的采集软件,但缺乏一站式的工具。 弹性伸缩难*:Kubernete...
Kibana 查询 语言 (KQL) 是一种使用自由文本搜索或基于字段的搜索过滤 Elasticsearch 数据的简单语法。 KQL 仅用于过滤数据,并没有对数据进行排序或聚合的作用。 KQL 能够在您键入时建议字段名称、值和运算符。 建议的性能由 Kibana 设置控制。 KQL 具有与 Lucene 查询 语法不同的一组特性。 KQL 能够 查询 嵌套字段和脚本字段。 KQL 不支持正则表达式或使用模糊术语进行搜索。 要使用旧版 Lucene 语法,请单击搜索字段旁边的 KQL,然后关闭 KQL。
Logstash 是一个完全开源的工具,他可以对你的 日志 进行收集、分析,并将其存储供以后使用(如,搜索),您可以使用它。说到搜索, logstash 带有一个web 界面 ,搜索和展示所有 日志 kibana 也是一个开源和免费的工具,他可以帮助您汇总、分析和搜索重要数据 日志 并提供友好的web 界面 。他可以为 Logstash ElasticSearch 提供的 日志 分析的Web 界面 说到这里,我们看看 kibana logstash 到底能为我们做些什么呢?下面是 kibana 界面 简单来讲他具体的工作流程就是 logstash agent监控并过滤 日志 ,将过滤后的 日志 内容发给redis(这里的redis只处理队列不做存储)
kibana 又如何用直观的显示我们希望看到的 日志 报表? 根据数据显示看板,大致三步, 第一步是设置数据源,根据我们之前推送给 elasticsearch 日志 数据,使用management标签创建索引模式; 第二步根据第一步创建的索引模式,使用Visualize 标签页用来设计可视化图形; 第三步根据第二步做好的可视化图形,使用Dashboard标签来配置我们的看板 一、下面我们开始做第一步,创建索引: 目前有两天的数据,我们创建一个能包含这两天数据的索引模式:  创建好索引模式后,点击“Discover”标签后就可以看到我们创建的“errinfo-scm”
kibana 查询 ES及可视化操作 一、 kibana 与ES交互 Kibana 是一个针对 Elasticsearch 的开源分析及可视化平台,可以用来搜索、查看交互存储在 Elasticsearch 索引中的数据。使用 Kibana 可以通过各种图表进行数据聚合分析及展示,但在数据分析方面由于ES为非关系型数据库对关联数据不好操作,文件不能跨索引关联 查询 只能支持单个索引的数据分析操作。 二、 kibana 下载安装 下载地址:官网下载 下载安装教程可参考:安装教程 安装步骤: 1、下载对应版本的 kibana 安装包 2、解压完成
Logstash :接收,处理,转发 日志 Elasticsearch :文档型数据库,实时的分布式搜索和分析引擎 Kibana 查询 、生成报表的web GUI 在安装目录bin文件夹里新建一个 logstash .conf一般配置如下: # 输入输入 input { stdin {} } # 数据处理 filter { grok { “ ? ”匹配单个字符 例: H?bbs “ * ” 匹配0到多个字符 例: H* *注意: ? * 不能用作第一个字符,例如: ?text text 范围 查询 age:[20 TO 30] age:{20 TO 30} 注:[ ] 表示端点数值包含在范围内,{ } 表示
SpringBoot用的是2.1.12版本,采用了Spring Cloud Alibaba架构。 网上找的开源微服务框架,但es版本是6.3,与现有版本7.3.2不兼容,没办法,升级。 先说一下以前写 日志 的方法,根本不规范,有的用slf4j的 log .INFO方法,有的用SOPL,这个必须要统一,把所有的System.out.println用 log .INFO替换,并且去掉用加号拼字符串的方法,统一用{}优化。 框架对 日志 的集成还是比较好的,有线程的 log -spring-boot-starter工程,也写