Chinaunix首页 | 论坛 | 博客

OPS

  • 博客访问: 492266
  • 博文数量: 117
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1210
  • 用 户 组: 普通用户
  • 注册时间: 2015-05-05 14:50
个人简介

hellow 运维

文章分类

全部博文(117)

文章存档

2019年(1)

2018年(1)

2017年(45)

2016年(38)

2015年(32)

我的朋友

分类: 系统运维

2016-09-22 16:49:42


ELK产品组件
Elasticsearch 分布式、开源的搜索和分析引擎。为垂直扩展、可靠性、易管理而生。它结合了搜索速度快的优点和支持复杂分析的需求。为开发者提供了对结构化的、非结构化的、时间序列的数据的友好查询语言(DSL)
Elasticsearch as a Service 在短时间内就可以搭建自己的ES集群。一个高度管理的解决方案,支持搜索,日志和分析。并且集成了很多商业的插件。
Logstash 是一个灵活的,开源的数据收集、数据enrichment、数据传输的管道。能够轻松地集成到常见的infrustructure里去。为充分地处理日志、时间、非结构化数据而设计,并能将数据分发到多种多样的输出,包括ES。
Shield 给企业级的ES带来安全保障,为整个ELK栈提供加密的通信,认证,基于角色的连接控制和审计。为日益增长的商业安全需要而生。sheild能为你带来头脑的平静。
Kibana 开源数据可视化平台,能够让你与数据交互,生成dashboads等图能让你宣传并分享你对数据的深刻见解。
Watcher 是一个警告和通知的产品。如果你能查询ES,你就能警告它。为ES提供安全的监控或者日志里的异常。watcher能让你基于你的数据马上采取行动。
Elasticsearch for Apache Hadoop es-hadoop是双向的连接器,让你实时地读写数据并且搜索。es-hadoop是一个优美的解决方案,利用了hadoop和ES两个的力量。
Marvel 提供了ES部署后状态的信息的综合的工具。监控ES节点的活动,快速诊断问题,并且能尽可能够提供性能的优化。
Beats 是ES开源数据传输的未来。从网络包到日志文件,infrastructure数据,还有更多。beats是一个构建了多种多样轻量的传输工具来帮助你利用操作的数据。
ELK的服务端的安装部署
 1:服务器环境
  服务器ip地址:192.168.0.147
[root@hanye147 conf.d]# uname -a
Linux hanye147 3.10.103-1.el6.elrepo.x86_64 #1 SMP Sun Aug 28 16:41:49 EDT 2016 x86_64 x86_64 x86_64 GNU/Linux
[root@hanye147 conf.d]# cat /etc/issue
CentOS release 6.8 (Final)
Kernel \r on an \m
[root@hanye147 conf.d]# java -version
openjdk version "1.8.0_101"
OpenJDK Runtime Environment (build 1.8.0_101-b13)
OpenJDK 64-Bit Server VM (build 25.101-b13, mixed mode)
2:安装ELK所需要的软件
    A:java-1.8.0-openjdk   yum install -y java-1.8.0-openjdk
    B: wget
    C: wget
          D: wget
3:ELK之elasticsearch的安装部署
[root@hanye147 ~]# wget  
[root@hanye147 ~]# yum install -y elasticsearch-1.7.2.noarch.rpm 
[root@hanye147 ~]# sudo chkconfig --add elasticsearch 
[root@hanye147 ~]# service elasticsearch start 
Starting elasticsearch:                                    [  OK  ] 
  安装head集群插件
         
 elasticsearch/bin/plugin -install mobz/elasticsearch-head 
[root@hanye147 ~]# /usr/share/elasticsearch/bin/plugin  -install mobz/elasticsearch-head 
-> Installing mobz/elasticsearch-head... 
Trying
Downloading ................................................... 
Installed mobz/elasticsearch-head into /usr/share/elasticsearch/plugins/head 
[root@hanye147 ~]# ls /usr/share/elasticsearch/plugins/ 
head 
访问:
  

修改配置文件
编辑 /etc/elasticsearch/elasticsearch.yml打开以下行
[root@ELK-S-linux78 ~]# cat /etc/elasticsearch/elasticsearch.yml |egrep -v "^#|^$" 
cluster.name: hanye123 
node.name: "hanye147" 
network.host: 192.168.0.147 
http.port: 9200 
discovery.zen.ping.multicast.enabled: false #关闭广播,如果局域网有机器开9300 端口,服务会启动不了 
http.cors.allow-origin: "/.*/" 
http.cors.enabled: true 
 启动elasticsearh
