基于CentOS 6.9搭建ELK环境指南

无论是甲方还是一方都需要面对大量日志处理的情况,之前分析的时候用基本的shell命令进行处理,但是面对大量数据的时候则有些力不从心,而且面对纯文字也不大直观。后来有人推荐了ELK,最近ELK升级到了版本五。E, L, K三大组件统一了版本号,花了一段时间总算搭好了。

基本环境信息:

Linux操作系统:CentOS 6.9 x64

Java版本号:1.8.0_131

ELK: 5.5

0×01 安装java

ELK需要最新的java1.8.CentOS自带了openjdk1.7,删了重新安装Oracle Java

yum remove java

然后从oracle官网(http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)下载java的源码包

mkdir /usr/java
tar -zxvf jdk-8u131-linux-x64.tar.gz -C  /usr/java/

编辑/etc/profile

JAVA_HOME=/usr/java/jdk1.8.0_131

JRE_HOME=/usr/java/jdk1.8.0_131/jre

PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

export PATH=$PATH:$JAVA_HOME:$JRE_HOME:$CLASSPATH

创建java的软连接

cd /usr/bin

ln -s /usr/java/jdk1.8.0_131/bin/java java

如图,安装成功

2. 安装elasticsearch

去elk官网下载elasticsearch的rpm包,

直接安装

rpm-ivhelasticsearch-5.5.0.rpm

启动测试

/etc/init.d/elasticsearch start

如图,安装成功

清空elasticsearch的数据

curl -XDELETE 'http://127.0.0.1:9200/logstash-*'

配置一下权限

 

cd /var/lib

chmod -R 777 logstash

 

3. 安装kibana

还是从官网下载kibana的二进制包

rpm-ivhkibana-5.5.0-x86_64.rpm

启动

/etc/init.d/kibana start

如图所示,kibaba也安装成功了,现在kibana只能从本地访问,为了方便调试,利用nginx做一下反向代理

yum install nginx

#/etc/nginx/conf.d/default.conf

server {

    listen80;

    location / {

        proxy_pass [http://localhost:5601](http://localhost:5601);

    }

}

4. 安装logstash

安装logstash和之前的步骤一样,但是logstash是没有独立的守护服务的

安装后的路径

/usr/share/logstash/

创建config的软连接

cd /usr/share/logstash

ln -s /etc/logstash ./config

Logstash配置文件是JSON格式,放在/etc/logstash/conf.d 。 该配置由三个部分组成:输入,过滤器和输出。

input 数据输入端,可以接收来自任何地方的源数据。

file:从文件中读取

syslog:监听在514端口的系统日志信息,并解析成RFC3164格式。

redis:从redis-server list 中获取

beat:接收来自Filebeat的事件

Filter 数据中转层,主要进行格式处理,数据类型转换、数据过滤、字段添加,修改等,常用的过滤器如下。

grok: 通过正则解析和结构化任何文本。Grok 目前是logstash最好的方式对非结构化日志数据解析成结构化和可查询化。logstash内置了120个匹配模式,满足大部分需求。

mutate: 在事件字段执行一般的转换。可以重命名、删除、替换和修改事件字段。

drop: 完全丢弃事件,如debug事件。

clone: 复制事件,可能添加或者删除字段。

geoip: 添加有关IP地址地理位置信息。

output 是logstash工作的最后一个阶段,负责将数据输出到指定位置,兼容大多数应用,常用的有:

elasticsearch: 发送事件数据到 Elasticsearch,便于查询,分析,绘图。

file: 将事件数据写入到磁盘文件上。

mongodb:将事件数据发送至高性能NoSQL mongodb,便于永久存储,查询,分析,大数据分片。

redis:将数据发送至redis-server,常用于中间层暂时缓存。

graphite: 发送事件数据到graphite。http://graphite.wikidot.com/

statsd: 发送事件数据到 statsd。

其中input和output是必须的,logstash由一个e参数,可以在终端调试配置文件

最简单的输入输出

/usr/share/logstash/bin# ./logstash -e 'input { stdin { } } output { stdout {} }'

采用格式化输出

logstash -e'input { stdin { } } output { stdout { codec => rubydebug } }'

这边,我们是从终端输入,同时也从终端输出,但在实际状况中几乎不可能这么做,那先打通输出环节吧,把输出的内容发送到

Elasticsearch

首先启动Elasticsearch,确保9200端口开着,前边已经启动了。然后执行

./logstash -e'input { stdin { } } output { elasticsearch { hosts => localhost } }'

确认一下

curl'http://localhost:9200/_search?pretty'

logstash的e参数调试是很方便,但是内容多的话就不方便了,logstash还有一个f参数,用来从配置文件中读取信息,简单示例

#logstash_simple.conf

input { stdin { } }

output {

  elasticsearch { hosts => localhost }

}

# ./logstash -f ../config/logstash_simple.conf

![75879570.png](http://image.3001.net/images/20170708/14995011356598.png!small)

![75898507.png](http://image.3001.net/images/20170708/14995011414518.png!small)

然后说一下过滤器

#logstash.conf

input { stdin {} }

filter {

 grok { match => ["message", "%{COMBINEDAPACHELOG}"] }

}

output { 

   elasticsearch { hosts => localhost } 

}

filter 以何种规则从字符串中提取出结构化的信息,grok是logstash里的一款插件,可以使用正则表达式匹配日志,上文中的%{COMBINEDAPACHELOG}是内置的正则,用来匹配apache access日志.

测试信息

127.0.0.1 - - [11/Dec/2013:00:01:45-0800] "GET /xampp/status.php HTTP/1.1"2003891"http://cadenza/xampp/navi.php""Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0"
curl'http://localhost:9200/_search?pretty'

分析本地的apache日志文件

首先启动elasticsearch

/etc/init.d/elasticsearch start

然后创建logstash的json文件

#logstash_apache.confinput {

    file {

        path => "/tmp/access.log"

        type => "apache"

        start_position => "beginning"

    }

}

filter { 

    grok { 

        match => {

            "message" => "%{COMBINEDAPACHELOG}"

        }

    }

    date {

        match => [ "timestamp" , "dd/MMM/YYYY:HH:mm:ss Z"]

    }

}

output {

   elasticsearch { hosts => localhost }

}

启动logstash

./logstash -f ../config/logstash_apache.conf

根据日志的时间修改一下时间段

然后是我最喜欢的功能,基于IP的地理位置显示

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/213715.html<

(0)
运维的头像运维
上一篇2025-04-11 11:09
下一篇 2025-04-11 11:10

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注