es数据手动导入

周末停电了两天,发现两天的日志没导入:
原因: 1. elk开启没设启动
2.日志入库时间是当前时间,不是日志本身的time字段
- 导入步骤
1. 先把日志拖下来
2. 事先需要干掉残缺的那个索引
curl http://192.168.x.x:9200/_cat/indices?v
curl -XDELETE 'http://192.168.x.x:9200/app-2017.12.24' 3. 使用logstash导入离线日志
索引名字按当天日期
input {
beats {
port => "5043"
}
file{
path => "/root/logs/*.log"
start_position => 'beginning'
codec => "json"
sincedb_path => "/root/logs/maotai.txt"
sincedb_write_interval => 1
}
} output {
elasticsearch{
hosts => ["192.168.x.x:9200"]
index => "app-2017.12.25"
}
# stdout { codec => rubydebug }
} 发现问题: 导入完成后,kibana无法检索到当天的日志. 为何? 根本原因是 kibana是按照入库时间索引的,而logstash导入时候时间是系统当前时间 解决:
1,修改系统时间(如果有crontab,先停掉,后记得开启)
date -s "2017/12/25 09:00" 2.待导入完成后改回来
ntpdate ntp1.aliyun.com 验证导入后没问题了(因为这写日志都不需要时序化,所以日期对应到当天就可以了.)

彻底完美入库解决时间问题

协调改日志格式,让每条日志追加"@timestamp" : "2017-12-06T09:23:51.244Z"字段作为es入库时间.

改程序输出日志格式- 追加一个字段(时间一定要是utc格式,相对现在差8小时)
"@timestamp" : "2017-12-06T09:23:51.244Z" 给elk看.用于做为es入库时间.
原time:字段也保留,方便定位问题

@timestamp修改原理

/usr/local/logstash/bin/logstash -e 'input {stdin{ codec => "json" }} output {stdout{ codec => rubydebug }}'

默认一条日志多了3个字段: @version host @timestamp

{
"@version" => "1",
"host" => "n1.ma.com",
"@timestamp" => 2017-12-26T09:59:42.401Z,
"message" => "sdf"
}

当日志条目本身有了@timestamp字段,就会覆盖系统自动追加的值.

设置开机启动elk(见下)

搭建elk测试环境

极速构建elk测试环境

目录约定:
存放logstash的配置 :/root/es/
存放es数据 :/data/es
存放启动log :/tmp/ - 处理内核
sysctl -w vm.max_map_count=262144
swapoff -a vim /etc/security/limits.conf
* soft nproc 65536
* hard nproc 65536
* soft nofile 65536
* hard nofile 65536 - 配置jdk
cd /usr/local/src/
tar xf jdk-8u192-linux-x64.tar.gz -C /usr/local/
ln -s /usr/local/jdk1.8.0_162 /usr/local/jdk sed -i.ori '$a export JAVA_HOME=/usr/local/jdk\nexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH\nexport CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar' /etc/profile
source /etc/profile - 安装es
useradd elk
cd /usr/local/src/
tar xf elasticsearch-6.0.0.tar.gz -C /usr/local/
tar xf kibana-6.0.0-linux-x86_64.tar.gz -C /usr/local/
tar xf logstash-6.0.0.tar.gz -C /usr/local/
ln -s /usr/local/elasticsearch-6.0.0 /usr/local/elasticsearch
ln -s /usr/local/kibana-6.0.0-linux-x86_64 /usr/local/kibana
ln -s /usr/local/logstash-6.0.0 /usr/local/logstash
cd chown -R elk. /usr/local/elasticsearch
chown -R elk. /usr/local/elasticsearch/
chown -R elk. /usr/local/kibana
chown -R elk. /usr/local/kibana/
chown -R elk. /usr/local/logstash
chown -R elk. /usr/local/logstash/
sed -i 's#\#network.host: 192.168.0.1#network.host: 0.0.0.0#g' /usr/local/elasticsearch/config/elasticsearch.yml
echo 'http.cors.enabled: true' >> /usr/local/elasticsearch/config/elasticsearch.yml
echo 'http.cors.allow-origin: "*"' >> /usr/local/elasticsearch/config/elasticsearch.yml
sed -i 's#\#server.host: "localhost"#server.host: "0.0.0.0"#g' /usr/local/kibana/config/kibana.yml
mkdir -p /data/es/{data,logs}
chown -R elk. /data/es sed -i 's#\#path.data: /path/to/data#path.data: /data/es/data#g' /usr/local/elasticsearch/config/elasticsearch.yml
sed -i 's#\#path.logs: /path/to/logs#path.data: /data/es/logs#g' /usr/local/elasticsearch/config/elasticsearch.yml - 配置文件示例
cluster.name: elk
node.master: true
node.data: true
path.data: /data/es/data
path.logs: /data/es/logs
network.host: 0.0.0.0
discovery.zen.ping.unicast.hosts: ["192.168.2.11"]
http.cors.enabled: true
http.cors.allow-origin: "*"
- on the fly启动es和kibana
su - elk -c "/usr/local/elasticsearch/bin/elasticsearch"
su - elk -c "/usr/local/kibana/bin/kibana"

