千家信息网

ELK Stack 企业日志

发表于:2024-09-30 作者:千家信息网编辑
千家信息网最后更新 2024年09月30日,一、ELK介绍ELKStacks是一个技术栈的组合,分别是Elasticsearch、Logstash、KibanaELK Stack:1、扩展性:采用高扩展性分布式架构设计,可支持每日TB级数据2、
千家信息网最后更新 2024年09月30日ELK Stack 企业日志

一、ELK介绍

ELKStacks是一个技术栈的组合,分别是Elasticsearch、Logstash、Kibana

ELK Stack:

1、扩展性:采用高扩展性分布式架构设计,可支持每日TB级数据

2、简单易用:通过图形页面可对日志数据各种统计,可视化

3、查询效率高:能做到秒级数据采集、处理和搜索

https://www.elastic.co/cn/products/elasticsearch

https://www.elastic.co/cn/products/kibana

https://www.elastic.co/cn/products/beats/filebeat

https://www.elastic.co/cn/products/beats/metricbeat


二、ELK架构


Logstash :开源的服务器端数据处理管道,能够同时从多个来源采集数据、转换数据,然后将数据存储到数据库中。

Elasticsearch:搜索、分析和存储数据。

Kibana:数据可视化。

Beats :轻量型采集器的平台,从边缘机器向 Logstash 和 Elasticsearch 发送数据。

Filebeat:轻量型日志采集器。

https://www.elastic.co/cn/

https://www.elastic.co/subscriptions

Input:输入,输出数据可以是Stdin、File、TCP、Redis、Syslog等。

Filter:过滤,将日志格式化。有丰富的过滤插件:Grok正则捕获、Date时间处理、Json编解码、Mutate数据修改等。

Output:输出,输出目标可以是Stdout、File、TCP、Redis、ES等。


三、ElasticSearch

3.1 基本概念

Node:运行单个ES实例的服务器

Cluster:一个或多个节点构成集群

Index:索引是多个文档的集合

Document:Index里每条记录称为Document,若干文档构建一个Index

Type:一个Index可以定义一种或多种类型,将Document逻辑分组

Field:ES存储的最小单元

Shards:ES将Index分为若干份,每一份就是一个分片

Replicas:Index的一份或多份副本


ES

关系型数据库(比如Mysql)

Index

Database

Type

Table

Document

Row

Field

Column

3.2 集群部署

首先做好系统的初始化配置,安装好jdk

#1) System initialization on each Serverscat >> /etc/security/limits.conf << EOF* hard memlock unlimited* soft memlock unlimited* - nofile 65535EOFcat > /etc/sysctl.conf << EOFnet.ipv6.conf.all.disable_ipv6 = 1net.ipv6.conf.default.disable_ipv6 = 1vm.swappiness = 0vm.max_map_count=262144vm.dirty_ratio=10vm.dirty_background_ratio=5net.ipv4.tcp_fin_timeout = 30net.ipv4.tcp_keepalive_time = 1200net.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_max_syn_backlog = 8192net.ipv4.tcp_max_tw_buckets = 5000net.ipv4.ip_local_port_range = 10000 65000EOFsysctl -psetenforce 0sed -i 's/^SELINUX=.*$/SELINUX=disabled/' /etc/selinux/config systemctl stop firewalld.servicesystemctl disable firewalld.service  #2) Install JDK on each Serverswget -c http://download.cashalo.com/schema/auto_jdk.shsource auto_jdk.sh


接下来执行下面的脚本,我这里是三台服务器组成的ES集群,脚本里已经带了参数,可以交互式的输入实际的服务器IP地址,所以请在每个节点都运行

#!/bin/bashIP=`ifconfig|sed -n 2p|awk '{print $2}'|cut -d ":" -f2`if [ `whoami` != root ]thenecho "Please login as root to continue :)"exit 1fiif [ ! -d /home/tools/ ];thenmkdir -p /home/toolselserm -rf /home/tools && mkdir -p /home/toolsfiyum install perl-Digest-SHA -y && cd /home/tools#wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.8.1.rpm#wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.8.1.rpm.sha512#shasum -a 512 -c elasticsearch-6.8.1.rpm.sha512 #sudo rpm --install elasticsearch-6.8.1.rpm#3) Download elasticsearch-5.6.10 on each serverswget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.10.rpmwget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.10.rpm.sha512shasum -a 512 -c elasticsearch-5.6.10.rpm.sha512sudo rpm --install elasticsearch-5.6.10.rpm #4) Modify elasticsearch.yml File#Note: network.host means your IP addresscat >/etc/elasticsearch/elasticsearch.yml<


3.3 数据操作

RestFul API格式

curl -X '://:/?'-d ''

参数

描述

verb

HTTP方法,比如GET、POST、PUT、HEAD、DELETE

host

ES集群中的任意节点主机名

port

ES HTTP服务端口,默认9200

path

索引路径

query_string

可选的查询请求参数。例如?pretty参数将返回JSON格式数据

-d

里面放一个GET的JSON格式请求主体

body

自己写的 JSON格式的请求主体

查看索引:

curl http://127.0.0.1:9200/_cat/indices?v

新建索引:

curl -X PUT 127.0.0.1:9200/logs-2018.05.22

删除索引:

curl -X DELETE 127.0.0.1:9200/logs-2018.05.22

3.4 常用查询

ES提供一种可用于执行查询JSON式的语言,被称为Query DSL

示例数据

使用官方提供的示例数据:

https://www.elastic.co/guide/en/elasticsearch/reference/current/_exploring_your_data.html

wget https://raw.githubusercontent.com/elastic/elasticsearch/master/docs/src/test/resources/accounts.json




0