구성 요소는 다음 그림과 같이 다양한 구현 컴포넌트를 제공한다. 별도의 추가 개발 없이 로그/이벤트 수집 환경을 구성할 수 있다.
모니터링 하는 방법은 3가지가 있다.
Ganglia
JMX
export JAVA_OPTS=”-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=5445 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false”
JSON Reporting
다음 사이트에 들어가 flume을 다운 받아 압축을 풀어준다.
https://www.apache.org/dyn/closer.lua/flume/1.11.0/apache-flume-1.11.0-bin.tar.gz
wget https://dlcdn.apache.org/flume/1.11.0/apache-flume-1.11.0-bin.tar.gz
tar xzvf apache-flume-1.11.0-bin.tar.gz
mv apache-flume-1.11.0-bin flume-1.11.0
환경 설정을 해준다.
vim /etc/profile
export FLUME_HOME=/opt/flume/flume-1.11.0
conf 폴더에 들어가 flume.conf를 만들어준다.
cd $FLUME_HOME
cd conf
vim flume.conf
flume.conf를 작성해준다.
agent.sources = r1
agent.channels = c1
agent.sinks = k1
agent.sources.r1.type = exec
agent.sources.r1.command = tail -f /opt/flume/flume-1.11.0/logs/mylog
agent.sources.r1.channels = c1
agent.channels.c1.type = memory
agent.channels.c1.capacity = 1000
agent.channels.c1.transactionCapacity = 100
agent.sinks.k1.type = logger
agent.sinks.k1.channel = c1
log 파일을 하나 만들어준다.
cd $FLUME_HOME
mkdir logs
cd logs
touch mylog
설정을 완료 했으니 flume을 실행해준다.
cd $FLUME_HOME
bin/flume-ng agent --conf conf --conf-file conf/flume.conf --name agent
다른 shell 창을 열어 mylog 파일에 데이터를 적재해본다.
cd $FLUME_HOME/logs
echo "logloglog" >> mylog
실행되는 flume에 데이터가 잘 들어오는 확인한다.
wget https://archive.apache.org/dist/kafka/3.1.0/kafka_2.13-3.1.0.tgz
tar xzvf kafka_2.13-3.1.0.tgz
cd kafka_2.13-3.1.0
cd bin
./zookeeper-server-start.sh ../config/zookeeper.properties
./kafka-server-start.sh ../config/server.properties
./kafka-topics.sh --create --topic test --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1
./kafka-topcis.sh --list --bootstrap-server localhost:9092
./kafka-console-consumer.sh --topic test --bootstrap-server localhost:9092
./kafka-console-producer.sh --topic test --bootstrap-server localhost:9092
cd $FLUME_HOME
cd conf
vim flume.conf
agent.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
agent.sinks.k1.topic = test
agent.sinks.k1.brokerList = localhost:9092
agent.sinks.k1.requiredAcks = 1
agent.sinks.k1.channel = c1
agent.sources = r1
agent.channels = c1
agent.sinks = k1
agent.sources.r1.type = exec
agent.sources.r1.command = tail -F /opt/flume/flume-1.11.0/logs/mylog
agent.sources.r1.channels = c1
agent.channels.c1.type = memory
agent.channels.c1.capacity = 1000
agent.channels.c1.transactionCapacity = 100
agent.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
agent.sinks.k1.topic = test
agent.sinks.k1.brokerList = localhost:9092
agent.sinks.k1.requiredAcks = 1
agent.sinks.k1.channel = c1
cd..
bin/flume-ng agent --conf conf --conf-file conf/flume.conf --name agent
cd $FLUME_HOME/logs
echo "save mydata" >> ./logs/mylog