设置node.tag

https://elasticsearch.cn/question/3865

启动logstash

docker run -d -v /etc/localtime:/etc/localtime --restart=always -p 9100:9100 mobz/elasticsearch-head:5

- 放到stdout

/usr/local/logstash/bin/logstash -e 'input {stdin{ codec => "json" }} output {stdout{ codec => rubydebug }}'

echo "/usr/local/logstash/bin/logstash -e 'input {stdin{ codec => "json" }} output {stdout{ codec => rubydebug }}'" > /root/es/pipeline.sh
sh pipeline.sh - 放到es和stdout-(默认logstash索引)
/usr/local/logstash/bin/logstash -e 'input {stdin{ codec => "json" }} output {stdout{ codec => rubydebug } elasticsearch {}}'
mkdir -p /root/es/
cat > /root/es/pipeline-file.conf<<EOF
input {
beats {
port => "5043"
}
file{
path => "/root/logs/*.log"
start_position => 'beginning'
codec => "json"
sincedb_path => "/root/logs/maotai.txt"
sincedb_write_interval => 1
}
} output {
elasticsearch{
hosts => ["192.168.x.x:9200"]
#index => "syslog-%{+YYYY.MM.dd}"
index => "x.x-2017.12.25"
}
stdout { codec => rubydebug }
}
EOF

elk无法开机启动排错-处理rc.local

1, rc.local追加的日志一定要/tmp下.否则可能启动不了,即使相关dir给了elk用户权限
2. max_map_count也要写在rc.local,经过我多次测试,一次性没解决问题 vim /etc/rc.local
sysctl -w vm.max_map_count=262144
/usr/bin/nohup /bin/su - elk -c "/usr/local/elasticsearch/bin/elasticsearch" > /tmp/es-start.log 2>&1 &
/usr/bin/nohup /bin/su - elk -c "/usr/local/kibana/bin/kibana" > /tmp/kibana-start.log 2>&1 &
/usr/local/logstash/bin/logstash -f /root/es/pipeline.conf > /tmp/logstash-start.log 2>&1 &

head插件

docker run -d -v /etc/localtime:/etc/localtime --restart=always -p 9100:9100 mobz/elasticsearch-head:5

elk docker模式启动

参考:http://elk-docker.readthedocs.io/#installation

https://github.com/gregbkr/elk-dashboard-v5-docker

注: elk容器要占2g内存,vm分配至少给2g
sysctl -w vm.max_map_count=262144 docker run -d -v /etc/localtime:/etc/localtime --restart=always -p 5601:5601 -p 9200:9200 -p 5044:5044 -it --name elk sebp/elk docker run -d -v /etc/localtime:/etc/localtime --restart=always -p 9100:9100 mobz/elasticsearch-head:5
或 docker-compose up -d

