ELK+logback搭建日志系统
最近工作需要,开始研究ES,当前ES的最新版本为5.1.1,版本5.0.1以上jdk为1.8,缓存服务器用的redis
本篇会记录ES5.1.1 + Kibana 5.1.1 + es-head插件在Linux环境上安装操作步骤。
首先,去Elastic官网 https://www.elastic.co/downloads ,下载页有所有Elastic的产品,都是最新的版本(版本号还一致)。
下载完成后,全部解压,使用unzip和tar -xvzf
(一) 首先尝试去启动elasticsearch,到elasticsearch的bin目录下,执行./elasticseharch。
如果遇到下面的错误:
说明是用root账户来启动的,因为ES是没有权限限制的,还可以接收用户的脚本,所有用root账户很不安全,需要新建一个账户来启动。
命令执行如下
# adduser leichunqiong
# passwd leichunqiong
用root 给新建用户赋予权限
1、进入bin目录下执行chmod +x elasticsearch
2、chown leichunqiong.leichunqiong -R /opt/elasticsearch-5.1.1
3、切换到新建用户
# su leichunqiong
4、修改vm.map 限制
vi /etc/sysctl.conf vm.max_map_count=262144
5、进入bin目录 执行./elasticsearch -d &
然后就可以在命令行中用curl http://localhost:9200?pretty 看看输出
此时,ES可以在本地访问,但是用浏览器远程的话,还是无法访问的,因为相应的端口没有打开
进到安装目录/config/elasticsearch.yml,将network.host设置为0.0.0.0并且将访问端口放开
接下来重启es 然后通过浏览器外部访问就可以了
(二) 下一步现在我们来安装logstash
1、解压完成后配置logstash的环境变量
# echo "export PATH=\$PATH:/usr/local/logstash-1.5.4/bin" > /etc/profile.d/logstash.sh
# . /etc/profile
2、启动logstash
2.1 通过-e参数指定logstash的配置信息,用于快速测试,直接输出到屏幕。
# logstash -e "input {stdin{}} output {stdout{}}"
my name is zhengyansheng.
//
手动输入后回车,等待10秒后会有返回结果
Logstash startup completed
2015-10-08T13:55:50.660Z 0.0.0.0 my name is zhengyansheng.
这种输出是直接原封不动的返回...
# logstash -e 'input{stdin{}}output{stdout{codec=>rubydebug}}'
my name is zhengyansheng.
//
手动输入后回车,等待10秒后会有返回结果
Logstash startup completed
{
"message"
=>
"my name is zhengyansheng."
,
"@version"
=>
"1"
,
"@timestamp"
=>
"2015-10-08T13:57:31.851Z"
,
"host"
=>
"0.0.0.0"
}
这种输出是以json格式的返回...
# vim logstash-simple.conf
input { stdin {} }
output {
stdout { codec=> rubydebug }
}
# logstash -f logstash-simple.conf //普通方式启动
Logstash startup completed
# logstash agent -f logstash-simple.conf --debug//开启debug模式
Pipeline started {:level=>:debug}
Logstash startup completed
hello world.
//
手动输入hello world.
{
"message"
=>
"hello world."
,
"@version"
=>
"1"
,
"@timestamp"
=>
"2015-10-08T14:01:43.724Z"
,
"host"
=>
"0.0.0.0"
}
效果同命令行配置参数一样..
# cat logstash-redis.conf
input {
redis {
host =>
'192.168.1.104'
#ip
data_type =>
'list'
port =>
"6379"
key =>
'logstash:redis'
#自定义
type
=>
'redis-input'
#自定义
}
}
output {
elasticsearch {
host =>
"192.168.1.104" #ip
codec =>
"json"
protocol =>
"http"
#版本1.0+ 必须指定协议http
}
}
(三)
1、修改配置文件
# vim /opt/kibana-5
.1
.1
-linux-x86_
64/config/kibana.yml
elasticsearch_url:
"http://192.168.1.104:9200"
2、
启动3、外部访问
(四) 新建maven项目结合logstash
1、加入apender jar包
<dependency>
<groupId>com.cwbase</groupId>
<artifactId>logback-redis-appender</artifactId>
<version>1.1.5</version>
</dependency>
2、配置logback.xml
<configuration>
<property name="type.name" value="" />
<appender name="TEST" class="com.cwbase.logback.RedisAppender">
<source>test-application</source>
<!--type 可定为项目类型-->
<type>${type.name}</type>
<!--redis ip-->
<host>192.168.1.218</host>
<!--redis存放的key-->
<key>logstash:redis</key>
<tags>test-2</tags>
<mdc>true</mdc>
<location>true</location>
<callerStackIndex>0</callerStackIndex>
<!--additionalField添加附加字段 用于head插件显示-->
<additionalField>
<key>MyKey</key>
<value>MyValue</value>
</additionalField>
<additionalField>
<key>MySecondKey</key>
<value>MyOtherValue</value>
</additionalField>
</appender>
<!--日志输出-->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>
<!--日志回滚周期30天-->
<maxHistory>30</maxHistory>
</rollingPolicy>
<!-- <encoder>
<pattern>%logger{15} - %message%n%xException{5}</pattern>
</encoder>-->
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-4relative [%thread] %-5level %logger{35} %caller{3} - %msg%n%xException{5}</pattern>
</encoder>
</appender>
<logger name="application" level="DEBUG" />
<root level="DEBUG">
<appender-ref ref="STDOUT" />
<appender-ref ref="TEST" />
</root>
</configuration>
3、写测试类,然后到kinana上边就可以看到你的日志啦
(五) 可以将kibana替换elasticsearch-head插件进行页面展示,elasticsearch-head是一个elasticsearch的集群管理工具