搭建该平台的目的就是为了运维、研发很方便的进行日志的查询。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工程,也写