ELK使用问题记录

1.环境介绍:

使用的logstash(分别部署在两个服务器上收集日志)+redis+logstash+elasticsearch+kibana。

安装的java8 。logstash版本2.2.4-1   redis版本v=2.8.3   logstash版本2.2.4-1   elasticsearch2.4.5  kibana   4.4.2


A+B(部署的logstash)每个小时都有日志通过到特定目录,压缩包文件。通过编写python脚本每个小时对日志进行过滤处理成可以识别的状态放到logstash可以识别的目录。logstash识别新数据后,传到redis服务器。

详细的配置说明详见http://udn.yyuap.com/doc/logstash-best-practice-cn/input/stdin.html

/etc/logstash/conf.d/logstash.conf


安装 Logstash:

Logstash 软件包和 Elasticsearch 的在同一个版本库,之前我们已经添加了这个公共密钥。所以,直接创建 Lostash 的资源列表:

1
echo  'deb http://packages.elastic.co/logstash/2.2/debian stable main'  sudo  tee  /etc/apt/sources .list.d /logstash-2 .2.x.list

更新 apt 包数据源并安装:

1
2
sudo  apt-get update
sudo  apt-get  install  logstash

配置logstash

input {
   file {
		type => "click"     #给日志定一个类型
		path => "/srv/om-data-backup/click_log_hour_analyse/*.log"     #日志每小时都处理后放到这里
		start_position => "beginning" #从文件开始处读写
   }
#		stdin {}  #可以从标准输入读数据
}

filter {
    #执行ruby程序,下面例子是将日期转化为字符串赋予daytag
    ruby {
		code => "event['daytag'] = event.timestamp.time.localtime.strftime('%Y-%m-%d')"
    }

    #定义数据的格式
    grok {
		match => { "message" => "%{DATA:PlayName}\&%{DATA:Action}\&%{DATA:UserID}\&%{DATA:VideoID}\&%{IP:AccessIP}\&%{DATA:TimeStamp}\&%{DATA:Protocol}\&%{DATA:Suffix}\&%{DATA:AccessUrl}\&%{DATA:TerminalType}\&%{GREEDYDATA:UserAgent}"}
	}

    date {
        match => [ "TimeStamp" , "dd/MMM/yyyy:HH:mm:ss"]  ##将上边message中匹配的时间字符串转换成时间戳类型的数值,使得时间戳为日志的访问时间。
    }

    geoip {
        source => "AccessIP"
#        fields => ["continent_code", "country_name", "city_name","real_region_name", "country_code2", "country_code3", "ip", "latitude", "longitude", "location", "timezone"]
        fields => ["country_name", "city_name","real_region_name", "ip", "latitude", "longitude", "location"]
    } ##增加上边message中匹配的访问IP的地址查询功能。获取来访地址的位置信息。
}

output {
#   stdout{codec=>rubydebug}
#    elasticsearch {
#        hosts => ["localhost:9200"]
##        protocol => "http"
#    	sniffing => true
#    	manage_template => false
#        index => "logstash-%{type}-%{+YYYY.MM.dd}"
#        document_type => "%{type}"
##        workers => 5
##        template_overwrite => true
#    }
    redis{
        host => '10.12.70.122:6379'  #redis服务器ip和端口
        data_type => 'list'  #列表方式存入redis,logstash取的时候也是这个类型。
#        key => 'logstash-%{type}-%{+YYYY.MM.dd}'
        key => 'logstash:redis'   ##redis中存储的方式。redis-cli 输入keys *  可以看到。
    }
}


C(部署redis服务) 安装并配置redis,设置redis端口6379 。启动方式redis-server  /path/to/config/file

redis有个安全问题需要注意。默认是不需要任何权限就可以登录。所以,启动redis需要做安全设置。

我的方法是添加iptables策略。

先允许,再全部拒绝,可以达到只允许某些IP访问某个端口目的。

iptables -A INPUT -s 127.0.0.1 -p tcp --dport 6379 -j ACCEPT 
iptables -A OUTPUT -d 127.0.0.1 -p tcp --sport 6379 -j ACCEPT 

允许本地访问,可以通过redis-cli进行测试。

iptables -A INPUT -s 1.1.1.1 -p tcp --dport 6379 -j ACCEPT
iptables -A OUTPUT -d 1.1.1.1 -p tcp --sport 6379 -j ACCEPT