[root@hanye147 ~]# /etc/init.d/elasticsearch restart 
停止 elasticsearch: [确定] 
正在启动 elasticsearch: [确定] 
查看端口
[root@hanye147 ~]# netstat -tunlp 
Active Internet connections (only servers) 
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name 
tcp 0 0 ::ffff:10.0.0.55:9200 :::* LISTEN 2207/java 
tcp 0 0 ::ffff:10.0.0.55:9300 :::* LISTEN 2207/java 
udp 0 0 :::54328 :::* 2207/java 
[root@hanye147 ~]# curl -X GET
"status" : 200, 
"name" : "hanye147, 
"cluster_name" : "elasticsearch", 
"version" : { 
"number" : "1.7.2", 
"build_hash" : "e43676b1385b8125d647f593f7202acbd816e8ec", 
"build_timestamp" : "2015-09-14T09:49:53Z", 
"build_snapshot" : false, 
"lucene_version" : "4.10.4" 
}, 
"tagline" : "You Know, for Search" 

Elasticsearch目录结构
rpm安装目录:usr/share/elasticsearch/ 
bin:运行ElasticSearch实例和管理插件的脚本
lib:使用的库
plugins :已安装的插件存入的位置
etc/elasticsearch/:配置文件目录
/var/log/elasticsearch/:日志文件
[root@hanye147 ~]# rpm -ql elasticsearch|less #查看安装文件目录位置  


4:ELK之logstash的安装部署和测试


Logstash是一款轻量级的日志搜集处理框架,可以方便的把分散的、多样化的日志搜集起来,并进行自定义的处理,然后传输到指定的位置,比如某个服务器或者文件。每个阶段都由很多的插件配合工作,比如file、elasticsearch、redis等等。
每个阶段也可以指定多种方式,比如输出既可以输出到elasticsearch中,也可以指定到stdout在控制台打印。
由于这种插件式的组织方式,使得logstash变得易于扩展和定制,


工作原理

Logstash使用管道方式进行日志的搜集处理和输出。有点类似*NIX系统的管道命令 xxx | ccc | ddd,xxx执行完了会执行ccc,然后执行ddd。
在logstash中,包括了三个阶段:
输入input --> 处理filter(不是必须的) --> 输出output 
yum安装


[root@ELK-S-linux78 ~]# rpm --import
 [root@hanye147 ~]# cat  >/etc/yum.repos.d/logstash.repo >>EOF 
 [logstash-1.5] 
 name=logstash repository for 1.5.x packages 
 baseurl=
 gpgcheck=1 
 gpgkey=
 enabled=1 
 EOF 
 [root@hanye147 ~]# yum install logstash 




文件安装位置
[root@hanye147 ~]# ls /opt/logstash/ 
 bin CHANGELOG.md CONTRIBUTORS Gemfile Gemfile.jruby-1.9.lock lib LICENSE NOTICE.TXT vendor 
 [root@hanye147 ~]# ls /etc/logstash/ 
 conf.d 


测试程序是否正常


[root@hanye147 ~]# /opt/logstash/bin/logstash -e 'input {stdin{}} output {stdout{}}' 
 Logstash startup completed 
 hello world!!   ###手敲 
 2016-06-06T17:32:24.385Z hanye147 hello world!!
 命令选项 


-f:指定配置文件
-e:用于指定字符输入
-l: 指定logstash的默认日志写入一个文件中,默认为控制台输出
-t: 用来测试logstash读取到的配置文件语法是否正确解析 




5:ElK只kibana的安装和配置




Kibana 是一个为 Logstash 和 ElasticSearch 提供的日志分析的 Web 接口。可使用它对日志进行高效的搜索、可视化仪表板、分析等各种操作。已经历经了 v1, v2, v3, v4 个版本,分别采用了 PHP,Ruby,AngularJS,JRuby,NodeJS 等不同语言编写。
Kibana 容易安装和使用,整个项目都是用 HTML 和 Javascript 写的, Kibana 不需要任何服务器端组件,一个纯文本发布服务器就够了。
Kibana 的使用场景集中在两方面:
实时监控
问题分析


