ES环境准备
yum install ntpdate -y ; iptabls -F ; 禁用selinux,保持每个时间得时区都是一样得
1台测试得WEB,3台ES,1台Logstash,1台kibana
Index -- Database
Type -- Table
Document -- Row
Field -- Column
安装Elasticsearch,可以通过二进制的方式安装,也可以通过rpm的方式安装,推荐使用rpm的方式安装,所以找到ES的官方网站然后倒入对应的yum源,导入key
版本6.2
安装前,需要在当前操作系统安装开源你的java环境
yum install java-1.8.0-openjdk -y
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
vim /etc/yum.repos.d/elastic.repo
[elastic-6.x]
name=Elastic 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
开始安装
yum install elasticsearch -y
安装完成之后开始配置ES
vim /etc/elasticsearch/elasticsearch.yml
cluster.name: elk-cluster
node.name: node-1
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 192.168.0.212 (ES自己的IP地址)
http.port: 9200
discovery.zen.ping.unicast.hosts: ["192.168.0.212","192.168.0.213","192.168.0.214"]
discovery.zen.minimum_master_nodes: 2
启动ES
systemctl start elasticsearch
查看对应的日志,确认没有我呢提
确认集群是否正常
curl -X GET "192.168.0.212:9200/_cat/health?v"
curl -X GET "192.168.0.212:9200/_cat/node?v"
Elasticsearch 数据操作
RestFul API 格式
curl -X<verb> '<protocol>://<host>:<port>/<path>?<query_string>' -d '<body>'
verb -- HTTP方法 : GET POST PUT HEAD DELETE
host -- ES集群中的任意节点主机名
port -- ES HTTP服务端口,默认9200
path -- 索引路径
query_string 可选的查询请求参数,例如?pretty参数将格式化输出json数据
-d 里面放一个GET的json格式请求主体
body 写进去的json格式的请求主体
列出所有的索引
curl -X GET "192.168.0.212:9200/_cat/indices?v"
创建索引
curl -X PUT "192.168.0.212:9200/log-cntf-202004"
Elasticsearch 常用的查询
match_all; from,size; match; bool; range;
Elasticsearch -- head插件
此插件可方便各种ES查询和其他各种常见的操作是图像界面操作
wget https://npm.taobao.org/mirrors/node/latest-v4.x/node-v4.4.7-linux-x64.tar.gz
tar -zxvf node-v4.4.7-linux-x64.tar.gz
mv node-v4.4.7 /usr/local/node-v4.4.7
# vim /etc/profile
NODE_HOME=/usr/local/node-v4.4
PATH=$NODE_HOME/bin:$PATH
export NODE_HOME PATH
# source /etc/profile
# git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install
npm run start
Logstash
配置好Logstash的yum源,然后直接使用yum安装rpm包
yum install logstash -y 注意装的时候跟ES版本一样
条件判断
输入(Input)插件
Stdin(标准输入)
input {
stdin{
}
}
filter {
}
output {
stdout{
codec => rubydebug
}
}
File(文件)
input {
file {
path => "/var/log/messages"
tags => "cntf"
type => "syslog"
}
}
filter {
}
output {
stdout {
codec => rubdebug
}
}
Tcp
input {
tcp {
port => 34567
type => "nc"
}
}
filter {
}
output {
stdout {
codec => rubdebug
}
}
Beats
input {
beats {
port => 6088
}
}
filter {
}
output {
stdout {
codec => rubydebug
}
}
/usr/share/logstash/bin/logstash -t -f /etc/logstash/conf.d/cntf.conf
上述是测试配置文件是否正确
/usr/share/logstash/bin/logstash -r -f /etc/logstash/conf.d/cntf.conf
启动logstash
Logstash -- 编码插件
input {
stdin {
codec =>json {
charset =>["utf-8"]
}
}
}
filter{
}
output {
stdout {
codec => rubdebug
}
}
下面是通过正则匹配一些特定的内容,进行输出到一行,经常用到情景是java异常日志输出的格式
input {
stdin {
codec =>multiline {
pattern => "^\s"
what => "previous"
}
}
}
filter{
}
output {
stdout {
codec => rubdebug
}
}
Logstash -- 过滤器(Filter) 插件
input {
stdin {
}
}
filter {
json {
source => "message"
target => "content"
}
}
output {
stdout {
codec => rubdebug
}
}
kv的形式 key-value
input {
stdin {
}
}
filter {
kv {
field_split => "&?"
}
}
output {
stdout {
codec => rubdebug
}
}
input {
stdin {
}
}
filter {
kv {
field_split_pattern => ":+"
}
}
output {
stdout {
codec => rubdebug
}
}
Logstash - 过滤器(Filter) Grok插件
grok在线解析
grokdebug.herokuapp.com
Kibana 安装
yum install kibana -y
安装好kibana之后,然后通过配置kibana的配置文件,收集Elasticsearch所拿到的日志
Kibana 组件X-Pack但是是收费的
为了安全,通过nginx提供http的基础认证
nginx配置认证的配置文件
location / {
proxy_pass http://192.168.0.212:5601;
auth_basic "Please input your user&pasword";
auth_basic_user_file /usr/local/nginx/conf/passwd.db;
}
openssl passwd -crypt 123456 将生成的加密密码写入到下面的文件
vim /usr/local/nginx/conf/passwd.db
cntf:faHgR3x/qNehA
加入redis
安装redis,记得使用epel安装源
file -> logstash shipper -> redis -> logstash indexer -> elasticsearch -> kibana
加入Filebeat
filebeat也是个收集日志的组件
安装filebeat
yum install filebeat -y
file -> filebeat -> redis -> logstash -> elasticsearch -> kibana
生产如何上线ELK
1.日志分类
系统日志 rsyslog logstash syslog插件
访问日志 nginx logstash codec json
错误日志 file logstash file+ mulitline
运行日志 file logstash codec json
设备日志 syslog logstash syslog 插件
debug日志 file logstash json or mulitline
2.日志标准化
路径 固定
格式 json
3.系统日志--错误日志--运行日志--访问日志
网友评论