Pre-Preparation
 
Elk Official Website: https://www.elastic.co/, package download and perfect documentation.
 
Zookeeper Official website: https://zookeeper.apache.org/
 
Kafka official website: http://kafka.apache.org/documentation.html, package download and perfect documentation.
 
Flume Official website: https://flume.apache.org/
 
Heka Official website: https://hekad.readthedocs.io/en/v0.10.0/
 
 
The system is a centos6.6,64 bit machine.
 
Version of the software used:
 
logstash:2.3.3
 
Jdk:1.8.0_25
 
elasticsearch:2.3.4
 
kibana:4.5.2
 
heka:0.10.0
 
flume:1.7.0
 
zookeeper:3.4.8
 
kafka:0.8.2.2
 
nginx:1.7.6
 
kafka-manager:1.3.1.6
 
 
Overall architecture Diagram
 
 
 
 
 
Installation Steps
 
Zero Installing JDK
 
A Install zookeeper cluster
 
Two Install Kafka cluster
 
Three Install Elasticsearch cluster
 
Four Install flume
 
Five Business Machine Installation Heka
 
Six Using Logstash docking Kafka and Elasticsearch clusters
 
Seven Install Kibana
 
Eight Install Nginx Reverse Proxy
 
Nine Install Kafka-manager
 
 
0. Installing JDK
 
Install JDK for all related machines, configure PATH, Class_path, Java_home
 
 
 
A Install zookeeper cluster
 
Ready to
 
The correspondence between hostname and IP
 
192.168.0.51 data1
 
192.168.0.49 data2
 
192.168.0.72 data3
 
You also need to configure the/etc/hosts file to add the above records
 
 
installation
 
Website download installation package, extract to/usr/local/public/, configuration, start "Other services similar, follow only to do configuration start instructions"
 
wget http://apache.fayea.com/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz
 
cd/usr/local/public/
 
TAR-ZXVF zookeeper-3.4.8.tar.gz
 
Ln-s zookeeper-3.4.8 Zookeeper
 
 
configuration file
 
CD conf/
 
CP Zoo_samle.cfg Zoo.cfg
 
 
The content of Zoo.cfg
 
ticktime=2000
 
initlimit=10
 
Synclimit=5
 
Datadir=/data/zookeeper
 
clientport=2181
 
server.1=data1:2888:3888
 
server.2=data2:2888:3888
 
server.3=data3:2888:3888
 
 
Create the cluster flag file myID, which is the server in the configuration file. The following number.
 
echo "1" >/usr/local/public/zookeeper/data/myid
 
 
The other 2 machines are configured exactly the same, except that the contents of the myID file are 2 or 3.
 
 
Start Cluster
 
3 Servers executed sequentially: bin/zkserver.sh start
 
 
Test
 
bin/zkserver.sh Status View whether the current server belongs to leader or follower.
 
Bin/zkcli.sh-server gzhl-192-168-0-51.boyaa.com:2181 Connect to a zookeeper server.
 
 
 
Two Install Kafka cluster
 
installation
 
Similar to zookeeper, website download installation package, decompression.
 
 
configuration file Config/server.properties
 
Broker.id=1
 
Log.dirs=/disk1/bigdata/kafka
 
Zookeeper.connect=192.168.0.51:2181,192.168.0.49:2181,192.168.0.72:2181/kafka
 
 
The other 2 machines are configured exactly the same, except that the value of the Broker.id file is 2 or 3.
 
 
Start Cluster
 
3 Servers executed sequentially: nohup bin/kafka-server-start.sh config/server.properties 2>&1 >>/dev/null &
 
 
Test
 
bin/kafka-topics.sh--create--zookeeper gzhl-192-168-0-51.boyaa.com:2181,gzhl-192-168-0-49.boyaa.com:2181, Gzhl-192-168-2-147.boyaa.com:2181/kafka--topic Test//Create a topic
 
 
Three Install Elasticsearch cluster
 
