ELK介绍
ELK是ElasticSerach、Logstash、Kibana三款产品名称的首字母集合,用于日志的搜集和搜索。
Elasticsearch:是一个开源分布式搜索引擎,提供搜集、分析、存储三大功能,特点是分布式、零配置、自动发现、索引自动分片、索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Logstash:主要用来日志收集、分析、过滤日志的工具,支持大量数据获取方式。一般工作方式为C\S架构,Client端安装在需要收集日志的主机上,server端负责将收集到的各个节点日志进行过滤、修改等操作,然后一并发给elasticsearch。
Kibana:可以作为Logstash和elasticsearch提供的日志分析友好的UI界面,可以帮助汇总、分析和搜索重要数据日志。
Filebeat:轻量级数据收集引擎,ELK Stack 在 Agent 的第一选择。
1.系统配置
• 设置hostname,打开文件/etc/hostname,将内容改为elk-server
• 关闭防火墙(如果因为其他原因不能关闭防火墙,也请不要禁止80端口)
systemctl stop firewalld.service
• 禁止防火墙自动启动
systemctl disable firewalld.service
• 打开文件vim /etc/security/limits.conf,添加下面四行内容:
-
soft nofile 65536
-
hard nofile 131072
-
soft nproc 2048
-
hard nproc 4096
• 打开文件vim /etc/sysctl.conf,添加下面一行内容:
vm.max_map_count=655360
• 加载sysctl配置,执行命令:sysctl -p
2.部署ELK
• 配置jdk环境
1.检查一下系统中的jdk版本
java -version
2.检测jdk安装包
rpm -qa | grep java
3.如果有卸载
比如: rpm -e --nodeps tzdata-java-2018c-1.el7.noarch
4.将jdk包拷贝到/usr/java下
mv jdk-8u161-linux-x64.tar.gz /usr/java
cd /usr/java
tar -xzvf jdk-8u161-linux-x64.tar.gz
cd jdk1.8.0_161/
5.设置环境变量
vim /etc/profile
在最前面添加:
export JAVA_HOME=/usr/java/jdk1.8.0_161
export CLASSPATH=$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
使环境变量生效
source /etc/profile
• 部署Elasticsearch
单机版
1.创建目录
mkdir /usr/local/elk
2.将ElasticSerach、Logstash、Kibana安装包拷贝到此目录并解压
3.创建用户组
groupadd elk
4.创建用户加入用户组
useradd elk -g elk
5.创建日志文件
touch touch /usr/local/elk/elasticsearch-6.7.2/logs/elasticsearch.log
6.单独创建数据存放路径
mkdir /mnt/esdata
修改主配置文件中数据存放位置(若安装完成后需要修改,可以将elasticsearch-6.7.2/data/目录下所有文件复制到新创建的文件下)cp -Rp
7.设置ElasticSerach文件夹为用户elk所有:
chown -R elk. /usr/local/elk/elasticsearch-6.7.2/
若修改了数据存放路径,则创建的文件夹也需要修改
chown -R elk. /mnt/esdata/
8.执行启动命令
su - elk -c "/usr/local/elk/elasticsearch-6.7.2/bin/elasticsearch -d"
9.查看日志是否有报错
tail -f /usr/local/elk/elasticsearch-6.7.2/logs/elasticsearch.log
至此单机版es安装完成。可用curl 127.0.0.1:9200 查看返回值
集群版
1.创建目录
mkdir /usr/local/elk
2.将ElasticSerach、Logstash、Kibana安装包拷贝到此目录并解压
3.创建用户组
groupadd elk
4.创建用户加入用户组
useradd elk -g elk
5.创建日志文件
touch touch /usr/local/elk/elasticsearch-6.7.2/logs/elasticsearch.log
6.单独创建数据存放路径
mkdir /mnt/esdata
修改主配置文件中数据存放位置(若安装完成后需要修改,可以将elasticsearch-6.7.2/data/目录下所有文件复制到新创建的文件下)cp -Rp
7.设置ElasticSerach文件夹为用户elk所有:
chown -R elk. /usr/local/elk/elasticsearch-6.7.2/
若修改了数据存放路径,则创建的文件夹也需要修改
chown -R elk. /mnt/esdata/
8.修改es主配置文件
vim /usr/local/elk/elasticsearch-6.7.2/config/elasticsearch.yml
加入如下内容
cluster.name: elk ###保证三台服务器节点集群名称相同
node.name: node-1 #### 每个节点名称不一样 其他两台为node-1 ,node-2
network.host: 0.0.0.0 #### 实际服务器ip地址
discovery.zen.ping.unicast.hosts: ["172.16.3.158", "172.16.3.157"]
discovery.zen.minimum_master_nodes: 1
9.执行启动命令
su - elk -c "/usr/local/elk/elasticsearch-6.7.2/bin/elasticsearch -d"
10.查看日志是否有报错
tail -f /usr/local/elk/elasticsearch-6.7.2/logs/elasticsearch.log
可用curl 127.0.0.1:9200 查看返回值
查看集群状态(另外一台重复上述操作)
curl -u USER:PASS http://127.0.0.1:9200/_cat/nodes?v
11.修改内存大小 ,一般为服务器内存大小一半
vim /usr/local/elk/elasticsearch-6.7.2/config/jvm.options
后面安装Kibana后可以查看到
• 部署Logstash
1.退出当前用户,回到root用户
在目录/usr/local/elk/logstash-6.7.2下创建文件vim default.conf,内容如下:
监听5044端口作为输入
input {
beats {
port => "5044"
}
}
数据过滤
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
geoip {
source => "clientip"
}
}
输出配置为本机的9200端口,这是ElasticSerach服务的监听端口
output {
elasticsearch {
hosts => ["127.0.0.1:9200"]
}
}
后台启动Logstash服务
nohup bin/logstash -f default.conf --config.reload.automatic &
查看启动日志
tail -f logs/logstash-plain.log
•部署Kibana
1.打开Kibana的配置文件vim /usr/local/elk/kibana-6.7.2-linux-x86_64/config/kibana.yml,到第七行左右修改server.host
2.运行Kibana
进入Kibana的目录:/usr/local/elk/kibana-6.7.2-linux-x86_64 ;执行启动命令:nohup bin/kibana &
nohup /usr/local/elk/kibana-6.7.2-linux-x86_64/bin/kibana &
查看启动日志
tail -f /usr/local/elk/kibana-6.7.2-linux-x86_64/nohup.out
在浏览器访问http://ip:5601,看到如下页面
•部署Filebeat
1.安装nginx
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum install -y nginx
systemctl enable nginx
systemctl start nginx
2.安装FileBeat
vim /usr/local/elk/filebeat-6.7.2-linux-x86_64/filebeat.yml
24 enabled: true
28 - /var/log/nginx/*.log
148 #output.elasticsearch:
150 # hosts: ["localhost:9200"]
161 output.logstash:
163 hosts: ["10.0.0.175:5044"]
3.启动FileBeat
nohup ./filebeat -e -c filebeat.yml &>/dev/null &
4.验证
3.kibana平台增加安全认证
kibana是nodejs开发的,本身并没有任何安全限制,直接浏览url就能访问,如果公网环境非常不安全,可以通过nginx请求转发增加认证
1.安装nginx并修改配置文件:
yum install nginx
systemctl enable nginx
vim /etc/nginx.conf
user root;
worker_processes 4;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name 127.0.0.1;
auth_basic "Kibana Auth";
auth_basic_user_file /etc/nginx/.htpasswd;
location / {
proxy_pass http://127.0.0.1:5601;
proxy_redirect off;
}
}
}
2.安装生成密码工具
yum install httpd-tools
生成密码,用户名为admin
htpasswd -c /usr/local/nginx/.htpasswd admin
提示输入2遍密码
New password:
Re-type new password:
Adding password for user admin
3.启动nginx
systemctl start nginx
4.验证
4.汉化kibana
1.安装git
yum install -y git
2.下载汉化包
git clone https://github.com/anbai-inc/Kibana_Hanization.git
3.进行汉化
修改kibana配置文件vim /usr/local/elk/kibana-6.7.2-linux-x86_64/config/kibana.yml中的配置项:i18n.locale: "zh-CN" 并重启kibana
作者:滑小稽丶 链接:https://www.jianshu.com/p/866c11a0776a 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。