ELK 로그 분석 시스템 설치 및 배치
1.1 플랫폼 환경: OS: CentOS release 6.4 (Final) ElasticSearch: 6.3.2 Logstash: 6.3.2Kibana: 6.3.2JRE: 1.8
주: Logstash 의 실행 은 자바 환경 에 의존 하기 때문에 Logstash 1.5 이상 버 전 은 자바 1.7 보다 낮 지 않 기 때문에 최신 버 전의 자바 를 사용 하 는 것 을 추천 합 니 다.우 리 는 자바 의 운영 환경 만 필요 하기 때문에 JRE 만 설치 할 수 있 지만, 여 기 는 여전히 JDK 를 사용 합 니 다.
1.2 ELK 다운로드:https://www.elastic.co/downloads/
cd /data/package/
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.2.tar.gz
wget https://artifacts.elastic.co/downloads/logstash/logstash-6.3.2.tar.gz
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.3.2-linux-x86_64.tar.gz
1.3 설치 준비
#配置iptables,保证内网之间可以互通
[root@Elk_Server]# iptables -F;iptables -I INPUT -s 192.168.0.0/16 -j ACCEPT
[root@Elk_Server]# service iptables save;service iptables restart
#关闭selinux
[root@Elk_Server]# setenforce 0
[root@Elk_Server]# vim /etc/sysconfig/selinux
SELINUX=disabled
1.4 시간 동기 화
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
yum install ntpdate -y;ntpdate time.windows.com
echo '01 00 * * * ntpdate time.windows.com' >>/etc/crontab
1.5 yum 원본 설정
#导入公钥
[root@Elk_Server ~]# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
[root@Elk_Server ~]# vim /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
1.6 설치 JAVA 1.8.0만나다http://qiangsh.blog.51cto.com/3510397/1771748
2. Elasticsearch 단기 버 전 클 러 스 터 설치
이것 은 사실 ELK 의 핵심 입 니 다. 시작 할 때 주의해 야 합 니 다. es 는 루트 계 정 을 시작 할 수 없 기 때문에 elsearch 계 정 을 하나 더 열 어야 합 니 다. * *
2.1.1 yum 방식 으로 설치
[root@Elk_Server ~]# sudo yum install elasticsearch -y
2.1.2 소스 코드 설치 (본 고 는 컴 파일 설치 설정)
#将解压后的文件复制三份
tar zxvf elasticsearch-6.3.2.tar.gz -C /usr/local/
mv /usr/local/elasticsearch-6.3.2 /usr/local/es-master
cp -rf /usr/local/es-master /usr/local/es-data1
cp -rf /usr/local/es-master /usr/local/es-data2
groupadd elasticsearch
useradd elasticsearch -g elasticsearch
2.2 elasticsearch 데이터 디 렉 터 리 만 들 기
mkdir -p /data{,1,2}/elasticsearch/data
mkdir -p /data{,1,2}/elasticsearch/logs
chown -R elasticsearch:elasticsearch /data{,1,2}/elasticsearch
2.3 Elasticsearch 클 러 스 터 설정 파일 편집
cp /usr/local/es-master/config/elasticsearch.yml /usr/local/es-master/config/elasticsearch.yml-bak
#创建软连接
mkdir /etc/elasticsearch/
ln -s /usr/local/es-master/config/elasticsearch.yml /etc/elasticsearch/es-master.yml
ln -s /usr/local/es-data1/config/elasticsearch.yml /etc/elasticsearch/es-data1.yml
ln -s /usr/local/es-data2/config/elasticsearch.yml /etc/elasticsearch/es-data2.yml
주 노드 설정:
vim /etc/elasticsearch/es-master.yml
# ======================== Elasticsearch Configuration =========================
#
cluster.name: elk-cluster
node.name: node-master
node.attr.rack: r1
# ----------------------------------- Paths ------------------------------------
#设置data存放的路径为/data/elasticsearch/data
path.data: /data/elasticsearch/data
#设置logs日志的路径为/data/elasticsearch/logs
path.logs: /data/elasticsearch/logs
# ---------------------------------- Network -----------------------------------
#本机地址
network.host: 192.168.6.108
#开启监听的端口为9200
http.port: 9200
#tcp通讯端口
transport.tcp.port: 9330
#是否作为主机
node.master: true
#是否作为数据节点
node.data: false
node.max_local_storage_nodes: 3
#在删除索引时,是否需要明确指定名称.该值为false时,则可通过正则或_all删除:
action.destructive_requires_name: true
# --------------------------------- Discovery ----------------------------------
#集群信息,默认的通讯接口是9300
discovery.zen.ping.unicast.hosts: ["192.168.6.108:9330", "192.168.6.108:9331","192.168.6.108:9332"]
#在新集群搭建初期,总会出现某几个节点与其他节点通信异常导致节点频繁加入、退出集群。这个过程是自动执行的。通过配置discovery.zen.ping_timeout来控制节点加入某个集群或者开始选举的响应时间(默认3s)。
discovery.zen.ping_timeout: 60s
#这个关闭了自动创建索引。为的也是安全考虑,否则即使是内网,也有很多扫描程序,一旦开启,扫描程序会自动给你创建很多索引。
action.auto_create_index: false
# ---------------------------------- Gateway -----------------------------------
#
# Block initial recovery after a full cluster restart until N nodes are started:
#设置集群中N个节点启动时进行数据恢复,默认为1。
gateway.recover_after_nodes: 2
#设置初始化数据恢复进程的超时时间,默认是5分钟。
gateway.recover_after_time: 3m
#设置集群中节点的数量,默认为2,一旦这N个节点启动,就会立即进行数据恢复。
gateway.expected_nodes: 3
# ---------------------------------- Various -----------------------------------
#开启跨域访问支持,默认为false
http.cors.enabled: true
#跨域访问允许的域名地址,(允许所有域名)以上使用正则
http.cors.allow-origin: /.*/
데이터 1 노드 설정:
vim /etc/elasticsearch/es-data1.yml
# ======================== Elasticsearch Configuration =========================
#
cluster.name: elk-cluster
node.name: node-data1
node.attr.rack: r1
# ----------------------------------- Paths ------------------------------------
#设置data存放的路径为/dat1/elasticsearch/data
path.data: /data1/elasticsearch/data
#设置logs日志的路径为/data1/elasticsearch/logs
path.logs: /data1/elasticsearch/logs
# ---------------------------------- Network -----------------------------------
#本机地址
network.host: 192.168.6.108
#开启监听的端口为9201
http.port: 9201
#tcp通讯端口
transport.tcp.port: 9331
#是否作为主机
node.master: false
#是否作为数据节点
node.data: true
node.max_local_storage_nodes: 3
#在删除索引时,是否需要明确指定名称.该值为false时,则可通过正则或_all删除:
action.destructive_requires_name: true
# --------------------------------- Discovery ----------------------------------
#集群信息,默认的通讯接口是9300
discovery.zen.ping.unicast.hosts: ["192.168.6.108:9330", "192.168.6.108:9331","192.168.6.108:9332"]
discovery.zen.ping_timeout: 60s
action.auto_create_index: false
# ---------------------------------- Gateway -----------------------------------
#
# Block initial recovery after a full cluster restart until N nodes are started:
#设置集群中N个节点启动时进行数据恢复,默认为1。
gateway.recover_after_nodes: 2
#设置初始化数据恢复进程的超时时间,默认是5分钟。
gateway.recover_after_time: 3m
gateway.expected_nodes: 3
# ---------------------------------- Various -----------------------------------
#开启跨域访问支持,默认为false
http.cors.enabled: true
#跨域访问允许的域名地址,(允许所有域名)以上使用正则
http.cors.allow-origin: /.*/
데이터 2 노드 설정:
vim /etc/elasticsearch/es-data2.yml
# ======================== Elasticsearch Configuration =========================
#
cluster.name: elk-cluster
node.name: node-data2
node.attr.rack: r1
# ----------------------------------- Paths ------------------------------------
#设置data存放的路径为/data2/elasticsearch/data
path.data: /data2/elasticsearch/data
#设置logs日志的路径为/data2/elasticsearch/logs
path.logs: /data2/elasticsearch/logs
# ---------------------------------- Network -----------------------------------
#本机地址
network.host: 192.168.6.108
#开启监听的端口为9202
http.port: 9202
#tcp通讯端口
transport.tcp.port: 9332
#是否作为主机
node.master: false
#是否作为数据节点
node.data: true
node.max_local_storage_nodes: 3
#在删除索引时,是否需要明确指定名称.该值为false时,则可通过正则或_all删除:
action.destructive_requires_name: true
# --------------------------------- Discovery ----------------------------------
#集群信息,默认的通讯接口是9300
discovery.zen.ping.unicast.hosts: ["192.168.6.108:9330", "192.168.6.108:9331","192.168.6.108:9332"]
discovery.zen.ping_timeout: 60s
#这个关闭了自动创建索引。为的也是安全考虑,否则即使是内网,也有很多扫描程序,一旦开启,扫描程序会自动给你创建很多索引。
action.auto_create_index: false
# ---------------------------------- Gateway -----------------------------------
#
# Block initial recovery after a full cluster restart until N nodes are started:
#设置集群中N个节点启动时进行数据恢复,默认为1。
gateway.recover_after_nodes: 2
#设置初始化数据恢复进程的超时时间,默认是5分钟。
gateway.recover_after_time: 3m
gateway.expected_nodes: 3
# ---------------------------------- Various -----------------------------------
#开启跨域访问支持,默认为false
http.cors.enabled: true
#跨域访问允许的域名地址,(允许所有域名)以上使用正则
http.cors.allow-origin: /.*/
외부 네트워크 를 사용 하여 클 러 스 터 를 구축 할 때 주의해 야 합 니 다: network. host 는 0.0.0.0 으로 수정 해 야 합 니 다. 또한 외부 네트워크 주 소 를 노출 해 야 합 니 다. 코드 는 다음 과 같 습 니 다.
network.host: 0.0.0.0
network.publish_host: xx.xx.xx.xx
discovery. zen. ping. unicast. hosts 는 각 서버 의 외부 네트워크 주소 와 통신 포트 로 수정 하면 됩 니 다.
2.4 헤드 플러그 인 헤드 플러그 인 을 설치 하면 집단의 통계 데 이 터 를 생 성하 고 브 라 우 저 조 회 를 제공 할 수 있 으 며 elasticsearch 인덱스 를 구조 적 으로 조회 할 수 있다.
cd /usr/local/es-master/
mkdir head &&cd head
git clone https://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head/
#install node v7.x
curl --silent --location https://rpm.nodesource.com/setup_7.x | bash -
sudo yum install nodejs
npm config set registry=http://registry.npm.taobao.org
npm install ##运行缓慢
npm install -g grunt-cli
##修改配置文件
[root@Elk_Server elasticsearch-head]# vim Gruntfile.js
connect: {
server: {
options: {
port: 9100,
hostname: '192.168.6.108', ##添加这行,冒号后面有空格
base: '.',
keepalive: true
}
}
}
2.5 시스템 매개 변수 조정
##修改es三个节点的JVM运行内存,这个可以根据需要更改,但是-Xms和-Xmx的值必须一样,不然启动报错
[root@Elk_Server ]# vim /usr/local/es-master/config/jvm.options
[root@Elk_Server ]# vim /usr/local/es-data1/config/jvm.options
[root@Elk_Server ]# vim /usr/local/es-data2/config/jvm.options
-------------------------------------------------------------------------
-Xms2g
-Xmx2g
##修改Linux最大打开文件数
vim /etc/security/limits.conf
* soft nofile 655350 ##在末尾添加
* hard nofile 655350
##这一步需要重启linux使配置生效
reboot
[root@Elk_Server~]# ulimit -n
655350
##修改sysctl.conf文件
[root@Elk_Server ~]# vim /etc/sysctl.conf
vm.max_map_count=655350
[root@Elk_Server ~]# sysctl -p
2.6 ES 헤드 플러그 인 시작
cd /usr/local/es-master/head/elasticsearch-head && grunt server &
[3] 5946
##会开启9100端口。
2.7 Elasticsearch 시작 (ES 는 일반 사용자 만 시작)
chown -R elasticsearch:elasticsearch /usr/local/es-*
chown -R elasticsearch:elasticsearch /data{,1,2}/elasticsearch
##切换到普通用户启动elasticsearch
su - elasticsearch
nohup /usr/local/es-master/bin/elasticsearch & # -d或&以后台的方式进行启动Elasticsearch
[1] 6202
##启动成功是会开启9200,9300两个端口的。
##传输端口为9300接受http请求的端口为9200
##在浏览器打开可以利用head插件查看elasticsearch的集群及索引情况
2.8 메 인 노드 가 시 작 된 후에 똑 같은 방법 으로 서브 노드 를 시작 하면 된다.잘못 보고 하면 해결 방법:https://blog.51cto.com/qiangsh/2152670
2.9 인증 시작
ps axu |grep elasticsearch
方法一:
curl 'http://192.168.6.108:9200/_search?pretty'
-----
{
"took" : 9,
"timed_out" : false,
"_shards" : {
"total" : 0,
"successful" : 0,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 0,
"max_score" : 0.0,
"hits" : [ ]
}
}
方法二:
//或者通过浏览器访问:http://192.168.6.108:9200/
#检查es版本信息
curl -u : http://192.168.6.108:9200
#此时观察ES集群状态:
curl http://192.168.6.108:9200/_cluster/health?pretty
#观察集群内各索引状态:
curl http://192.168.6.108:9200/_cat/indices?pretty
#查询elasticsearch节点状态:
curl -XGET http://192.168.6.108:9200/_cat/shards |grep UNASSIGNED
#查看节点列表
http://IP:9200/_cat/nodes?v
curl 'IP:9200/_cat/nodes?v'
#列出所有索引及存储大小
http://IP:9200/_cat/indices?v
curl 'IP:9200/_cat/indices?v'--查询所有索引及数据大小
#创建索引
创建索引名为XX,默认会有5个分片,1个索引
curl -XPUT 'IP:9200/XX?pretty'
#添加一个类型
curl -XPUT 'IP:9200/XX/external/2?pretty' -d '
{
"gwyy": "John"
}'
#更新一个类型
curl -XPOST 'IP:9200/XX/external/1/_update?pretty' -d '
{
"doc": {"name": "Jaf"}
}'
#删除指定索引
curl -XDELETE 'IP:9200/_index?pretty'
3. Logstash 설치:
Logstash 의 기능 은 다음 과 같 습 니 다.
사실 그것 은 하나의 수집 기 일 뿐 입 니 다. 우 리 는 그것 을 위해 Input 과 Output 을 지정 해 야 합 니 다. (물론 Input 과 Output 은 여러 개 일 수 있 습 니 다.)자바 코드 에 있 는 Log4j 로 그 를 ElasticSearch 에 출력 해 야 하기 때문에 여기 있 는 Input 은 Log4j 이 고 Output 은 ElasticSearch 입 니 다.
3.1 Logstash 설치
tar zxvf logstash-6.3.2.tar.gz -C /usr/local/
mv /usr/local/logstash-6.3.2 /usr/local/logstash
ln -s /usr/local/logstash/bin/logstash /usr/bin/
mkdir -p /data/logs/logstash
3.2 설치 성공 여 부 를 검증 합 니 다. 아래 그림 에서 볼 수 있 듯 이 현재 9600 포트 가 열 려 있 습 니 다.
logstash -e 'input { stdin { } } output { elasticsearch { hosts => ["192.168.6.108:9200"] } stdout { codec => rubydebug }}'
###等待片刻后出现“The stdin plugin is now waiting for input:”,输入“test”回车,返回下面标准的输出。
-----
[2018-07-31T07:34:23,968][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>9600}
test
{
"@version" => "1",
"host" => "Elk_Server",
"message" => "test",
"@timestamp" => 2018-07-31T07:34:40.422Z
}
3.3 logstash 설정\# # 다음은 중점 이자 ELK 의 어 려 운 점 입 니 다. 로 그 를 분석 하고 필터 로그 에서 원 하 는 내용 과 정규 일치 하 는 것 을 사용 하 는 것 입 니 다.
[root@Elk_Server logstash]# cat /data/logs/test.log
120.79.189.51 - - [10/Jun/2018:12:58:12 +0800] "POST /wp-cron.php?doing_wp_cron=1528606692.3628709316253662109375 HTTP/1.1" 499 0 "-" "WordPress/4.8; http://120.79.189.51"
\#\# 이것 은 로그 의 한 줄 입 니 다. logstash 의 정규 일치 기본 값 은 한 줄 과 일치 합 니 다. Enter 문 자 를 구분자 로 합 니 다.\#\#물론 로그 가 제 이 슨 형식 이 라면 직접 출력 을 처리 할 필요 가 없 으 면 됩 니 다.
#我们到config目录中新建一个logstash.conf配置。
[root@Elk_Server logstash]# vim /etc/logstash/conf.d/logstash.conf
input {
file {
path => "/data/logs/test.log"
type => "test.log"
start_position => "beginning"
}
}
filter {
grok {
match => {
"message" => "(?\d+?\.\d+?\.\d+?\.\d+?)\s-\s-\s\[(?\d+?/\w+?/\d+?):(?\d+?:\d+?:\d+?)\s+"
}
}
}
output {
stdout {codec => rubydebug}
}
\#\# 이것 은 logstash 의 로그 분석 파일 입 니 다. 모두 세 개의 대부분 으로 나 뉘 는데 input, flter, output 입 니 다. 그 중에서 input 는 입력 로그 입 니 다. 여 기 는 file 파일 을 선택 하 였 습 니 다. path 는 파일 의 경로 이 고 type 은 파일 의 형식 입 니 다. 이것 은 사용자 정의 할 수 있 습 니 다. 주로 모든 로그, start 를 구분 하 는 데 사 용 됩 니 다.position 는 begin 으로 설정 되 어 있 습 니 다. 파일 의 시작 부분 부터 읽 는 것 을 말 합 니 다.\#\#flter 는 로 그 를 처리 하 는 부분 입 니 다. grok 라 는 강력 한 구성 요 소 를 사용 하여 정 보 를 걸 러 냅 니 다. 로그 의 정규 일치 에 대해 서 는 항상 json 형식 으로 출력 합 니 다. 따라서 정규 일치 하 는 형식 은 (? 정규 표현 식 필 터 는 일치 할 내용) 괄호 마다 거 른 내용 을 만 들 고 필요 하지 않 은 내용 을 괄호 밖 에 두 면 로그 가 끝 날 때 까지 일치 할 수 있 습 니 다.여 기 는 로그 앞의 ip 주소 와 날짜 시간 만 간단하게 일치 합 니 다.정규 일치 필드 에 대한 자세 한 설명:\# # 정규 일치 필드 는 "(? 정규 표현 식)"을 통 해 정 의 됩 니 다. "(?\d +?.\d +?.\d +?.\d +?.\d +?"를 볼 수 있 습 니 다.로그 의 IP 주 소 를 일치 시 킨 다음 에 필요 하지 않 은 내용 을 괄호 밖 에 두 고 일치 시 킵 니 다. 그 다음 에 날짜 와 시간 을 똑 같은 방식 으로 사용 한 다음 에 필요 하지 않 은 내용 을 밖 에 두 었 습 니 다. 여기 서 저 는 앞의 내용 만 일치 하기 때 문 입 니 다. 추출 이 필요 하 다 면 계속 일치 할 수 있 습 니 다. 이 줄 이 끝 났 음 을 알 고 logstash 는 기본적으로 로그 와 줄 만 일치 합 니 다. 다음한 줄 은 또 새로운 일치 입 니 다.\# output 는 출력 부분 을 처리 하 는 것 입 니 다. 여 기 는 터미널 에 간단하게 출력 할 뿐 입 니 다. 먼저 정규 일치 문 제 를 실험 한 후에 출력 을 elasticsearch 에 가 리 킵 니 다.
[root@Elk_Server logstash]# logstash -r -f /etc/logstash/conf.d/logstash.conf
..............
{
"path" => "/data/logs/test.log",
"host" => "Elk_Server",
"type" => "test.log",
"log_date" => "10/Jun/2018",
"@version" => "1",
"log_time" => "12:58:12",
"@timestamp" => 2018-07-31T09:45:16.247Z,
"ip_addr" => "120.79.189.51",
"message" => "120.79.189.51 - - [10/Jun/2018:12:58:12 +0800] \"POST /wp-cron.php?doing_wp_cron=1528606692.3628709316253662109375 HTTP/1.1\" 499 0 \"-\" \"WordPress/4.8; http://120.79.189.51\""
}
다음은 elasticsearch 에 로 그 를 출력 하고 output 의 내용 을 수정 하면 됩 니 다.
output {
elasticsearch { ##指定输出到ES
action => "index" ##建立索引
hosts => "192.168.6.108:9200" ##ES地址端口
index => "test_log-%{+yyyy.MM.dd}" ##索引的名称
}
stdout {codec => rubydebug}
}
3.4 설정 을 검증 하고 오 류 를 보고 합 니 다.
logstash -f /etc/logstash/conf.d/logstash.conf --config.test_and_exit
\\或者
logstash -t -f /etc/logstash/conf.d/logstash.conf
3.5 서비스 시작
nohup logstash -f /etc/logstash/conf.d/logstash.conf --config.reload.automatic -l /data/logs/logstash &
\\或者
nohup logstash -r -f /etc/logstash/conf.d/logstash.conf -l /data/logs/logstash &
-- config. reload. automatic 옵션 을 사용 하면 설정 파일 을 수정 할 때마다 Logstash 를 멈 추고 다시 시작 하지 않 아 도 됩 니 다.
3.6 filebeat 사례 로그 의 내용 은 다음 과 같다.
2018-12-20 17:40:50.665 INFO 1 --- [Thread-422] f.s.j.e.common.iml.AbstractJobWorker : no task in app f.s.job.executor.social.users's job 0
2018-12-22 11:23:55.947 INFO -- [cluster-ClusterId{value='5xxx001145200', description='null'}-dds-xxxc9e41.mongodb.rds.aliyuncs.com:3717] org.mongodb.xxx.cluster : Server xxx:3717 is no longer a member of the replica set. Removing from client view of cluster.
filebeat 설정 파일:
#=========================== Filebeat inputs =============================
filebeat.inputs:
- type: log
enabled: true
paths:
- /data/log/*.log
fields:
app: tomcat
type: all
fields_under_root: true
#multiline.pattern: '^\['
multiline.pattern: '^\d+\-\d+\-\d+\s+\d+\:\d+\:\d+'
multiline.negate: true
multiline.match: after
multiline.max_lines: 200
multiline.timeout: 10s
#tags: ["filebeat"]
#exclude_lines: ['^\d+\-\d+\-\d+\s+\d+\:\d+\:\d+\s+DEBUG']
#include_lines: ['^ERR', '^WARN']
#----------------------------- Logstash output --------------------------------
output.logstash:
# enabled: true
hosts: ["127.0.0.1:5044"]
# index => "filebeat-%{+YYYY.MM.dd}"
# worker: 4
# bulk_max_size: 1024
# compression_level: 6
# loadbalance: false
# backoff.max: 120s
logstash 프로필:
[root@Elk_Server logstash]# vim /etc/logstash/conf.d/logstash.conf
input {
beats {
host => '0.0.0.0'
port => "5044"
}
}
filter {
grok {
match => { "message" =>
["%{TIMESTAMP_ISO8601:date}\s+(?:%{LOGLEVEL:loglevel}|%{LOGLEVEL:loglevel}\s+\d) \-+ \[%{NOTSPACE:servicename}\] %{JAVALOGMESSAGE:message}",
"%{TIMESTAMP_ISO8601:date}\s+(?:%{LOGLEVEL:loglevel}|%{LOGLEVEL:loglevel}\s+\d) \-+ \[%{NOTSPACE:servicename}\{%{DATA:description}\}-%{DATA:db}\] %{JAVALOGMESSAGE:message}"]
}
overwrite => [ "message" ]
}
#geoip {
# source => "remote_addr"
# target => "geoip"
# database => "/opt/GeoLite2-City.mmdb"
# add_field => ["[geoip][coordinates]", "%{[geoip][longitude]}"]
# add_field => ["[geoip][coordinates]", "%{[geoip][latitude]}"]
#}
date {
locale => "en"
match => ["date", "dd/MMM/yyyy:HH:mm:ss Z"]
}
}
output {
elasticsearch {
hosts => [ "192.168.6.108:9200" ]
index => "logstash-%{type}-%{+YYYY.MM.dd}"
}
# stdout {codec => rubydebug}
}
4. Kibana 설치
4.1 Kibana 설치
tar zxvf kibana-6.3.2-linux-x86_64.tar.gz -C /usr/local/
mv /usr/local/kibana-6.3.2-linux-x86_64 /usr/local/kibana
4.2 Kibana 설정
cd /usr/local/kibana/
vim config/kibana.yml
#把以下注释放开,使配置起作用。
-----
server.port: 5601
server.host: "192.168.6.108"
elasticsearch.url: "http://192.168.6.108:9200"
kibana.index: ".kibana"
4.3 Kibana 를 시작 하고 테스트 접근 을 합 니 다. 로그 에서 알 수 있 듯 이 현재 5601 포트 가 열 렸 습 니 다.
./bin/kibana
#后台启动
nohup /usr/local/kibana/bin/kibana &
-----
log [03:30:39.833] [info][status][plugin:[email protected]] Status changed from uninitialized to green - Ready
log [03:30:39.882] [info][status][plugin:[email protected]] Status changed from uninitialized to yellow - Waiting for Elasticsearch
log [03:30:40.026] [info][status][plugin:[email protected]] Status changed from uninitialized to green - Ready
log [03:30:40.033] [info][status][plugin:[email protected]] Status changed from uninitialized to green - Ready
log [03:30:40.037] [info][status][plugin:[email protected]] Status changed from uninitialized to green - Ready
log [03:30:40.061] [info][listening] Server running at http://192.168.30.211:5601
log [03:30:40.117] [info][status][plugin:[email protected]] Status changed from yellow to green - Ready
4.4 시동 이 잘못 되 지 않 았 는 지 확인 하고 192.168.6.108: 5601 브 라 우 저 를 통 해 방문 할 수 있 습 니 다.
색인 추가
① Discover 를 누 르 면 다음 화면 이 나타 납 니 다. logstash 로그 분석 파일 에 색인 이 있 습 니 다. 색인 이름 은 test log - ${날짜} 입 니 다. Elasticsearch 의 색인 이름 으로 시작 합 니 다. Kibana 는 Elasticsearch 에 이 색인 이름 이 저장 되 어 있 는 지 자동 으로 감지 합 니 다.
② 주석 설정 에 따라 Next step 를 클릭 하고 2 페이지 에서 @ timestamp 를 선택 하고 create 를 클릭 하여 생 성
③ 생 성 이 완료 되면 다음 화면 을 볼 수 있 습 니 다. 빨간색 상자 안에 자동 으로 생 성 된 도 메 인 이 있 고 데이터 베이스 에 있 는 필드 와 유사 하 다 고 이해 할 수 있 습 니 다. 그 중에서 message 필드 가 있 는데 바로 우리 가 원 하 는 로그 정보 입 니 다.
④ Discover 를 다시 클릭 하면 다음 화면 이 나타 납 니 다. 기본 검색 은 마지막 15 분 의 로 그 를 볼 수 있 고 클릭 을 통 해 검색 시간 범 위 를 설정 할 수 있 습 니 다.
⑤ 오른쪽 필드 의 add 설정 을 누 르 면 표시 할 필드 를 추가 할 수 있 습 니 다. 로 그 는 다음 과 같이 표 시 됩 니 다.
⑥ 요청 체 와 응답 체도 볼 수 있다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ELK 로그 분석 시스템 구축ELK: Elasticsearch+Logstash+Kibana 로그는 주로 시스템 로그, 응용 프로그램 로그와 보안 로그를 포함합니다.시스템 운영과 개발자는 로그를 통해 서버 하드웨어 정보를 파악하고 설정 과정에서의...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.