installation
 
Similar to zookeeper, website download installation package, decompression.
 
 
configuration file Config/elasticsearch.yml
 
Cluster.name:dfqp-application
 
Node.name:node-2
 
Path.data:/disk1/es/,/disk2/es/,/disk3/es/,/disk4/es/,/disk5/es/,/disk6/es/,/disk7/es/,/disk8/es/,/disk9/es/,/ disk10/es/,/disk11/es/,/disk12/es/
 
Path.logs:/data/other/es/logs
 
network.host:192.168.0.150
 
Discovery.zen.ping.unicast.hosts: ["192.168.0.149", "192.168.0.150"]
 
The configuration of the 2 machines is exactly the same, except for the Node.name and Network.host values.
 
 
Start Cluster
 
Bin/elasticsearch-d
 
 
Test
 
Curl http://192.168.0.149:9200
 
Curl http://192.168.0.150:9200
 
Returns the following data indicating that the ES cluster is normal
 
{
 
"Name": "Node-2",
 
"Cluster_Name": "Dfqp-application",
 
"Version": {
 
"Number": "2.3.4",
 
"Build_hash": "e455fd0c13dceca8dbbdbb1665d068ae55dabe3f",
 
"Build_timestamp": "2016-06-30t11:24:31z",
 
"Build_snapshot": false,
 
"Lucene_version": "5.5.0"
 
},
 
"Tagline": "Your Know, for Search"
 
}
 
 
Four. Install flume
 
installation
 
Similar to zookeeper, website download installation package, decompression.
 
 
configuration file Conf/lremote.properties
 
Agent_remote.sources = S1
 
Agent_remote.sinks = K1
 
Agent_remote.channels = C1
 
 
Agent_remote.sources.s1.type = Thrift
 
Agent_remote.sources.s1.bind = 192.168.0.49
 
Agent_remote.sources.s1.port = 6666
 
Agent_remote.sources.s1.channels = C1
 
Agent_remote.sources.s1.threads = 20
 
 
Agent_remote.sinks.k1.type = Org.apache.flume.sink.kafka.KafkaSink
 
Agent_remote.sinks.k1.topic = Dfqp_server_log_from_heka
 
Agent_remote.sinks.k1.brokerList = 192.168.0.51:9092,192.168.0.49:9092,192.168.0.72:9092
 
Agent_remote.sinks.k1.requiredAcks = 0
 
agent_remote.sinks.k1.batchSize = 2000
 
Agent_remote.sinks.k1.channel = C1
 
agent_remote.sinks.k1.kafka.request.timeout.ms = 6000
 
agent_remote.sinks.k1.kafka.request.timeout.ms = 6000
 
 
Agent_remote.sources.s1.interceptors = I2
 
Agent_remote.sources.s1.interceptors.i2.type=org.apache.flume.sink.solr.morphline.uuidinterceptor$builder
 
Agent_remote.sources.s1.interceptors.i2.headername=key
 
Agent_remote.sources.s1.interceptors.i2.preserveexisting=false
 
 
Agent_remote.channels.c1.type = File
 
Agent_remote.channels.c1.capacity = 100000000
 
Agent_remote.channels.c1.dataDirs =/usr/local/public/flume/.flume_remote/c1/data_dir/
 
Agent_remote.channels.c1.checkpointDir =/usr/local/public/flume/.flume_remote/c1/checkpoint_dir/
 
 
Start Flume
 
Nohup bin/flume-ng agent-n agent_remote-c conf/-F Conf/remote.properties-dflume.log.file=flume_remote.log &
 
 
 
Five. Business Machine Installation Heka
 
installation
 
Website download source code, write Heka output plugin flume
 
 
configuration file Conf/log2flume.toml
 
[Hekad]
 
Maxprocs = 1
 
Base_dir = "./base_dir"
 
Log_info_filename = "Logs/info.log"
 