允许某个特定的IP 1.1.1.1访问 6379端口。

还可以同样的方式添加其他IP访问6379端口。

iptables -A INPUT -s 0.0.0.0/0 -ptcp --dport 6379 -j DROP

这样拒绝掉了其他端口访问6379端口。


D(部署logstash+elasticsearch+kibana)

安装java 8:

Elasticsearch 和 Logstash 需要 Java,所以我们需要安装。Elasticsearch 需要安装最新的 Oracle Java 8。

添加 Oracle JavaPPA 到 apt并安装:

add-apt-repository -y ppa:webupd8team/java
apt-get update
apt-get -y install oracle-java8-installer

安装 Elasticsearch:

Elasticsearch 可以用包管理器通过添加 Elasticsearch的包源列表进行安装。
用下面的命令来导入 Elasticsearch 公共 GPG 密钥到 apt:
wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
创建 Elasticsearch 资源列表:
echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list
更新 apt 包数据库并安装elasticsearch:
sudo apt-get update
sudo apt-get -y install elasticsearch
安装完毕后进行配置:
vim /etc/elasticsearch/elasticsearch.yml
path.data: /srv/     # 分析后数据存放位置
network.host:  # localhost 或者IP 
http.port: 9200  # 启用的端口
启动elasticsearch:
service elasticsearch restart
# 启动过程会校验java环境和/etc/default/elasticsearch里面的设置。
# 日志目录/var/log/elasticsearch/elasticsearch.log

安装 Kibana:

Kibana 可以用包管理器通过添加 Elastic 的包源列表进行安装。
创建 Kibana 资源列表:
echo "deb http://packages.elastic.co/kibana/4.4/debian stable main" | sudo tee -a /etc/apt/sources.list.d/kibana-4.4.x.list
更新 apt 包数据源并安装:
sudo apt-get update
sudo apt-get -y install kibana
修改配置文件:
vim /opt/kibana/config/kibana.yml
server.port: 5601  # 端口
server.host: "localhost"  # 监听IP
elasticsearch.url: "http://localhost:9200" # elasticsearch 端口。
启动kibana:
service kibana start
# 启动过程会校验/etc/default/kibana里面的参数。
# 日志位置 /var/log/kibana/kibana.stdout














### ELK Stack 的使用教程 #### 安装与配置概述 ELK Stack 是由 Elasticsearch、Logstash 和 Kibana 组成的强大工具集合,用于日志管理与数据分析。为了成功部署并运行 ELK Stack,需按照以下内容操作: 1. **安装 Elasticsearch** - 下载适合的操作系统版本的 Elasticsearch 并解压。 - 修改 `elasticsearch.yml` 文件中的网络设置以便外部访问[^2]。 ```yaml network.host: 0.0.0.0 cluster.name: my-cluster-name node.name: my-node-name ``` 2. **安装 Logstash** - 同样下载对应平台的 Logstash 版本,并编辑其配置文件 `logstash.conf` 来定义输入源和输出目标。 - 输入部分可指定为文件路径或其他数据流来源;输出则指向 Elasticsearch 实例地址。 ```conf input { file { path => "/var/log/*.log" start_position => "beginning" } } output { elasticsearch { hosts => ["http://localhost:9200"] } } ``` 3. **安装 Kibana** - 获取最新版 Kibana 软件包后调整连接参数使其能够找到本地或者远程的 Elasticsearch 数据库实例。 ```json { "server.host": "0.0.0.0", "elasticsearch.url": "http://localhost:9200" } ``` 4. **启动服务** - 按顺序依次开启上述三个组件的服务进程以确保整个架构正常工作。 #### 日志收集与分析流程说明 一旦完成了基本环境搭建之后就可以着手于实际的日志采集以及后续处理环节了: - 利用 Filebeat 工具作为轻量级代理来捕获服务器上的各种类型的日志记录并将它们转发给 Logstash 进行进一步解析转换再存储至 ElasticSearch 中等待查询展示[^3]。 - 用户可以通过图形界面 Kibana 创建仪表盘来自定义视图从而更直观便捷地监控业务状态变化趋势等等。 ```python import requests response = requests.get('http://localhost:9200/_cat/indices?v') print(response.text) ``` 此脚本可用于验证索引是否已创建成功。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值