2018/07 作者:ihunter 0 次 0
前提:处理大数据日志收集分析,随着搜索集群的快速膨胀,大量日志处理及情况反馈滞后带来一系列问题,亟需一个工具能快速分析定位集群中那种日志或那个机器出现了异常。运维的日志分析系统定制化较重,分析不够实时。故找一个RTF工具可以直接即上手。
Logstash:负责日志的收集,处理,索引
Elasticsearch:负责日志检索和分析和储存
Kibana:用于搜索和可视化的日志的Web界面,通过nginx反代
filebeats: 安装在将要把日志发送到logstash的服务器上,作为日志转发的道理
下载: https://www.elastic.co/cn/
https://github.com/anbai-inc/Kibana_Hanization
https://elkguide.elasticsearch.cn/logstash/
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.0.tar.gz
wget https://github.com/mobz/elasticsearch-head/archive/master.zip
wget http://cdn.npm.taobao.org/dist/node/latest-v8.x/node-v8.1.3-linux-x64.tar.gz
wget https://artifacts.elastic.co/downloads/kibana/kibana-5.5.0-linux-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/logstash/logstash-5.5.0.tar.gz
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.5.0-linux-x86_64.tar.gz
安装jdk1.8
1、下载jdk并解压(下载略)
mkdir /usr/java
cd /usr/java
axel -n 50 http://91.cndo.org/jdk-8u162-linux-x64.rpm
rpm -ivh jdk-8u162-linux-x64.rpm
2、添加java环境变量(需root账号)
3、验证java是否安装成功:
java -version # java version "*"
rpm -qa | grep jdk # java version "*"
elasticsearch:
1.下载解压:/usr/local/elasticsearch
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.3.tar.gz
tar -xzvf elasticsearch-6.2.3.tar.gz
mv elasticsearch-6.2.3 elasticsearch
mv elasticsearch /usr/local/
2.配置:
useradd -r elk -s /sbin/nologin passwd elk (12345678) chown -R elk /usr/local/elasticsearch/ vi /etc/security/limits.conf # 添加如下内容: * soft nofile 65536 * hard nofile 131072 * soft nproc 2048 * hard nproc 4096 vi /etc/sysctl.conf vm.max_map_count=655360 sysctl -p vi /usr/local/elasticsearch/config/elasticsearch.yml network.host: 0.0.0.0 http.port: 9200 path.data: /usr/local/elasticsearch/data path.logs: /usr/local/elasticsearch/logs 最后两项路径的配置,需要在elasticsearch目录下创建data和logs两个子目录。 vi /usr/local/elasticsearch/config/jvm.options -Xms2g (按实际内存大小一半:内存4G) -Xmx2g (按实际内存大小一半:内存4G) mkdir /usr/local/elasticsearch/data mkdir /usr/local/elasticsearch/logs sudo -u elk /usr/local/elasticsearch/bin/elasticsearch -d 注意:不能使用root来启动
将其加入到开机启动,将其命令写入/etc/rc.local,方便以后启动启动的时候就启动es。
sudo -u elk /usr/local/elasticsearch/bin/elasticsearch -d
或 systemctl start elasticsearch ; systemctl enable elasticsearch
查看启动:netstat -lnt # 有9200,9300端口,说明启动成功。
3.web用http://ip:9200,测试。
安装插件:
cd /usr/local/elasticsearch
bin/elasticsearch-plugin install ingest-geoip
bin/elasticsearch-plugin install ingest-user-agent
Download and install Filebeat:/usr/local/filebeat/
vi filebeat.yml
output.elasticsearch: hosts: [""] username: "elastic" password: " " setup.kibana: host: " "
Where
cd /usr/local/filebeat
vi modules.d/system.yml
./filebeat modules enable system
./filebeat modules enable apache2 (mysql,nginx,redis)
......
Start Filebeat:
./filebeat setup
./filebeat -e
安装elasticsearch-head插件:
1.下载解压:
/usr/local/elasticsearch-node
/usr/local/elasticsearch-head
2.配置:
vi /etc/profile
#node
NODE_HOME=/usr/local/elasticsearch-node
export PATH=$PATH:$NODE_HOME/bin
source /etc/profile
cd /usr/local/elasticsearch-head
npm install -g grunt-cli
npm install phantomjs-prebuilt@2.1.14 --ignore-scripts
npm install
vi Gruntfile.js ###在port: 9100,后增加
hostname: '*',
vi _site/app.js ###把原来的localhost改为10.10.111.108
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://10.10.111.108:9200";
cd /usr/local/elasticsearch-head/
/usr/local/elasticsearch-head/node_modules/grunt/bin/grunt server
页面访问elasticsearch-head(访问页面http://IP:9100 )
Kibana安装
1、下载kibana安装包并解压
/usr/local/kibana
2、配置kibana
yum install -y npm nodejs
npm install npm -g
vi conf/ kibana.yml
server.host: "192.168.10.99" #安装kibana的ip
server.name: "kibana" #名称
elasticsearch.url: "http://192.168.10.99:9200" #修改成安装es的ip
kibana.index: “.kibana”
mkdir /usr/local/kibana/logs
chkconfig kibana on
调试启动:/usr/local/kibana/bin/kibana --dev --no-base-path
3、启动kibana并访问kibana页面(访问页面 http://IP:5601)
/usr/local/kibana/bin/kibana > /usr/local/kibana/logs/kibana.log 2>&1 &
注:
- Go to Settings → Advanced.
- Edit the metaFields and add "_timestamp". Hit save.
- Now go back to Settings → Indices and _timestamp
Filebeat安装
1. 下载解压:/usr/local/filebeat
2. 配置:
修改配置文件将Tomcat服务器和Filebeat连接起来:
打开位于Filebeat安装目录中的filebeat.yml
文件,修改需要检测的Tomcat服务器的文件位置:
其中:/home/xuliugen/www/ufind/logs/*.log 是我Tomcat服务器下项目的日志文件。并且已经开启了Tomcat。
(5)修改配置文件将Filebeat和Logstash连接起来:
同样是修改filebeat.yml
文件,将output.elasticsearch
注释掉,并打开Logstash的注释,修改之后内容如下:
3.启动Filebeat:
nohup /usr/local/filebeat/filebeat -e -c /usr/local/filebeat/filebeat.yml >/dev/null 2>&1 &
4.logstash配置:
由于使用Filebeat作为输入,则需要修改相应的输入插件,修改前几步创建的logstash.conf
文件,修改后的配置文件。
这里将beats(就是Filebeat)插件作为输入插件,端口号为5044,通过标准输出插件stdout
将数据显示在控制台中,其中stdout{} 里的codec => rubydebug
其中,rubydebug就是一种Codec,一般也只用在stdout插件中,作为配置测试或者调试的工具。
vi /usr/local/logstash/config/filebeat.yml
input { beats { port => 5044 } } output { elasticsearch { hosts => "192.168.10.99:9200" } stdout { codec => "rubydebug" } }
5.启动logstash:
要验证您的配置,请运行以下命令:
/usr/local/logstash/bin/logstash -f /usr/local/logstash/config/filebeat.yml --config.test_and_exit
--config.test_and_exit 选项将解析配置文件并报告任何出现错误的错误。
如果配置文件通过配置测试,请使用以下命令启动Logstash:
/usr/local/logstash/bin/logstash -f /usr/local/logstash/config/filebeat.yml --config.reload.automatic
--config.reload.automatic 选项启用自动配置重新加载,这样的话你就不必在每次修改配置文件时停止和重新启动Logstash。
如果配置成功的话,如果你的Tomcat服务器有日志更新,在Logstash和Filebeat都会显示出来。
logstash安装:
1、下载logstash安装包并解压
/usr/local/logstash
2、配置logstash
vi /etc/profile
export PATH=/usr/local/logstash/bin:$PATH
source /etc/profile
vi /usr/local/logstash/config/logstash.yml
vi /usr/local/logstash/config/startup.options
# Override Java location JAVACMD=/usr/java/default # Set a home directory LS_HOME=/usr/local/logstash
chkconfig logstash on
3.测试
logstash常用参数
-e :指定logstash的配置信息,可以用于快速测试,直接输出到屏幕;
-f :指定logstash的配置文件;可以用于生产环境,以json格式输出到屏幕;
logstash -e "input {beats{}} output {elasticsearch{}}"
vim filebeat.yml
- /home/admin/*.log #原- /var/log/*.log修改成需要监控日志的路径
#output.elasticsearch: #注释此行
#hosts: ["192.168.10.99:9200"] #注释此行
output.logstash: #此行去掉注释
hosts: ["192.168.10.99:5044"] #原hosts: ["localhost:5044"]修改成logstash对应ip
启动:/usr/local/filebeat/filebeat
1. Kibana No Default Index Pattern Warning
这就说明logstash没有把日志写入到elasticsearch。
解决方法:检查logstash与elasticsearch之间的通讯是否有问题,一般问题就在这。
先检查下logstash配置文件是否有问题,可通过下面命令检测:
/usr/local/logstash/bin/logstash -f /usr/local/logstash/config/filebeat.yml --config.test_and_exit
2.在ELK server上检测Filebeat是否与Logstash成功通信
curl -XGET 'http://192.168.10.99:9200/filebeat-*/_search?pretty'
如果看到total与successful不为0。代表成功从client端取到日志。
{ "took" : 4, "timed_out" : false, "_shards" : { "total" : 15, "successful" : 15, "failed" : 0 },
注:如果看到total与hits为0,代表通信受阻,无法从客户端取到日志。可以参照以下两个方式解决:
(1)查看Filebeat客户端配置是否正确,Filebeat是否成功启动。
(2)查看ELK_SERVER的安全组,确认5044端口是打开的。
3.Warning No default index pattern
input { log4j { mode => "server" host => "127.0.0.1" port => 4567 type => "log4j" } #stdin { } console input }filter { #Only matched data are send to output.}output { #stdout {} console output elasticsearch { action => "index" #The operation on ES hosts => "localhost:9200" #ElasticSearch host, can be array. index => "applog2" #The index to write data to. } }
我是这么解决的:
a、在“Index name or pattern”项下,填入一个elasticsearch的索引名,也即是Logstash配置文件中output项下的index对应的名称;在你这里应该是将“logstash-*”改成“applog2”;
b、在“Time-field name”,选用默认的配置:“@timestamp”
c、点击“create”即可;
上篇:
zabbix邮件告警设置
下篇:
Jumpserver 开源堡垒机使用详解