[elk]停电日志离线恢复故障处理-elk环境极速搭建的更多相关文章

  1. ELK + Filebeat 日志分析系统

    ELK + Filebeat 日志分析系统 架构图 环境 OS:CentOS 7.4 Filebeat: 6.3.2 Logstash: 6.3.2 Elasticsearch 6.3.2 Kiban ...

  2. 离线部署ELK+kafka日志管理系统【转】

    转自 离线部署ELK+kafka日志管理系统 - xiaoxiaozhou - 51CTO技术博客http://xiaoxiaozhou.blog.51cto.com/4681537/1854684 ...

  3. ELK统一日志系统的应用

    收集和分析日志是应用开发中至关重要的一环,互联网大规模.分布式的特性决定了日志的源头越来越分散, 产生的速度越来越快,传统的手段和工具显得日益力不从心.在规模化场景下,grep.awk 无法快速发挥作 ...

  4. [原创]ubuntu14.04部署ELK+redis日志分析系统

    ubuntu14.04部署ELK+redis日志分析系统 [环境] host1:172.17.0.4 搭建ELK+redis服务 host2:172.17.0.3 搭建logstash+nginx服务 ...

  5. ELK收集日志到mysql

    场景需求 在使用ELK对日志进行收集的时候,如果需要对数据进行存档,可以考虑使用数据库的方式.为了便于查询,可以同时写一份数据到Elasticsearch 中. 环境准备 CentOS7系统: 192 ...

  6. SpringBoot+kafka+ELK分布式日志收集

    一.背景 随着业务复杂度的提升以及微服务的兴起,传统单一项目会被按照业务规则进行垂直拆分,另外为了防止单点故障我们也会将重要的服务模块进行集群部署,通过负载均衡进行服务的调用.那么随着节点的增多,各个 ...

  7. springboot+ELK+logback日志分析系统demo

    之前写的有点乱,这篇整理了一下搭建了一个简单的ELK日志系统 借鉴此博客完成:https://blog.csdn.net/qq_22211217/article/details/80764568 设置 ...

  8. 基于docker部署使用ELK+FileBeat日志管理平台

    Docker从狭义上来讲就是一个进程,从广义上来讲是一个虚拟容器,专业叫法为 Application Container(应用容器).Docker进程和普通的进程没有任何区别,它就是一个普通的应用进程 ...

  9. ELK+SpringBoot+Logback离线安装及配置

    ELK+SpringBoot+Logback 离线安装及配置 版本 v1.0 编写时间 2018/6/11 编写人 xxx     目录 一. ELK介绍2 二. 安装环境2 三. Elasticse ...

随机推荐

  1. 单页WEB应用(三),Chat聊天模块

    Chat 聊天模块 这个模块应该就是该书全篇的唯一一个模块吧,后面差点儿全部的篇章都环绕这个模块去实现的,只是就通过这一个模块的实现和上线,也能体现单页应用开发到公布上线的整个过程,毕竟后面的数据.通 ...

  2. hdu1027 Ignatius and the Princess II (全排列 &amp; STL中的神器)

    转载请注明出处:http://blog.csdn.net/u012860063 题目链接:http://acm.hdu.edu.cn/showproblem.php? pid=1027 Ignatiu ...

  3. 使用Draw rect 绘制圆角矩形

    - (void)drawRect:(CGRect)rect { CGContextRef context = UIGraphicsGetCurrentContext(); UIGraphicsPush ...

  4. UIKeyboardTypeNumberPad 数字键盘添加完成按钮

    一:添加通知 //数字键盘添加完成 [[NSNotificationCenterdefaultCenter] addObserver:selfselector:@selector(keyboardWi ...

  5. 为什么学习Python及Python环境安装

    大部分人在工作中可能是以c/c++.java之类的语言为主.这也可能是我们接触的第一个开发语言,这类语言一般有丰富地类库.高效地运行速率.灵活地组合控制,须要经过编译在运行.适用于大型的项目proje ...

  6. Closing a window

    The obvious way to how to close a window is to click on the x mark on the titlebar. In the next exam ...

  7. java面试第十三天

    I/O流 流的概念:程序与数据来源之间的桥梁 流的分类: 按数据方向分:输入流和输出流 输入流:InputStream/Reader 输出流:OutputStream/Writer 按数据类型分:字节 ...

  8. Java读取文件整理

    /** * 以字节为单位读取文件,常用于读二进制文件,如图片.声音.影像等文件. */ public class ReadFromFile { public static void readFileB ...

  9. 〖Linux〗Ubuntu13.10,在终端打开gvim提示“GLib-GObject-WARNING”的临时解决办法

    今天刚刚升级至Ubuntu13.10,在终端打开gvim时提示一些出错信息,不是很雅观: (gvim:): GLib-GObject-WARNING **: Attempt to add proper ...

  10. linux limits.conf 配置

    转自:http://kerry.blog.51cto.com/172631/300784 limits.conf 文件实际是 Linux PAM(插入式认证模块,Pluggable Authentic ...