系统环境
系统环境为:CentOS7
java版本为:1.8
elasticsearch版本为:elasticsearch-6.5.4
kibana版本为:kibana-6.5.4
logstash版本为:logstash-6.5.4
内部资源原本打算组件ELK+kafuka架构因时间原因暂时放弃了,
组建ELK+kafuka的资源可能不够。。。
组建简单的ELK日志系统还是可以的
资源下载地址:
链接:https://pan.baidu.com/s/1H1FMLgt_4es5oKuWKX5Tmw
提取码:bxn8
初始化环境: (可略过)
1、更新yum源为阿里云
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
2、之后运行yum makecache生成缓存
yum clean all
yum makecache
3、安装wget
yum install wget
4、安装vim
yum install vim
5:查看防火状态
systemctl status firewalld
6:关闭防火墙命令
systemctl disable firewalld
7:停止firewall
systemctl stop firewalld.service
8:禁止firewall开机启动
systemctl disable firewalld.service
9:安装java1.8环境
yum install java-1.8.0-openjdk* -y
10、修改网卡IP为静态IP
地址:vi /etc/sysconfig/network-scripts/ifcfg-ens33
需要修改的参数:
BOOTPROTO=static
ONBOOT=yes
需要添加的参数 IP地址、网关自定义
IPADDR=192.168.191.132
GATEWAY=192.168.191.2
NETMASK=255.255.255.0
DNS1=8.8.8.8
DNS2=8.8.4.4
主题:搭建ELK之ES
(1) 创建运行ES的普通用户(因为生产环境都是普通用户)
[root@mes-1 ~]# useradd elsearch
[root@mes-1 ~]# echo 123456 | passwd --stdin elsearch
(2)安装配置ES
[root@mes-1 ~]# tar xzf elasticsearch-6.5.4.tar.gz -C /usr/local/
[root@mes-1 ~]# cd /usr/local/elasticsearch-6.5.4/config/
[root@mes-1 config]# ls
elasticsearch.yml log4j2.properties roles.yml users_roles
jvm.options role_mapping.yml users
[root@mes-1 config]# cp elasticsearch.yml elasticsearch.yml.bak
//此处添加配置文件信息↓
[root@mes-1 config]# vim elasticsearch.yml ----找个地方添加如下内容
# ES集群配置文件
## 集群名称 各节点统一
cluster.name: elk
### 节点名称
node.name: elk01
### 数据和日志存放路径 2
path.data: /data/elasticsearch/data
path.logs: /data/elasticsearch/logs
### 锁定物理内存地址,防止es内存被交换出去 ,需要配置ulimit参数参考前一篇安装文档
#bootstrap.memory_lock: true
### 启动进行系统检测
bootstrap.system_call_filter: false
### 绑定IP地址
network.host: 0.0.0.0
http.port: 9200
### 节点间交互的tcp 端口
transport.tcp.port: 9300
### 备用master节点
discovery.zen.ping.unicast.hosts: ["192.168.150.170", "192.168.150.168","192.168.150.167"]
### 集群节点quorum数量,quorum =master候选节点/2+1 2节点配置2错误,1可能会脑裂,建议最少3节点
#discovery.zen.minimum_master_nodes: 1
## 是否支持跨域 和允许的域范围,默认为* 所有,可用正则匹配
http.cors.enabled: true
http.cors.allow-origin: "*"
### 禁用xpack安全机制
xpack.security.enabled: false
### 是否开启监控
xpack.monitoring.enabled: true
### 收集集群统计信息的超时。默认为10s
xpack.monitoring.collection.cluster.stats.timeout: 10s
### index 缓冲区大小
indices.memory.index_buffer_size: 20%
### 传输流量最大值
indices.recovery.max_bytes_per_sec: 10000mb
### 节点fielddata 的最大内存,达到则交换旧数据,建议设置小一点
indices.fielddata.cache.size: 10%
### fielddata限制大小,一定要大于cache 大小
indices.breaker.fielddata.limit: 60%
### request数量使用内存限制,默认为JVM堆的40%
indices.breaker.request.limit: 60%
#所有breaker使用的内存值,默认值为 JVM 堆内存的70%,当内存达到最高值时会触发内存回收
indices.breaker.total.limit: 80%
### 动作自动创建索引
action.auto_create_index: true
(3) 设置JVM堆大小
[root@mes-1 config]# vim jvm.options ----将
-Xms1g ----修改成 -Xms2g
-Xmx1g ----修改成 -Xms2g
或者:
推荐设置为4G,请注意下面的说明:
sed -i ‘s/-Xms1g/-Xms4g/’ /usr/local/elasticsearch-6.5.4/config/jvm.options
sed -i ‘s/-Xmx1g/-Xmx4g/’ /usr/local/elasticsearch-6.5.4/config/jvm.options
注意: 确保堆内存最小值(Xms)与最大值(Xmx)的大小相同,防止程序在运行时改变堆内存大小。 堆内存大
小不要超过系统内存的50%
(4)创建ES数据及日志存储目录
[root@mes-1 ~]# mkdir -p /data/elasticsearch/{data,logs}
(5)修改安装目录及存储目录权限
[root@mes-1 ~]# chown -R elsearch:elsearch /data/elasticsearch
[root@mes-1 ~]# chown -R elsearch:elsearch /usr/local/elasticsearch-6.5.4
ES优化
2.系统优化 下面两部都要做 不要忘了打乘号
(1)增加最大文件打开数
永久生效方法: echo “* - nofile 65536” >> /etc/security/limits.conf
(2)增加最大进程数
[root@mes-1 ~]# vim /etc/security/limits.conf —在文件最后面添加如下内容
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
(3)增加最大内存映射数
[root@mes-1 ~]# vim /etc/sysctl.conf —添加如下
vm.max_map_count=262144
vm.swappiness=0
[root@mes-1 ~]# sysctl -p
3启动ES
[root@mes-1 ~]# su - elsearch
Last login: Sat Aug 3 19:48:59 CST 2019 on pts/0
[root@mes-1 ~]$ cd /usr/local/elasticsearch-6.5.4/
[root@mes-1 elasticsearch-6.5.4]$ ./bin/elasticsearch #先启动看看报错不,需要多等一会
终止之后
[root@mes-1 elasticsearch-6.5.4]$ nohup ./bin/elasticsearch & #放后台启动
[1] 11462
[root@mes-1 elasticsearch-6.5.4]$ nohup: ignoring input and appending output to ‘nohup.out’
[root@mes-1 elasticsearch-6.5.4]$ tail -f nohup.out #看一下是否启动
或者:
su - elsearch -c “cd /usr/local/elasticsearch-6.5.4 && nohup bin/elasticsearch &”
elasticsearch-Head安装方式
通过docker安装方法。自行百度吧。。找不到了 = =
安装Kibana
[root@es-3-head-kib ~]# tar zvxf kibana-6.5.4-linux-x86_64.tar.gz -C /usr/local/
//进入配置文件目录并修改文件
[root@es-3-head-kib ~]# cd /usr/local/kibana-6.5.4-linux-x86_64/config/
[root@es-3-head-kib config]# vim kibana.yml
server.port: 5601
server.host: "IP地址"
elasticsearch.url: "http://IP地址:port"
kibana.index: ".kibana"
//启动kibana
[root@es-3-head-kib config]# cd ..
[root@es-3-head-kib kibana-6.5.4-linux-x86_64]# nohup ./bin/kibana &
[1] 12054
[root@es-3-head-kib kibana-6.5.4-linux-x86_64]# nohup: ignoring input and appending output to‘nohup.out’
访问测试http://IP地址:port
logstash 的配置及安装
(1).安装Logstash
[root@es-2-zk-log ~]# tar xvzf logstash-6.5.4.tar.gz -C /usr/local/
(2)配置文件
[root@test_server config]# cat syslog.conf
input {
tcp {
port => 5044
codec => json_lines
}
}
output{
elasticsearch {
hosts => ["IP地址:9200"]
}
}
代码中的日志收集器依赖包
<!--日志收集器依赖start-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
<version>2.1.7.RELEASE</version>
</dependency>
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>4.7</version>
</dependency>
<!--日志收集器依赖End-->
配置文件名称:logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<springProperty scope="context" name="springAppName"
source="spring.application.name" />
<!-- 日志在工程中的输出位置 -->
<property name="LOG_FILE" value="${BUILD_FOLDER:-build}/${springAppName}" />
<!-- 控制台的日志输出样式 -->
<property name="CONSOLE_LOG_PATTERN"
value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}" />
<!-- 控制台输出 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<!-- 日志输出编码 -->
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<!-- 为logstash输出的JSON格式的Appender -->
<appender name="logstash"
class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>logstash端口:logstash配置文件中的端口号</destination>
<!-- 日志输出编码 -->
<encoder
class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<providers>
<timestamp>
<timeZone>UTC</timeZone>
</timestamp>
<pattern>
<pattern>
{
"severity": "%level",
"service": "${springAppName:-}",
"trace": "%X{X-B3-TraceId:-}",
"span": "%X{X-B3-SpanId:-}",
"exportable": "%X{X-Span-Export:-}",
"pid": "${PID:-}",
"thread": "%thread",
"class": "%logger{40}",
"rest": "%message"
}
</pattern>
</pattern>
</providers>
</encoder>
</appender>
<!-- 日志输出级别 -->
<root level="INFO">
<appender-ref ref="console" />
<appender-ref ref="logstash" />
</root>
</configuration>
使用方法:
然后去kibana创建一个索引,然后再发现中就能看到输出的信息,有时间把结果图补上…