nginx+ flume

15261 단어
nginx 역할: 부하 균형 nginx 와 lvs 의 차이 점: nginx 는 역방향 에이전트 1 을 할 수 있 고 nginx 설치 패 키 지 를 업로드 할 수 있 습 니 다.  tar - zxvf tengine - 2.1.02, 설치 환경 gcc openssl - devel pcre - devel zlib - devel 설치 의존: yum install gcc openssl - devel pcre - devel zlib - devel - y3, Nginx. / configure make & make install 4 설치, / etc / rc. d / init. d 디 렉 터 리 에 nginx 파일 등록 
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

좋은 웹페이지 즐겨찾기