kibana下载地址修改配置文件


[root@hanye147 ~]#  wget  
[root@hanye147 ~]#  tar xf kibana-4.1.0-linux-x64.tar.gz -C /usr/local/ 
[root@hanye147 ~]#  ln -s /usr/local/kibana-4.1.0-linux-x64/ /usr/local/kibana
  
[root@hanye147 ~]#  vim /usr/local/kibana/config/kibana.yml 
server.host: "192.168.0.147" 
elasticsearch.url: "" 
kibana.defaultAppId: "discover" 
elasticsearch.requestTimeout: 300000 
elasticsearch.shardTimeout: 0 


添加服务脚本
[root@hanye147 ~]#  vim /etc/init.d/kibana 
#!/bin/bash 
### BEGIN INIT INFO 
# Provides: kibana 
# Default-Start: 2 3 4 5 
# Default-Stop: 0 1 6 
# Short-Description: Runs kibana daemon 
# Description: Runs the kibana daemon as a non-root user 
### END INIT INFO 
# Process name 
NAME=kibana 
DESC="Kibana4" 
PROG="/etc/init.d/kibana" 
# Configure location of Kibana bin 
KIBANA_BIN=/usr/local/kibana/bin 
# PID Info 
PID_FOLDER=/var/run/kibana/ 
PID_FILE=/var/run/kibana/$NAME.pid 
LOCK_FILE=/var/lock/subsys/$NAME 
PATH=/bin:/usr/bin:/sbin:/usr/sbin:$KIBANA_BIN 
DAEMON=$KIBANA_BIN/$NAME 
# Configure User to run daemon process 
DAEMON_USER=root 
# Configure logging location 
KIBANA_LOG=/var/log/kibana.log 
# Begin Script 
RETVAL=0 
 
if [ `id -u` -ne 0 ]; then 
echo "You need root privileges to run this script" 
exit 1 
fi 
 
# Function library 
. /etc/init.d/functions 
 
start() { 
echo -n "Starting $DESC : " 
 
pid=`pidofproc -p $PID_FILE kibana` 
if [ -n "$pid" ] ; then 
echo "Already running." 
exit 0 
else 
# Start Daemon 
if [ ! -d "$PID_FOLDER" ] ; then 
mkdir $PID_FOLDER 
fi 
daemon --user=$DAEMON_USER --pidfile=$PID_FILE $DAEMON 1>"$KIBANA_LOG" 2>&1 & 
sleep 2 
pidofproc node > $PID_FILE 
RETVAL=$? 
[[ $? -eq 0 ]] && success || failure 
echo 
[ $RETVAL = 0 ] && touch $LOCK_FILE 
return $RETVAL 
fi 
 
reload() 
echo "Reload command is not implemented for this service." 
return $RETVAL 
 
stop() { 
echo -n "Stopping $DESC : " 
killproc -p $PID_FILE $DAEMON 
RETVAL=$? 
echo 
[ $RETVAL = 0 ] && rm -f $PID_FILE $LOCK_FILE
 
case "$1" in 
start) 
start 
;; 
stop) 
stop 
;; 
status) 
status -p $PID_FILE $DAEMON 
RETVAL=$? 
;; 
restart) 
stop 
start 
;; 
reload) 
reload 
;; 
*) 
# Invalid Arguments, print the following message. 
echo "Usage: $0 {start|stop|status|restart}" >&2 
exit 2 
;; 
esac 
启动服务


[root@ELK-S-linux78 ~]#  chmod +x /etc/init.d/kibana 
[root@hanye147 ~]#  /etc/init.d/kibana start 
Starting Kibana4 : [确定] 
# netstat -tunlp 
tcp 0 0 0.0.0.0:5601 0.0.0.0:* LISTEN 2022/node 
tcp 0 0 ::ffff:10.0.0.44:9200 :::* LISTEN 1955/java 
tcp 0 0 ::ffff:10.0.0.44:9300 :::* LISTEN 1955/java 
添加开机服务
[root@hanye147 ~]# chkconfig --add kibana 
[root@hanye147~]# chkconfig kibana on 
访问方式

参考文档:
参看文档:
      参考文档:




阅读(1183) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~