nginx+ flume
vi nginx
#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /etc/nginx/nginx.conf
# config: /etc/sysconfig/nginx
# pidfile: /var/run/nginx.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
lockfile=/var/lock/subsys/nginx
make_dirs() {
# make required directories
user=`nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
options=`$nginx -V 2>&1 | grep 'configure arguments:'`
for opt in $options; do
if [ `echo $opt | grep '.*-temp-path'` ]; then
value=`echo $opt | cut -d "=" -f 2`
if [ ! -d "$value" ]; then
# echo "creating" $value
mkdir -p $value && chown -R $user $value
fi
fi
done
}
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
make_dirs
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
restart() {
configtest || return $?
stop
sleep 1
start
}
reload() {
configtest || return $?
echo -n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}
force_reload() {
restart
}
configtest() {
$nginx -t -c $NGINX_CONF_FILE
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit 2
esac
5. 이 파일 에 실행 권한 부여 chmod + x nginx 6, 이 파일 을 시스템 서비스 에 추가 합 니 다. chkconfig --add nginx 추가 성공 여부 보기 chkconfig -- list nginx 7, nginx 시작 service nginx start 8. 시작 후 브 라 우 저 로 접근 시작 성공 여부 보기 node 2: 9, 수정 / usr / local / nginx / conf / nginx. conf a), 포맷 방식 수정 log_format my_format '$remote_addr^A$msec^A$http_host^A$request_uri'; location =/log.gif { default_type image/gif; access log / opt / data / access. log my format; 10. 수정 후 다시 로그 인 해 야 합 니 다. 서비스 nginx reloadflume 지식 점 총화 1. flume 설치 1. flume 설치 패키지 업로드 압축 해제 패키지: tar - zxvf apache - flume - 1.6.02, 압축 해제 패키지 의 이름 변경: mv apache - flume - 1.6.0 - bin flume 3, 설정 폴 더 의 이름 변경: mv flume - env. sh. template flume - env. sh 4, 설정 폴 더 flume - env. sh 폴 더 에 flume 자바 환경 변 수 를 설정 합 니 다. (비고: 콜론 모드 에서 자바 프로필 의 위 치 를 찾 습 니 다: / JAVA, 환경 변수 에서 자바 환경 변수 에 대한 설정 위치 echo $JAVA HOME) 5, 환경 변수 설정 폴 더 에 자바 환경 변 수 를 설정 합 니 다 vi /etc/profile FLUME HOME 설정 추가 FLUME HOME = / root / flume 설정 파일 을 path 경로 아래 에 추가 합 니 다. . /etc / profile 6, 설정 완료 후 파일 설정 성공 여 부 를 확인 합 니 다. flume-ng version flume 버 전 설명 파일 설정 이 성공 적 으로 7. 사용자 정의 프로필 추가 Source, Channel, Sink 에는 어떤 종류 가 있 나 요? Flume Source 소스 유형 | 설명 하 다. Avro Source | Avro 프로 토 콜 지원 (실제로는 Avro RPC), 내장 지원 Thrift Source | Thrift 프로 토 콜 지원, 내장 지원 Exec Source | 유 닉 스 기반 command 표준 출력 에서 데이터 생산 JMS Source | JMS 시스템 (메시지, 테마) 에서 데 이 터 를 읽 습 니 다. Spooling Directory Source | 지 정 된 디 렉 터 리 내 데이터 변경 모니터링 Twitter 1% firehose Source| API 를 통한 트 위 터 데이터 지속 다운로드, 시험 성 Netcat Source | 포트 를 감시 하고 포트 를 흐 르 는 모든 텍스트 줄 데 이 터 를 이벤트 입력 으로 합 니 다. Sequence Generator Source | 시퀀스 생 성기 데이터 원본, 생산 시퀀스 데이터 Syslog Sources | syslog 데 이 터 를 읽 고 이벤트 생 성, UDP 와 TCP 두 가지 프로 토 콜 지원 HTTP Source | HTTP POST 또는 GET 방식 의 데이터 원본 을 기반 으로 JSON, BLOB 표시 형식 을 지원 합 니 다. Legacy Sources | 오래된 Flume OG 중 Source (0.9. x 버 전) 호 환 Flume Channel 채널 유형 설명 하 다. Memory Channel | 이벤트 데 이 터 를 메모리 에 저장 합 니 다. JDBC Channel | Event 데 이 터 는 영구적 인 저장 소 에 저장 되 며, 현재 Flume Channel 내 장 된 지원 Derby File Channel | 이벤트 데 이 터 는 디스크 파일 에 저 장 됩 니 다. Spillable Memory Channel | 이벤트 데 이 터 는 메모리 와 디스크 에 저 장 됩 니 다. 메모리 대기 열 이 가득 차 면 디스크 파일 로 오래 지 속 됩 니 다. Pseudo Transaction Channel | 테스트 용도 Custom Channel | 사용자 정의 채널 구현 Flume Sink 싱 크 타 입 설명 하 다. HDFS Sink | 데이터 기록 HDFS Logger Sink | 데이터 기록 로그 파일 Avro Sink | 데 이 터 는 Avro Event 로 변환 되 어 설 정 된 RPC 포트 에 보 냅 니 다. Thrift Sink | 데 이 터 는 Thrift Event 로 변환 되 어 설 정 된 RPC 포트 에 보 냅 니 다. IRC Sink | 데이터 가 IRC 에서 재생 됨 File Roll Sink | 로 컬 파일 시스템 에 데 이 터 를 저장 합 니 다. Null Sink | 모든 데이터 에 버 림 HBase Sink | 데이터베이스 Morphline Solr Sink | 데 이 터 를 Solr 검색 서버 로 보 내기 (클 러 스 터) ElasticSearch Sink | Elastic Search 검색 서버 로 데이터 전송 (클 러 스 터) Kite Dataset Sink | Kite Dataset 에 데 이 터 를 써 서 시험 적 으로 Custom Sink | 사용자 정의 Sink 구현 사례 1, A simple example http://flume.apache.org/FlumeUserGuide.html#a-simple-example
############################################################
# Name the components on this agent
a1.sources = r1
a1.sinks = k1
a1.channels = c1
# Describe/configure the source
a1.sources.r1.type = netcat
a1.sources.r1.bind = node2
a1.sources.r1.port = 44444
# Describe the sink
a1.sinks.k1.type = logger
# Use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
############################################################
flumeflume - ng 에이전트 시작 - n a1 - c conf - f option - dflume. root. logger = INFO, console 메모: 시작 명령 이 시 작 된 위치 option 파일 이 있 는 폴 더 아래 에 있어 야 합 니 다. telnetyum 설치 telnet 종료 ctrl +] quitMemory Chanel 설정 capacity: 기본 채널 에서 가장 저장 할 수 있 는 이벤트 수 는 100 입 니 다. trasactionCapacity: 매번 최대 source 에서 받 거나 sink 에 보 낼 수 있 는 이벤트 수량 도 100 입 니 다. keep - alive: 이벤트 가 채널 에 추가 되 거나 이동 할 수 있 는 허용 시간 byte * *: 즉 이벤트 의 바이트 수 제한, 이벤트 body 만 포함 - 다 중 노드 를 설정 하 는 flume 1. node 2 설정 한 프로필 을 node3scp - r flume / 에 보 냅 니 다.root@node3: / root / 2, node 3 노드 를 설정 하 는 환경 변수 vi / etc / profile 사례 2, 두 개의 flume 를 클 러 스 터 로 합 니 다.
#node2
############################################################
# Name the components on this agent
a1.sources = r1
a1.sinks = k1
a1.channels = c1
# Describe/configure the source
a1.sources.r1.type = netcat
a1.sources.r1.bind = node2
a1.sources.r1.port = 44444
# Describe the sink
# a1.sinks.k1.type = logger
a1.sinks.k1.type = avro
a1.sinks.k1.hostname = node3
a1.sinks.k1.port = 60000
# Use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
############################################################
node 02 서버 에 Flume 설치 (급 략) 프로필
############################################################
# Name the components on this agent
a1.sources = r1
a1.sinks = k1
a1.channels = c1
# Describe/configure the source
a1.sources.r1.type = avro
a1.sources.r1.bind = node3
a1.sources.r1.port = 60000
# Describe the sink
a1.sinks.k1.type = logger
# Use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
############################################################
node 02 의 Flume 을 먼저 시작 합 니 다. flume-ng agent -n a1 -c conf -f avro.conf -Dflume.root.logger=INFO,console flume-ng agent --conf -file option2 --name a1 -Dflume.root.logger=INFO,console node 01 Flume 재가 동 flume-ng agent -n a1 -c conf -f simple.conf2 -Dflume.root.logger=INFO,console telnet 테스트 열기 node 02 콘 솔 출력 결과 node 3 이 걸 표시 할 때 연결 이 성 공 했 음 을 증명 합 니 다. 주의사항: 설정 할 때 노드 간 의 이름 을 주의해 야 하 며 시작 순서 도 주의해 야 합 니 다. 클 라 이언 트 node 3 시작 서버 node 2 시작 ------여러 flume 의 로그 내용 을 서버 에 수집 합 니 다. 단일 고장 문 제 를 해결 하 다. flume 은 정지점 속전 을 할 수 있 습 니 다. --사례 3: execu source - 실행 원 은 유 닉 스 명령 을 통 해 데이터 원본 을 모니터링 합 니 다.
Exec Source
http://flume.apache.org/FlumeUserGuide.html#exec-source
############################################################
a1.sources = r1
a1.sinks = k1
a1.channels = c1
# Describe/configure the source
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /root/dirflume/log.txt
# Describe the sink
a1.sinks.k1.type = logger
# Use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
############################################################
Flume
flume-ng agent -n a1 -c conf -f exec.conf -Dflume.root.logger=INFO,console
touch flume.exec.log
for i in {1..50}; do echo "$i hi flume" >> flume.exec.log ; sleep 0.1; done
-- 사례 4: 지정 한 형식의 폴 더 읽 기
Spooling Directory Source
http://flume.apache.org/FlumeUserGuide.html#spooling-directory-source
############################################################
a1.sources = r1
a1.sinks = k1
a1.channels = c1
# Describe/configure the source
a1.sources.r1.type = spooldir
a1.sources.r1.spoolDir = /root/flume/log/
a1.sources.r1.fileHeader = false
# Describe the sink
a1.sinks.k1.type = logger
# Use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
############################################################
가동 Flume flume-ng agent -n a1 -c conf -f spool.conf -Dflume.root.logger=INFO,console 파일 프 리 젠 테 이 션 복사 mkdir logs cp flume.exec.log logs/ 원본 디 렉 터 리 에 파일 이 있 으 면 읽 습 니 다. 원본 디 렉 터 리 에 파일 이 없 으 면 파일 을 추가 한 후에 도 읽 습 니 다. 접미사 이름 을 추가 한 후 검사 하기: a1.sources.r1.fileSuffix=.wcg --주: 단전 속전 기능 은 설정 이 필요 합 니 다. ---사례 5: flume 의 데 이 터 를 hdfs 에 가 져 옵 니 다. hdfs sink http://flume.apache.org/FlumeUserGuide.html#hdfs-sink 프로필
############################################################
a1.sources = r1
a1.sinks = k1
a1.channels = c1
# Describe/configure the source
a1.sources.r1.type = spooldir
a1.sources.r1.spoolDir = /home/logs
a1.sources.r1.fileHeader = true
# Describe the sink
*** spool sink a1.sinks.k1.type = logger
a1.sinks.k1.type=hdfs
a1.sinks.k1.hdfs.path=hdfs://bjsxt/flume/%Y-%m-%d/%H%M
## 60s 10M
# hdfs ,0
a1.sinks.k1.hdfs.rollCount=0
# hdfs ,0
a1.sinks.k1.hdfs.rollInterval=60
# hdfs ,0
a1.sinks.k1.hdfs.rollSize=10240
# ( ) , ,
a1.sinks.k1.hdfs.idleTimeout=3
a1.sinks.k1.hdfs.fileType=DataStream
a1.sinks.k1.hdfs.useLocalTimeStamp=true
## :
# ” ”, ” ”, ” ”, 。 , %t
a1.sinks.k1.hdfs.round=true
# “ ” ;
a1.sinks.k1.hdfs.roundValue=5
# ” ” , :second,minute,hour
a1.sinks.k1.hdfs.roundUnit=minute
# Use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
############################################################
주: flume 은 hdfs 의 환경 변 수 를 통 해 기본적으로 hdfs 의 설정 위 치 를 찾 습 니 다. ----flume 로 nginx 로 그 를 가 져 와 hdfs 에 업로드 합 니 다.
# project
# Name the components on this agent
a1.sources = r1
a1.sinks = k1
a1.channels = c1
# Describe/configure the source
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /opt/data/access.log
# Describe the sink
a1.sinks.k1.type = hdfs
a1.sinks.k1.hdfs.path = /log/%Y%m%d
a1.sinks.k1.hdfs.filePrefix = log-
a1.sinks.k1.hdfs.rollInterval=0
a1.sinks.k1.hdfs.rollSize=102400
a1.sinks.k1.hdfs.rollCount=0
a1.sinks.k1.hdfs.idleTimeout=10
a1.sinks.k1.hdfs.callTimeOut=40000
a1.sinks.k1.hdfs.useLocalTimeStamp=true
a1.sinks.k1.hdfs.fileType=DataStream
# Use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
다음으로 전송:https://www.cnblogs.com/wcgstudy/p/10588353.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.