Log_error_filename = "Logs/error.log"
 
Log_file_max_size = 64
 
Log_file_max_backups = 7
 
 
[Logstreamerinput]
 
Log_directory = "/data/"
 
Journal_directory = "./base_dir"
 
File_match = ' (? p<dir1>[^/]*)/? (? p<dir2>[^/]*)/? (? p<dir3>[^/]*)/? (? p<dir4>[^/]*)/? (? p<dir5>[^/]*)/? (? p<dir6>[^/]*)/? (? p<dir7>[^/]*)/? (? p<file_name>.*) \.log\.? (? p<seq>\d*) '
 
Priority = ["^seq"]
 
Rescan_interval = "30s"
 
Oldest_duration = "1h"
 
differentiator = ["dfqp-", "Dir1", "--", "Dir2", "--", "Dir3", "--", "Dir4," "--", "DIR5", "--", "DIR6", "--", "DIR7", "--", "File_name", ". Log"]
 
 
[Paycenter_sqls_output]
 
Type = "Flumeoutput"
 
Message_matcher = "TRUE"
 
Address = "192.168.0.49:6666"
 
Encoder = "Payloadencoder"
 
batch_size = 2000
 
Use_buffering = False
 
 
[Payloadencoder]
 
Append_newlines = False
 
 
Start Hekad
 
./hekad-config CONF/LOG2FLUME.TOML
 
 
 
Six. Using Logstash docking Kafka and Elasticsearch clusters
 
installation
 
Similar to zookeeper, website download installation package, decompression.
 
 
configuration file etc/kafka_2_es.conf
 
Input {
 
Kafka {
 
topic_id => "My_kafka_topic"
 
group_id => "My_kafka_topic_group"
 
Consumer_threads => 4
 
Zk_connect => "Data1:2181,data2:2181,data3:2181/kafka"
 
Codec => "plain"
 
}
 
}
 
 
Output {
 
Elasticsearch {
 
Index => "server-log-%{+yyyy. MM.DD} "
 
Hosts => ["192.168.0.149", "192.168.0.150"]
 
}
 
}
 
The configuration of 2 machines is identical.
 
 
Start Logstash
 
Nohup bin/logstash-l logs/logstash${i}.log-f etc/kafka_2_es.conf >/dev/null &
 
Where ${i} is 1,2,3,4,5,6, namely a machine to start 6 logstash processes.
 
 
 
Seven. Install Kibana
 
installation
 
Similar to zookeeper, website download installation package, decompression.
 
 
configuration file Config/kibana.yml
 
Elasticsearch.url: "http://192.168.0.149:9200"
 
 
Start Logstash
 
Nohup./bin/kibana >/dev/null &
 
 
Eight Install Nginx Reverse proxy
 
configuration file/usr/local/nginx-1.7.6/conf/vhosts/vhost.conf
 
Server
 
{
 
Listen 80;
 
server_name log.oa.com;
 
 
Location/{
 
Proxy_pass Http://192.168.0.149:5601$request_uri;
 
Proxy_set_header Host $host;
 
Proxy_set_header X-real-ip $remote _addr;
 
Proxy_set_header x-forwarded-for $proxy _add_x_forwarded_for;
 
 
}
 
 
Location ~. *\. (gif|jpg|jpeg|png|bmp|swf|data|js|css|html|htm) $
 
{
 
Expires 365d;
 
}
 
 
Access_log/data/other/nginx_logs/${host}_${server_port}_access.log main;
 
}
 
 
Nine. Install Kafka-manager
 
git clone Https://github.com/yahoo/kafka-manager
CD Kafka-manager
./SBT Clean Dist
 
Will generate a Zip package, extract Kafka-manager, open the configuration file conf/application.conf, modify the ZK address.
 
Start: Nohup bin/kafka-manager-dconfig.file=conf/application.conf >/dev/null 2>&1 &
 
Visit: http://192.168.0.51:9000