企业日志分析ELK搭建流程
ELK组件介绍
elasticsearch介绍
Elasticsearch是一个基于Lucene的搜索服务器。Elasticsearch是用Java开发,基于RESTful web接口。
logstash介绍
Logstash由JRuby语言编写,基于消息(message-based)的简单架构,Logstash的理念很简单,它只做3件事情:
1.数据输入
2.数据加工,改变数据格式
3.数据输出
Kibana介绍
Kibana是一个针对Elasticsearch的开源分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索引中的数据。使用Kibana,可以通过各种图表进行高级数据分析及展示。
部署实验环境
实验环境:
需要准备三台Linux操作系统,搭建elk日志分析和web服务。
1.两台节点主机设置主机名、主机映射、安装jdk。
#主机名设置
hostnamectl set-hostname node1
hostnamectl set-hostname node2
#主机映射设置
192.168.80.100 node1
192.168.80.101 node2
#安装JDK
rpm -ivh jdk-8u201-linux-x64.rpm
echo "export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64" >> /etc/profile
echo "export CLASSPATH=\$JAVA_HOME/lib/tools.jar:\$JAVA_HOME/lib/dt.jar" >> /etc/profile
echo "export PATH=\$JAVA_HOME/bin:\$PATH" >> /etc/profile
部署elasticsearch软件
node1节点步骤
1.安装elasticsearch—rpm包
rpm -ivh elasticsearch-5.5.0.rpm
2.加载系统服务
systemctl daemon-reload
systemctl enable elasticsearch.service
3.更改elasticsearch主配置文件
#备份主配置文件
cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
vi /etc/elasticsearch/elasticsearch.yml
4.修改主配置文件
cluster.name: my-elk-cluster ####集群名字
node.name: node1 ####节点名字
path.data: /data/elk_data ####数据存放路径
path.logs: /var/log/elasticsearch/ ####数据存放路径
bootstrap.memory_lock: false ####不在启动的时候锁定内存
network.host: 0.0.0.0 ####提供服务绑定的IP地址,0.0.0.0代表所有地址
http.port: 9200 ####侦听端口为9200
discovery.zen.ping.unicast.hosts: ["node1", "node2"] ####集群发现通过单播实现
5.创建数据存放路径并授权
mkdir -p /data/elk_data
chown elasticsearch:elasticsearch /data/elk_data/
6.启动elasticsearch是否成功开启
systemctl start elasticsearch.service
netstat -antp | grep 9200
7.集群检查健康和状态
#在宿主机上访问获取信息
http://192.168.80.100:9200/_cluster/health?pretty
node2节点部署
部署步骤同上,但是在修改配置文件时需要注意修改的主机名。这里不再赘述。
安装elasticsearch-head插件
node1和node2一起安装
1.编译安装node组件依赖包,此步骤耗时较长
#解压安装包
tar xzvf node-v8.2.1.tar.gz
cd node-v8.2.1/
#编译安装
./configure
make && make install
2.安装phantomjs和elasticsearch-head
#安装phantomjs
yum install bzip2 -y
tar xjvf phantomjs-2.1.1-linux-x86_64.tar.bz2
mv phantomjs-2.1.1-linux-x86_64 /usr/local/src
cp /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin
#安装elasticsearch-head
tar xzvf elasticsearch-head.tar.gz
mv elasticsearch-head /usr/local/src
cd /usr/local/src/elasticsearch-head
npm install
3.修改elasticsearch主配置文件,在文件末尾插入
vi /etc/elasticsearch/elasticsearch.yml
http.cors.enabled: true
http.cors.allow-origin: "*"
4.开启elasticsearch
systemctl restart elasticsearch
5.启动elasticsearch-head服务
cd /usr/local/src/elasticsearch-head/
#在后台运行
npm run start &
Elasticsearch安装成功!
建立一个名为test的索引。
curl -XPUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'
安装logstash
1、更改主机名
hostnamectl set-hostname apache
2.安装httpd服务,开启服务并设为开机自启动。
yum -y install httpd
systemctl start httpd
3、安装Java环境
yum -y install java
java -version
4.使用logstash将信息写入elasticsearch中。
logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.80.100:9200"] } }'
5.做对接配置
#修改messages的other用户的权限
chmod o+r /var/log/messages
#修改logstash配置文件
vi /etc/logstash/conf.d/system.conf
input {
file{
path => "/var/log/messages"
type => "system"
start_position => "beginning"
}
}
output {
elasticsearch {
hosts => ["192.168.80.100:9200"]
index => "system-%{+YYYY.MM.dd}"
}
}
#重启服务
systemctl restart logstash.service
在node1主机安装kibana
1.安装kibana
mv /opt/kibana-5.5.1-x86_64.rpm /usr/local/src
rpm -ivh /usr/local/src/kibana-5.5.1-x86_64.rpm
2.修改kibana配置文件
备份配置文件
cp /etc/kibana/kibana.yml /etc/kibana/kibana.yml.bak
修改配置文件
vi /etc/kibana/kibana.yml
server.port: 5601 #### kibana打开的端口
server.host: "0.0.0.0" ####kibana侦听的地址
elasticsearch.url: "http://192.168.80.100:9200" ###和elasticsearch建立联系
kibana.index: ".kibana" ####在elasticsearch中添加.kibana索引
在宿主机上访问:192.168.80.100:5601,ip:6501。首次登录创建一个索引 名字:system-*,然后点击创建。
web服务器对接kibana
1.在web服务器上的logstash里配置apache_log.conff文件
cd /etc/logstash/conf.d/
vi apache_log.conf
input {
file{
path => "/etc/httpd/logs/access_log" #指向访问日志路径
type => "access"
start_position => "beginning"
}
file{
path => "/etc/httpd/logs/error_log" #指向错误日志路径
type => "error"
start_position => "beginning"
}
}
output {
if [type] == "access" {
elasticsearch {
hosts => ["192.168.80.100:9200"] #访问日志指向elasticsearchIP地址
index => "apache_access-%{+YYYY.MM.dd}"
}
}
if [type] == "error" { #错误日志指向elasticsearchIP地址
elasticsearch {
hosts => ["192.168.80.100:9200"]
index => "apache_error-%{+YYYY.MM.dd}"
}
}
}
#将httpd日志收集配置文件加入到logstash配置文件中
/usr/share/logstash/bin/logstash -f apache_log.conf
可以在elasticsearch上看到索引。
创建访问、错误日志索引。
可以查看具体的图形化信息。